Qt, KDE Thai

หน้านี้จะสรุปสถานการณ์เกี่ยวกับปัญหาและสถานะล่าสุดที่เกี่ยวข้องกับภาษาไทยใน KDE/Qt เท่าที่ทีมงานพอจะตาม update ไหว

KDE4/Qt4

ทีม Suriyan (สนับสนุนโดย SIPA) รวมถึงนักพัฒนาอิสระชาวไทยอื่นๆ (ที่สนทนากันคือ Google Group thai-linux-foss-devel เชิญร่วมแจมได้ถ้าสนใจ) ได้ดำเนินการพัฒนาแก้ไขปัญหาเรื่องภาษาไทยใน KDE4/Qt4 และมี รายงานผลการดำเนินงาน ให้อ่านดูรายละเอียดเกี่ยวกับปัญหาและวิธีที่ได้แก้ไขไปได้ Patches การปรับแก้เกี่ยวกับภาษาไทยทั้งหมด จะอยู่ที่ LTN CVS รายการ patch ที่แก้ไขไป และยังไม่ได้เข้าต้นน้ำ (กำลังผลักดัน)

  • Patch สำหรับ Qt4 (ดู https://bugreports.qt.nokia.com//browse/QTBUG-12930) มี 3 ประเด็น คือ
  • kdelibs มี 3 ประเด็นคือ (ดู bug report 156558, 155561)
    • kate_imcursor_query.patch เกี่ยวกับ input method ใน ate
    • kate_wordbreak.patch เกี่ยวกับการตัดคำไทยใน kate
    • khtml_thaibreak.patch เกี่ยวกับการตัดคำไทยใน KHTML
  • kdebase มีประเด็นเดียว
    • konsole_thai_patch.diff แก้ปัญหาภาษาไทยใน Konsole, ดู bug report 156071
  • Webkit patches มีประเด็นเดียว
    • webkit_wordbreak.diff ดู bug 16981

Patch ที่ส่งเข้าได้แล้ว

  • koffice2 (accepted 20071220)

ซอฟต์แวร์รุ่นเก่าๆ

KDE3/Qt3

ปัจจุบันงานพัฒนาที่เกี่ยวข้องกับภาษาไทยใน KDE3/Qt3 เรียกได้ว่าหยุดลงแล้ว การใช้งานภาษาไทยพื้นฐานทั่วไปทำได้ (พิมพ์เข้า, แสดงผล, ตัดคำ), Konqueror สามารถตัดคำได้, แต่ Konsole จะแสดงผลภาษาไทยไม่ค่อยถูกต้อง, ใน Qt textedit widget ยังไม่สามารถกด ctrl+cursor เพือให้ cursor กระโดดไปทีละคำได้, input method ยังไม่มีการ normalize ให้เวลาป้อนคีย์ผิด
การใช้งานภาษาไทยใน KDE3/Qt จะต้องการ libthai ใน Linux distribution ของท่าน ท่านอาจต้องลงทั้ง libthai0 และ libthai-dev packages (หรือชื่ออะไรทำนองนี้) วิธีตรวจสอบคือดูใน /usr/lib ว่ามีทั้ง libthai.so และ libthai.la ซึ่ง KDE3/Qt3 จะต้องการ
มีความพยายามที่จะแก้ให้ KDE3/Qt3 ใช้แค่ libthai.so (dynamic library) ในการทำงาน แต่ลองส่ง patch เข้าไปต้นน้ำแล้วเขาไม่รับ เขาว่า FREEZE แล้ว มัน work มายังงี้ก็ปล่อยให้มันเป็นไป ก็ไม่ได้ตามกันต่อ
ดูรายละเอียดเกี่ยวกับ งานพัฒนาภาษาไทยใน KDE3/Qt3 ในอดีต
patch สำหรับ KDE3 ที่ยังไม่ได้เข้า

สถานะการสนับสนุนไทยใน KDE3

  • konsole (terminal ของ KDE) ยังไม่สนับสนุนภาษาไทย สถานะ ค้างคา
  • ตัดคำไทยสำหรับ KHTML: สถานะ ได้ทำ patch สำหรับkdelibs-3.2.2 ตัดคำเวลา browse web ได้แล้ว, ต้องการ libthai.so.0 (สนใจลองดูไดที่นี่ ฉบับแก้แล้ว khtml/rendering/[break_lines.h, break_lines.cpp, khtml_factory.cpp]) ทดสอบแล้วใช้ได้ดี, ล่าสุด 2005/03/21 รวมใน KDE 3.4 แล้วแต่ยังไม่รวม patch ที่เพิ่ม cache=0, th_brk=0 ใน destructor. คาดว่าจะถูกรวมในเวอร์ชั่นถัดไป รายละเอียดดูได้ที่ นี่, update: เข้าใน 3.4.1 แล้ว ปิดประเด็น
  • พิมพ์ภาษาไทยแล้วตัวเล็ก: สถานะ ขยายฟอนต์ใน thaifonts-scalable ให้โต แล้วน่าจะแก้ปัญหานี้
  • KHTML (อย่างเช่นใน message window ของ kmail) ถ้าเนื้อหาเป็นภาษาไทย และอักษรตรงท้ายบรรทัดเป็นพยัญชนะที่มีสระหรือวรรณยุกต์ จะ render ผิดมี space เพิ่มมาก่อนหน้าอักขระนั้นอยู่หนึ่งช่อง ถ้าเอา mouse select text ตรงนั้น ตอนที่ selected นั้น render ได้ถูก (ไม่มีช่องว่างเกิน) แต่ว่าบางทีสระหรือวรรณยุกต์จะลอย, สถานะ ค้างคา, เขาเรียกว่า mouse selection text bug ดูเหมือนจะไม่ใช่ปัญหาเฉพาะภาษาไทย ทางนักพัฒนาทราบกันแล้วแต่ยังไม่ได้แก้, กำลังตามๆ ดูอยู่, updated: เหมือนหายแล้ว bug นี้ (KDE 3.4.1) ไม่เจออีกแล้ว, ปิดประเด็น

Qt3

  • render ภาษาไทย ใช้งานได้ในระดับหนึ่ง (สระมีสูงต่ำ) แต่ยังไม่สมบูรณ์, e.g., สระและวรรณยุกต์ยังไม่หลบหาง ป ปลา, ต้องแก้ต่อไป, สถานะ ค้างคา
  • Thai Input method: XIM?, IIMF?, ฝังใน Qt เลย? เราจะไปทางไหนกันดี สถานะ ค้างคา
  • ตัดคำใน QTextEdit, สถานะ เคยทำ patch src/kernel/qrichtext.cpp เอาไว้ คุณ Lars Knoll เจ้าเก่า หลังจากดูตรง KDE แล้วก็ช่วยมาทำตรง Qt ให้เลย แกทำ patch สำหรับ Qt 3.3.2 มาให้ แต่ลองบน 3.2.3 ก็ใช้ได้ดี ปัญหาเวลาที่ wrap ในโหมด fixed column width เจอที่แก้แล้วดูได้ที่ไฟล์ qrichtext.cpp (3.3.2 copy), 2004/12 เข้าไปใน main Qt source แล้ว, 2004/03/21 รวมใน Qt 3.3.4 แล้วแต่ยังไม่รวม patch ที่แก้ปัญหาตัดคำระหว่างคำไทย กับคำอังกฤษ, ล่าสุด แก้แล้ว (2005/01/14) โดยคุณ Knoll ใน qtextengine.cpp เติม, ดู patch เข้าใน cvs แล้ว จะถูกรวมใน Qt 3.3.5 และ 4.0.1 ปิดประเด็น
  • อักขระที่มีใน windows-874 แต่ไม่มีใน tis-620: ได้ทำ patch สำหรับ qt-x11-free-3.2.3: src/codecs/qtextcodec.cpp เพิ่มโค้ดจาก windows-874 เข้าไปใน tis-620 table, สถานะ ส่ง patch ไปแล้ว, เข้า cvs แล้ว (2004/12) ปิดประเด็น

เจอ bug อะไรเพิ่มเติมแจ้งได้ที่ tlwg-devel นะครับ

Steps

  • install libthai on your computer (ต้องมี libthai.so ใน library path)
  • recompile qt หรือ kdelibs with the above files
  • Qt QTextEdit: test with examples/textedit/textedit
  • KDE/KHTML rendering test with the testkhtml program (comes with KHTML) หรือ Konqueror
  • see code for more details

Debian

เพิ่มบรรทัดนี้ใน /etc/apt/sources.list

# LTN
deb http://linux.thai.net/apt ./

แล้วเรียกคำสั่ง

# apt-get update
# apt-get install libthai0 # ก่อนอื่นต้องมี libthai ก่อน
# apt-get install kdelibs4 # สำหรับทดสอบ kdelibs
# apt-get install libqt3c102-mt # สำหรับทดสอบ Qt