Theppitak's blog

My personal blog.

28 กรกฎาคม 2552

ThaiLaTeX 0.4.3 Released

ThaiLaTeX 0.4.3 ออกแล้ว โดย feature สำคัญในรุ่นนี้คือ การรองรับ UTF-8

การเปลี่ยนแปลงอื่น ๆ ก็เช่น:

  • ปรับฟอนต์ตาม ThaiFonts-Scalable 0.4.13 ซึ่งมีการปรับปรุงมาหลายรุ่น
  • ฟอนต์ ttypist ตัวหนา หนาขึ้น อันเนื่องมาจากการปรับรุ่นฟอนต์
  • ฟอนต์ purisa มีตัวเอียง ตัวหนา และหนาเอียงแล้ว อันเนื่องมาจากการปรับรุ่นฟอนต์เช่นกัน
  • ฟอนต์ monospace ปริยาย เปลี่ยนจาก ttype (TlwgTypewriter) มาเป็น ttypist (TlwgTypist) แล้ว
  • ตัดคำสั่ง '\thai' ออกแล้ว คำสั่งนี้เดิมมีไว้เพื่อ backward compatibility กับ thailatex_component รุ่นโบราณเท่านั้น แต่เมื่อใช้ Babel แล้ว จะใช้ '\thaitext' แทนอยู่แล้ว ตาม convention

ออกแล้วก็ upload เพิ่มอีกสองที่ คือที่ Debian และ CTAN สำหรับ Debian นั้น จะเข้า sid รอบบ่ายสามวันนี้ รอชมได้ที่ mirror ใกล้บ้านท่าน ส่วน CTAN นั้น ต้องรอ admin เขาจัดการให้

คาดว่าคงไม่ทัน Ubuntu Karmic เพราะผ่าน Debian important freeze ไปนานแล้ว และผมยังไม่มีเหตุอันควรที่จะขอให้ sync จาก Debian ในตอนนี้ (มี MOTU คนไทยก็ดีสิ จะได้ช่วยกันได้ในเรื่องนี้)

ป้ายกำกับ:

26 กรกฎาคม 2552

ThaiLaTeX Now Supports UTF-8

ตามธรรมเนียมปกติ หลังจากออก thaifonts-scalable รุ่นใหม่แล้ว ก็มักจะตามด้วยการ update ฟอนต์มาใช้กับ thailatex ด้วย แต่ปรากฏว่าไม่ได้ทำมาตั้งปีครึ่ง เพราะไม่มีเวลา ตอนนี้ ไหน ๆ ผมก็เริ่มปล่อยมือจากงานแปลแล้ว ทำให้มีเวลากลับมาทำงานพัฒนาอีกครั้ง ก็เลยได้กลับไปปัดฝุ่น thailatex อีก

หลังจาก update ฟอนต์ตามปกติแล้ว ก็มีเรื่องหนึ่งที่คาใจอยู่ คือการใช้ UTF-8 ในเอกสาร LaTeX ซึ่งตามปกติแล้ว thailatex จะรองรับแต่ TIS-620 เท่านั้น เวลาเตรียมเอกสาร จึงยังต้องใช้ xiterm+thai หรือต้องกำหนด editor ให้ใช้ TIS-620 เสียก่อน หรือบางคนก็ใช้วิธีเตรียมเป็น UTF-8 ไปเลย แล้วใช้ iconv แปลงเอา

แต่ตอนนี้ไม่ต้องแล้ว เพราะ LaTeX core นั้น รองรับ UTF-8 เรียบร้อยแล้ว น่าจะนานแล้วแหละ ผ่านแพกเกจ inputenc โดยคุณต้องเพิ่ม preamble ต่อไปนี้ (หลัง babel):

\usepackage[utf8x]{inputenc}

ตรง utf8x นี้ บางระบบอาจใช้ utf8 เฉย ๆ

แต่ปัญหาคือ เท่านี้ยังไม่พอ เพราะตัว thailatex เองนั้น ออกแบบมาใช้กับ TIS-620 โดยเฉพาะ ยังต้องปรับแก้โดยเพิ่มการกำหนด symbol ตามรหัสยูนิโค้ดตามที่ LaTeX ใช้อ้างอักษรไทย แล้วแทนที่คำแปลต่าง ๆ ในข้อกำหนดของ babel ให้ใช้ symbol เหล่านี้แทนการใช้อักขระ TIS-620 โต้ง ๆ เพื่อให้ใช้ได้กับทั้ง TIS-620 และ UTF-8

commit เข้า SVN ไปแล้วครับ ใครสนใจช่วยทดสอบก็เชิญได้ คงรอทดสอบสักพักค่อยออกเป็นรุ่นใหม่ต่อไป

ถึงตอนนั้น คุณจะสามารถเตรียมเอกสาร LaTeX โดยใช้ editor สมัยใหม่ที่เดี๋ยวนี้ใช้ UTF-8 เป็นหลักกันหมดแล้ว ส่วนในขั้นตอนตัดคำด้วย swath นั้น ก็เพิ่มตัวเลือก -u u,u เข้าไปด้วย เพื่อให้ swath พยายามอ่าน input และเขียน output แบบ UTF-8 เช่น:

$ swath -f latex -u u,u < mydoc.tex > mydoc.ttex

แถมอีกเรื่อง ว่า LyX ตั้งแต่รุ่น 1.5 เป็นต้นมา รองรับ UTF-8 แล้ว โดยรองรับภาษาไทยด้วย เพียงแต่ขั้นตอน generate จากซอร์สของ LyX เป็น LaTeX นั้น จะแปลงเป็นรหัส TIS-620 ก่อนถ้าเป็นภาษาไทย ทั้งนี้คงเพราะเขาตรวจสอบจาก thailatex ที่เผยแพร่ที่ CTAN นั่นเอง

ป้ายกำกับ: ,

25 กรกฎาคม 2552

ThaiFonts-Scalable 0.4.13

ThaiFonts-Scalable 0.4.13 ออกแล้ว หลังจากใช้เวลาเดือนที่ผ่านมาปรับแก้สิ่งต่าง ๆ เช่น:

upload เข้า Debian แล้วเช่นกันครับ รอเข้า sid คืนนี้ ขั้นต่อไปคือ แจ้งขอ sync เข้า Ubuntu เพื่อปิดบั๊กใน launchpad

ป้ายกำกับ: , , ,

17 กรกฎาคม 2552

Mozilla IME Surrounding Patch Updated

จากที่ได้ backport แพตช์ IME surrounding text ของ Mozilla มา ก็ทำให้ได้ใช้กับ Epiphany แบบหนักกว่าตอนที่ทดสอบแพตช์ที่ build จาก trunk ทำให้เจอกรณีที่ผิดเพี้ยน ป้อนภาษาไทยไม่ได้แบบแปลก ๆ ซึ่งหลังจากตรวจสอบก็พบว่าจะเกิดกับ text area ที่มีข้อความหลายบรรทัด โดยจะป้อนได้ถูกต้องแค่ย่อหน้าแรกเท่านั้น พอลงมาย่อหน้าถัด ๆ มาจะเริ่มเพี้ยน ป้อนสระบน-ล่างได้มั่งไม่ได้มั่ง

สาเหตุคือ ตอนที่อ่านบริบทเพื่อส่งกลับให้ input method นั้น จะส่งข้อมูลกลับอยู่สองส่วน คือข้อความ กับตำแหน่งเคอร์เซอร์ปัจจุบัน ปรากฏว่าข้อความนั้น จะส่งข้อความทั้งหมดใน text area คืนไป แต่ตำแหน่งเคอร์เซอร์ กลับนับเทียบกับต้นย่อหน้าปัจจุบัน พอ input method จะอ่านอักขระ ก็กลายเป็นอ่านจากย่อหน้าแรกเสมอ นั่นจึงเป็นสาเหตุที่ทำให้ทำงานได้ถูกต้องแค่ย่อหน้าแรกเท่านั้น

ก็เลยปรับแพตช์ใหม่ ให้คืนค่าข้อความของย่อหน้าปัจจุบัน แทนที่จะเป็นข้อความทั้งหมด แล้วส่งเข้า Mozilla #353776 [Attachment #389088]

ส่วนแพตช์ที่ backport ก็ปรับด้วยเช่นกัน [ดาวน์โหลดแพตช์ หรือ ดาวน์โหลด deb พร้อมซอร์ส หรือแค่ upgrade ตาม debclub ก้านกล้วย]

ว่าแต่ว่า พอจะมีใครสนใจทดสอบแพตช์บน Windows กับ Mac บ้างไหม?

ป้ายกำกับ: , , ,

22-Jul Solar Eclipse Simulation

อีกไม่ถึงสัปดาห์ก็จะเกิดสุริยุปราคาเต็มดวง 22 ก.ค. ซึ่งยาวนานที่สุดในศตวรรษแล้ว เลยจำลองปรากฏการณ์ล่วงหน้าเสียหน่อย

Stellarium มีสคริปต์สาธิตให้เลย

Stellarium solar eclipse script

ตำแหน่งขณะบังเต็มที่ เมื่อสังเกตที่ขอนแก่น ไม่ได้บังจนมืดตามรูป เพราะเมืองไทยเห็นแค่สุริยุปราคาบางส่วนเท่านั้น แต่ผมเอาบรรยากาศออก เพื่อดูกลุ่มดาวข้างเคียง

Celestia ก็ให้มุมมองจากนอกโลก

setup เริ่มแรกขณะเริ่มบัง ในระยะที่เห็นดวงจันทร์

เซ็ตตำแหน่งและเวลาต่าง ๆ แล้ว ก็เก็บเป็น Clestia URL (คลิกแล้วอาจต้องเลือกให้เปิด URL ด้วย celestia หรือจะใช้วิธี copy URL ไปใช้ใน celestia ก็ได้) และอัดเป็น วิดีโอ (OGG) ไว้ ซึ่งจะทำให้เห็นเส้นทางของเงาที่เคลื่อนผ่านบนผิวโลกแบบต่อเนื่อง

พร้อมกันนี้ ก็เขียนบทความอธิบายวิธีเตรียมไว้ที่ debianclub ด้วย

Update: เพิ่มรูปของ celestia

ป้ายกำกับ:

16 กรกฎาคม 2552

Mozilla IME Surrounding Patch Backported

ความเดิม blog ที่แล้ว ผมได้ update แพตช์ IME surrounding ที่ Akira Tagoh เสนอไว้ที่ Mozilla #353776 ให้ใช้กับ trunk ได้อีกครั้ง แล้วก็รอ deb ของ xulrunner 1.9.1 ใน sid ก่อนที่จะแพตช์และ build deb อีกที

ความเคลื่อนไหวที่ Debian iceweasel 3.5-1 และ xulrunner 1.9.1-1 ได้เข้าไปอยู่ใน experimental แล้วเมื่ออาทิตย์ก่อน ระหว่างเฝ้ารอให้เข้า unstable ก็ไปพบใน blog ของ Mike Hommey ว่า xulrunner 1.9.1 มีปัญหากับ Epiphany และเบราว์เซอร์อื่นอีกจำนวนหนึ่ง จำเป็นต้องบังคับให้มันใช้ 1.9.0.11

แต่จากข่าวล่าสุดของ Epiphany นั้น รุ่น 2.26.3 กลายเป็นรุ่นสุดท้ายที่จะใช้ Gecko ไปแล้ว โดยใน 2.27 (development) และ 2.28 (stable) นี้ Epiphany จะย้ายไปใช้ WebKit เรียบร้อยแล้ว ดังนั้น คงจะมีโอกาสน้อยมากที่จะได้ใช้ Epiphany กับ xulrunner ตัวใหม่ เพราะคงไม่มีรุ่นใหม่ที่ใช้ Gecko ออกมาอีกแล้ว

ด้วยเงื่อนไขนี้ ก็เลยตัดสินใจไม่รอ xulrunner 1.9.1 เข้า sid ตามที่ตั้งใจไว้ แต่ backport แพตช์มาที่ xulrunner 1.9.0.11 เสียเลย [ดาวน์โหลดแพตช์] แล้วถ้า xulrunner 1.9.1 และ iceweasel 3.5 เข้า sid เมื่อไร ค่อยแพตช์ให้ผู้ใช้ iceweasel ใช้อีกที

พร้อมกันนี้ ก็ได้ build และ upload deb สำหรับ amd64 และ i386 เข้าที่ debclub ก้านกล้วย เรียบร้อยแล้ว [ไดเรกทอรีสำหรับตัว deb พร้อมซอร์ส]

ขอย้ำอีกที เผื่อใครไม่ได้อ่าน blog ที่แล้ว: Firefox/xulrunner นั้น มีการตรวจลำดับการป้อนภาษาไทยมาตั้งแต่แรกแล้วบนลินุกซ์ ถ้าคุณใช้โลแคลไทย (มี ข้อมูลสำหรับผู้ต้องการใช้โลแคลอังกฤษ) แต่แพตช์นี้จะทำให้การตรวจลำดับทำได้ราบรื่นยิ่งขึ้น โดยระบบป้อนข้อความจะสามารถตรวจสอบบริบทได้ทุกเมื่อ พร้อมแก้ไขลำดับได้ด้วย

ป้ายกำกับ: , , ,

09 กรกฎาคม 2552

Mozilla IME Surrounding Patch

Firefox 3.5 ก็ออกไปแล้ว ก็ได้เวลามาทำงานกับ Mozilla ต่อ เดิมเคย blog ไว้ หลายรอบแล้ว ว่าบั๊กต่อไปที่จะดู คือ Mozilla #353776 คือเรื่องการรองรับการป้อนข้อความแบบตรวจลำดับภาษาไทยโดยอาศัยบริบท แต่จำเป็นต้องรอทำหลัง Firefox 3.5 เพราะบั๊กเดิมเรื่องปุ่ม Delete ลบทีละเซลล์นั้น มีผลข้างเคียงเยอะกว่าที่คิดไว้ ต้องตามแก้อีกหลายระลอก ตามที่เคยเล่าไปแล้วใน blog ที่ว่า

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

สำหรับคนที่กำลังจะค้านว่า Firefox ที่ใช้ไม่เคยตรวจลำดับเลย นั่นเป็นเพราะคุณใช้โลแคลอังกฤษ ไม่ใช่โลแคลไทย ลองอ่าน blog เก่า ประกอบครับ (อันนี้พูดถึงผู้ใช้ลินุกซ์นะครับ บนแพลตฟอร์มอื่นผมไม่ทราบ)

Mozilla #353776 นี้ จะเสนอให้ทำทางเชื่อมต่อระหว่างระบบป้อนข้อความกับตัว editor ใน xulrunner เพื่อให้การตรวจสอบลำดับสามารถทำกับบริบทได้ทุกเมื่อ ไม่ว่าเคอร์เซอร์จะเลื่อนไปไหน

ในบั๊กนั้น Akira Tagoh ได้เสนอแพตช์ไว้เมื่อสามปีก่อน แต่ยังไม่มีการตรวจรับแพตช์ ปัจจุบันแพตช์ก็ใช้กับโค้ดใน trunk ไม่ได้เสียแล้ว ผมจึงต้องปรับแพตช์เสียก่อนจึงจะนำมาใช้ได้

แพตช์ค่อนข้างซับซ้อนกว่าบั๊กก่อน ๆ ที่เคยทำมา เพราะต้องมีการเชื่อมโยงในที่ต่าง ๆ หลายที่ ปรับไปปรับมา ผลก็คือ แพตช์ถัดมา สำหรับบั๊กนี้ ซึ่งผมทดสอบแล้ว ใช้การได้ดีครับ ทั้งใน text box และใน HTML editor

ตอนนี้ build ใช้เองจากใน hg ไปก่อน ไว้สักพัก xulrunner deb ของ Debian ได้เข้า sid แล้วค่อยเอามาแพตช์ให้ลองกันอีกทีครับ แล้วก็อาจจะต้องขอแรงผู้ใช้วินโดวส์และแมคให้ช่วยทดสอบแพตช์บนแพลตฟอร์มดังกล่าวด้วย

ป้ายกำกับ: , , ,

06 กรกฎาคม 2552

Purisa also Emboldened

พัฒนาฟอนต์ที่ต้นน้ำที่ LTN ไป ก็มักจะแก้เฉพาะปัญหาที่ตัวเองเจอ หรือมีผู้รายงานผ่านเมลตรงหรือ IRC บ้างเป็นครั้งคราว ลองไปสำรวจตาม distro ที่นำไปใช้บ้าง ถ้าเป็น Debian นั้น ผมก็จะได้รับเมลจากระบบบั๊กอยู่แล้ว หรือดูจาก หน้า PTS เป็นครั้งคราวได้ ที่ผ่านมาก็ได้แก้บั๊กที่ Debian พบอยู่ คราวนี้ลองไปสำรวจที่ Ubuntu บ้าง ก็พบบั๊กที่เกี่ยวข้องกับต้นน้ำอยู่สองรายการ ซึ่งมีผู้รายงานไว้นานแล้ว:

  • LP #387872 90-ttf-thai-tlwg-synthetic.conf is not valid against fonts.dtd schema
  • LP #313427 [jaunty] some font cannot show characters with diacritics

LP #387872 นั้น แก้ไม่ยาก แค่แฟ้มค่าตั้ง fontconfig ไม่สอดคล้องกับ DTD อันเนื่องมาจากการใช้ attribute ผิดชื่อนั่นเอง ก็แก้ไปแล้วใน SVN

ส่วน LP #313427 ซึ่งเกี่ยวกับฟอนต์ Purisa นั้น อาการคือตัว accent ของตัวอักษรละตินหายไปเมื่อใช้ตัวหนา ซึ่งปัญหาน่าจะมาจากการสังเคราะห์ฟอนต์ของ fontconfig เอง ซึ่งจะมีกฎใน 90-synthetic.conf ในการสังเคราะห์ตัวหนาหรือตัวเอียงที่ขาดหาย แล้วบังเอิญ Purisa เรามีแค่ตัวธรรมดา จึงไปผ่านการสังเคราะห์นี้

วิธีแก้ ก็เพียงแต่เพิ่มตัวหนาและตัวเอียงให้กับ Purisa ก็ทยอยทำมาวันละนิดละหน่อย เนื่องจากตาไม่สามารถสู้แสงมอนิเตอร์ต่อเนื่องได้นาน ประกอบกับสลับไปเซ็ตเซิร์ฟเวอร์ที่โรงเรียนด้วย เลยใช้เวลาหลายวันหน่อย ตอนนี้ก็อยู่ใน SVN เรียบร้อยแล้วครับ

กะว่า ก่อน Karmic จะ feature freeze น่าจะต้องออก thaifonts-scalable อีกรุ่นหนึ่ง แล้วขอ update ผ่าน Debian sync ก็คิดว่าคงดูความเรียบร้อยเกี่ยวกับฟอนต์ TlwgTypo/TlwgTypist และ Purisa ที่แก้ไปในรุ่นนี้ แล้วออกรุ่นใหม่ภายในสิ้นเดือนนี้ ระหว่างนี้ ถ้าใครพบปัญหาในฟอนต์ชุด ttf-thai-tlwg ก็อาจรายงานเข้ามาเพื่อแก้ไขก่อนออกได้ครับ

ป้ายกำกับ: ,

hacker emblem