inicio sindicaci;ón

ปรับแต่งฟอนต์ไทยบน 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">
    <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 ครับ ยอมให้เบลอๆ หน่อย แต่อ่านได้ดีกว่า

jeff said,

November 12, 2006 @ 00:30

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

กำธร said,

November 12, 2006 @ 10:18

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

jeff said,

November 12, 2006 @ 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 ออก

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

บิว said,

November 16, 2006 @ 21:15

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

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

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

My Life As `Kamthorn’ » เดสก์ท็อปของฉัน said,

January 18, 2007 @ 19:25

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

Arthip said,

January 19, 2007 @ 06:23

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

nt_nota said,

March 11, 2007 @ 15:55

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

RSS feed for comments on this post · TrackBack URI

Leave a Comment