แก้ฟอนต์กระโดด
Update (28 ธ.ค. 2549) โดย thep: ปัญหานี้แก้แล้วใน ttf-thai-tlwg 0.4.5-2 (upload วันที่ 24 ธ.ค.) แต่อาจต้องปรับแก้เรื่อง monospace font ตามที่คุณ wd เสนอแนะ ซึ่งจะได้ดำเนินการต่อไป
จากเรื่อง debootstrap จึงทำให้ได้มีโอกาสลงเดเบียนแบบเดสก์ทอปอีกครั้ง หลังจากที่ใช้แต่อูบุนตูมาตลอด พบว่าเดเบียนก็มีปัญหาฟอนต์ไทยเหมือนกัน
เคยลองขุดดูเรื่องนี้ (เริ่มเลือนลางแล้ว อย่าเชื่อมากนะครับ) พบว่า ถ้าเราใช้โปรแกรม FontForge ในการออกแบบฟอนต์ ถึงแม้ว่าเราจะกำหนด Family ของฟอนต์ไว้แล้วก็ตาม แต่เมื่อเวลาบันทึกหรือแปลงเป็น TrueType ข้อมูลพวก Family จะหายไปหมด ทำให้ระบบไม่สามารถที่จะรับรู้ได้ว่า ฟอนต์ไทยแบบไหนอยู่ใน Family อะไร เวลาเราเปิดแอปพลิเคชัน เขาจึงดึงเอา TlwgMono มาเป็นฟอนต์แรก ทำให้เกิดปัญหาฟอนต์กระโดดขึ้นมา
วิธีแก้ชั่วคราว คือการกำหนดให้ระบบรับทราบว่าฟอนต์ตัวไหนเป็น Family ไหน และเราต้องการใช้ฟอนต์แบบไหนก่อน (prefer) โดยผ่าน ~/.fonts.conf สำหรับเราคนเดียว หรือผ่าน /etc/fonts/local.conf สำหรับทุกคนในเครื่อง (ไม่ควรแก้ไขไฟล์ /etc/fonts/fonts.conf โดยตรง เนื่องจากเวลาอัปเกรด ข้อมูลเราที่เราแก้ไขไว้จะหายหมด)
เนื้อไฟล์มีดังนี้
$ vi ~/.fonts.conf (หรือ sudo vi /etc/fonts/local.conf)
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- /etc/fonts/fonts.conf file to configure system font access -->
<fontconfig>
<alias>
<family>serif</family>
<prefer>
<family>Bitstream Vera Serif</family>
<family>DejaVu Serif</family>
<family>FreeSerif</family>
<family>Norasi</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>Bitstream Vera Sans</family>
<family>DejaVu Sans</family>
<family>FreeSans</family>
<family>Loma</family>
<family>Garuda</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Bitstream Vera Sans Mono</family>
<family>FreeMono</family>
<family>TlwgTypewriter</family>
<family>TlwgMono</family>
</prefer>
</alias>
</fontconfig>
หลังจากล็อกเอาต์ แล้วล็อกอินเข้ามาใหม่ ก็จะสามารถใช้งานได้ตามต้องการ
ส่วนวิธีแก้แบบถาวร เกินสติปัญญาผมแล้ว คงต้องฝากให้คุณเทพลองขุดดูต่อน่ะครับ
แบบนี้ได้ไหมครับ ?
ยังไม่เคยลอง
ยังไม่เคยลองของคุณกำธรเลยครับ
เดี๋ยวว่าง ๆ ว่าจะลองมั่งเหมือนกัน
ผมไม่ค่อยรู้เรื่องระบบ เลยต้องใช้วิธีง่าย ๆ แทนน่ะครับ
เกือบลืมบอกว่าใช้ฟอนต์ตระกูล BitstreamVera กับ Dejavu ขึ้นก่อนฟอนต์ไทย เพราะการแสดงผลบน Terminal สวยกว่าครับ
เคยเจอเหมือนกัน
ผมก็เคยเจออาการแบบนี้เหมือนกันตอนใช้ Ubuntu 5.04...ซึ่งก็ใช้วิธีแบบคุณ wd นี้แหละแก้ได้
เดาว่าน่าจะเป็นเพราะว่า font ในกลุ่ม(family) serif และ san-serif (ที่ google ใช้) มันไม่มี font ตัวไหนที่เป็นไทยแท้ๆ......มั้ง
เรื่องจริงเป็นยังไงต้องให้ผู้รู้มาชี้แจงแถลงไขแล้วละ
ขอบคุณค่ะ
ก่อนหน้านี้เคยลองแก้แล้วก็ไม่ได้ ทนอ่านแบบกระโดดอยู่นาน
ขอบคุณมากค่ะ
fontforge
ปัญหา เรื่องฟอนต์กระโดด ผมก็ไปเซ็ตฟอนต์เอาที่ GNOME แล้วก็ที่ web browser เลย ความจริงพยายามหาสาเหตุที่ตัวฟอนต์ หรือที่ fontconfig อยู่ แล้วก็เคยคุยกับ ubuntu developer ตอนไป sprint ด้วย ว่าจะจัด preference ของฟอนต์ไทยใน fontconfig เอา (คล้ายๆ กับที่คุณกำธรกับคุณ wd ทำนี่แหละ) แต่ไปไงมาไงเขา drop ทิ้งซะแล้วหรือ? พอดีไม่ได้ตามเหมือนกันครับ อีกทางหนึ่ง เคยไปคุยกับ debian เหมือนกัน ว่าจะทำ config file ผ่าน localization-config หรือไม่ก็ที่ตัว fontconfig เลย แต่ maintainer ตอนนั้นติดเกณฑ์ทหารอยู่ อุตส่าห์ตอบเมลผ่านมือถือมาจากในค่าย ว่าออกมาแล้วค่อยว่ากัน ตอนนี้ยังไม่ได้ไปคุยต่อเลย..
แต่ที่คุณ wd บอกว่าข้อมูลเรื่อง family หายไปใน fontforge
เป็นข้อมูลที่น่าสนใจครับ ผมลองตรวจตามดู ดูเหมือนข้อมูล PFM Family ใน
OS/2 table มันเปลี่ยนจาก San-Serif เป็น Serif จริงๆ ด้วย
แบบนี้จะทำยังไงดีเนี่ย? เดี๋ยวอาจจะหาทางติดต่อ fontforge developer
ดูละกันครับ
Re: fontforge
อืม คิดว่าไม่เกี่ยวครับ PFM Family มันใช้ตอนสร้าง PFM ของ Postscript ไม่เกี่ยวกับ TrueType อยู่แล้ว เปิด .ttf ขึ้นมาไม่มีข้อมูลนี้ก็อาจจะไม่แปลก..
คงต้องหาที่อื่นละครับ
ผมไม่ค่อยรู้ระบบน่ะครับ
ไม่รู้ลินุกส์เขาดึงฟอนต์ยังไง
เคยสงสัยเหมือนกันว่า เคยเอาฟอนต์ของวินโดวส์มาขุดดู ทำไมไม่เห็นมีข้อมูล PFM Family เลย
ฟอนต์ในลินุกส์เคยพบอยู่ตระกูลนึงว่ามีข้อมูล Family อยู่ในไฟล์ TTF ด้วย
แต่ผมจำไม่ได้แล้วว่าชื่อฟอนต์อะไร ใช้ FontForge เปิดดูน่ะครับ
ตอนนั้นรู้สึกว่าอูบุนตูยังไม่ใช้ defoma แต่เดเบียนใช้แล้ว
ตอนที่ยังไม่ปรับแต่งไฟล์ .fonts.conf อูบุนตูดึงเอา TlwgMono เป็น
sans-serif ส่วนเดเบียนดึงเอา Garuda แต่ทำไมเดี๋ยวนี้เดเบียนก็ดึง
TlwgMono เหมือนกับอูบุนตูแล้ว
อย่าเชื่อมากนะครับ มันนานแล้ว เล่าสู่กันฟังแบบราง ๆ แล้วกัน :)
แต่ถ้าทราบเรื่องแล้วรบกวนนำมาเล่าให้ฟังมั่งนะครับ
fontconfig
defoma มีใช้มานานแล้วนะครับ เข้าใจว่า ubuntu ก็คงใช้ตั้งแต่ต้นอยู่แล้ว
เรื่องดึงฟอนต์ผิดเนี่ย คิดว่าเป็นทุก distro นะครับ ไม่จำกัดเฉพาะ debian/ubuntu เพราะเป็นปัญหาของ fontconfig เองตั้งแต่ต้นน้ำ ขึ้นอยู่กับว่า distro ไหนจะแก้ปัญหายังไง
ว่าแล้ว เดี๋ยวกลับไปคุยกับเขาใหม่ครับ ตอนนี้ผมได้วิธีเพิ่ม config อีกแบบหนึ่ง โดยไม่ต้องไปยุ่งเกี่ยวกับชื่อฟอนต์ที่ไม่ใช่ฟอนต์ไทยแล้ว โดยเพิ่มใน /etc/fonts/conf.d/ ในลำดับ 65 ได้เลย ตามเนื้อหาข้างล่างนี้ คำถามมีแค่ว่า จะเพิ่มที่ไหน ระหว่างแพกเกจฟอนต์เอง หรือที่ fontconfig-config ไว้คุยแล้วได้ผลยังไงจะมาแจ้งอีกทีครับ
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>serif</family>
<accept>
<family>Norasi</family>
</accept>
</alias>
<alias>
<family>sans-serif</family>
<accept>
<family>Loma</family>
<family>Garuda</family>
</accept>
</alias>
<alias>
<family>monospace</family>
<accept>
<family>TlwgTypist</family>
<family>TlwgMono</family>
</accept>
</alias>
</fontconfig>
ขอชื่อไฟล์ด้วย
รบกวนช่วยตั้งชื่อไฟล์ให้ด้วยครับ เวลาอ้างถึงจะได้เหมือน ๆ กัน
สมมุิติตั้งชื่อว่า /etc/fonts/conf.d/65-thaifont.conf ยังงี้ได้หรือเปล่าครับ
conf.avail
พอดีเพิ่งเข้าไปดูตามที่พี่เทพบอก
เนื้อหาของ /etc/fonts/conf.d เป็นเนื้อหาที่ทำ symbolic links มาจาก /etc/fonts/conf.avail ครับ
ดังนั้นเพื่อให้การจัดการเป็นระบบ เราน่าจะเอาไฟล์ตามที่คุณ wd เขียนไว้
65-thaifont.conf ไปไว้ที่ /etc/fonts/conf.avail
แล้วค่อยทำ symbolic links เอา เหตุผลก็คือ จะทำให้การ Enable/Disable ง่ายกว่า เพราะแค่เพิ่มหรือลบ symbolic links ก็เรียบร้อยครับ
# ln -sf /etc/fonts/conf.avail/65-thaifont.conf /etc/fonts/conf.d
**********************
Key ID: D4CEFD37
Fingerprint: 1ED3 27F6 48C8 5C9D 4285 F24D D64E C0AF D4CE FD37
**********************
uploaded
แบบที่ neutron ว่า ถูกต้องแล้ว ตอน build package ผมก็ต้องทำแบบนี้แหละ แต่ที่เล่าในเว็บก็เพื่อให้ทดลองกันก่อน
ตอนนี้ ผม upload thaifonts-scalable 0.4.5-2 เข้า debian โดยเพิ่ม fontconfig file ที่ว่าแล้วนะครับ คง apt จาก sid ได้พรุ่งนี้เช้า
Re: uploaded
ปล.
เพิ่มเติมนิดหนึ่ง ว่าแพกเกจที่ติดตั้ง ก็คือ ttf-thai-tlwg ตามปกตินะครับ
ส่วน thaifonts-scalable เป็นชื่อ source ที่ใช้ build เฉยๆ
เนียน
ลองทดสอบแล้ว วิธีของคุณเทพแก้ตรงจุดที่สุดครับ ;D
แต่ผมขออนุญาตเติม TlwgTypewriter เข้าไปด้วย ไม่งั้นเวลาเข้าหมวดแก้ไขใน Drupal แล้วมันอ่านข้อความไม่รู้เรื่องครับ
ท่อนสุดท้ายจะกลายเป็น
...
<alias>
<family>monospace</family>
<accept>
<family>TlwgTypewriter</family>
<family>TlwgTypist</family>
<family>TlwgMono</family>
</accept>
</alias>
...ไม่ทันแล้ว
ไม่ทันเสียแล้วครับ :-/ ผมติดต่อ sponsor ไปก่อนหน้านี้แล้ว ตอนนี้ก็ upload ขึ้นไปเรียบร้อยแล้ว
แต่ TlwgTypewriter ก็น่าจะแทนด้วย TlwgTypist ได้อยู่แล้วนะครับ ไม่น่ามีปัญหา









Recent comments
1 day 16 hours ago
2 days 8 hours ago
1 week 4 days ago
2 weeks 6 days ago
3 weeks 5 days ago
3 weeks 6 days ago
4 weeks 15 hours ago
4 weeks 17 hours ago
4 weeks 1 day ago
4 weeks 3 days ago