Stem Hinting
ขณะที่ rasterizer พยายามปรับ spline ให้ลงล็อคกับตารางจุดจอภาพนั้น จะต้องมีการขยับจุดต่าง ๆ ซึ่งการ hint เกี่ยวกับความกว้าง stem จะช่วยรักษาระยะห่างระหว่างจุดที่ควรจะไปด้วยกันให้คงที่ เพื่อให้เส้นหนาสม่ำเสมอ hint ที่เกี่ยวกับ stem มีสองส่วน คือ global hint กับ hint ใน glyph
global hint อยู่ใน PS Private ได้แก่ StdHW, StdVW, StemSnapH, StemSnapV โดยแต่ละตัวมีความหมายดังนี้:
- StdHW และ StdVW หมายถึงความกว้างปกติของเส้นนอนและเส้นตั้งของทั้งฟอนต์ เวลา rasterize ฟอนต์ที่ขนาดเล็ก ๆ ซึ่งความหนาที่ต่างกันเพียงหนึ่งจุดจะมีผลมากนั้น ถ้า stem ไหนความกว้างต่างจากค่าความกว้างปกติเพียงเล็กน้อย ก็จะตบให้เท่าค่าปกตินี้
- StemSnapH และ StemSnapV เป็นแอร์เรย์ของความกว้าง stem แนวนอนและแนวตั้งที่ปรากฏมากในฟอนต์ตามลำดับ ค่า snap เหล่านี้ จะใช้ตบความกว้าง stem ให้ลงล็อคที่ค่าเหล่านี้ในทำนองเดียวกัน
ส่วน hint ที่อยู่ใน glyph นั้น ก็มีสองชนิด คือ hstem (HHint) และ vstem (VHint) สำหรับกำกับความกว้างของเส้นแนวนอนและแนวตั้งแต่ละเส้นใน glyph ตามลำดับ ซึ่งการใส่ hint เหล่านี้ จะเป็นการกำกับเส้นแต่ละเส้น ว่าตรงไหนเป็น stem บ้าง พร้อมทั้งความกว้างด้วย
ในการปรับตำแหน่ง spline ให้ลงล็อค rasterizer จะอาศัยข้อมูล hstem และ vstem ในการรักษาความกว้างของเส้น และในโพสต์สคริปต์รุ่นใหม่ ๆ จะมีการตบเส้นด้วย global hint ที่กล่าวถึงข้างต้นนี้ด้วย
วิธีการเพิ่มและปรับแต่ง hint ด้วย fontforge อ่านได้จาก คู่มือ อนึ่ง ถ้าจะอ่านข้อมูลอ้างอิง เรื่อง hstem และ vstem ใน Adobe Type 1 Font Format จะอยู่ในบทที่ 6 เรื่อง CharStrings Dictionary
ทิ้งท้ายด้วยเกร็ดนิดหนึ่ง เกี่ยวกับการ hint ฟอนต์ไทยบางฟอนต์ ที่มีลักษณะหัวพยัญชนะล้ำเข้าไปในเส้นตั้ง เช่น Garuda ซึ่งหากสั่ง Autohint แล้ว fontforge จะกำกับ vstem ทั้งเส้นตั้งและด้านในของหัว โดยใช้ hint mask กำกับเพื่อแยก vstem ที่ซ้อนเหลื่อมกัน (สังเกตวงกลมที่วงรอบจุดควบคุม บ่งบอกว่ามี hint mask กำกับ) ผลคือ เส้นขวาสุดของ ว แหวน ในตัวอย่างนี้ จุดบนกับจุดล่างถูก hint แยกกัน ทำให้ในบางขนาด เส้นนี้กลับไม่อยู่ในแนวดิ่ง ทำให้หัวเลอะ ดังตัวอย่าง Garuda Bold ที่ 18 pt:
เมื่อตัด hint ที่ overlap นั้นออก เส้นก็กลับมาอยู่ในแนวดิ่งอีกครั้ง:
เรื่องนี้อาจเป็นเรื่องได้อย่างเสียอย่าง เพราะการได้เส้นที่ตั้งตรงมา ก็แลกกับการที่หัวพยัญชนะบางตัวไม่กลมดิก ซึ่งเรื่องนี้คงไม่มีสูตรสำเร็จตายตัว ต้องพิจารณาเป็นรายฟอนต์ไป ผ่านการทดลองฟอนต์ที่หลาย ๆ ขนาด แล้วหาวิธี hint ที่ดีที่สุดสำหรับฟอนต์นั้น ๆ
ป้ายกำกับ: typography