Web Open Font Format (.woff)
W3C มาตรฐานWeb Open Font Format (WOFF) คือรูปแบบฟอนต์เว็บมาตรฐานเปิดรุ่นแรกที่ได้รับการรับรองจาก W3C โดยบรรจุฟอนต์ TrueType หรือ OpenType มาตรฐานพร้อมการบีบอัด zlib และข้อมูลเมตาใบอนุญาตแบบ XML
ตรวจสอบไฟล์และข้อมูลเมตา
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ WOFF โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวระดับไบต์
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ WOFF โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็น HEX (OFFSET 0):
77 4F 46 46การแสดงผลรูปแบบ ASCII: wOFF
มาตรฐาน: W3C Recommendation (2012)
ข้อมูลจำเพาะทางเทคนิค
| สถาปัตยกรรมคอนเทนเนอร์ | ส่วนหัว WOFF ขนาด 44 ไบต์ ตามด้วยไดเรกทอรีตาราง, ข้อมูลตารางที่บีบอัดด้วย zlib, ข้อมูลเมตาเพิ่มเติมที่เลือกมีได้ และข้อมูลส่วนตัว |
| การบีบอัด | ใช้การบีบอัด Deflate (zlib) กับแต่ละตารางฟอนต์แยกกัน |
| การจัดลำดับไบต์ | ลำดับไบต์แบบ Big-Endian (มาตรฐาน SFNT) |
| พื้นที่สี | สืบทอดจากตารางฟอนต์ต้นทาง |
| ช่องสัญญาณและโครงสร้าง | เส้นขอบไกลฟ์ TrueType ('glyf') หรือ PostScript ('CFF '), ค่าตัวชี้วัด และคุณลักษณะการจัดตัวพิมพ์ |
| ขนาดสูงสุด | รองรับไกลฟ์สูงสุด 65,535 ตัวต่อไฟล์ฟอนต์ |
| ความโปร่งใส | สืบทอดจากรูปแบบฟอนต์ต้นทาง |
| การสตรีมและแบบโปรเกรสซีฟ | การคลายการบีบอัดทีละตารางช่วยให้โหลดฟอนต์ผ่านสตรีมได้ |
ตารางเปรียบเทียบทางเทคนิค: 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 โดยระดับการประหยัดแตกต่างตามฟอนต์ | มักมีขนาดเล็กกว่า TTF โดยระดับการประหยัดแตกต่างตามฟอนต์ | มาตรฐานพื้นฐาน (100%) | มาตรฐานพื้นฐาน (100%) |
| สภาพแวดล้อมเป้าหมาย | เว็บเบราว์เซอร์รุ่นเก่า (IE9+, Safari 5+) | การรองรับแตกต่างกันไปตามเบราว์เซอร์ | ระบบปฏิบัติการเดสก์ท็อป | การเผยแพร่บนเดสก์ท็อปและการพิมพ์ |
รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex
คำเตือนในคอนโซลเบราว์เซอร์: 'Failed to decode downloaded font: OTS parsing error'
สาเหตุหลัก: ความไม่ตรงกันของความยาวตารางที่ยังไม่บีบอัดที่ประกาศไว้ หรือสตรีม zlib เสียหาย
การกู้คืน: บีบอัดตารางฟอนต์ใหม่หรือแปลงเป็น WOFF2 โดยใช้ File2File.app Font Converter
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
เว็บเบราว์เซอร์จะวิเคราะห์ไฟล์ WOFF ที่ดาวน์โหลดมาจากโดเมนเว็บที่ไม่น่าเชื่อถือโดยใช้ OpenType Sanitizer (OTS) เพื่อบล็อกเพย์โลดการโจมตี
เวกเตอร์การโจมตีที่ทราบ
- การอ่านบัฟเฟอร์เกิน (Buffer over-read) ระหว่างการคลายการบีบอัด zlib ของส่วนของตารางฟอนต์ที่เสียหาย
- ฟิลด์ความยาวตารางที่ไม่ตรงกันซึ่งทริกเกอร์บัฟเฟอร์โอเวอร์โฟลว์ของฮีปในตัวเรนเดอร์ฟอนต์
- การปฏิเสธการให้บริการ (Denial of service) ผ่านการใช้หน่วยความจำจนหมดระหว่างการขยายตารางฟอนต์
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: ทำความสะอาดไฟล์ WOFF ที่ดาวน์โหลดมาด้วย OTS เสมอก่อนส่งไปยังเอนจิ้นฟอนต์ของระบบปฏิบัติการ
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- ช่วยลดขนาดไฟล์ฟอนต์เว็บเมื่อเทียบกับไฟล์ TTF หรือ OTF ดิบ โดยปริมาณขึ้นอยู่กับฟอนต์และตัวเข้ารหัส
- ความเข้ากันได้แบบย้อนหลังระดับสากลในเบราว์เซอร์เดสก์ท็อปและมือถือทุกตัวที่เปิดตัวตั้งแต่ปี 2011
- มีบล็อกข้อมูลเมตา XML ซึ่งเลือกใส่ได้ สำหรับข้อมูลใบอนุญาตใช้ฟอนต์ เครดิตผู้สร้าง และลิขสิทธิ์ของโรงหล่อฟอนต์
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- ในเวิร์กโฟลว์เว็บหลายแบบ WOFF2 เข้ามาแทนที่ โดยใช้การบีบอัด Brotli และการแปลงตารางฟอนต์ ทั้งนี้การประหยัดขนาดไฟล์แตกต่างกันไป
- ไม่สามารถติดตั้งลงในระบบปฏิบัติการเดสก์ท็อป (Windows/Mac) ได้โดยตรงโดยไม่ต้องแปลงเป็น TTF/OTF ก่อน
- อัลกอริทึมการบีบอัด zlib รุ่นเก่ามีประสิทธิภาพน้อยกว่าตัวเข้ารหัสเอนโทรปีสมัยใหม่
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- ลายเซ็นไฟล์ของ 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 เท่านั้น