คุณ tongdee ซึ่งเป็น Ubuntu User คนนึง ถามถึงเรื่องการปรับฟอนต์ไทยให้สวยงามบน Firefox บน Ubuntu พอดีพึ่งได้วิธีการที่ไปค้นพบเอาตอนไปทำ OLPC Localization ที่บอสตัน เลยเอามาบล็อกไว้ละกัน

บอกว่าพึ่งค้นพบ ฟังดูยิ่งใหญ่ แต่จริงๆ แล้วมันเป็นวิธีการที่มีอยู่แล้ว แต่ไม่เคยทำกับภาษาไทย เพราะตัว gnome เองก็คอนฟิกเรื่องฟอนต์ได้ระดับนึงอยู่แล้ว แต่พอไปคอนฟิกแล็ปท็อป OLPC ต้องทำในระดับล่างเอง คือเข้าไปคอนฟิกใน fontconfig เลย ก็เลยได้ศึกษาการคอนฟิกใน fontconfig ลึกลงอีกหน่อย ส่วนใหญ่ก็โดยการแกะของภาษาอื่นๆ ว่าเค้าทำกันอย่างไร
ขั้นตอนการปรับแต่ง
- ปรับแต่งฟอนต์โดย ดาวน์โหลดลิงก์นี้ ไปบันทึกเป็นแฟ้ม /etc/fonts/conf.d/66-ttf-thai.conf
$ wget http://ftp.opentle.org/pub/olpc-thai/SRPMS/66-ttf-thai.conf $ sudo cp 66-ttf-thai.conf /etc/fonts/conf.d/ password: $ sudo fc-cache $
- ปรับแต่งฟอนต์ของ gnome โดยเลือกเมนู “ระบบ” –> “ปรับแต่งพื้นโต๊ะ” –> “แบบอักษร” โดยผมตั้งฟอนต์แบบนี้ บนโน๊ตบุ๊คผมเลือก “จัดการพิกเซลย่อย (LCDs)” แทน จะได้ผลลัพธ์ที่ดีขึ้นอีกเล็กน้อย

- ปรับแต่ง Firefox เลือกเมนู “Edit” –> “Preferences” เลือก Contents

ในกรอบ Fonts & Colors คลิกที่ปุ่ม Advanced… แล้วเลือก Western กำหนดค่าฟอนต์ดังนี้

จากนั้นก็เปลี่ยนเป็น Thai แล้วตั้งค่าแบบเดียวกัน

สังเกตว่าในกรอบ “Character Encoding” กำหนดค่า “Default Character Encoding:” เป็น “Thai (ISO-8859-11)” เพื่อที่เวลาเปิดเว็บที่ไม่ได้กำหนด Encoding ไว้เลย จะใช้ Encoding ไทย ซึ่งถึงแม้จะเป็นเว็บภาษาอังกฤษก็ตาม ก็ยังแสดงภาษาอังกฤษได้สวยงาม - เปลี่ยนไปเรนเดอร์ด้วย pango วิธีนี้ได้ข้อดีคือ 1) ฟอนต์ที่มี hinting จะแสดงผลได้สวยขึ้น เพราะสามารถใช้ full hint ได้ หรืออาจเพราะ pango ใช้ cairo ในการแสดงผลด้วย เลยทำให้แสดงได้สวยขึ้น 2) ภาษาไทยถูกจัดระดับวรรณยุกต์ได้สวยงาม แต่ก็ยังมีข้อเสียคือ บางเพจที่ใช้ css ในการจัดข้อความชิดซ้ายขวา (justify) จะแสดงผลไม่ถูกต้อง ซึ่งอาจจะโชคดีที่เพจแบบนี้มีไม่มากนัก วิธีทำ
$ echo "MOZ_DISABLE_PANGO=0" >> ~/.mozilla/firefox/rc
จากนั้นก็ปิดไฟร์ฟ็อกซ์ (ถ้าเปิดอยู่) แล้วเรียกใหม่

ภาพตัวอย่างหลังจากปรับแต่งแล้ว

ภาพตัวอย่างปัญหาเรื่อง text justify เมื่อใช้ pango
จะเห็นว่าเทคนิคนี้ใช้วิธีกำหนดค่าฟอนต์ปริยายของ sans, serif, และ monospace ให้ใช้ฟอนต์ไทยที่กำหนด ซึ่งในที่นี้คือ Loma และ TlwgTypewriter โดยกำหนดในระดับของ fontconfig ซึ่งมีผลทำให้แอพลิเคชันที่ใช้ fontconfig สามารถแสดงฟอนต์ไทยได้สวยงามได้ในทันที ส่วนใน Gnome และ Firefox ซึ่งนำมาแสดงเป็นตัวอย่าง ก็จะกำหนดเป็นฟอนต์ sans (หรือ san-serif), serif และ monospace ไปเลย ก็จะแสดงภาษาไทยได้ถูกต้อง ส่วนฟอนต์ภาษาอังกฤษก็จะใช้ฟอนต์ในตระกูล Dejavu ซึ่งแสดงผลได้สวยงามดีอยู่แล้ว โดยขนาดของ Dejavu และ Loma ก็เข้ากันได้ดี สิ่งที่ยังดูขัดกันบ้างคือ Loma จะไม่มี hinting เลยดูออกเทาๆ บ้าง ขณะที่ Dejavu ซึ่งจะแสดงในส่วนที่เป็นภาษาอังกฤษ จะดูคมเข้มกว่า
อีกประการคือการกำหนดขนาดฟอนต์ โดยส่วนตัวผมใช้จอ LCD ทั้งบน PC และ Laptop อยู่แล้ว เลยใช้ขนาด 8 point ร่วมกับการใช้ subpixel ก็แสดงได้ดี อ่านชัดเจนทุกตัวอักษร บางท่านอาจจะพอใจที่ 9 หรือ 10 point มากกว่า ก็แล้วแต่ความพึงพอใจครับ
เทคนิคนี้ใช้ได้กับทุกดิสทริบิวชันในปัจจุบันซึ่งส่วนใหญ่จะใช้ fontconfig อยู่แล้ว แต่อาจจะต้องติดตั้งฟอนต์ภาษาไทยด้วยตัวเอง ส่วน ubuntu นั้น จะติดตั้งไว้ให้อยู่แล้ว ซึ่งในที่นี้ทดสอบกับรุ่นล่าสุดคือ 6.10 นะครับ รุ่นอื่นๆ ถ้าพบว่าไม่มีฟอนต์ไทย ก็ให้ติดตั้ง ttf-thai-tlwg อาจจะด้วยคำสั่ง apt-get install ttf-thai-tlwg ครับ
updated! เพิ่มขั้นตอนที่ 4 เปิดใช้ pango และ capture หน้าจอใหม่



