fonts: บันทึกการทดลองทำ DejaVuSerifThai อีกรุ่น

บันทึกการสร้างฟอนต์ DejaVu Serif Thai

  • ตัวนี้ทดลองทำ hinting เลียนแบบวิธีของ Tahoma คือ
    คงระยะคงที่ช่องไฟหน้าและหลังไว้ และให้ความกว้างของตัวอักษรเป็นตัวรองรับระยะการทดจุดที่เปลี่ยนไปมา ซึ่งบังคับว่าต้องทำ grid fitting (delta hint) เพื่อกำหนดความกว้างของฟอนต์ก่อน แล้วจึงเริ่มเดินจุด
    การทำ delta hint ก่อน จำเป็นมากสำหรับฟอนต์ขนาดเล็ก ซึ่งมีอัตราการเพี้ยนของความกว้างของอักษรมาก ไหน ๆ ก็ต้องทำ delta hint อยู่แล้ว เที่ยวนี้จึงพยายามลงลึกไปทำถึงขนาดหัวอักษรด้วย ผลที่ได้คืออ่านง่ายขึ้น โดยเฉพาะกับฟอนต์ขนาดเล็ก ๆ แต่ก็ต้องแลกมาด้วยการเสียเวลาและสายตาเป็นอย่างมาก
    (การทำงานต้องปรับขนาดจอภาพให้มีความละเอียด 72 dpi เพื่อให้รองรับขนาดฟอนต์ได้ทุก ๆ ppem บวกกับการเพ่งกำหนดจุดที่เปลี่ยน จึงเปลืองสายตามาก)
  • รูปแบบฟอนต์ของ DejaVu Serif ดูไม่เป็น serif จัดนัก จึงนำเอาฟอนต์ Angsima มาแปลงใส่เข้าไป
    เนื่องจากเห็นว่า ภาษาไทยทำ serif แท้ ๆ ไม่สวย จึงพยายามทำเท่าที่ทำได้ คือ hint เฉพาะพยัญชนะ ส่วนสระบนและล่างไม่ hint และไม่แปลงรูปแบบเลย

ผลการทดลอง

  • เนื่องจากมีการทำ grid fitting (เกือบ)เต็มที่ จึงดูดีที่ฟอนต์ขนาดเล็ก ๆ ด้วย (หรือเปล่า?)
  • สระบนล่าง ทำ hint แล้วไม่สวย จึงตัดสินใจไม่ hint เพียงแค่กำหนดระยะในแกน Y เล็กน้อย ผลที่ได้คือแนวเส้นบรรทัดที่เป็นพญัญชนะจะดูคมชัดกว่าแนวสระบนล่าง - ไม่รู้ว่าดีหรือเปล่า รอดูผลการใช้งานต่อไป
  • แบบอักษรดูคล้าย sans ไปหน่อย โดยเฉพาะกับฟอนต์ขนาดเล็ก ยกเว้นสระบนล่างที่เป็นแบบของ Angima ชัดเจน ซึ่งอาจทำให้ดูไม่กลมกลืน

ปรับปรุง
(เนื่องจากเป็นการทำงานไปด้วย ศึกษาไปด้วย การทำ hinting จึงไม่เป็นอันหนึ่งอันเดียวกันในทุก ๆ ฟอนต์ที่ทำ ต้องขออภัยด้วย)

  • 51-05-06 ทำตัวหนาเพิ่มเสร็จแล้ว ตัวหนาที่ทำ ใช้เทคนิก hint เท่าที่จำเป็น จึงอาจดูไม่คมชัดนัก แต่ฟอนต์น่าจะอ่านง่ายขึ้นและผิดรูปน้อยลง
  • เขียนฟังก์ชั่นให้ทำ grid fitting ง่ายขึ้น งานของตัวหนาจึงเพิ่มเรื่อง grid fitting มากขึ้นมาก
  • 51-05-31 ปรับละเอียด เริ่มใช้ฟังก์ชั่น SHPIX ในการปรับหัวไม่ให้คมแข็ง พยายามปรับฟอนต์ให้ดูนิ่มนวลขึ้น ทำให้ดูดีขึ้นสำหรับการแสดงผลพื้นขาวตัวดำ แต่ยังมีปัญหากับพื้นหลังที่เข้มไม่มาก แต่ตัวหนังสือสีขาว (เช่นเว็บ pantip.com) ยังดูยากหน่อย พยายามปรับระดับความสูงวรรณยุกต์ระดับ 2 ไม่ให้เหลื่อม (ยังไม่ได้ทำตัวหนา เพราะยังไม่แน่ใจผล)

ดาวน์โหลดไฟล์ฟอนต์ ttf

ดาวน์โหลดซอร์ส

  • รุ่นแรกยังไม่มีตัวหนา DejaVuSerifThai-src-510502.tar.gz
  • รุ่นสองเพิ่มตัวหนาแล้ว DejaVuSerifThai-src-510506.tar.gz
  • ทำเลขไทยเสร็จแล้ว hint สระแล้ว DejaVuSerifThai-src-510508.tar.gz
  • รุ่นใหม่ ปรับให้ดูนุ่มนวล DejaVuSerifThai-src-510531.tar.gz
  • ทำตัวหนาเสร็จ แต่ตัวหนาไม่ได้ปรับหัว เพราะความจำเป็นน้อย สิ่งที่ปรับปรุงคือปรับการ hint โดยใช้แนวคิดว่าไม่จำเป็นต้องปัดเศษให้ลงจุดในทุกจุด ซึ่งจะทำให้ดูนุ่มนวลขึ้น เว้นเสียแต่ว่าระบบไม่มีการทำ Anti-Alias เช่นวินโดวส์รุ่นเก่า อาจทำให้ฟอนต์ดูเพี้ยน DejaVuSerifThai-src-510606.tar.gz
  • แก้บั๊กตาราง Lookups/GSUB ให้เรียบร้อย ทำตาราง OpenType เพื่อแก้ปัญหา "สระอำ" ใน OpenOffice : DejaVuSerifThai-src-510824.tar.gz

ภาพตัวอย่าง (จากขนาดจอภาพ 72 dpi จึงกำหนดระยะเป็น ppem แทนเพื่อป้องกันสับสน)
DejaVu Serif Thai

Topic: