<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener("load", function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <iframe src="http://www.blogger.com/navbar.g?targetBlogID=7355927&amp;blogName=Poonlap%27s+Linux+blog&amp;publishMode=PUBLISH_MODE_BLOGSPOT&amp;navbarType=BLUE&amp;layoutType=CLASSIC&amp;searchRoot=http%3A%2F%2Fpoonlap.blogspot.com%2Fsearch&amp;blogLocale=en_US&amp;homepageUrl=http%3A%2F%2Fpoonlap.blogspot.com%2F" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" height="30px" width="100%" id="navbar-iframe" allowtransparency="true" title="Blogger Navigation and Search"></iframe> <div></div>
 Poonlap's Linux blog  ใช้ซอฟต์แวร์เสรี, มีทางเลือก, ประเทืองปัญญา, พึ่งพาตนเอง.
 
      « Home

เนื้อหาที่ผ่านมา

กระแสตัดคำภาษาไทยใน Firefox
Thai keyboard layouts
แฮ็ก xkbprint ตอนที่ 4 : แก้ไฟล์ psgeom.c
วิวัฒนาการการติดตั้งโปรแกรมจากรหัสต้นฉบับ
แฮ็ก xkbprint ตอนที่ 3 : เตรียมฟอนต์ PostScript
เปลี่ยนมาใช้ xorg
ใช้ strace ดูไฟล์ที่โปรเซสเปิด
แฮ็ก xkbprint - ตอนที่ 2
แฮ็ก xkbprint ตอนที่ 1
สำรวจการเรนเดอร์ฟอนต์ในระบบ X วินโดว์
 
      เนื้อหาในอดีต
06/01/2004 - 07/01/2004
07/01/2004 - 08/01/2004
08/01/2004 - 09/01/2004
09/01/2004 - 10/01/2004
10/01/2004 - 11/01/2004
11/01/2004 - 12/01/2004
12/01/2004 - 01/01/2005
01/01/2005 - 02/01/2005
02/01/2005 - 03/01/2005
03/01/2005 - 04/01/2005
04/01/2005 - 05/01/2005
05/01/2005 - 06/01/2005
06/01/2005 - 07/01/2005
07/01/2005 - 08/01/2005
08/01/2005 - 09/01/2005
09/01/2005 - 10/01/2005
10/01/2005 - 11/01/2005
11/01/2005 - 12/01/2005
12/01/2005 - 01/01/2006
01/01/2006 - 02/01/2006
02/01/2006 - 03/01/2006
03/01/2006 - 04/01/2006
 
      เชิ่อมโยง

รูปประกอบ (Flickr)
โค้ด
รูปประกอบ (อดีต)
deli.icio.us/poonlap

Thai Linux Working group
TLWG Planet
Blognone
Home at LTN
Bact's blog
Hui blog
Theppitak's blog
Noi's life & thoughts
Kitty.in.th
Sf-alpha
Vee blog
too - blogin'
Mk's blog
Pok's blogger
Vmlinix blog
Sothorn's Web log
คุณอุทัย
DrRider's Blog
Donga's memories

This page is powered by Blogger. Isn't yours?

Creative Commons License

Thai Firefox ตัดคำและจัดระดับวรรณยุกต์สระใน Gentoo

จากกระแสการตัดคำภาษาไทยใน Firefox, ตอนนี้เรามีแพชสามตัวสามแบบที่สามารถทำให้ตัดคำภาษาไทยได้ถูกต้องใน Firefox. แต่ละแบบก็มีคุณสมบัติ, ข้อดีข้อเสียต่างๆกัน. เท่าที่เคยลองแพชตัดคำของลินุกซ์ทะเลดูแล้ว, ปรากฏว่าไม่รู้ผมทำอะไรพลาด, แพชอันใหม่ที่คุณสัมพันธ์ทำใช้ไม่ได้แต่แพชอันเก่าที่ว่าอืดๆใช้ได้ดี.

วันนี้พยายามใหม่อีกครั้งกับแพช ICU ของคุณสัมพันธ์แต่ก็ยังใช้ไม่ได้อยู่ดี. ใช้ไม่ได้นี่หมายถึงคอมไพล์อะไรผ่านหมดแต่มันไม่ตัดคำให้. เลยทำใจว่างๆใหม่ตัดสินใจลองแพชที่พี่ฮุ้ย submit ไว้ใน CVS แล้วกัน.

เตรียมแพช

ก่อนอื่นดาว์นโหลดแพชตัดคำ Firefox ของพี่ฮุ้ย firefox-cttex-wbr-b3.patch.gz.
$ wget -nd ftp://linux.thai.net/pub/ThaiLinux/cvs/software/mozilla+thai/cttex-wbr/firefox-cttex-wbr-b3.patch.gz
$ gunzip firefox-cttex-wbr-b3.patch.gz 
ลองใช้ดูแล้ว, ปรากฏว่าแพชของพี่ฮุ้ยยังไม่สามารถใช้กับ Gentoo ได้ทันทีต้องแก้ไขเล็กน้อย. คือแพชของพี่ฮุ้ยจะสร้างจากไดเรกทอรีย่อยที่อยู่ใต้ไดเรกทอรีหลักอีกที, ทำให้แพชด้วยไฟล์ .ebuild ไม่ได้ (หรือผมไม่รู้วิธี). จึงต้องแก้ช่วงที่เป็นชื่อไฟล์จาก
 diff -rup --new-file src.org/Makefile.in src/Makefile.in
--- src.org/Makefile.in Fri Apr 18 04:19:27 2003
+++ src/Makefile.in     Fri Jan 14 00:21:40 2005
...
ให้เป็น
diff -rup --new-file src.org/Makefile.in src/Makefile.in
--- firefox.org/intl/lwbrk/src/Makefile.in      Fri Apr 18 04:19:27 2003
+++ firefox/intl/lwbrk/src/Makefile.in  Fri Jan 14 00:21:40 2005
...
ผมเลยสร้างแพชสำหรับไฟล์แพชนี้อีกทีหนึ่ง firefox-cttex-wbr-b3_prefix.patch. ใช้หลังจากที่ดาว์นโหลดแพชของพี่ฮุ้ยอีกที
$ ls 
firefox-cttex-wbr-b3.patch     firefox-cttex-wbr-b3_prefix.patch
$ patch -p0 < firefox-cttex-wbr-b3_prefix.patch
patching file firefox-cttex-wbr-b3.patch
$ head firefox-cttex-wbr-b3.patch
diff -rup --new-file src.org/Makefile.in src/Makefile.in
--- firefox.org/intl/lwbrk/src/Makefile.in      Fri Apr 18 04:19:27 2003
+++ firefox/intl/lwbrk/src/Makefile.in  Fri Jan 14 00:21:40 2005
@@ -35,7 +35,7 @@ REQUIRES      = xpcom                   unicharutil                   $(NULL)

-CSRCS          = rulebrk.c
+CSRCS          = rulebrk.c cttex-wrap.c findword.c map.c cache.c
เสร็จแล้วเอาไฟล์แพชที่แก้ไขแล้วไปไว้ที่ไดเรกทอรี /usr/portage/net-www/mozilla-firefox/files.
# cp firefox-cttex-wbr-b3.patch /usr/portage/net-www/mozilla-firefox/files
เสร็จการเตรียมแพชสำหรับตัดคำครับ.

เตรียมแพชสำหรับสภาพแวดล้อมภาษาไทย

ไหนๆทำตัดคำแล้วก็เลยอยากจะทำสภาพแวดล้อมของ firefox ให้เป็นภาษาไทยซะเลย. อันนี้ไม่ใช่อะไรใหม่, ก็เอาไฟล์แพชมาจากไฟล์ firefox-1.0-5.tlc.src.rpm ซึ่งเป็นต้นฉบับของ RPM มากระจายแล้วเลือกเอาแพชมาแก้อีกทีหนึ่ง.
# emerge rpm
# wget -nd ftp://ftp.opentle.org/pub/linux-tle/7.0/i386/TLE/SRPMS.main/firefox-1.0-5.tlc.src.rpm
# rpm -ihv firefox-1.0-5.tlc.src.rpm
ไฟล์รหัสต้นฉบับของ RPM จะไปอยู่ที่ไดเรกทอรี /usr/src/redhat/SOURCES. ไฟล์ที่ต้องการคือ firefox-1.0rc-config-tle.patch แต่ไม่เอามาใช้ทั้งหมด, ต้องแก้ไขเล็กน้อย. แพชอันนี้จะเปลี่ยนค่าปริยายต่างๆเช่นฟอนต์ปริยายจะใช้ฟอนต์ Loma, เอ็นโค้ดดิงก์โดยปริยายจะเป็น TIS-620 ฯลฯ. เพื่อความสะดวกผมเปลี่ยนชื่อและเนื้อหาให้เรียบร้อยเป็น firefox-1.0-thai-env.patch. ดาว์นโหลดไฟล์นี้ไปไว้ที่ /usr/portage/www-net/mozilla-firefox/files.

สิ่งที่ทำคือพยายามจะเปลี่ยนค่าปริยายให้น้อยที่สุดคือเปลี่ยนเฉพาะส่วนที่เกี่ยวกับฟอนต์ปริยาย, เอ็นโค้ดดิงก์. ส่วนที่แตกต่างได้แก่

  • ลบไซด์ค้นหาโดยปริยายจาก nipa ออก, ให้ใช้ google ตามที่ mozilla ตั้งค่ามา
  • คงค่า URL ต่างๆไว้ตามเดิมเช่นหน้าแรกเป็น mozilla.org / firefox
  • แก้ไฟล์ fontEncoding.properties
แก้ไฟล์ fontEncoding.properties เพราะเวลาคอมไพล์จะใช้ --enable-ctl (Enable Thai Complex Script support) เนื้อหาที่แก้ไขดูได้จากไฟล์ /usr/lib/MozillaFirefox/res/fonts/fontEncoding.properties หลังติดตั้งเสร็จเรียบร้อยแล้ว. จะเป็นแบบนี้
...
# Thai TTFs
# glyph arrangement : TIS620-2 Windows encoding,
# code points used : Unicode Thai block + about 10 PUA code points in U+F700,
# coverage : US-ASCII, Thai (U+0E00-U+0E07F), punctuation marks
#            U+2018, U+2019, U+201c, U+201d, U+2022, U+2013, U+2014 )
#
# These familes of fonts and other fonts with the same PUA assignment
# are included as a part of Thai language support in most Linux distributions.
encoding.norasi.ttf = x-thaittf-0.wide
encoding.garuda.ttf = x-thaittf-0.wide
encoding.dbthaitext.ttf = x-thaittf-0.wide
encoding.kinnari.ttf = x-thaittf-0.wide
encoding.loma.ttf = x-thaittf-0.wide
encoding.tlwgmono.ttf = x-thaittf-0.wide
encoding.tlwgtypewriter.ttf = x-thaittf-0.wide
...

แก้ไฟล์ .ebuild

ไฟล์ .ebuild เป็นหัวใจสำหรับการคอมไพล์. ในระบบที่ผมใช้ Firefox มีชื่อรุ่นเป็น 1.0-r3 ดังนั้นไฟล์ที่ต้องแก้คือ mozilla-firefox-1.0-r3.ebuild ที่อยู่ในไดเรกทอรี /usr/portage/net-www/mozilla-firefox/.

ใช้บรรณาธิกรณ์ที่ถนัดเปิดไฟล์แล้วแก้ไข. ถัดจากบรรทัด

    # patch to fix separate character on euro keyboards, bug 68995
    epatch ${FILESDIR}/mozilla-firefox-1.0-kp_separator.patch
เพิ่มต่อท้ายดังต่อไปนี้
    # patch to fix separate character on euro keyboards, bug 68995
    epatch ${FILESDIR}/mozilla-firefox-1.0-kp_separator.patch
    # patches for Thai work break and setting environment
    epatch ${FILESDIR}/firefox-1.0-thai-env.patch
    epatch ${FILESDIR}/firefox-cttex-wbr-b3.patch
อีกที่หนึ่งคือบรรทัด
    mozconfig_annotate '' --enable-oji --enable-mathml
ให้เปลี่ยนเป็น
    mozconfig_annotate '' --enable-oji --enable-mathml --enable-ctl
สิ่งที่ต้องแก้ในไฟล์ .ebuild มีเพียงเท่านี้ครับ.

ติดตั้ง Firefox ภาษาไทย

ถึงขั้นนี้แล้วทุกก็พร้อมสำหรับการติดตั้ง. ให้สั่งคำสั่งต่อไปนี้
# emerge -pv mozilla-firefox

These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild   R   ] net-www/mozilla-firefox-1.0-r3  -debug +gnome +java +ldap -mozdevelop -moznoxft -mozsvg -mozxmlterm -xinerama -xprint 0 kB

Total size of downloads: 0 kB

ดูให้แน่ใจว่าเป็นเวอร์ชัน 1.0-r3 เสร็จแล้วเอาจริง
# USE="xprint" mozilla-firefox
สั่งให้ใช้ xprint ด้วย. ถ้าต้องการพิมพ์ออกทางเครื่องพิมพ์เป็นภาษาไทยต้องใช้ xprint.

เครื่องที่ผมใช้ Pentium 4 2.4GHz ใช้เวลาคอมไพล์ประมาณ 50 นาทีครับ. เรียบร้อยแล้วจะได้ผลดังนี้.

หลังจากที่ขยายหน้าต่างให้กว้างอีกหน่อยจะเห็นว่ามีการตัดคำได้จริง (สังเกตตรงคำว่า "เริ่มร้อนแรง") และที่การจัดระดับวรรณยุกต์และสระ (สระไม่ลอย).

ในหน้าจอ textedit ก็ตัดคำได้ดีไม่มีปัญหาครับ.

ทั้งนี้และทั้งนั้นต้องขอขอบคุณทุกท่านที่เกี่ยวข้องกับการทำแพชต่างๆด้วยครับ. ก็รอคอยให้มันเข้าไปอยู่ใน mainstream นี่แหละครับ. :)

Thai Firefox ตัดคำและจัดระดับวรรณยุกต์สระใน Gentoo - Thursday, January 20, 2005 -

ความคิดเห็นจากคุณ Blogger Hui/ฮุ้ย - 9:48 PM

แพช firefox-1.0-thai-env.patch นี่แก้อะไรบ้าง ?

เห็นมีพวก encoding ของฟอนต์ต่างๆ น่าลองแฮะ
เผื่อจะทำให้ Firefox/Mac ใช้ฟอนต์ไทยได้มากขึ้น ?    

ความคิดเห็นจากคุณ Blogger t·o·o - 12:39 PM

ผมสังเกตุว่า firefox ของผมตัดคำได้ปกติหน่ะไม่จำเป็นต้อง patch ถ้า web นั้นใช้ utf-8    

ความคิดเห็นจากคุณ Blogger rome - 2:27 PM

สวยดีครับ    

Post a Comment



 
Search this blog:


Google Home - Blogger - Blogger Templates

© 2005 Poonlap's Linux blog