วันพฤหัสบดีที่ 9 พฤศจิกายน พ.ศ. 2549

ปรับแต่งฟอนต์ไทยบน Ubuntu Part II

จากตอนที่แล้ว ยังมีสิ่งที่อยากแก้ 2 อย่าง ได้แก่

  1. ไม่ควรเอาคอนฟิกที่สร้างเอง ไปใส่ใน /etc/fonts/conf.d/ น่าจะคอนฟิกให้กับ user ก่อน เพื่อที่จะได้แก้ไขปรับแต่งได้ง่ายๆ

  2. การแสดงภาษาไทยยังไม่สวยงาม เพราะฟอนต์ไทยชุดนี้ไม่มี hinting


ในภาค 2 นี้ก็จะแก้ไขที่ทำไปแล้วจากภาคแรกบ้าง แต่ส่วนใหญ่จะเป็นการทำเพิ่มเติม ดังนี้


  1. reconfig fontconfig-config ใหม่ โดย


    $ sudo dpkg-reconfigure fontconfig-config
    Password:_


    หน้าจอแรก กำหนดว่าจะใช้ font hinting หรือไม่ เนื่องจากผมต้องการใช้ Dejavu เป็นหลัก ซึ่งมี hint ที่ดีอยู่แล้ว จึงใช้ native hint


    fontconfig-config-1.png

    ต่อมาก็กำหนดว่า จะเรนเดอร์ฟอนต์ด้วย sub-pixel หรือไม่ sub-pixel มีบนจอ LCD ครับ ทำให้ฟอนต์ดูเนียนขึ้นอีกเล็กน้อย ปกติจะใช้ Automatic คือจะใช้ sub-pixel ถ้าใช้จอ LCD ถ้าไม่ใช่ ก็ไม่ใช้ ขั้นตอนนี้จะเลือก Automatic ก็ได้ครับ แต่ผมเลือก Never เพราะต้องการ capture หน้าจอไม่ให้ติด sub-pixel มาด้วย


    fontconfig-config-2.png

    ต่อมาก็กำหนดว่า จะเปิดใช้ bitmaped fonts หรือไม่ ผมเลือก <ใช่> เพราะต้องการใช้ฟอนต์ MiscFixed ใน gnome-terminal แนะนำให้เลือกตามนี้ครับ


    fontconfig-config-3.png

  2. ถ้าทำตามตอนที่แล้ว จะมีไฟล์ /etc/fonts/conf.d/66-thai-ttf.conf ให้ลบทิ้งก่อน ถ้าไม่มีก็ข้ามไป


    $ sudo rm /etc/fonts/conf.d/66-thai-ttf.conf
    Password:_

  3. สร้างไฟล์ชื่อ ~/.fonts.conf ให้มีเนื้อหาดังนี้

    < ?xml version="1.0"?>
    < !DOCTYPE fontconfig SYSTEM "fonts.dtd">


    Loma
    Garuda
    Kinari
    Purisa
    sans-serif


    Norasi
    serif


    TlwgMono
    TlwgTypewriter
    monospace


    sans-serif

    Loma



    serif

    Loma



    monospace

    TlwgTypewriter




    Loma
    Garuda
    Norasi
    Kinari
    Purisa
    TlwgMono
    TlwgTypewriter
    Angsana New
    Browalia New
    Cordia New

    true
    true
    false
    hintslight



    แล้วสั่ง


    $ fc-cache

    ในไฟล์นี้ จะมีที่แตกต่างจากคอนฟิกของตอนที่แล้วคือ ฟอนต์ไทยเหล่านี้ จะใส่ AutoHint ให้มันด้วย ซึ่งผมทดสอบแล้ว ค่อนข้างน่าพอใจทีเดียว


  4. จากการทดสอบ ที่ขนาดฟอนต์ 10 point เป็นขนาดที่ดูเพี้ยนๆ ชอบกล คือความสูงของตัวอักษรจะไม่เท่ากัน แต่พอลองเปลี่ยนเป็นขนาดอื่นๆ เช่น 8, 9, 11 กลับดูดีขึ้น ความเบลอลดลงอย่างเห็นได้ชัด ดังนั้นขั้นตอนนี้คือเปลี่ยนขนาดฟอนต์ครับ ใช้เมนู "ระบบ" --> "ปรับแต่งพื้นโต๊ะ" --> "แบบอักษร"


    gnome-font-config-2.png

    ส่วนบนไฟร์ฟ็อกซ์เท่าที่ลองดูไม่จำเป็นต้องเปลี่ยนขนาดใหม่ก็ได้


    เสร็จแล้วถ้าเปิดไฟร์ฟ็อกซ์อยู่ก็ลองปิดแล้วเปิดใหม่ ภาพนี้คือตัวอย่างผลลัพธ์ที่ได้ ดูดีขึ้นไหมครับ


    firefox-2.png

  5. ถ้าต้องการลองเปลี่ยนไปใช้ฟอนต์อื่น ก็สามารถทำได้ เช่นจะเปลี่ยนไปใช้ฟอนต์ Garuda แทน Loma ก็แก้ไฟล์ ~/.fonts.conf จาก




    sans-serif

    Loma



    serif

    Loma



    เป็น


    sans-serif

    Garuda



    serif

    Garuda




จบภาคสองครับ หวังว่าจะมีประโยชน์ต่อผู้อ่านทุกท่านครับ :-)

อัพเดท: การใช้ AutoHint ใช้ได้ผลดีกับ Ubuntu 6.10 (Edgy) และ Fedora Core 6 นะครับ เพราะสองตัวนี้ใช้ FreeType 2.2.1 ซึ่งมีระบบ AutoHint ที่ดีกว่ารุ่นก่อนๆ ดังนั้นหากใช้ Ubuntu เก่ากว่านี้ หรือดิสโตรอื่น ก็ไม่ต้องเปิด AutoHint ครับ ยอมให้เบลอๆ หน่อย แต่อ่านได้ดีกว่า

6 ความคิดเห็น :

  1. ขอโทษครับ ช่วยส่งไหล์ fonts.conf ให้ผมหน่อยได้หรือเปล่าครับ คือผมสร้างไฟลืแล้วมีปัญหาน่ะครับ ตอนนี้พอผมลบไฟลื fonts.conf ไปแล้วก็สามารถบูทเข้า ๏ ubuntu ได้ไม่มีปัญหาครับ คงจะไปติดตรงที่สร้างไฟล์ fonts.conf ครับ

    ตอบลบ
  2. ลองดาวน์โหลดไฟล์นี้ไปครับ เป็นคอนฟิกที่ผมใช้อยู่ .fonts.conf.gz

    ตอบลบ
  3. ผมลองทำตามแล้วครับ เยี่ยมมากเลย



    ผมอยากถามอ่ะครับ คือ ใน gnome-terminal

    แสดงผล ภาษาไทยไม่สวยเลย พิมพ์ภาษาไทยก็ไม่สวย ครับ

    ผมใช้ Fixed ใน gnome-terminal อ่ะครับ



    ใจจริงอยากให้ภาษาไทยสวย ๆ เหมือนอยากใน xterm ครับ

    พอมีทางมั๊ยครับ

    ตอบลบ
  4. [...] ระบบปฏิบัติการ: Ubuntu Edgy (6.10) ธีม: default ฟอนต์: Dejavu + Loma (ซึ่งปรับแต่งด้วยวิธีการใน การปรับแต่งฟอนต์ไทยบน Ubuntu และ ปรับแต่งฟอนต์ไทยบน Ubuntu Part II [...]

    ตอบลบ
  5. ได้ความรู้ดีครับ

    แต่รูปไม่ขึ้นครับ ทั้งสอง Part เลย

    ตอบลบ
  6. คือผมได้ทำตามแบบของพี่แล้วน่ะครับแต่

    ตัวหนังสือไทยมันจะทะลุหน้าจอไปน่ะครับ

    มันไม่ยอมตัดให้พอดีน่ะครับ ควรจะทำยังไงต่อครับ

    ตอบลบ