ubuntu : แก้ปัญหาฟอนต์กระโดด
ฟอนต์กระโดดในอูบุนตู เดาเอาว่าเป็นปัญหาข้อผิดพลาดแพคเกจ defoma ของอูบุนตูเอง (ยังไม่รู้จริงครับ)
คือระบบจะไม่รู้ว่าฟอนต์ Norasi, และฟอนต์อื่น ๆ เป็นฟอนต์สกุลไหน
เขาจะดึงมาจากตัวที่น่าจะใกล้เคียงที่สุด
ซึ่งพบว่าในหน้าเว็บที่ถูกเข้ารหัสแบบ utf-8 ถ้าหน้าเว็บไม่ระบุสกุลฟอนต์ หรือระบุเป็นสกุล Sans-Serif
ระบบจะดึงเอาฟอนต์ TlwgMono เข้ามาใช้ก่อน ซึ่งจริง ๆ แล้วฟอนต์ TlwgMono เป็นฟอนต์แบบความกว้างคงที่
เลยทำให้เกิดปัญหาฟอนต์กระโดด
การแก้ไขคือ เราต้องสร้างคอนฟิกไฟล์ให้ระบบรู้ว่าเราต้องการฟอนต์แบบไหน
ไฟล์คอนฟิกที่ว่านี้คือ
1.กรณีที่ต้องการให้มีผลแค่เราคนเดียว ใช้ไฟล์ ~/.fonts.conf
2.กรณีที่ต้องการให้มีผลทั้งระบบ ให้ใช้ไฟล์ /etc/fonts/local.conf
*** ไม่ควรแก้ไฟล์ /etc/fonts/fonts.conf โดยตรง เนื่องจากเวลาอัพเกรดระบบ
จะทำให้ไฟล์นี้ถูกลบ หรือไม่ถูกปรับปรุงตามแพคเกจไปด้วย
$ vi ~/.fonts.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>
เวลาระบบเลือกใช้ เขาจะดึงจากตัวแรกก่อน ถ้าภาษาตรง ระบบจะเลือกใช้ฟอนต์อันแรก
แต่ถ้าภาษาไม่ตรง จะเลือกฟอนต์อันดับถัดมา
ที่ต้องเอา Bitstream Vera ขึ้นต้น เพราะว่าเป็นฟอนต์ของระบบในเดเบียน
ในอนาคต คงมีภาษาไทยฝังอยู่ในนี้เลย
(หมายเหตุ ในการแสดงหน้าเว็บ พบว่าถ้าหน้าเว็บมีการระบุสกุลฟอนต์ซ้ำ ๆ เช่น sans-serif
ระบบจะพยายามดึงฟอนต์ในอันดับถัดมาใช้ด้วย ฉะนั้นการที่มีหลายตัวเลือก จะทำให้การแสดงผลในหน้าเว็บมีความหลากหลายกว่า)
หลังจากแก้ไขเสร็จเรียบร้อยแล้ว ให้ล๊อกเอาต์และล๊อกอินใหม่ ก็จะสามารถใช้งานได้
เพิ่มเติม
ใช้วิธีของคุณเทพ debianclub แก้ปัญหาตรงจุดกว่าครับ
$ sudo vi /etc/fonts/conf.avail/65-thaifont.conf
<?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>TlwgTypewriter</family>
<family>TlwgTypist</family>
<family>TlwgMono</family>
</accept>
</alias>
</fontconfig>สร้างลิงก์ไปยัง /etc/fonts/conf.d
$ sudo ln -sf /etc/fonts/conf.avail/65-thaifont.conf /etc/fonts/conf.d
ล๊อกเอาต์แล้วล๊อกอินใหม่ ก็ใช้ได้ อย่าลืมลบไฟล์เก่า ~/.fonts.conf หรือ /etc/fonts/local.conf ด้วย
เพิ่มเติม ๒
อูบุนตูของผมไม่มีไดเรกทอรี่ conf.avail ก็ใช้วิธีสร้างไฟล์ตรง ๆ คือ sudo vi /etc/fonts/conf.d/65-thaifont.conf ได้เลย
หมายเหตุ - อูบุนตู Feisty เดินตามรอยเดเบียนแล้ว ใช้ตามข้างบนได้เลย
เพิ่มเติม ๓ - ๕๐ พ.ค. ๔
เพิ่มความคมให้ฟอนต์ด้วย xml ท่อนนี้ครับ
...
<match target="font">
<test name="family"><string>Loma</string></test>
<edit name="autohint" mode="assign"><bool>true</bool></edit>
<edit name="hinting" mode="assign"><bool>true</bool></edit>
</match>
...






Recent comments