Thai XIM and Conversion Bug on UTF-8 Locale
อีกบั๊กหนึ่งที่ทีมสุริยันจับได้ คือ XIM ไทยไม่รับสระบน-ล่างใน UTF-8 locale ซึ่งมีสาเหตุมาจากโค้ดของผมใน Xlib ที่ทำไว้ตั้งแต่สมัยที่ยังไม่มี UTF-8 locale เกิดขึ้น โดยไปทึกทักเอาว่า ถ้า string conversion callback ที่ไปอ่าน text input buffer ของ app มานั้น ได้ string มาในรูป multi-byte ก็แปลว่าเป็น TIS-620 เสมอ ซึ่งใช้ไม่ได้กับ UTF-8 locale
ตอนนั้น หลังจากทำแพตช์สำหรับสุริยันไปแล้ว ก็ file Freedesktop #12759 เสนอแพตช์ไว้ ตอนนี้จะกลับมาตามอีกครั้ง ก็พบว่าสามารถเขียนแพตช์ให้สะอาดกว่ามาไล่เช็ก codeset ของโลแคลปัจจุบัน เลยเสนอ แพตช์ใหม่ ไปแทนที่แพตช์เดิม
ยังต้องรอรีวิวเพื่อ check-in ต่อไปครับ แต่โพสต์ไว้เผื่อใครจะเอาไปใช้หรือช่วยทดสอบในระหว่างนี้
ก่อนหน้าจะ file bug นั้น ก็ได้ file GNOME #484653 เพื่อแก้ให้ imxim immodule ของ GTK+ ส่ง surrounding text กลับให้ XIM ในรูป wide char แทน multi-byte ไปพลาง แต่ปรากฏว่า การใช้ wide char เองก็มีปัญหาของมัน เนื่องจากขนาด wide char เองก็เริ่มไม่คงที่ คือเป็น multi-word ในบางแพลตฟอร์มที่ใช้ wide char 16 บิต โดย encode ในรูป UTF-16 แทนที่จะเป็น UCS ตรง ๆ หลังจากคิดตลบสอง ก็คิดว่าแก้ที่ XIM เองให้อ่าน multi-byte ให้ถูกต้อง น่าจะตรงประเด็นกว่า แล้วก็ใช้ multi-byte เหมือนเดิมต่อไป
สรุปบั๊กใน Xlib ที่ผ่านมา:
- #12517: XIM ไทยไม่ตรวจลำดับเมื่อ NumLock/CapsLock ติด พบโดยทีมสุริยัน
- #12759: XIM ไทยไม่รับสระบน-ล่างเมื่อใช้โลแคล UTF-8 (blog นี้) พบโดยทีมสุริยัน
-
#15719: SCIM และ XIM server อื่น ๆ เรียกไม่ขึ้นในโลแคลไทยพบโดย Xandros - #16475: SCIM โหลดขึ้นแล้ว แต่ไม่รับอักขระใด ๆ เนื่องจากปัญหาการแปลงรหัส พบโดย Xandros
เพิ่งได้ check-in แค่หนึ่งในสี่แพตช์ครับ
ป้ายกำกับ: xorg
0 ความเห็น:
แสดงความเห็น (มีการกลั่นกรองสำหรับ blog ที่เก่ากว่า 14 วัน)
<< กลับหน้าแรก