สัปดาห์ที่ผ่านมาเป็นอีกครั้งที่ได้คุยเรื่องการแสดงผล สระอำ ที่ยังมีปัญหาบน OO.o 3.0 สำหรับคนที่ใช้ฟอนต์ TTF ของวินโดว์ส ในขณะที่ฟอนต์ของลินุกซ์แสดงได้ไม่มีปัญหา แล้วก็เกิดบรรเจิดว่า ถ้าแก้ OO.o 3.0 ไม่ได้ ตูก็แก้ฟอนต์ซะก็สิ้นเรื่อง :P .. ว่าแล้วก็เริ่มทดสอบกับ Cordia New เอา FontForge เขียน GSUB แยก สระอำ เป็น นิคหิต กับ สระอา … เกิดมาก็เพิ่งได้ใช้ FontForge นี่แหละ ! .. งมไปงมมาพักใหญ่ ได้ผล ! ตัดคำถูกแล้ว :D .. ฟอนต์รุ่นนี้อาจจะมีบางคนได้เห็นในชื่อ Cordia Newer :P
แต่ ! ก็เกิดปัญหาต่อมาคือ วรรณยุกต์ลอย (อาจจะเป็นเพราะ FontForge มันอ่านมาไม่ได้) .. งั้นยำ Umpush กับ Cordia New เลยดีกว่า ก๊อปปี้ glyph ของ Cordia ไปใส่ตาราง Umpush .. rename glyph ให้ถูกกับที่ต้องใช้ใน GSUB ของ Umpush … ก็เป็นว่า วรรณยุกต์อยู่ในตำแหน่ง .. ทั้งหมดนี้แจกไม่ได้ .. จริงๆ แล้ว Cordia Newer ก็ไม่ควรจะเกิด เพราะมัน(อาจ)ละเมิดลิขสิทธิ์ฟอนต์ และ EULA ของ Microsoft .. หลังจากทดลองเสร็จเลยลบทิ้งหมด
ในเวลาเดียวกัน .. คุยกับพี่เทพได้ความว่า Cordia กับ Angsana เขาให้ใช้ฟรีแล้ว .. แต่ต้นฉบับกับพี่เทพหายไปพร้อมฮาร์ดดิสก์ .. ไปถามเอากับ Mr.Choke ได้มาเป็น TTF ที่ distribute ใน TLE 9.0 ทดลองยำไปๆ มาๆ … ก่อนจะมาเริ่มต้นทำจริงๆ จังๆ วันนี้นี่เอง ได้เป็นฟอนต์ Arietta และ Codetta ซึ่งใช้ glyphs ของ Angsana และ Cordia ตามลำดับ ทั้งสองฟอนต์ import GSUB และ GPOS ของ Umpush มาใช้ + ปรับ Anchor สำหรับสระ และวรรณยุกต์นิดหน่อย
ดูผลได้
คำว่า “แนะนำลินุกซ์” เป็นคำที่ผมใช้ทดสอบสระอำว่าทำให้สระ/วรรณยุกต์ บน/ล่างที่ตามมาแสดงผลผิดหรือเปล่า ส่วน “วิญญูมุ่งรู้พิฆาตปื้นขี้ฝุ่นเลษฏุ” ได้มาจากพี่เทพสำหรับดูตำแหน่งของสระ/วรรณยุกต์ บน/ล่างในกรณีพิเศษๆ
เพิ่มเติม Codetta แสดงผล pangram ภาษาไทย | Arietta และ Codetta (Regular, Italic, Bold, Bold-Italic) PDF
ฟอนต์ทั้งสองดาวน์โหลดได้ที่ ftp://ftp.kitty.in.th/pub/sources/fonts/ ไฟลที่ไม่มี -ttf จะมีทั้ง *.sfd และ *.ttf ไฟล์ที่มี -ttf จะมีเฉพาะ *.ttf
ถ้าต้องการใช้แทนฟอนต์ของวินโดว์ส แก้ ~/.fonts.conf นิดหน่อย โดยเติมข้างล่างนี้เข้าไป
<!-- Synthesize Windows AngsanaUPC and Angsana New with Arietta --> <match target="pattern"> <test qual="any" name="family" mode="eq"> <string>AngsanaUPC</string> <string>Angsana New</string> </test> <edit name="family" mode="assign" binding="same"> <string>Arietta</string> </edit> </match> <!-- Synthesize Windows CordiaUPC and Cordia New with Codetta --> <match target="pattern"> <test qual="any" name="family" mode="eq"> <string>CordiaUPC</string> <string>Cordia New</string> </test> <edit name="family" mode="assign" binding="same"> <string>Codetta</string> </edit> </match>
ข้อจำกัดของทั้ง Arietta และ Codetta คือมี glyphs เฉพาะอักขระไทยเท่านั้น เพราะต้นฉบับ Angsana และ Cordia มีเฉพาะ glyphs ไทย .. อย่างที่สองคือ hint มันจะไม่สวยเท่าไหร่ เข้าใจว่าต้นฉบับ Angsana/Cordia ใช้ hints คนละแบบกับตระกูล UPC/New ในไมโครซอฟต์ (ติดลิขสิทธิ์ของ hints ?)
สุดท้าย .. Arietta และ Codetta เป็นศัพท์ทางดนตรี :P
Thanks: พี่เทพ & Mr.Choke