aspose.info
VI

CFF2 - Định dạng tệp phông chữ nhỏ gọn phiên bản 2

Cập nhật

Tệp CFF2 là gì?

Định dạng tệp CFF2 là phiên bản 2.0 của định dạng tệp CFF và cho phép lưu trữ hiệu quả các đường viền và siêu dữ liệu hình tượng tương tự như định dạng tệp CFF. CFF2 khác với CFF ở chỗ nó được dự định sử dụng trong ngữ cảnh phông chữ OpenType dưới dạng bảng ‘sfnt’ với thẻ CFF2. Nó không thể được sử dụng như một chương trình độc lập và phụ thuộc vào dữ liệu trong các bảng OpenType khác.

Định dạng tệp CFF2

Thông số định dạng tệp CFF2 chứa thông tin chi tiết về bố cục dữ liệu nội bộ, loại dữ liệu, bảng và thông tin nội bộ khác về định dạng tệp. Nó có thể được giới thiệu để tham khảo của nhà phát triển. Một số chi tiết về những điều này như sau.

Bố cục dữ liệu

Dữ liệu nhị phân của định dạng tệp CFF2 được tổ chức hợp lý dưới dạng một số cấu trúc dữ liệu riêng biệt. Bố cục trong dữ liệu nhị phân như trong bảng sau.

Bài viếtBình luận
Tiêu đềVị trí cố định
Đầu DICTVị trí cố định
CHỈ SỐ Subr toàn cầuVị trí cố định
Biến thểCửa hàng
FDSelectChỉ hiển thị nếu có nhiều hơn một Phông chữ DICT trong Phông chữ DICT INDEX.
Phông chữ DICT INDEX
Mảng phông chữ DICTBao gồm trong Phông chữ DICT INDEX.
DICT riêng tưMột cho mỗi Phông chữ DICT.

Chỉ có ba cấu trúc đầu tiên dựa trên các vị trí cố định. Phần còn lại đạt được thông qua hiệu số và thứ tự của chúng có thể được thay đổi.

Loại dữ liệu

Định dạng tệp CFF2 sử dụng các loại dữ liệu sau.

TênPhạm viMô tả
uint80 đến 255số không dấu 8 bit
uint160 đến 65535số không dấu 16-bit
uint320 đến 4294967295Số không dấu 32-bit
độ lệchkhác nhauĐộ lệch 1, 2, 3 hoặc 4 byte (được chỉ định bởi trường OffSize trong bảng Chỉ mục)
OffSize1 đến 4Số không dấu 1 byte chỉ định kích thước của một hoặc nhiều trường Offset

Nó lưu trữ tất cả dữ liệu số nhiều byte và các trường bù theo thứ tự byte lớn về cuối. Định dạng CFF2 không có byte đệm vì nó không tôn trọng bất kỳ hạn chế căn chỉnh nào.

Dữ liệu DICT

Các tệp CFF2 chứa dữ liệu từ điển phông chữ dưới dạng các cặp khóa-giá trị ở định dạng mã thông báo nhỏ gọn. Các khóa từ điển được mã hóa dưới dạng toán tử 1 hoặc 2 byte và các giá trị từ điển được mã hóa dưới dạng toán hạng số có kích thước thay đổi. Có ba cấu trúc sử dụng định dạng Dữ liệu DICT: Top DICT, Font DICT và Private DICT. Một số loại toán hạng số nguyên có kích thước khác nhau được xác định và được mã hóa như trong bảng sau (byte đầu tiên của toán hạng là b0, byte thứ hai là b1, v.v.).

Kích thướcphạm vi b0Phạm vi giá trịTính toán giá trị
132 đến 246-107 đến +107b0 - 139
2247 đến 250+108 đến +1131(b0 - 247) * 256 + b1 + 108
2251 đến 254-1131 đến -108-(b0 - 251) * 256 - b1 - 108
328-32768 đến +32767b1 « 8
529-(2^31) đến +(2^31 - 1)b1 « 24 | b2 « 16 | b3 « 8 | b4

Tiêu đề

Dữ liệu nhị phân bắt đầu bằng tiêu đề có định dạng được hiển thị trong Bảng bên dưới.

LoạiTênMô tả
uint8phiên bản chínhĐịnh dạng phiên bản chính. Đặt thành 2.
uint8nhỏPhiên bảnĐịnh dạng phiên bản nhỏ. Đặt thành 0.
uint8kích thước tiêu đềKích thước tiêu đề (byte).
uint16topDictLengthĐộ dài của cấu trúc DICT hàng đầu theo byte.

Người giới thiệu

Xem thêm