Tags:

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 กันหาย กันลืมนะครับ

วิธีทำ Source Package ส่งขึ้น PPA

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

ก่อนที่จะ dput หรือ sign ไฟล์ .changes สำหรับส่งขึ้นไปบน PPA ได้

1. ต้องสร้าง OpenPGP Key ก่อน gpg --gen-key 2. ยืนยัน Key กับ launchpad (จะมี e-mail ที่เข้ารหัสส่งกลับมาให้เราคลิกลิงค์ยืนยัน) 3. Sign "Ubuntu Code of Conducts" โดยเข้าไปที่หน้า profile ของเราบน launchpad เช่น https://launchpad.net/~nattster

Comments

By: AlninlA
ContributorAndroidUbuntu
AlninlA's blog
on 25/10/10 19:43 #224661 toggle
AlninlA's picture

ผมใช้ Chromium (dev) บน Ubuntu 10.04 (ใช้ฟอนต์ Tahoma) จากรูปจะเห็นว่า การวางตำแหน่งของสระ วรรณยุกต์ มีที่ผิดคือที่เรียกว่าสระลอย เช่นพวกไม้เอก โท อยู่ระดับนสุดตลอด นอกนั้นก็ดูดี การลากคลุมดำใน Text box ก็ทำได้ครบจนถึงตัวสุดท้ายด้วย

ไม่ทราบว่าการปรับแต่ง Ubuntu จะมีผลเกี่ยวข้องกับการแก้ไขปัญหาด้วยหรือไม่ แต่ปัญหาภาษาไทยที่ว่าตามหัวเรื่องนี้ ผมทดลองกับ Ubuntu แบบลงใหม่แล้วติดตั้ง Chromium จะเกิดขึ้นจริงๆ แล้วก็ไม่สามารถแก้ไขให้หายไปเหมือนรูปที่แสดงนี่ก็ทำไม่ได้สักที พูดง่ายๆ ว่า ไม่รู้ว่าตัวเองไปปรับ แก้ อะไร ที่ไหน เมื่อไหร่ ถึงทำให้มันดูดีได้ ก็เลยสงสัยว่ามันเป็น bug ที่ Chromium ที่เดียวจริงๆ เลยหรือครับ

ดังนั้นถ้ามีแนวทางที่ทำให้ปัญหาหายขาดได้ ก็จะเป็นที่ขอบคุณแก่ผู้ที่ใช้งาน OSS ทั้งหลายแน่นอนครับ ขอเป็นกำลังใจด้วยครับ

From Captures
By: lew
FounderJusci's WriterMEconomicsAndroid
lew's blog
on 25/10/10 20:25 #224669 Reply to:224661 toggle
lew's picture

ผมไม่ปรับอะไรกับตัวฟอนต์เลยครับ ไม่ทราบว่าได้ไปแก้ฟอนต์อะไรตรงไหนบ้างครับ? ของ System หรือของ Ubuntu เอง?


LewCPE's Google+

By: mr_tawan
ContributoriPhoneAndroidWindows
mr_tawan's blog
on 25/10/10 22:49 #224734 Reply to:224661 toggle
mr_tawan's picture

สระมันก็อยู่ถูกที่แล้วครับ ที่ผิดคือวรรณยุกต์ ปัญหานี้จริง ๆ ต้องเรียกว่า วรรณยุกต์ลอย นะครับ


By: AlninlA
ContributorAndroidUbuntu
AlninlA's blog
on 26/10/10 0:03 #224758 Reply to:224734 toggle
AlninlA's picture

ก็เคยใช้เรียกกันสมัย photoshop แรกๆ นู้นจนมีหลายคนบอกน่าจะเรียกให้ถูกว่า วรรณยุกต์ลอย แต่ก็เห็นทำมึนๆ กันซะงั้น คือไม่เรียกกัน ผมก็เลยอ้างอิงคำนั้น บวกขยายความนิดหน่อยน่ะครับ เห็นได้ชัดว่าเข้าใจตามนั้นจริง แต่ก็น่าชวนกันเรียกให้ถูกๆ นะ

By: dome
dome's blog
on 25/10/10 21:45 #224699 toggle
dome's picture

ใช้ Tahoma จะไม่เจอ Bug เรื่องสระเยื้องครับ เช่นเดียวกับ Norasi ก็ไม่เจอ (แต่ Norsri ไม่สวย) ซึ่งไม่แน่ใจว่า เพราะอะไร จริงๆ เทพเคยวิเคราะห์ให้ฟังแล้วทีนึง แต่จำไม่ได้ แต่ Tahoma ก็มีปัญหาเรื่อง License ใน Linux จึงควรใช้ Waree , Loma หรือที่สวยสุดและใกล้เคียงกับ Tahoma มากสุดคือ Taeyhom ซึ่งจะมีปัญหาเรื่องสระเยื้อง แต่เรื่องสระลอย ก็ยังเป็นอยู่ Patch ของลิ่ว จะช่วยให้สามารถใช้ Font Waree, Loma , Taeyohom ได้โดยสระไม่เยื้องครับ มีประโยชน์มาก

เรื่องสระลอย น่าจะแก้ต่อได้ไม่ยาก (ไม่รู้จะง่ายหรือเปล่านะ) โดยอ้างอิงจาก QT patch Thai ของ โด่ง ถ้าลิ่วมีเวลา อยากให้ทำต่อแล้ว submit patch กลับไปทาง Ubuntu ก้ได้ น่าจะง่ายกว่า Chromium

ขอบคุณมากและขอให้มีความสุขความเจริญ นะครับ

:)

By: lew
FounderJusci's WriterMEconomicsAndroid
lew's blog
on 25/10/10 23:35 #224755 Reply to:224699 toggle
lew's picture

คือผมตระหนักดีว่า patch ของผมนี่คุณภาพต่ำมากครับ เพราะไป revert การแก้ปัญหาของอีกบั๊กหนึ่งทิ้งไป ในส่วนที่มันทำให้ภาษาไทยพัง

แต่ผมเองไม่มีความรู้เรื่อง GPOS ของ OpenType มากพอ (ยังไม่มีเวลาอ่านจริงจัง) ตัว Evan จากทีม Chromium เองก็เคยบอกแล้วว่าเขาน่าจะใส่ Offset บางอย่างไม่ครบ ทำให้ภาษาไทยพังไป ไว้หาเจอแล้วจะเขียน patch ดีๆ ดันกลับเข้าไปให้ครับ


LewCPE's Google+

By: aborigines
Ubuntu
aborigines's blog
on 27/10/10 18:14 #225778 Reply to:224755 toggle
aborigines's picture

ได้แค่นี้ผมดีแล้วครับ @lew ดีกว่ามันเพี้ยนหน่า

By: lew
FounderJusci's WriterMEconomicsAndroid
lew's blog
on 28/10/10 2:16 #225977 Reply to:225778 toggle
lew's picture

คือคุณภาพ patch มันคนละเรื่องครับ ไม่เกี่ยวกับเพี้ยนไม่เพี้ยน

แต่โค้ดคุณภาพดีจะทำให้ทางโครงการ Chromium เขารับเข้าไป แล้วเราจะได้ไม่ต้อง patch กันเองไปเรื่อยๆ


LewCPE's Google+

By: AlninlA
ContributorAndroidUbuntu
AlninlA's blog
on 26/10/10 0:32 #224784 Reply to:224699 toggle
AlninlA's picture

คุณเทพเคยบอกว่า Chromium ยังไม่รองรับ Opentype เต็มที่มั้งครับ

By: aborigines
Ubuntu
aborigines's blog
on 27/10/10 18:16 #225779 toggle
aborigines's picture

@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 เช่นเดิม

By: bow_der_kleine
WriterAndroidUbuntu
bow_der_kleine's blog
on 28/10/10 8:40 #226007 Reply to:225779 toggle
bow_der_kleine's picture

โอ ... มันยอดมาก


XimpleSoft

By: tomazzu
Windows PhoneBlackberrySymbianUbuntu
tomazzu's blog
on 28/10/10 10:22 #226057 Reply to:225779 toggle
tomazzu's picture

ใช้ไม่ dev ก็เปิด GPU ไม่ได้หนะสิครับ:(


http://tomazzu.exteen.com

By: lew
FounderJusci's WriterMEconomicsAndroid
lew's blog
on 28/10/10 10:47 #226078 Reply to:226057 toggle
lew's picture

มี daily ให้หนิครับ

น้องเค้าทำ stable ให้เผื่อใครอยากใช้ของนิ่งๆ


LewCPE's Google+

By: tomazzu
Windows PhoneBlackberrySymbianUbuntu
tomazzu's blog
on 28/10/10 11:04 #226090 Reply to:226078 toggle
tomazzu's picture

ขออภัยงับ ตาไวรีบ อ่านไปนิส


http://tomazzu.exteen.com