Theppitak's blog

My personal blog.

19 กันยายน 2552

Pango Regression for Thai

ดังที่ได้กล่าวถึงไปใน blog ก่อน ว่า Pango มีการ merge Harfbuzz-ng เข้ามาแล้ว ทำให้มีการแทนที่ OpenType layout engine ด้วยโค้ดที่รื้อเขียนใหม่หมด ซึ่งก็พบว่ามี regression ในส่วนของการวาดภาษาไทย

เดิมนั้น ผมพบจาก GNOME ที่ build ด้วย JHBuild ในเครื่องในระหว่างที่ตรวจคำแปล แต่ยังไม่แน่ใจว่าเป็นโค้ดที่ release หรือยัง ก็เข้าไปถามหาคนที่ใช้ Ubuntu Karmic ในห้อง #tlwg ก็ยังไม่มีใครใช้ (ผมใช้ Debian sid อยู่ เลยยังไม่พบปัญหา) ประกอบกับต้องรีบตรวจคำแปลแข่งกับเวลา ก็เลยเว้นเรื่องนี้ไว้ จนเมื่อวันก่อนได้พบกับ อ.กิตติ์ ที่ใช้ Karmic อยู่ ก็เลยได้คำยืนยัน ว่าปัญหานี้มีใน GNOME รุ่นพัฒนาที่ปล่อยออกมาแล้ว แล้วก็เลยช่วยกันสรุปอาการจาก screenshot ต่าง ๆ จนในที่สุดก็ file GNOME #595539 ไป

อาการเป็นอย่างนี้:

Pango regression cases

  1. cons + tone + vowel จะวาดเป็น cons + NIKHAHIT + tone + vowel
  2. cons + tone + whitespace/punct จะวาดเป็น cons + NIKHAHIT + tone + whitespace/punct
  3. cons + lower-vowel + tone จะวาดโดยที่ tone ไม่ได้ลดลงต่ำ

นั่งเช็กเมื่อวานนี้ ได้ แพตช์แรก ที่แก้ปัญหานิคหิตเกินมาได้ โดยพบว่าลูปใน Harfbuzz วิ่งขาดไปหนึ่งรอบ มันเลยไป match กับกฎ GSUB ในฟอนต์ที่ใช้จัดแสดงสระอำแบบมีวรรณยุกต์ โดยกฎนั้นเขียนไว้ว่าต้องตามด้วยสระอำด้วย แต่ในเมื่อมันวิ่งลูปขาดไปหนึ่งรอบ มันเลยเช็กไม่ถึงสระอำ แค่มีพยัญชนะตามด้วยวรรณยุกต์มันก็ apply กฎแล้ว โดยแทรกนิคหิตใต้วรรณยุกต์รอไว้ แล้วจะมีอีก substitution หนึ่งที่แปลงสระอำเป็นสระอาตามมา

แต่แพตช์นี้ยังไม่ได้แก้ regression ทั้งหมด ยังขาดเรื่องลดวรรณยุกต์ลงต่ำอีก แต่ผมจะมีเวลาแกะต่อหรือไม่ก็ยังไม่แน่ใจ เพราะต้องรีบเตรียมเนื้อหาสำหรับงานสัมมนาที่จะถึงนี้แล้ว

สำหรับแพตช์แรก ก็ต้องรอเขารีวิวก่อนนะครับ ว่าจะโอเคไหม ถ้ามีใคร file bug ที่ LP ไว้ ก็อาจช่วยกระตุ้นเรื่องนี้ได้

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

5 ความเห็น:

แสดงความเห็น (มีการกลั่นกรองสำหรับ blog ที่เก่ากว่า 14 วัน)

<< กลับหน้าแรก

hacker emblem