Web 开放字体格式 (.woff)
W3C มาตรฐานWeb Open Font Format (WOFF) คือฟอร์แมตฟอนต์เว็บมาตรฐานเปิดเจเนอเรชันแรกรุ่นประวัติศาสตร์ที่ได้รับการรับรองจาก W3C โดยการห่อหุ้มฟอนต์ TrueType หรือ OpenType มาตรฐานเข้ากับการบีบอัด zlib และข้อมูลเมตาดาตะลิขสิทธิ์แบบ XML
ตรวจสอบและดู Metadata
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ WOFF โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวในระดับไบต์ (Magic Bytes)
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ WOFF โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็น HEX (OFFSET 0):
77 4F 46 46การแสดงผลรูปแบบ ASCII: wOFF
มาตรฐาน: W3C Recommendation (2012)
ข้อมูลจำเพาะทางเทคนิค
| สถาปัตยกรรมคอนเทนเนอร์ | 44-byte WOFF header followed by table directory, zlib-compressed table data, optional extended metadata, and private data |
| การบีบอัด | Deflate (zlib) compression applied to each individual font table |
| การจัดลำดับไบต์ (Byte Endianness) | Big-Endian (SFNT standard) |
| พื้นที่สี | Inherited from underlying font tables |
| ช่องสัญญาณและโครงสร้าง | TrueType ('glyf') or PostScript ('CFF ') glyph outlines, metrics, and typographic features |
| ขนาดสูงสุด | Up to 65,535 glyphs per font file |
| ความโปร่งใส | Inherited from underlying font format |
| การสตรีมและแบบโปรเกรสซีฟ | Table-by-table decompression enables streaming font loading |
ตารางเปรียบเทียบทางเทคนิค: WOFF กับคู่แข่ง
| คุณลักษณะทางเทคนิค | WOFF (ปัจจุบัน) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| ตัวแปลงสัญญาณการบีบอัด | Deflate (zlib) ต่อตาราง | Brotli พร้อมการประมวลผลตารางล่วงหน้า | SFNT แบบไม่บีบอัด | SFNT แบบไม่บีบอัด |
| ลายเซ็นต์เวทมนตร์ | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| ขนาดไฟล์สัมพัทธ์ | เล็กกว่า TTF ประมาณ 40% | เล็กกว่า TTF ประมาณ 60% | มาตรฐานพื้นฐาน (100%) | มาตรฐานพื้นฐาน (100%) |
| สภาพแวดล้อมเป้าหมาย | เว็บเบราว์เซอร์รุ่นเก่า (IE9+, Safari 5+) | เว็บเบราว์เซอร์สมัยใหม่ (สากล) | ระบบปฏิบัติการเดสก์ท็อป | การเผยแพร่บนเดสก์ท็อปและการพิมพ์ |
รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex
คำเตือนในคอนโซลเบราว์เซอร์: 'Failed to decode downloaded font: OTS parsing error'
สาเหตุหลัก: ความไม่ตรงกันของความยาวตารางที่ยังไม่บีบอัดที่ประกาศไว้ หรือสตรีม zlib เสียหาย
การกู้คืน: บีบอัดตารางฟอนต์ใหม่หรือแปลงเป็น WOFF2 โดยใช้ File2File Font Converter
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
เว็บเบราว์เซอร์จะวิเคราะห์ไฟล์ WOFF ที่ดาวน์โหลดมาจากโดเมนเว็บที่ไม่น่าเชื่อถือโดยใช้ OpenType Sanitizer (OTS) เพื่อบล็อกเพย์โลดการโจมตี
เวกเตอร์การโจมตีที่ทราบ
- การอ่านบัฟเฟอร์เกิน (Buffer over-read) ระหว่างการคลายการบีบอัด zlib ของส่วนของตารางฟอนต์ที่เสียหาย
- ฟิลด์ความยาวตารางที่ไม่ตรงกันซึ่งทริกเกอร์บัฟเฟอร์โอเวอร์โฟลว์ของฮีปในตัวเรนเดอร์ฟอนต์
- การปฏิเสธการให้บริการ (Denial of service) ผ่านการใช้หน่วยความจำจนหมดระหว่างการขยายตารางฟอนต์
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน:
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- ลดขนาดไฟล์ฟอนต์เว็บลง 30% ถึง 50% เมื่อเทียบกับไฟล์ TTF หรือ OTF ดิบที่ยังไม่บีบอัด
- ความเข้ากันได้แบบย้อนหลังระดับสากลในเบราว์เซอร์เดสก์ท็อปและมือถือทุกตัวที่เปิดตัวตั้งแต่ปี 2011
- รวมบล็อกเมตาดาตะ XML ทางเลือกสำหรับลิขสิทธิ์ฟอนต์ เครดิตผู้สร้าง และข้อมูลลิขสิทธิ์ของโรงหล่อฟอนต์
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- ถูกแทนที่ด้วย WOFF2 ซึ่งบีบอัดได้เล็กกว่าประมาณ 30% โดยใช้อัลกอริทึม Brotli
- ไม่สามารถติดตั้งลงในระบบปฏิบัติการเดสก์ท็อป (Windows/Mac) ได้โดยตรงโดยไม่ต้องแปลงเป็น TTF/OTF ก่อน
- อัลกอริทึมการบีบอัด zlib รุ่นเก่ามีประสิทธิภาพน้อยกว่าตัวเข้ารหัสเอนโทรปีสมัยใหม่
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- ไบต์วิเศษ (magic bytes) สำหรับ WOFF 1.0 คือ 'wOFF' (0x77 0x4F 0x46 0x46) ในขณะที่ WOFF 2.0 ใช้ 'wOF2'
- โรงหล่อฟอนต์ตกลงที่จะอนุญาตให้นำฟอนต์ของตนมาใช้บนเว็บก็ต่อเมื่อมีการสร้าง WOFF ขึ้นมา เนื่องจากคอนเทนเนอร์พิเศษนี้ช่วยแยกแยะฟอนต์เว็บออกจากฟอนต์เดสก์ท็อปที่ถูกละเมิดลิขสิทธิ์ได้
- WOFF เดิมทีถูกนำไปใช้ใน Firefox 3.6 ในปี 2010 ก่อนที่จะกลายเป็นคำแนะนำอย่างเป็นทางการของ W3C
คำถามทางเทคนิคที่พบบ่อย
ความแตกต่างระหว่าง WOFF และ WOFF2 คืออะไร
WOFF ใช้การบีบอัด zlib ในขณะที่ WOFF2 ใช้ อัลกอริทึม Brotli ที่ใหม่กว่าของ Google และการแปลงตาราง ส่งผลให้ไฟล์มีขนาดเล็กกว่า WOFF ประมาณ 30%
ฉันจะแปลงฟอนต์ WOFF เป็น TTF หรือ OTF สำหรับใช้บนเดสก์ท็อปได้อย่างไร
คุณสามารถแปลงไฟล์ WOFF เป็นฟอนต์ TTF หรือ OTF สำหรับเดสก์ท็อปที่ติดตั้งได้ภายในไม่กี่วินาทีโดยใช้ File2File.app บนเว็บเบราว์เซอร์ของคุณ
ฉันยังจำเป็นต้องใช้ WOFF 1.0 บนเว็บไซต์สมัยใหม่อยู่หรือไม่
ไม่จำเป็น เบราว์เซอร์สมัยใหม่ทั้งหมดรองรับ WOFF2 ตามค่าเริ่มต้นแล้ว WOFF 1.0 จะจำเป็นเฉพาะในกรณีที่คุณต้องรองรับเบราว์เซอร์รุ่นเก่าที่ล้าสมัย เช่น Internet Explorer เท่านั้น