จากตอนที่แล้ว ยังมีสิ่งที่อยากแก้ 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">
    <fontconfig>
            <alias>
                    <family>Loma</family>
                    <family>Garuda</family>
                    <family>Kinari</family>
                    <family>Purisa</family>
                    <default><family>sans-serif</family></default>
            </alias>
            <alias>
                    <family>Norasi</family>
                    <default><family>serif</family></default>
            </alias>
            <alias>
                    <family>TlwgMono</family>
                    <family>TlwgTypewriter</family>
                    <default><family>monospace</family></default>
            </alias>
            <alias>
                    <family>sans-serif</family>
                    <prefer>
                            <family>Loma</family>
                    </prefer>
            </alias>
            <alias>
                    <family>serif</family>
                    <prefer>
                            <family>Loma</family>
                    </prefer>
            </alias>
            <alias>
                    <family>monospace</family>
                    <prefer>
                            <family>TlwgTypewriter</family>
                    </prefer>
            </alias>
            <match target="font">
                    <test name="family">
                            <string>Loma</string>
                            <string>Garuda</string>
                            <string>Norasi</string>
                            <string>Kinari</string>
                            <string>Purisa</string>
                            <string>TlwgMono</string>
                            <string>TlwgTypewriter</string>
                            <string>Angsana New</string>
                            <string>Browalia New</string>
                            <string>Cordia New</string>
                    </test>
                    <edit name="autohint" mode="assign"><bool>true</bool></edit>
                    <edit name="hinting" mode="assign"><bool>true</bool></edit>
                    <edit name="embeddedbitmap" mode="assign"><bool>false</bool></edit>
                    <edit mode="assign" name="hintstyle"><const>hintslight</const></edit>
            </match>
    </fontconfig>
     

    แล้วสั่ง

    $ fc-cache
    

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

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

    gnome-font-config-2.png

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

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

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

            <alias>
                    <family>sans-serif</family>
                    <prefer>
                            <family>Loma</family>
                    </prefer>
            </alias>
            <alias>
                    <family>serif</family>
                    <prefer>
                            <family>Loma</family>
                    </prefer>
            </alias>
     

    เป็น

            <alias>
                    <family>sans-serif</family>
                    <prefer>
                            <family>Garuda</family>
                    </prefer>
            </alias>
            <alias>
                    <family>serif</family>
                    <prefer>
                            <family>Garuda</family>
                    </prefer>
            </alias>
     

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

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



7 Comments to “ปรับแต่งฟอนต์ไทยบน Ubuntu Part II”

  1. jeff | November 12th, 2006 at 00:30

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

  2. กำธร | November 12th, 2006 at 10:18

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

  3. jeff | November 12th, 2006 at 12:19

    ขอบคุณมากครับ อันนี้เป็นไฟล์ที่ผมไปดาวโหลดมาจาก original ubuntu น่ะครับ แล้วก็มาเพิ่มไฟล์ชองพี่ไปน่ะครับ

    
    
    
    
    	/usr/share/fonts
    	/usr/share/X11/fonts /usr/local/share/fonts
    	~/.fonts
    
    			mono
    
    			monospace
    
    			sans serif
    
    			sans-serif
    
    			sans
    
    			sans-serif
    
    		DejaVu Serif
    		Bitstream Vera Serif
    		Times New Roman
    		Thorndale AMT
    		Times
    		Nimbus Roman No9 L
    		Luxi Serif
    		Kochi Mincho
    		AR PL SungtiL GB
    		AR PL Mingti2L Big5
    		MS 明朝
    		Baekmuk Batang
    		FreeSerif
    		MgOpen Canonica
    		serif
    
    		DejaVu Sans
    		Bitstream Vera Sans
    		Helvetica
    		Arial
    		Verdana
    		Albany AMT
    		Nimbus Sans L
    		Luxi Sans
    		Kochi Gothic
    		AR PL KaitiM GB
    		AR PL KaitiM Big5
    		MS ゴシック
    		Baekmuk Dotum
    		SimSun
    		FreeSans
    		MgOpen Moderna
    		sans-serif
    
    		DejaVu Sans Mono
    		Bitstream Vera Sans Mono
    		Courier
    		Courier New
    		Andale Mono
    		Luxi Mono
    		Cumberland AMT
    		Nimbus Mono L
    		NSimSun
    		FreeMono
    		monospace
    
    			sans-serif
    
    			serif
    
    			monospace
    
    			sans-serif
    
    			Symbol
    
    			Standard Symbols L
    
              Times
              Nimbus Roman No9 L
    
              Helvetica
              Nimbus Sans L
    
              Courier
              Nimbus Mono L
    
      -->
    
    		Times New Roman
    		Thorndale AMT
    
    		Arial
    		Albany AMT
    
    		Courier New
    		Cumberland AMT
    
    	  ZapfDingbats
    	  Dingbats
    
    	  Symbol
    	  Open Symbols L
    
    			Times
    
    			true
    
    			Nimbus Roman No9 L
    
    			Helvetica
    
    			true
    
    			Nimbus Sans L
    
    			Courier
    
    			true
    
    			Nimbus Mono L
    
    			Times New Roman
    			Thorndale AMT
    			Thorndale
    
    			true
    
    			Times New Roman
    			Nimbus Roman No9 L
    
    			Arial
    			Albany AMT
    			Albany
    			Verdana
    
    			true
    
    			Arial
    			Nimbus Sans L
    
    			Courier New
    			Cumberland AMT
    			Cumberland
    
    			true
    
    			Courier New
    			Nimbus Mono L
    
    		GulimChe
    		false
    
    		DotumChe
    		false
    
    		BatangChe
    		false
    
    		GungsuhChe
    		false
    
    			Bitstream Vera Sans
    
    			7.5
    
    			false
    
    			Bitstream Vera Serif
    
    			7.5
    
    			false
    
    			Bitstream Vera Sans Mono
    
    			7.5
    
    			false
    
    	~/.fonts.conf
    
    	conf.d
    	local.conf
    
    	language-selector.conf
    
    		serif
    
    			DejaVu Serif
    			Bitstream Vera Serif
    			Times New Roman
    			Thorndale AMT
    			Luxi Serif
    			Nimbus Roman No9 L
    			Times
    			Frank Ruehl
    			FreeSerif
    			MgOpen Canonica
    			Kochi Mincho
    			AR PL SungtiL GB
    			AR PL Mingti2L Big5
    			MS 明朝
    			Baekmuk Batang
    
    		sans-serif
    
    			DejaVu Sans
    			Bitstream Vera Sans
    			Verdana
    			Arial
    			Albany AMT
    			Luxi Sans
    			Nimbus Sans L
    			Helvetica
    			Nachlieli
    			FreeSans
    			MgOpen Moderna
    			Kochi Gothic
    			AR PL KaitiM GB
    			AR PL KaitiM Big5
    			MS ゴシック
    			Baekmuk Dotum
    			SimSun
    
    		monospace
    
    			DejaVu Sans Mono
    			Bitstream Vera Sans Mono
    			Andale Mono
    			Courier New
    			Cumberland AMT
    			Luxi Mono
    			Nimbus Mono L
    			Courier
    			Miriam Mono
    			FreeMono
    			Kochi Gothic
    			AR PL KaitiM GB
    			Baekmuk Dotum
    
    		
    
    			roman
    
    		
    
    			roman
    
    		
    
    				matrix
    				10.2
    					01
    
    		
    
    			oblique
    
    		
    
    			100
    
    		
    
    			200
    
    		
    
    			true
    
    			0x0020	
    			0x00A0	
    			0x00AD	
    			0x034F	
    			0x0600	
    			0x0601	
    			0x0602	
    			0x0603	
    			0x06DD	
    			0x070F	
    			0x115F	
    			0x1160	
    			0x1680	
    			0x17B4	
    			0x17B5	
    			0x180E	
    			0x2000	
    			0x2001	
    			0x2002	
    			0x2003	
    			0x2004	
    			0x2005	
    			0x2006	
    			0x2007	
    			0x2008	
    			0x2009	
    			0x200A	
    			0x200B	
    			0x200C	
    			0x200D	
    			0x200E	
    			0x200F	
    			0x2028	
    			0x2029	
    			0x202A	
    			0x202B	
    			0x202C	
    			0x202D	
    			0x202E	
    			0x202F	
    			0x205F	
    			0x2060	
    			0x2061	
    			0x2062	
    			0x2063	
    			0x206A	
    			0x206B	
    			0x206C	
    			0x206D	
    			0x206E	
    			0x206F	
    			0x3000	
    			0x3164	
    			0xFEFF	
    			0xFFA0	
    			0xFFF9	
    			0xFFFA	
    			0xFFFB	
    
                    Loma
                    Garuda
                    Kinari
                    Purisa
                    san-serif
    
                    Norasi
                    serif
    
                    TlwgMono
                    TlwgTypewriter
                    monospace
    
                    sans-serif
    
                            Loma
    
                    serif
    
                            Loma
    
                    monospace
    
                            TlwgTypewriter
    
                    Loma
                    true
                    true
                    false
    
                    Garuda
                    true
                    true
                    false
    
                    Norasi
                    true
                    true
                    false
    
                    Kinari
                    true
                    true
                    false
    
                    Purisa
                    true
                    true
                    false
    
                    TlwgMono
                    true
                    true
                    false
    
                    TlwgTypewriter
                    true
                    true
                    false
    
    			30
    

    แล้วก็เพิ่มส่วนของพี่ไปตอนท้ายน่ะครับ ผมคิดว่าผมคงเซ็ตไม่เหมือนพี่นะครับ เพราะลองเอาของพี่ไป replace แล้วก้เหมือนเดิมครับต้อง remove ออก

    ขอบคุณครับพี่กำธร มีปัญหานี้ขึ้นมาทำให้ผมได้ความรู้เพิ่มมาอีกหนึ่งอย่างครับ

  4. บิว | November 16th, 2006 at 21:15

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

    ผมอยากถามอ่ะครับ คือ ใน gnome-terminal
    แสดงผล ภาษาไทยไม่สวยเลย พิมพ์ภาษาไทยก็ไม่สวย ครับ
    ผมใช้ Fixed ใน gnome-terminal อ่ะครับ

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

  5. My Life As `Kamthorn’ » เดสก์ท็อปของฉัน | January 18th, 2007 at 19:25

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

  6. Arthip | January 19th, 2007 at 06:23

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

  7. nt_nota | March 11th, 2007 at 15:55

    คือผมได้ทำตามแบบของพี่แล้วน่ะครับแต่
    ตัวหนังสือไทยมันจะทะลุหน้าจอไปน่ะครับ
    มันไม่ยอมตัดให้พอดีน่ะครับ ควรจะทำยังไงต่อครับ

Leave a Comment

Creative Commons Attribution-ShareAlike 3.0 Unported
Creative Commons Attribution-ShareAlike 3.0 Unported