ไฟล์ OTF คืออะไร??
ไฟล์ที่มีนามสกุล .otf หมายถึงรูปแบบฟอนต์ OpenType รูปแบบแบบอักษร OTF สามารถปรับขนาดได้มากขึ้นและขยายคุณลักษณะที่มีอยู่ของรูปแบบ TTF สำหรับการพิมพ์ดิจิทัล OTF พัฒนาโดย Microsoft และ Adobe รวมคุณสมบัติของรูปแบบฟอนต์ PostScript และ TrueType สิ่งนี้ทำให้รูปแบบ OTF รองรับระบบการเขียนส่วนใหญ่ และนั่นคือสาเหตุที่รูปแบบนี้ถูกใช้บนแพลตฟอร์มคอมพิวเตอร์หลักๆ อย่างสม่ำเสมอ รูปแบบฟอนต์ OpenType รองรับโดย Mac OS X และ Windows 2000 และใหม่กว่า
ประวัติย่อ
ความต้องการของฟอนต์ OpenType นั้นมาจากข้อกำหนดสำหรับรูปแบบฟอนต์ที่แสดงออกชัดเจนมากขึ้นซึ่งสามารถรองรับการพิมพ์ที่ดีได้ นอกจากนี้ยังมีจุดมุ่งหมายเพื่อตอบสนองความต้องการของพฤติกรรมที่ซับซ้อนของระบบการเขียนจำนวนมากในโลก Microsoft พยายามให้สิทธิ์ใช้งานเทคโนโลยีการพิมพ์ขั้นสูงของ Apple หรือที่เรียกว่า GX Typography ในช่วงต้นปี 1990 การดำเนินการนี้ไปได้ไม่ดีนัก และเป็นผลให้ Microsoft เริ่มปรับปรุงเทคโนโลยีฟอนต์ TrueType ของตนเองในปี 1994 การปรับเปลี่ยนยังรวมถึงการแนะนำรูปแบบฟอนต์ที่เหมาะสมกว่าซึ่งตรงตามคุณลักษณะของรูปแบบฟอนต์ Type 1 (PostScript) ของ Adobe
Adobe ในปี 1996 เข้าร่วมกับ Microsoft ในความพยายามที่จะแทนที่ทั้ง TrueType ของ Apple และรูปแบบฟอนต์ Type 1 ของตนเอง ส่งผลให้ใช้รูปแบบฟอนต์พื้นฐานทั้งสองรูปแบบร่วมกันเพื่อเอาชนะข้อจำกัดและเพิ่มส่วนขยายใหม่ เทคโนโลยีใหม่นี้เปิดตัวในปีเดียวกันกับชื่อ OpenType
ข้อกำหนดรูปแบบไฟล์ OTF
ข้อกำหนด OTF มีให้บริการแบบสาธารณะโดย Microsoft และสามารถอ้างอิงได้จากมุมมองของนักพัฒนา เช่นเดียวกับ TTF จะใช้โครงสร้างคอนเทนเนอร์ ‘sfnt’ เดียวกันและเข้ากันได้กับข้อกำหนด TrueType ข้อมูลภายในไฟล์ฟอนต์ OpenType ใช้เพื่อวัตถุประสงค์ที่แตกต่างกัน เช่น การคำนวณเลย์เอาต์ข้อความ การกำหนด glyphs เป็นโครงร่าง TrueType หรือ Compact Font Format (CFF) การให้บิตแมปสีเดียวหรือสี หรือเอกสาร SVG เป็นคำอธิบายทางเลือกของ glyph และข้อมูลเมตาดาต้า
ประเภทข้อมูล OTF
ไฟล์ OTF ใช้ประเภทข้อมูลต่อไปนี้ซึ่งทั้งหมดอยู่ใน Big Endian
ประเภทข้อมูล | คำอธิบาย |
---|---|
uint8 | จำนวนเต็มไม่มีเครื่องหมาย 8 บิต |
int8 | จำนวนเต็มแบบมีเครื่องหมาย 8 บิต |
uint16 | จำนวนเต็มไม่มีเครื่องหมาย 16 บิต |
int16 | จำนวนเต็มแบบมีเครื่องหมาย 16 บิต |
uint24 | จำนวนเต็มที่ไม่มีเครื่องหมาย 24 บิต |
uint32 | จำนวนเต็มที่ไม่มีเครื่องหมาย 32 บิต |
int32 | จำนวนเต็มแบบมีเครื่องหมาย 32 บิต |
คงที่ | หมายเลขจุดตายตัวแบบ 32 บิต (16.16) |
FWORD | int16 ที่อธิบายปริมาณในหน่วยการออกแบบฟอนต์ |
UFWORD | uint16 ที่อธิบายปริมาณในหน่วยการออกแบบฟอนต์ |
F2DOT14 | จำนวนคงที่ที่มีลายเซ็น 16 บิตพร้อมเศษส่วนต่ำ 14 บิต (2.14) |
วันที่ยาวนาน | วันที่และเวลาแสดงเป็นวินาทีตั้งแต่ 12:00 น. เที่ยงคืน 1 มกราคม 1904 UTC ค่าจะแสดงเป็นจำนวนเต็ม 64 บิตแบบมีเครื่องหมาย |
แท็ก | อาร์เรย์ของ uint8 สี่ตัว (ความยาว = 32 บิต) ใช้เพื่อระบุตาราง แกนการเปลี่ยนแปลงการออกแบบ สคริปต์ ระบบภาษา คุณลักษณะ หรือเส้นฐาน |
ออฟเซ็ต16 | ออฟเซ็ตสั้นกับตาราง เหมือนกับ uint16, NULL offset = 0x0000 |
ออฟเซ็ต32 | ออฟเซ็ตแบบยาวกับตาราง เหมือนกับ uint32, NULL offset = 0x00000000 |
เวอร์ชั่น 16Dot16 | บรรจุค่า 32 บิตพร้อมหมายเลขเวอร์ชันหลักและรอง (ดูหมายเลขเวอร์ชันตาราง) |
ไดเรกทอรีตาราง OTF
ไฟล์ OTF เริ่มต้นด้วยไดเร็กทอรีตาราง ไดเร็กทอรีนี้เป็นคอลเลกชันระดับบนสุดของตารางในไฟล์ฟอนต์ ขึ้นอยู่กับจำนวนแบบอักษรในไฟล์ ไดเร็กทอรีตารางอาจอยู่ที่ตำแหน่งอื่นในไฟล์ ตัวอย่างเช่น ในกรณีที่ไฟล์ฟอนต์มีฟอนต์เดียว ไดเร็กทอรีของตารางจะเริ่มต้นที่ไบต์ 0 ของไฟล์ ในกรณีที่มีการรวบรวม OpenType Fonts หลายชุด จุดเริ่มต้นของไดเร็กทอรีตารางระบุไว้ใน TTCHeader
พิมพ์ | ชื่อ | คำอธิบาย |
---|---|---|
uint32 | sfntVersion | 0x00010000 หรือ 0x4F54544F (‘OTTO’) |
uint16 | numTables | จำนวนตาราง |
uint16 | searchRange | กำลังสูงสุด 2 น้อยกว่าหรือเท่ากับ numTables คูณ 16 ((2**floor(log2(numTables))) * 16 โดย “**” เป็นตัวดำเนินการยกกำลัง |
uint16 | entrySelector Log2 ของกำลังสูงสุด 2 น้อยกว่าหรือเท่ากับ numTables (log2(searchRange/16) ซึ่งเท่ากับ floor(log2(numTables))). | |
uint16 | rangeShift | numTables คูณ 16, ลบ searchRange ((numTables * 16) - searchRange). |
บันทึกตาราง | tableRecords[numTables] | อาร์เรย์ระเบียนตาราง—หนึ่งรายการสำหรับแต่ละตารางระดับบนสุดในแบบอักษร |
บันทึกตาราง
สำหรับแต่ละตารางระดับบนสุดในแบบอักษร จะมีบันทึกตารางซึ่งประกอบด้วยฟิลด์ต่อไปนี้
ประเภท | ชื่อ | คำอธิบาย |
---|---|---|
แท็ก | แท็กตาราง | ตัวระบุตาราง |
uint32 | เช็คซัม | เช็คซัมสำหรับตารางนี้ |
ออฟเซ็ต32 | ออฟเซ็ต | ออฟเซ็ตจากจุดเริ่มต้นของไฟล์ฟอนต์ |
uint32 | ความยาว ความยาวของตารางนี้ |
แต่ละตารางในไฟล์ฟอนต์ OpenType จะแสดงด้วยชื่อที่เรียกว่าแท็กตาราง จำเป็นอย่างยิ่งที่ระเบียนทั้งหมดในอาร์เรย์จะต้องเรียงลำดับจากน้อยไปหามากตามแท็ก