ไม่แน่ใจว่าแปะถามในนี้จะถูกที่รึเปล่า
พอดีผมไปสะดุดกับ ttfautotint ก็เลยเกิดสงสัยในการใช้งานของ
http://www.freetype.org/พอจะอธิบายให้เข้าใจได้ไหมครับ
เอาแค่ ttfautohint ก่อนละกันนะครับ เพราะเรื่อง freetype คงต้องตอบยาว ผมจะพยายามอธิบายเท่าที่ผมเข้าใจนะ
ttfautohint มีไว้ช่วยทำ autohint สำหรับ truetype font ซึ่งซับซ้อนกว่า postscript font ก่อนหน้าที่ฟอนต์สำหรับเว็บจะฮิต คนทำฟอนต์หันไปใช้ postscript autohint กัน (อย่างเช่น autohint ใน afdko ของ adobe) เพราะมันสะดวกและรวดเร็วกว่า แต่ฟอร์แมตที่เหมาะกับการแสดงผลในจอคอมพิวเตอร์เป็นหลักก็ยังเป็น truetype อยู่ดี ถึงความละเอียดของจอจะเพิ่มขึ้น ttfautohint จึงเกิดขึ้นโดยใช้ความสามารถของ freetype (font rasterizer) ซึ่งใน GNU/Linux desktop ส่วนมากมีอยู่แล้ว แต่ใน mac กับ windows ไม่มี เขาเลยทำโปรแกรมสำหรับ truetype autohint ที่ใช้งานได้ข้ามแพลตฟอร์มครับ
ส่วนวิธีติดตั้งและใช้งานแบบละเอียด ลองอ่านที่
http://freetype.sourceforge.net/ttfautohint/doc/ttfautohint.html ซึ่งอาจจะ geek ไปหน่อย และผมไม่ได้เข้าใจทั้งหมด ผมขอยกตัวอย่างจากประสบการณ์ตัวเองละกันนะครับ
ผมใช้ gui ของ ttfautohint ไม่เป็น เพราะส่วนใหญ่ผมคอมไฟล์ซอร์สล่าสุดจาก repo
http://repo.or.cz/w/ttfautohint.git/ เนื่องจากมันรองรับ thai autohint ซึ่งยังไม่มีในเวอร์ชั่นปัจจุบัน ผมเลยใช้งาน command line interface เป็นหลัก ตัวอย่างสคริปต์สั่งงาน ttfautohint ของผมดูได้จากฟอนต์บุญจดฮะ
https://github.com/fontuni/boonjot/blob/gh-pages/scripts/build.py#L49 (อาจจะงงหน่อยเพราะผมใช้ python สั่งงาน ttfautohint อีกที)
เหตุผลที่หลายคนงงกับ ttfautohint เพราะว่า options/parameters มันเยอะ ผมก็งมอยู่นานนะครับกว่าจะสั่งงานมันได้ดั่งใจ ขออธิบายคำสั่งที่ผมใช้กับ cli ละกัน น่าจะปรับใช้กับ gui ได้ (ถึงติดตั้งเวอร์ชั่น gui ก็ใช้ cli ได้นะครับ)
ถ้าต้องการดู options และคำอธิบายทั้งหมด ก็พิมพ์ใน terminal
ส่วนตัวอย่างคำสั่งที่ผมใช้สำหรับฟอนต์บุญจดก็คือ
ttfautohint --default-script=thai \
--fallback-script=latn \
--strong-stem-width=gGD \
--hinting-range-min=8 \
--hinting-range-max=50 \
--hinting-limit=200 \
--increase-x-height=12 \
--no-info \
--verbose \
unhinted.ttf hinted.ttf
คำอธิบาย options/parameters
เลือกชุดตัวอักษรไทยเป็นค่าตั้งต้น ถ้าคุณคอมไฟล์ซอร์สล่าสุดจาก repo แบบผม ถ้าไม่ใช่ก็เปลี่ยน thai เป็น latn ก็ได้ครับ
ถ้าไม่ใช่ตัวอักษรไทยให้เลือกวิธี hint แบบตัวละติน
อันนี้เป็นออฟชั่นเฉพาะสำหรับ windows ผมเลือก gGD แปลว่าให้มันรองรับเทคโนโลยีทั้งเก่าและใหม่ (g คือ grayscale, G คือ GDI ClearType, D คือ DirectWrite ClearType)
ส่วน
--hinting-range-min=8 --hinting-range-max=50 --hinting-limit=200
ไม่ต้องใส่ก็ได้ เพราะผมใส่ตามค่า default ของโปรแกรมอยู่แล้ว
อันนี้ค่า default คือ 14 PPEM แต่เปลี่ยนได้ตามความเหมาะสมสำหรับฟอนต์แต่ละตัว
อันนี้คือสั่งให้ไม่ต้องเพิ่มข้อมูลต่อท้ายในเวอร์ชั่นของฟอนต์ และแสดงรายละเอียดระหว่าง hint
เปลี่ยน unhinted.ttf เป็นชื่อไฟล์ของคุณที่ยังไม่ได้ hint (input font) และเปลี่ยน hinted.ttf เป็นชื่อไฟล์ที่คุณต้องการ (output font)
หวังว่าคงพอจะช่วยให้เข้าใจคำสั่งของมันมากขึ้นนะฮะ ลองงม ลองผิดลองถูกดูก่อนครับ แบ็คอัพไฟล์ต้นฉบับไว้ก่อนก็ไม่มีอะไรเสียหาย