Chromium คือโปรเจค Open-source ที่เป็นฐานของ Google Chrome ที่เราใช้ๆ กัน ปัญหาใหญ่ของคนใช้ Linux คือ Chrome แสดงผลสระภาษาไทยเลื่อนไปทางซ้าย ทำให้อ่านเว็บไม่รู้เรื่อง บั๊กแสดงผลนี้ถูกรายงานไปตั้งแต่เมษายน 2553 แต่ยังไม่ได้รับการแก้ไข
ผมกับพี่ @lewcpe ใช้วิธีแก้ไขแบบแก้ขัดไปก่อน คือเอาค่า offset ที่ยังมั่วๆ สำหรับภาษาไทยออก (patch อยู่ด้านล่าง) compile และแจก binary มาเรื่อยๆ แต่รู้สึกแจกจ่ายไม่สะดวก
ตอนนี้ได้ทำ chromium-thai-ppa ออกมาแล้วครับ สามารถติดตั้งได้ด้วยคำสั่งต่อไปนี้
sudo apt-add-repository ppa:thai/chromium-thai-ppa
sudo apt-get update
sudo apt-get install chromium-browser
ขออนุญาตแปะวิธีทำ source package ส่งเข้าไปที่ PPA ไว้ที่ blognone กันหาย กันลืมนะครับ
1. สร้าง PPA ใหม่ที่ http://launchpad.net
2. คัดลอก Chromium Source Package จาก PPA ที่มีอยู่เดิม เช่น Chromium Dev Channel มาใส่ไว้ใน PPA ของเรา
3. เพิ่ม PPA ของเรา แล้วโหลด source package ลงมาแก้ไข
sudo apt-add-repository ppa:thai/chromium-thai-ppa
apt-get source chromium-browser
4. จะได้โฟลเดอร์ chromium-browser-8.xxx มา
5. เข้าไปที่ไดเรกทอรี่ chromium-browser-8.xxx/debian/patches
6. เพิ่มไฟล์ thai.patch มีเนื้อหาตามนี้:
--- src.orig/third_party/WebKit/WebCore/platform/graphics/chromium/FontLinux.cpp
+++ src/third_party/WebKit/WebCore/platform/graphics/chromium/FontLinux.cpp
@@ -538,7 +538,7 @@
m_glyphs16[i] = m_item.glyphs[i]; double offsetX = truncateFixedPointToInteger(m_item.offsets[i].x); - m_xPositions[i] = m_offsetX + position + offsetX; + m_xPositions[i] = m_offsetX + position;// + offsetX;
double advance = truncateFixedPointToInteger(m_item.advances[i]); // The first half of the conjuction works around the case where
7. แก้ไฟล์ series เพิ่ม 1 บรรทัดที่ท้ายไฟล์ว่า
thai.patch
8. ในไฟล์ debian/changelog ให้เพิ่มรายละเอียดเกี่ยวกับสิ่งที่เปลี่ยนแปลงและกำหนดเลข Version
9. กลับมาที่ไดเรกทอรี่ chromium-browser-8.xxx/ แล้วเรียกคำสั่ง
debuild -S -sd
10. จะได้ไฟล์ .changes สามารถ put ขึ้นไปบน PPA ได้ด้วยคำสั่ง
dput ppa:thai/chromium-thai-ppa chro...._source.changes
1. ต้องสร้าง OpenPGP Key ก่อน
gpg --gen-key
2. ยืนยัน Key กับ launchpad (จะมี e-mail ที่เข้ารหัสส่งกลับมาให้เราคลิกลิงค์ยืนยัน)
3. Sign "Ubuntu Code of Conducts" โดยเข้าไปที่หน้า profile ของเราบน launchpad เช่น https://launchpad.net/~nattster
ผมใช้ Chromium (dev) บน Ubuntu 10.04 (ใช้ฟอนต์ Tahoma) จากรูปจะเห็นว่า การวางตำแหน่งของสระ วรรณยุกต์ มีที่ผิดคือที่เรียกว่าสระลอย เช่นพวกไม้เอก โท อยู่ระดับนสุดตลอด นอกนั้นก็ดูดี การลากคลุมดำใน Text box ก็ทำได้ครบจนถึงตัวสุดท้ายด้วย
ไม่ทราบว่าการปรับแต่ง Ubuntu จะมีผลเกี่ยวข้องกับการแก้ไขปัญหาด้วยหรือไม่ แต่ปัญหาภาษาไทยที่ว่าตามหัวเรื่องนี้ ผมทดลองกับ Ubuntu แบบลงใหม่แล้วติดตั้ง Chromium จะเกิดขึ้นจริงๆ แล้วก็ไม่สามารถแก้ไขให้หายไปเหมือนรูปที่แสดงนี่ก็ทำไม่ได้สักที พูดง่ายๆ ว่า ไม่รู้ว่าตัวเองไปปรับ แก้ อะไร ที่ไหน เมื่อไหร่ ถึงทำให้มันดูดีได้ ก็เลยสงสัยว่ามันเป็น bug ที่ Chromium ที่เดียวจริงๆ เลยหรือครับ
ดังนั้นถ้ามีแนวทางที่ทำให้ปัญหาหายขาดได้ ก็จะเป็นที่ขอบคุณแก่ผู้ที่ใช้งาน OSS ทั้งหลายแน่นอนครับ ขอเป็นกำลังใจด้วยครับ
ผมไม่ปรับอะไรกับตัวฟอนต์เลยครับ ไม่ทราบว่าได้ไปแก้ฟอนต์อะไรตรงไหนบ้างครับ? ของ System หรือของ Ubuntu เอง?
lewcpe.com, @wasonliw
สระมันก็อยู่ถูกที่แล้วครับ ที่ผิดคือวรรณยุกต์ ปัญหานี้จริง ๆ ต้องเรียกว่า วรรณยุกต์ลอย นะครับ
ก็เคยใช้เรียกกันสมัย photoshop แรกๆ นู้นจนมีหลายคนบอกน่าจะเรียกให้ถูกว่า วรรณยุกต์ลอย แต่ก็เห็นทำมึนๆ กันซะงั้น คือไม่เรียกกัน ผมก็เลยอ้างอิงคำนั้น บวกขยายความนิดหน่อยน่ะครับ เห็นได้ชัดว่าเข้าใจตามนั้นจริง แต่ก็น่าชวนกันเรียกให้ถูกๆ นะ
ใช้ Tahoma จะไม่เจอ Bug เรื่องสระเยื้องครับ เช่นเดียวกับ Norasi ก็ไม่เจอ (แต่ Norsri ไม่สวย) ซึ่งไม่แน่ใจว่า เพราะอะไร จริงๆ เทพเคยวิเคราะห์ให้ฟังแล้วทีนึง แต่จำไม่ได้ แต่ Tahoma ก็มีปัญหาเรื่อง License ใน Linux จึงควรใช้ Waree , Loma หรือที่สวยสุดและใกล้เคียงกับ Tahoma มากสุดคือ Taeyhom ซึ่งจะมีปัญหาเรื่องสระเยื้อง แต่เรื่องสระลอย ก็ยังเป็นอยู่ Patch ของลิ่ว จะช่วยให้สามารถใช้ Font Waree, Loma , Taeyohom ได้โดยสระไม่เยื้องครับ มีประโยชน์มาก
เรื่องสระลอย น่าจะแก้ต่อได้ไม่ยาก (ไม่รู้จะง่ายหรือเปล่านะ) โดยอ้างอิงจาก QT patch Thai ของ โด่ง ถ้าลิ่วมีเวลา อยากให้ทำต่อแล้ว submit patch กลับไปทาง Ubuntu ก้ได้ น่าจะง่ายกว่า Chromium
ขอบคุณมากและขอให้มีความสุขความเจริญ นะครับ
:)
คือผมตระหนักดีว่า patch ของผมนี่คุณภาพต่ำมากครับ เพราะไป revert การแก้ปัญหาของอีกบั๊กหนึ่งทิ้งไป ในส่วนที่มันทำให้ภาษาไทยพัง
แต่ผมเองไม่มีความรู้เรื่อง GPOS ของ OpenType มากพอ (ยังไม่มีเวลาอ่านจริงจัง) ตัว Evan จากทีม Chromium เองก็เคยบอกแล้วว่าเขาน่าจะใส่ Offset บางอย่างไม่ครบ ทำให้ภาษาไทยพังไป ไว้หาเจอแล้วจะเขียน patch ดีๆ ดันกลับเข้าไปให้ครับ
lewcpe.com, @wasonliw
ได้แค่นี้ผมดีแล้วครับ @lew ดีกว่ามันเพี้ยนหน่า
คือคุณภาพ patch มันคนละเรื่องครับ ไม่เกี่ยวกับเพี้ยนไม่เพี้ยน
แต่โค้ดคุณภาพดีจะทำให้ทางโครงการ Chromium เขารับเข้าไป แล้วเราจะได้ไม่ต้อง patch กันเองไปเรื่อยๆ
lewcpe.com, @wasonliw
คุณเทพเคยบอกว่า Chromium ยังไม่รองรับ Opentype เต็มที่มั้งครับ
@nattster แนะนำรุ่น dev ไปแล้วนะฮะ
ขอแนะนำ รุ่น stable ครับ
chromium thai รุ่น Stable
https://launchpad.net/~thai/+archive/chromium-thai-stable
$ sudo apt-add-repository ppa:thai/chromium-thai-stable
$ sudo apt-get update
$ sudo apt-get install chromium-browser
อยู่ใน team เดียวกับ chromium-thai นี้ละครับ
ใช้ patch ของ @lew เช่นเดิม
โอ ... มันยอดมาก
ใช้ไม่ dev ก็เปิด GPU ไม่ได้หนะสิครับ:(
มี daily ให้หนิครับ
น้องเค้าทำ stable ให้เผื่อใครอยากใช้ของนิ่งๆ
lewcpe.com, @wasonliw
ขออภัยงับ ตาไวรีบ อ่านไปนิส