aspose.info
VI

OTF - Định dạng tệp phông chữ TrueType

Cập nhật

Tệp OTF là gì?

Tệp có phần mở rộng .otf đề cập đến định dạng phông chữ OpenType. Định dạng phông chữ OTF có thể mở rộng hơn và mở rộng các tính năng hiện có của định dạng TTF cho kiểu chữ kỹ thuật số. Được phát triển bởi Microsoft và Adobe, OTF kết hợp các tính năng của định dạng phông chữ PostScript và TrueType. Điều này làm cho định dạng OTF phù hợp với các hệ thống viết đa số và đó là lý do tại sao nó được sử dụng thống nhất trên các nền tảng máy tính lớn. Định dạng phông chữ OpenType được hỗ trợ bởi Mac OS X và Windows 2000 trở lên.

Tóm tắt lịch sử

Yêu cầu về phông chữ OpenType bắt nguồn từ yêu cầu về định dạng phông chữ biểu cảm hơn có thể xử lý kiểu chữ đẹp. Ngoài ra, nó nhằm mục đích đáp ứng các yêu cầu về hành vi phức tạp của nhiều hệ thống chữ viết trên thế giới. Microsoft đã cố gắng cấp phép cho công nghệ đánh máy tiên tiến của Apple, được gọi là GX Typography, vào đầu những năm 1990. Điều này không diễn ra suôn sẻ và kết quả là Microsoft bắt đầu cải tiến công nghệ phông chữ TrueType của riêng mình vào năm 1994. Các sửa đổi cũng bao gồm để giới thiệu một định dạng phông chữ phù hợp hơn cũng đáp ứng các tính năng của định dạng phông chữ Loại 1 (PostScript) của Adobe.

Adobe, vào năm 1996, đã tham gia cùng Microsoft trong nỗ lực thay thế cả TrueType của Apple và các định dạng phông chữ Loại 1 của chính họ. Điều này dẫn đến sự kết hợp của cả hai định dạng phông chữ cơ bản để khắc phục những hạn chế và thêm các phần mở rộng mới. Công nghệ mới này được giới thiệu cùng năm với tên OpenType.

Thông số kỹ thuật định dạng tệp OTF

Thông số kỹ thuật OTF được Microsoft công khai và có thể được tham khảo từ quan điểm của nhà phát triển. Giống như TTF, nó sử dụng cùng một cấu trúc bộ chứa ‘sfnt’ và tương thích với các thông số kỹ thuật của TrueType. Dữ liệu bên trong tệp phông chữ OpenType được sử dụng cho các mục đích khác nhau, chẳng hạn như tính toán bố cục văn bản, xác định các nét tượng trưng dưới dạng đường viền TrueType hoặc Định dạng Phông chữ Nhỏ gọn (CFF), cung cấp các tài liệu SVG hoặc bitmap đơn sắc hoặc màu dưới dạng mô tả nét vẽ thay thế và thông tin siêu dữ liệu.

Các kiểu dữ liệu OTF

Các tệp OTF sử dụng các loại dữ liệu sau, tất cả đều có trong Big Endian.

Kiểu dữ liệuMô tả
uint8Số nguyên không dấu 8 bit.
int8Số nguyên có dấu 8 bit.
uint16Số nguyên không dấu 16-bit.
int16Số nguyên có dấu 16-bit.
uint24Số nguyên không dấu 24-bit.
uint32Số nguyên không dấu 32-bit.
int32Số nguyên có dấu 32 bit.
Đã sửaSố điểm cố định có chữ ký 32 bit (16.16)
FWORDint16 mô tả số lượng trong đơn vị thiết kế phông chữ.
UFWORDuint16 mô tả số lượng trong đơn vị thiết kế phông chữ.
F2DOT14Số cố định có dấu 16 bit với phân số 14 bit thấp (2,14).
LONGDATETIMENgày và giờ được biểu thị bằng số giây kể từ 12:00 nửa đêm, ngày 1 tháng 1 năm 1904, UTC. Giá trị được biểu thị dưới dạng số nguyên 64 bit có dấu.
ThẻMảng gồm bốn uint8 (độ dài = 32 bit) được sử dụng để xác định bảng, trục biến thể thiết kế, tập lệnh, hệ thống ngôn ngữ, tính năng hoặc đường cơ sở
Chênh lệch16Độ lệch ngắn cho một bảng, giống như uint16, độ lệch NULL = 0x0000
bù đắp32Độ lệch dài cho một bảng, giống như uint32, độ lệch NULL = 0x00000000
Phiên bản16Dot16Giá trị 32 bit được đóng gói với các số phiên bản chính và phụ. (Xem Bảng số phiên bản.)

Thư mục bảng OTF

Một tệp OTF bắt đầu bằng một thư mục bảng. Thư mục này là tập hợp cấp cao nhất của các bảng trong tệp phông chữ. Tùy thuộc vào số lượng phông chữ trong một tệp, thư mục bảng có thể được đặt ở các vị trí khác nhau trong tệp. Ví dụ, trong trường hợp tệp phông chữ chỉ có một phông chữ, thư mục bảng bắt đầu từ byte 0 của tệp. Trong trường hợp có nhiều bộ sưu tập Phông chữ OpenType, thư mục bảng bắt đầu được chỉ định trong TTCHeader.

LoạiTênMô tả
uint32sfntVersion0x00010000 hoặc 0x4F54544F (‘OTTO’)
uint16numTablesSố lượng bảng
uint16phạm vi tìm kiếmLũy thừa tối đa của 2 nhỏ hơn hoặc bằng numTables, nhân 16 ((2**floor(log2(numTables))) * 16, trong đó “**” là toán tử lũy thừa).
uint16entrySelector Log2 của lũy thừa tối đa 2 nhỏ hơn hoặc bằng numTables (log2(searchRange/16), bằng với floor(log2(numTables))).
uint16rangeShiftnumTables nhân 16, trừ phạm vi tìm kiếm ((numTables * 16) - phạm vi tìm kiếm).
bảng ghitableRecords[numTables]Mảng bản ghi bảng—một mảng cho mỗi bảng cấp cao nhất trong phông chữ

Bản ghi bảng

Đối với mỗi bảng cấp cao nhất trong phông chữ, có một Bản ghi bảng bao gồm các trường sau.

LoạiTênMô tả
ThẻbảngTagĐịnh danh bảng.
uint32tổng kiểm traTổng kiểm tra cho bảng này.
bù đắp32bùOffset từ đầu file font.
uint32chiều dài Chiều dài của bảng này.

Mỗi bảng trong tệp phông chữ OpenType được biểu thị bằng các tên được gọi là thẻ bảng. Tất cả các bản ghi trong mảng phải được sắp xếp theo thứ tự tăng dần theo thẻ.

Người giới thiệu

Xem thêm