Web Open Font Format (.woff)

W3C 標準

Web Open Font Format (WOFF) 是 W3C 認可的歷史性第一代開放標準網頁字型格式,將標準的 TrueType 或 OpenType 字型以 zlib 壓縮與 XML 授權中繼資料包裝。

檢查與中繼資料

作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 WOFF 檔案:

在這裡選擇或拖放檔案

私密 - 檔案絕不會離開您的裝置

或貼上 Ctrl+V
零網路傳輸隱私保證: 0 位元組上傳至外部伺服器。所有處理皆在本機瀏覽器沙箱中進行。

位元組層級標頭簽章(檔案簽章)

作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 WOFF 檔案:

十六進位簽章(偏移量 0):

77 4F 46 46

ASCII 表示法: wOFF

標準化: W3C 建議標準(2012 年)

技術規格

容器架構44 位元組的 WOFF 標頭,後接表格目錄、zlib 壓縮的表格資料、選擇性的擴充中繼資料與私密資料
壓縮對每個個別字型表格套用 Deflate (zlib) 壓縮
位元組序大端序(Big-Endian,SFNT 標準)
色彩空間繼承自底層字型表格
色版與結構TrueType('glyf')或 PostScript('CFF ')字形外框、度量與排版特徵
最大尺寸每個字型檔案最多 65,535 個字形
透明度繼承自底層字型格式
串流與漸進式逐表解壓縮支援串流字型載入

技術比較矩陣:WOFF 對比競爭格式

技術屬性WOFF (目前)WOFF2TTFOTF
壓縮編解碼器每表 Deflate (zlib)帶有表格預先處理的 Brotli未壓縮的 SFNT未壓縮的 SFNT
檔案簽章wOFF (0x77 0x4F 0x46 0x46)wOF2 (0x77 0x4F 0x46 0x32)0x00 0x01 0x00 0x00OTTO (0x4F 0x54 0x54 0x4F)
相對檔案大小通常比 TTF 小;節省幅度因字型而異通常比 TTF 小;節省幅度因字型而異基準標準 (100%)基準標準 (100%)
目標環境舊版網頁瀏覽器(IE9+、Safari 5+)支援情況因瀏覽器而異。桌面作業系統桌面出版與列印

常見損壞模式與十六進位修復指南

瀏覽器主控台警告:「Failed to decode downloaded font: OTS parsing error」。

根本原因: 宣告的未壓縮表格長度不符或 zlib 資料流受損。

修復: 使用 File2File.app 字型轉換器重新壓縮字型表格或轉換為 WOFF2。

安全性分析與解析器攻擊向量

網頁瀏覽器使用 OpenType Sanitizer (OTS) 解析從不受信任的網頁網域下載的 WOFF 檔案,以阻擋攻擊酬載。

已知攻擊向量

  • 在對受損的字型表格區塊進行 zlib 解壓縮期間發生緩衝區過度讀取。
  • 不相符的表格長度欄位會觸發字型算繪器中的堆積緩衝區溢位。
  • 透過字型表格展開期間的記憶體耗盡來造成阻斷服務。

防禦最佳實務: 在傳遞至作業系統字型引擎之前,一律使用 OTS 清理下載的 WOFF 檔案。

歷史起源與里程碑

2018因具備更優異的 Brotli 壓縮而被 WOFF2 取代,成為首選的網頁字型標準。
2012W3C 正式發布 WOFF 1.0 作為正式的網頁標準建議。
2009Henrik Rydgård、Tal Leming 與 Jonathan Kew 制定 WOFF,以解決網頁字型授權疑慮。

主要優勢與優點

  • 相較於原始的 TTF 或 OTF 檔案,可縮減網頁字型檔案大小;節省幅度取決於字型與編碼器。
  • WOFF 受到許多瀏覽器的支援,包含較舊的版本;相容性取決於瀏覽器版本與平臺。
  • 包含選擇性的 XML 中繼資料區塊,用於字型授權、作者致謝與字型廠版權資訊。

技術限制與缺點

  • 在許多網頁工作流程中已被 WOFF2 取代,後者使用 Brotli 壓縮與字型表格轉換;檔案大小節省幅度不一。
  • 若未轉換為 TTF 或 OTF,則無法直接安裝至桌面作業系統(Windows / Mac)。
  • 較舊的 zlib 壓縮演算法效率不如現代的熵編碼器。

有趣的技術冷知識

  • WOFF 1.0 的檔案簽章(magic bytes)為 'wOFF'(0x77 0x4F 0x46 0x46),而 WOFF 2.0 則使用 'wOF2'。
  • 字型廠在 WOFF 建立後才同意在網頁上使用其字型,因為其專用容器將網頁字型與可遭盜版的桌面字型區隔開來。
  • WOFF 最初於 2010 年在 Firefox 3.6 中實作,之後才成為官方的 W3C 建議標準。

常見技術問題

WOFF 與 WOFF2 有什麼不同?

WOFF 使用 zlib 壓縮,而 WOFF2 則使用 Brotli 壓縮與字型表格轉換。最終產生的檔案大小差異取決於字型與編碼器。

如何將 WOFF 字型轉換為 TTF 或 OTF 以供桌面使用?

您可以使用 File2File.app 直接在網頁瀏覽器中,於幾秒鐘內將 WOFF 檔案轉換為可安裝的桌面 TTF 或 OTF 字型。

在現代網站中,我還需要 WOFF 1.0 嗎?

目前主流瀏覽器皆支援 WOFF2。對於較舊的瀏覽器或特定的嵌入式環境,WOFF 備用字型可能仍有助益。