Web Open Font Format (.woff)

W3C Tiêu chuẩn

Web Open Font Format (WOFF) là định dạng phông chữ web mở thế hệ đầu tiên mang tính lịch sử được W3C chứng nhận, đóng gói các phông chữ TrueType hoặc OpenType tiêu chuẩn cùng với dữ liệu nén zlib và siêu dữ liệu cấp phép XML.

Kiểm tra & Siêu dữ liệu

Các hệ điều hành và trình phân tích tệp nhận dạng tệp WOFF bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:

Chọn hoặc thả tệp vào đây

Riêng tư - tệp không bao giờ rời khỏi thiết bị của bạn

Hoặc dán Ctrl+V
Cam kết bảo vệ quyền riêng tư, không truyền dữ liệu qua mạng: 0 byte được tải lên máy chủ bên ngoài. Toàn bộ quá trình xử lý diễn ra cục bộ trong hộp cát trình duyệt của bạn.

Chữ ký ở đầu tệp (mẫu byte nhận diện)

Các hệ điều hành và trình phân tích tệp nhận dạng tệp WOFF bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:

CHỮ KÝ HEX (OFFSET 0):

77 4F 46 46

BIỂU DIỄN ASCII: wOFF

Tiêu chuẩn hóa: W3C Recommendation (2012)

Thông số kỹ thuật

Kiến trúc ContainerTiêu đề WOFF 44 byte, tiếp theo là thư mục bảng, dữ liệu bảng nén zlib, siêu dữ liệu mở rộng và dữ liệu riêng tư tùy chọn
NénNén Deflate (zlib) riêng cho từng bảng phông chữ
Thứ tự byteBig-endian (tiêu chuẩn SFNT)
Không gian màuKế thừa từ các bảng phông chữ bên dưới
Kênh & Cấu trúcĐường viền glyph TrueType ('glyf') hoặc PostScript ('CFF '), số đo và tính năng kiểu chữ
Kích thước tối đaTối đa 65.535 glyph cho mỗi tệp phông chữ
Độ trong suốtKế thừa từ định dạng phông chữ bên dưới
Truyền phát & Tăng dầnGiải nén lần lượt từng bảng cho phép tải phông chữ theo luồng

Ma trận so sánh kỹ thuật: WOFF so với các đối thủ

Thuộc tính kỹ thuậtWOFF (Hiện tại)WOFF2TTFOTF
Bộ giải mã nénDeflate (zlib) theo bảngBrotli với tiền xử lý bảngSFNT chưa nénSFNT chưa nén
Chữ ký nhận diệnwOFF (0x77 0x4F 0x46 0x46)wOF2 (0x77 0x4F 0x46 0x32)0x00 0x01 0x00 0x00OTTO (0x4F 0x54 0x54 0x4F)
Dung lượng tệp tương đốiThường nhỏ hơn TTF; mức tiết kiệm tùy phông chữ.Thường nhỏ hơn TTF; mức tiết kiệm tùy phông chữ.Tiêu chuẩn cơ sở (100%)Tiêu chuẩn cơ sở (100%)
Môi trường mục tiêuTrình duyệt web cũ (IE9+, Safari 5+)Khả năng hỗ trợ tùy thuộc vào trình duyệt.Hệ điều hành máy tính để bànXuất bản trên máy tính để bàn & in ấn

Các dạng hỏng thường gặp và hướng dẫn khôi phục bằng mã hex

Cảnh báo bảng điều khiển trình duyệt: 'Không thể giải mã phông chữ đã tải xuống: Lỗi phân tích cú pháp OTS'.

Nguyên nhân gốc rễ: Độ dài bảng chưa nén được khai báo không khớp hoặc luồng zlib bị hỏng.

Khắc phục: Nén lại các bảng phông chữ hoặc chuyển đổi sang WOFF2 bằng Trình chuyển đổi phông chữ File2File.app.

Phân tích bảo mật và các đường tấn công nhằm vào bộ phân tích cú pháp

Trình duyệt web phân tích cú pháp các tệp WOFF được tải xuống từ các miền web không đáng tin cậy bằng Công cụ làm sạch OpenType (OTS) để chặn các payload khai thác.

Các véc-tơ tấn công đã biết

  • Đọc quá giới hạn bộ đệm trong quá trình giải nén zlib của các khối bảng phông chữ bị hỏng.
  • Các trường độ dài bảng không khớp kích hoạt lỗi tràn bộ đệm heap trong các trình kết xuất phông chữ.
  • Từ chối dịch vụ thông qua kiệt quệ bộ nhớ trong quá trình mở rộng bảng phông chữ.

Biện pháp phòng thủ tốt nhất: Luôn làm sạch các tệp WOFF đã tải xuống bằng OTS trước khi chuyển đến các công cụ phông chữ của hệ điều hành.

Nguồn gốc lịch sử và các cột mốc

2018Được kế nhiệm bởi WOFF2 làm tiêu chuẩn phông chữ web ưu tiên do có khả năng nén Brotli vượt trội.
2012W3C chính thức xuất bản WOFF 1.0 dưới dạng Khuyến nghị Tiêu chuẩn Web chính thức.
2009Henrik Rydgård, Tal Leming và Jonathan Kew đặc tả WOFF để giải quyết các mối quan tâm về cấp phép phông chữ web.

Ưu điểm & Lợi ích chính

  • Có thể giảm dung lượng phông chữ web so với tệp TTF hoặc OTF thô; mức giảm tùy thuộc phông chữ và bộ mã hóa.
  • Khả năng tương thích ngược phổ quát trên mọi trình duyệt web máy tính để bàn và di động được phát hành kể từ năm 2011.
  • Bao gồm một khối siêu dữ liệu XML tùy chọn cho cấp phép phông chữ, thông tin ghi công tác giả và thông tin bản quyền của nhà đúc chữ.

Hạn chế & Nhược điểm kỹ thuật

  • Trong nhiều quy trình web, định dạng này đã được WOFF2 thay thế; WOFF2 dùng nén Brotli và biến đổi bảng phông chữ, còn mức tiết kiệm dung lượng khác nhau.
  • Không thể cài đặt trực tiếp vào hệ điều hành máy tính để bàn (Windows/Mac) nếu không chuyển đổi sang TTF/OTF.
  • Thuật toán nén zlib cũ kém hiệu quả hơn các bộ mã hóa entropy hiện đại.

Thông tin kỹ thuật thú vị

  • Các byte nhận diện của WOFF 1.0 là 'wOFF' (0x77 0x4F 0x46 0x46), còn WOFF 2.0 dùng 'wOF2'.
  • Các xưởng đúc kiểu chữ đồng ý cho phép phông chữ của họ trên web chỉ sau khi WOFF được tạo ra, bởi vì định dạng chứa chuyên biệt này giúp phân biệt phông chữ web với phông chữ máy tính để bàn có thể bị sao chép trái phép.
  • WOFF ban đầu được triển khai trong Firefox 3.6 vào năm 2010 trước khi trở thành khuyến nghị chính thức của W3C.

Các câu hỏi kỹ thuật thường gặp

Sự khác biệt giữa WOFF và WOFF2 là gì?

WOFF sử dụng nén zlib, trong khi WOFF2 sử dụng thuật toán Brotli mới hơn của Google và các phép biến đổi bảng, tạo ra các tệp có dung lượng nhỏ hơn khoảng 30% so với WOFF.

Làm cách nào để chuyển đổi font WOFF sang TTF hoặc OTF để sử dụng trên máy tính?

Bạn có thể chuyển đổi các tệp WOFF thành font TTF hoặc OTF có thể cài đặt trên máy tính trong vài giây bằng cách sử dụng File2File.app trực tiếp trong trình duyệt web của bạn.

Tôi có còn cần WOFF 1.0 trên các trang web hiện đại không?

Không. Tất cả các trình duyệt hiện đại đều hỗ trợ nguyên bản WOFF2. WOFF 1.0 chỉ cần thiết nếu bạn bắt buộc phải hỗ trợ các trình duyệt cũ đã lỗi thời như Internet Explorer.