Theppitak's blog

My personal blog.

28 พฤษภาคม 2550

Font Tips Notes

บันทึกเกร็ดของการทำฟอนต์ ทำยังไงให้ hint สวย ซึ่งความจริงถ้าเข้าใจหลักการ ก็ไม่ยากอย่างที่คิด (เฉพาะ Postscript นะครับ TrueType ไม่นับ) ที่เหลือก็อยู่ที่ความปราณีตและความอดทนเท่านั้น

ผมพยายามเก็บประสบการณ์จากการทำงานกับฟอนต์มาอยู่ระดับหนึ่ง ก็พอจะจับทางได้บ้าง แต่เมื่อไปพบตำราฟอนต์ Type by Design - The Art and Science of Digital Typeface Design ทำให้เข้าใจอะไรมากขึ้น และมั่นใจในสิ่งที่เรียนรู้มากขึ้น หากใครสนใจศึกษาการทำฟอนต์ ขอแนะนำให้อ่านครับ

เข้าเรื่องล่ะนะ ว่าด้วยการทำฟอนต์ให้ hint สวย

ต้องเริ่มจากการวาด spline ของตัวอักษรก่อน ถ้าวางจุดไม่เหมาะสม จะ hint ให้ตายยังไงก็ไม่เป็นผล เพราะการ hint คือการปรับตำแหน่งจุดให้ลงล็อคกับจุดสีบนหน้าจอ ถ้าตำแหน่งสำคัญที่จะปรับกลับไม่มีที่ให้จับ ก็จะไม่สามารถ hint ได้

Spline and Hinting

จากรูป แสดงจุดสำคัญของอักษร p ที่จะมีผลกับการ hint โดย 2 จุดซ้ายไม่เกี่ยว แต่ 3 จุดขวานั้น เส้นนอนและเส้นตั้งของโค้งจะถูกปรับตำแหน่งและความหนาของเส้นให้พอดีกับ grid ของจอภาพ โดยมี stem hint กำกับความหนาของเส้นไว้ การวาดเส้นโค้ง จึงจำเป็นอย่างยิ่งที่ต้องกำหนดจุดตรงจุดวิกฤติเหล่านี้

ดังนั้น การวาด spline จึงมีหลักการโดยทั่วไปคือ

Do and Don't for spline drawing

  1. ต้องมีจุดของเส้นโค้งที่ตำแหน่งที่เส้นโค้งอยู่ในแนวราบและตั้งฉากเสมอ เพราะเป็นจุดสำคัญสำหรับการ hint อีกทั้งยังทำให้แก้ไขเส้นโค้งได้ง่ายอีกด้วย ใน fontforge คุณสามารถใช้คำสั่ง Element > Add Extrema เพื่อเพิ่มจุดที่ตำแหน่งเหล่านี้ได้
  2. ส่วนที่เส้นโค้งมีความสมมาตร ก็ควรให้ความยาวของเส้นควบคุมต่าง ๆ มีความสมมาตรกันด้วย
  3. ไม่ควรมีจุดควบคุมมากเกินไปหรือน้อยเกินไป ถ้ามีมากเกินไป ก็จะทำให้ข้อมูลฟอนต์ใหญ่เกินจำเป็น ทั้งยังทำให้แก้ไขยาก และถ้าน้อยเกินไป ข้อมูลสำหรับ hint ก็อาจไม่พอ หรืออาจกินเวลา rasterize นานขึ้น ใน fontforge คุณสามารถใช้คำสั่ง Element > Simplify > Simplify เพื่อตัดจุดที่ไม่จำเป็นออกได้ ส่วนจุดที่ขาดนั้น Add Extrema ช่วยคุณได้
  4. ระวังอย่าให้เกิดเส้นขมวด (kink) โดยเส้นควบคุมไม่ควรตัดกันหรือพุ่งเกยกัน (ดูรูปข้างล่าง) เส้นขมวดนี้ถือเป็นข้อบกพร่องของ spline เพราะทำให้เส้นโค้งขาดความแน่นอน ไม่ควรตระหนี่จุดควบคุมด้วยการลักไก่เช่นนั้น

Kinks in spline

เครื่องมือที่น่าใช้ของ Fontforge เกี่ยวกับการปรับ spline:

  • Element > Add Extrema สำหรับเพิ่มจุดที่จุดวิกฤติของเส้นโค้ง
  • Element > Simplify > Simplify สำหรับค้นหาและตัดจุดที่ไม่จำเป็นออก
  • Edit > Elide สำหรับเลือกตัดจุดที่ต้องการออก โดยพยายามประมาณค่าที่จุดข้างเคียงเพื่อชดเชยด้วย ใช้สำหรับการ simplify เส้นโค้งแบบ manual และแน่นอนว่าคุณต้องปรับจุดข้างเคียงที่เครื่องคำนวณให้นั้นอีกครั้ง เพื่อความลงตัว
  • Element > Round > To Int ช่วยปัดค่าของจุดต่าง ๆ ให้เป็นจำนวนเต็ม คุณควรสั่ง Round to int ไว้เสมอ เพื่อให้กำหนดสัดส่วนต่าง ๆ ที่ตายตัวได้ เช่น ความกว้างของเส้น

ยาวแล้วละ คิดว่าคงเป็นประโยชน์ต่อผู้สนใจศึกษา แต่อย่างน้อยก็มีประโยชน์ที่เป็นบันทึกช่วยจำสำหรับตัวผมเอง :-)

ภาพประกอบต่าง ๆ ได้มาจากเว็บตำราทำฟอนต์ข้างต้นครับ

ป้ายกำกับ:

1 ความเห็น:

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

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

hacker emblem