Theppitak's blog

My personal blog.

30 พฤษภาคม 2550

Postscript Hinting

หลังจากเตรียม spline อย่างถูกต้องไปแล้ว ก็มาถึงแนวคิดการทำ hint ของฟอนต์โพสต์สคริปต์ ซึ่งแตกต่างจาก hint ของ TrueType

คำอธิบาย ในเอกสารของ fontforge ให้แนวคิดคร่าว ๆ ได้ดี คือ hint ของโพสต์สคริปต์นั้น มีค่า global ของฟอนต์อยู่ แล้วก็มี stem hint ที่แต่ละ glyph การบรรยาย hint จะอยู่ในรูปพารามิเตอร์ แล้ว rasterizer จะนำพารามิเตอร์ต่าง ๆ เหล่านี้มาใช้ประกอบการวาด glyph ตามขั้นตอนของ rasterizer เอง ซึ่งต่างจาก hint ของ TrueType ที่ hint จะกำหนดเป็น "instruction" ที่ระบุเป็นขั้น ๆ ลงใน glyph แต่ละ glyph เลย ว่าจะปรับ spline ตามขั้นตอนอย่างไร rasterizer ของ TrueType มีหน้าที่ execute instruction เหล่านั้นแบบทื่อ ๆ เท่านั้น

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

global hint ที่สำคัญของฟอนต์โพสต์สคริปต์ ได้แก่ค่า BlueValues ซึ่งใช้ตีเส้นความสูงระดับต่าง ๆ ของอักขระ เส้นเหล่านี้แต่ละเส้นจะเป็นแถบในแนวนอนให้จุดควบคุม spline ไปเกาะ โดยความกว้างของแถบจะกลายเป็นระยะ overshoot ของอักขระที่ส่วนสัมผัสแถบเป็นเส้นโค้ง เช่น O C G Q เป็นอักขระที่ด้านบนเป็นเส้นโค้ง เวลาวาดจะต้องให้สูงกว่าเส้นที่เป็นหัวตัดตรง เช่น I H E เพราะถ้าสูงเท่ากันมันจะลวงตา ทำให้ดูเหมือนเตี้ยกว่า

สรุปว่า BlueValues คือชุดของแถบที่ตีกำหนดขอบเขตความสูงระดับต่าง ๆ ไล่จากเส้น baseline ขึ้นข้างบน โดยกำหนดเป็นตัวเลขเป็นคู่ ๆ แทนด้านล่างและด้านบนของแถบ เริ่มจากแถบที่ baseline เอง ขึ้นไปที่แถบของ x-height แล้วก็แถบความสูงอักษรไทย ตามด้วยแถบ Capital Ascender

BlueValues

คุณกำหนดค่าของ BlueValues ได้ที่ Element > Font Info > PS Private โดยสามารถเพิ่มค่าแล้วให้โปรแกรมประเมินค่าเอาได้ แต่มีโอกาสที่จะเดาไม่เจอความสูงอักษรไทย ซึ่งไม่เป็นไร คุณสามารถแทรกข้อมูลเพิ่มได้ ในการแทรก อย่าลืมว่าค่า BlueValues ต้องเรียงลำดับจากน้อยไปมาก และไม่นับรวม blue zone ที่อยู่ใต้ baseline ลงไป ถ้าจะกำหนดแถบใต้ baseline คุณต้องกำหนดใน OtherBlues แทน

ที่ เว็บของ Adobe มีข้อมูลเทคนิคของฟอนต์โพสต์สคริปต์ สำหรับเรื่อง global hint เหล่านี้ อ่านได้ในเอกสาร Adobe Type 1 Font Format อยู่ในบทที่ 5 เรื่อง Private Dictionary ในนั้นมีค่าอื่น ๆ ที่น่าสนใจอีก คือ StdHW, StdVW, StemSnapH, StemSnapV

ค่า BlueValues จะช่วยกำกับให้ตัวอักษรสูงสม่ำเสมอทั้งบรรทัด ค่าอื่น ๆ ก็ช่วยควบคุมความสม่ำเสมออื่น ๆ แต่ก็ยังมี hint สำหรับ stem แต่ละ stem ของตัวอักษรอีก ไว้เขียนคราวหน้า

ป้ายกำกับ:

0 ความเห็น:

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

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

hacker emblem