ภาพตัวอย่างที่คุณ tongdee ส่งมาให้ดู
บอกว่าพึ่งค้นพบ ฟังดูยิ่งใหญ่ แต่จริงๆ แล้วมันเป็นวิธีการที่มีอยู่แล้ว แต่ไม่เคยทำกับภาษาไทย เพราะตัว 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 หน้าจอใหม่
กำลังรำคาญเวลาวรรณยุกต์มันเลื่อนๆ ใน Firefox พอดีครับ ได้บทความนี้มาช่วย รอดไป
ตอบลบสนใจจะเอาไปเผยแพร่ใน Blognone มั๊ยครับ...
อืมม สนใจครับ :-)
ตอบลบเดี๋ยวสักครู่จะเอาไปโพส :-)
บทความนี้ยังไม่สมบูรณ์นะครับ พบบั๊กจำนวนนึง กำลังปรับปรุง อาจจะออกเวอร์ชัน 2 เร็วๆ นี้ แล้วเดี๋ยวเอาไปลง blognone ด้วย ^ ^
ตอบลบพี่ต้นครับ เดี๋ยวผมขอเอาไปลง ubuntuclub ด้วยนะครับ
ตอบลบทำไม ของ ผม ไม่เห็น ต้อง ปรับแต่ง font ก็ ดู ดี อยู่ แล้ว อะ (ยกเว้นตัดคำ), บน ubuntu 4.10 ผสม 5.04
ตอบลบอานนท์,
ตอบลบ1. ผมจำไม่ได้ว่ารุ่นเก่ามีปัญหาอย่างที่มีคนถามมาหรือไม่ ซึ่งอาจจะไม่มีก็ได้ แต่รุ่น 6.10 ติดตั้งปุ๊บจะเจอแบบนี้แหละครับ วิธีการที่ผมแนะนำจะไม่ติดตั้งฟอนต์อื่นเลย นอกจากที่มีมาให้กับ Ubundu Edgy ซึ่งมีฟอนต์ไทยที่ใช้กับ UI ได้ดีๆ คือ Loma กับ Garuda และวิธีการที่ผมแนะนำ จะผสมฟอนต์ภาษาอังกฤษจาก Dejavu กับฟอนต์ไทยจาก Loma (หรือ Garuda หากต้องการ)
2. Edgy ใช้ FreeType 2.2.1 ซึ่งมี engine ในการทำ AutoHint ตัวใหม่ ออกแบบมาให้ใช้กับ CJK ได้ดีขึ้น และทำให้ Hint อักษรไทยได้ดีเยี่ยมไปด้วย แต่ Firefox จะไม่ใช้ Hint ในตอนแรก เนื่องจากปิดการทำงานของ pango ไว้ ซึ่งผลก็คือ ฟอนต์จะไม่คมสวย และไม่จัดระดับวรรณยุกต์ ในที่นี้จึงต้องแนะนำวิธีการเปิดใช้ pango ใน Firefox สำหรับ Edgy ด้วย และพาเปิดใช้ AutoHint ซึ่งถ้าใช้กับ Ubuntu รุ่นเก่า ฟอนต์ไทยจะน่าเกลียดมาก
FreeType 2.2.1 เท่าที่รู้ มีใช้บน Ubuntu 6.10 (Edgy) และ Fedora Core 6
ยาวจัง สรุป ถ้าใช้ Edgy กับวิธีที่ผมแนะนำ จะสามารถใช้ฟอนต์ไทยได้สวยงามโดยไม่ต้องเอาฟอนต์จากวินโดวส์มาลง โดยฟอนต์จะมีความคมชัด ไม่เบลอ ไม่เบี้ยว แก้ปัญหาฟอนต์เบลอบน Firefox ด้วย (ภาษาอังกฤษก็เป็น)
ขอโทษครับผมทำตามทุกอย่างแล้วแต่ คราวนี้ linux ของผมไม่สามารถ boot เข้า desktop ได้ครับ โดยขึ้นว่า the display server has been shut down about 6 times in the last 90 seconds.It is likely that something bad is going on Waiting for 2 minutes before trying again on display.
ตอบลบแล้วก็ไม่สามารถบูทเข้าได้เลยพอเข้ามาหน้า desktop ก็เด้งออกครับ ไม่ทราบว่าจะมีวิธีแก้ปัญหานี้หรือเปล่าครับ เอ่อ ผมลง beryl กับ emerald ลงไปด้วยไม่ทราบว่าจะมีผลกระทบกับเรื่องที่เราไป config font หรือเปล่าครับ
เป็นตอนจะเข้าหน้าล็อกอิน หรือหน้าเดสก์ท็อป (หลังล็อกอิน) ครับ?
ตอบลบถ้าเป็นตอนจะเข้าหน้าล็อกอิน แสดงว่ามีปัญหาที่ X Server ให้ตรวจสอบไฟล์ล็อก /var/log/Xorg.0.log ว่ามี error (EE) ที่ขั้นตอนไหน แล้วลองปรับที่ /etc/X11/xorg.conf
ถ้าอย่างหลังคงเป็นที่ session มัน crash ด้วยสาเหตุบางอย่าง แต่ผมไม่คิดว่าฟอนต์จะเป็นปัญหานะครับ ยังไม่เคยเจอแบบนี้ แต่ผมก็ไม่ได้ใช้ beryl กับ emerald เลย ก็ไม่รู้ว่ามันจะเกี่ยวอะไรกับ 3D หรือเปล่า
อ่อ มีล่าสุดที่ผมเจอคือ การ์ดผม ไม่สามารถใช้ composite พร้อมกับ GLX ได้ ต้องเลือกอันหนึ่ง ที่รู้เพราะมันบอกที่ไฟล์ล็อกนี่แหละครับ
หลัง login ครับเพราะผมตั้งให้เข้าไปเป็น auto login ครับ
ตอบลบแล้วผมจะเข้าไปแก้ตรงไหนได้บ้างครับ หรือเข้าไปแก้ที่ session ใ้ห้ไม่ต้องรัน beryl and emerald ตอน start up ตรงไหนครับ
คงจะเข้าได้แค่ recover เท่านั้นเองครับ เพราะทุกที่ที่ผมใช้งาน 3d ก็ไม่มีปัญหาน่ะครับ แต่พอลองปรับแต่ง fonts.conf แล้ว restart ดูก็ไม่สามารถเข้าไปใน ubuntu ได้เลยครับ ขอบคุณสำหรับคำตอบครับ
ผมจะลองพยายามดูครับ linux จะมีแบบ window มั้ยครับ last known good config แบบนี้น่ะครับ พอดีผมเป็นมือใหม่ครับต้องขอโทษด้วยที่ถามอะไรเยอะเกินครับ
อ่อ งั้นก็ลองดูไฟล์ ~/.xsession-errors อาจจะพบข้อมูลที่มีประโยชน์ครับ หรือจะก็อปปี้มาแปะให้ดูก็ได้ครับ
ตอบลบส่วนเรื่องการปิด beryl กับ emerald ลองดูที่ ~/.gnome2/session นะครับ แต่ไม่แน่ใจนะ เพราะอย่างที่บอก ผมยังไม่เคยเล่น
กดเข้าไปที่ recoever แล้วก็พิมพ์ อะไรลงไปครับ พอเข้าไปที่ recover แล้วก็จะขึ้นเป็น command line น่ะครับ username@username แบบนี้อ่ะครับ
ตอบลบให้พิมพ์คำสั่ง อะไรลงไปครับมีพิมพ์คำสั่งให้ิปิด session บาง session หรือเปล่าครับ
เอ่อ.. ถ้าคิดว่าเป็นที่ .fonts.conf ลองไปแก้ตรงนั้นก่อนดีไหมล่ะ ไม่ก็ลบออกเลย
ตอบลบก็สั่งประมาณ
<pre>$ rm .fonts.conf</pre>
ส่วนเดสก์ท็อปถ้าอยาก reset มัน ก็ลอง
<pre>$ rm -rf .gnome*</pre>
เอ่อ เมื่่อกี้ผมลอง remove ไฟล์ fonts.conf ออกไปแล้วก็สามารถ boot เข้้า ubuntu ได้ครับ ผมว่าผมคงต้องไปทำอะไรผิดพลาดกัีบไฟล์ fonts.conf แน่นอนเลยครับ เมื่อกี้ที่ผมทำก็ไป edit ไฟล์ fonts.conf เลยครับ copy โค๊ดที่พี่ให้ไว้น่ะครับ แล้วก็ใส่ไปแทนไฟล์ fonts.conf ตัวเดิมเลย หรือว่าต้องสร้างอีกตัวครับ ผมไม่เข้าใจพอทำเสร็จก็ลอง restart เครื่อง ก็เป็นปัญหาอย่างที่ถามพี่ไปน่ะครับ ขอบคุณที่ช่วยแก้ปัญหาให้ครับ
ตอบลบจะพยามยามหันมาใช้ ubuntu น่ะครับ
So good solution.
ตอบลบthank you.
[...] ระบบปฏิบัติการ: Ubuntu Edgy (6.10) ธีม: default ฟอนต์: Dejavu + Loma (ซึ่งปรับแต่งด้วยวิธีการใน การปรับแต่งฟอนต์ไทยบน Ubuntu และ ปรับแต่งฟอนต์ไทยบน Ubuntu Part II [...]
ตอบลบมีประโยชน์มากครับ :)
ตอบลบ[...] จากตอนที่แล้ว ยังมีสิ่งที่อยากแก้ 2 อย่าง ได้แก่ [...]
ตอบลบช่วยลงวิธี การนำภาษาไทยมาใช้ใน fedora core ด้วยครับ (เรื่องด่วนครับ)
ตอบลบผมหันมาใช้ openoffice แทน แต่เกิดปัญหาเรื่องฟอนท์
ตอบลบเวลาพิมพ์งานตัวอักษรไม่ครบครับ ไม่ทราบจะแก้ปัญหาไงดี
คือผมใช้ครั้งแรก งง มากครับ
ตอบลบจะไปที่ sudo vi /etc/fonts/conf.d/65-thaifont.conf
ได้ยังไงครับ?
เปิดโปรแกรมอะไรเพื่อรันคำสั่งนี้ครับ?
เปิดโปรแกรมเทอร์มินัลครับ ในเมนู "อำนวยความสะดวก"
ตอบลบผมได้คำตอบมาดังนี้อ่ะครับ
ตอบลบbash: /etc/fonts/conf.d/66-ttf-thai.conf: No such file or directory
คือพิมพ์ต่อจากของเดิมที่เป็นชื่อเครื่องเลยใช่มั้ยครับ?
ผมดอาโค๊ดดังกล่าวใส่เทคอีดิท
ตอบลบแล้วเซฟตามชื่อไฟล์แล้วครับ
66-ttf-thai.conf
จากนั้นผมหาโฟลเดอร์ดังกล่าวเจอ แต่ไม่สามารถก็อปไปใส่ได้ครับ
มันขึ้นฟ้องว่า
ตอบลบError while copying to "/etc/fonts/conf.d".
ขอคำชี้แนะด้วยคร๊าบ
ปัญหาล่าสุด ที่ตรงให้ใส่พาสเวิร์ดน่ะครับ
ตอบลบไม่สามารถพิมพ์ลงไปได้ ทำไงดีครับ?
ล่าสุดแล้ว
ตอบลบผมลองมั่วๆดูพอเข้าใจแระ ตอนนี้มีแค่พาสเวิร์ดน่ะครับ
ผมไม่สามารถพิมพ์ตรงที่ให้พิมพ์พาสเวิร์ดได้
ทำยังไงครับ???
แก้ได้แล้วจ้า
ตอบลบอ๋า ยินดีด้วยครับที่แก้ได้
ตอบลบยังไงถ้าอยากใช้ลินุกซ์จริงๆ แนะนำให้ใช้ ลินุกซ์ทะเล 8.0 นะครับ พัฒนาจาก Ubuntu 6.10 ซึ่งปรับแก้ปัญหาเกี่ยวกับภาษาไทยไปหมดแล้ว ติดตั้งแล้วใช้ได้เลย
http://www.opentle.org/th/node/4767
ทำยังไงก็ไม่ได้ แต่ต้องพยายามต่อตอนนี้กำลังเป็นเด็กใหม่กับ ubuntu อยุ่ครับ
ตอบลบ