Giới thiệu

TrueType fonts (.ttf) và bộ siêu tập OpenType của chúng (.otf) là các định dạng phông chữ chiếm ưu thế trên các hệ điều hành hiện đại. Cả hai định dạng đều chia sẻ cùng một cấu trúc bảng nhị phân dựa trên đặc tả OpenType. Aspose.Font FOSS cho Python tiết lộ cấu trúc này thông qua TtfFont, cung cấp quyền truy cập trực tiếp vào các bảng OpenType riêng lẻ, dữ liệu cặp kerning, các trục phông chữ biến đổi, và đường viền glyph.

Lớp TtfFont mở rộng lớp cơ sở Font với các phương thức đặc thù TTF bao gồm get_blob, get_table_bytes, set_table_bytes, và instantiate để khóa trục phông chữ biến đổi. Thuộc tính TtfTableSet (ttf_tables) cung cấp quyền truy cập kiểu đã định cho các bảng OpenType phổ biến nhất: head, hhea, maxp, os2, name, post.

Thư viện được phát hành trên PyPI với tên aspose-font và được cấp phép theo Giấy phép MIT. Nó không có bất kỳ phụ thuộc thương mại bắt buộc nào.


Các tính năng chính

Tải phông chữ TTF và OTF

Sử dụng FontLoader.open để tải bất kỳ tệp phông chữ TrueType hoặc OpenType nào:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

print(loaded.font_name)
print(loaded.font_family)
print(loaded.font_style)
print(loaded.num_glyphs)

FontLoader.open phát hiện định dạng phông chữ từ tiêu đề tệp. Cả .ttf (TrueType) và .otf (OpenType CFF) đều được hỗ trợ và cả hai đều trả về một thực thể TtfFont.


Truy cập các bảng OpenType thông qua TtfTableSet

Thuộc tính ttf_tables trả về một TtfTableSet với các bộ truy cập kiểu cho các bảng OpenType thông thường. Mỗi thuộc tính trả về đối tượng bảng hoặc None nếu không tồn tại:

Thuộc tính ttf_tables trên TtfFont trả về một thực thể TtfTableSet. Các bộ truy cập bảng khả dụng:

  • head — HeadTable | None
  • hhea — HheaTable | None
  • maxp — MaxpTable | None
  • os2 — Os2Table | None
  • name — NameTable | None
  • post — PostTable | None

Mỗi thuộc tính trả về đối tượng bảng hoặc None nếu bảng đó không có trong tệp phông. Truy cập các thuộc tính TtfTableSet để kiểm tra các bảng cụ thể trước khi đọc chúng. Đối với các bảng không được các bộ truy cập có tên bao phủ, hãy sử dụng TtfTableSet.get_raw(tag) để lấy byte thô theo thẻ OpenType bốn ký tự.


Đọc Byte Thô của Bảng

get_table_bytes(tag) trả về byte thô cho bất kỳ bảng OpenType nào. Sử dụng get_blob(tag) cho một biến thể an toàn với None, trả về None khi bảng không tồn tại:

TtfFont cung cấp hai phương pháp để truy cập bảng thô:

  • get_table_bytes(tag) -> bytes — trả về byte thô cho một bảng có tên (ném lỗi nếu không tồn tại)
  • get_blob(tag) -> bytes | None — trả về None nếu bảng không tồn tại (biến thể an toàn)

Cả hai phương pháp đều chấp nhận một thẻ bảng OpenType bốn ký tự như "cmap", "GDEF" hoặc "GPOS". Sử dụng get_blob khi bảng là tùy chọn để bạn có thể kiểm tra None trước khi xử lý.


Cặp Kern

get_kern_pairs() trả về tất cả các cặp kern được mã hoá trong phông chữ. Mỗi KernPair có left (GlyphId), right (GlyphId), và value (int trong đơn vị phông chữ):

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

pairs = loaded.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")

for pair in pairs[:5]:
    print(f"  Left: {pair.left}  Right: {pair.right}  Value: {pair.value}")

Chỉ số Phông chữ

Các chỉ số tiêu chuẩn có thể truy cập thông qua thuộc tính metrics:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

metrics = loaded.metrics
print(f"Units per em  : {metrics.units_per_em}")
print(f"Ascender      : {metrics.ascender}")
print(f"Descender     : {metrics.descender}")
print(f"Line gap      : {metrics.line_gap}")
print(f"Underline pos : {metrics.underline_position}")

Hỗ trợ Phông chữ Biến đổi

Đối với phông chữ biến đổi, TtfFont cung cấp is_variable, variable_axes và named_instances. Sử dụng get_axis(tag) để lấy một trục cụ thể bằng thẻ bốn ký tự của nó:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/RobotoFlex.ttf")

print(f"Is variable: {loaded.is_variable}")
print(f"Axes       : {len(loaded.variable_axes)}")

Phương thức get_axis(tag) trên TtfFont lấy một VariableAxis bằng thẻ bốn ký tự của nó (ví dụ "wght" cho trọng lượng, "wdth" cho chiều rộng). Nó trả về None nếu trục không có trong bảng fvar của phông chữ.


Chuyển đổi phông chữ

to_bytes(font_type) chuyển đổi phông chữ sang định dạng khác. Sử dụng enum FontType để chỉ định đích:

from aspose_font import FontLoader, FontType

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

ttf_bytes = loaded.to_bytes(FontType.TTF)
with open("output/Roboto-copy.ttf", "wb") as fh:
    fh.write(ttf_bytes)

print(f"Serialized: {len(ttf_bytes)} bytes")

Bắt đầu nhanh

Cài đặt thư viện:

.venv/bin/pip install aspose-font

Tải phông chữ TTF và kiểm tra nó:

from aspose_font import FontLoader, FontType

loaded = FontLoader.open("Roboto-Regular.ttf")

print(f"Font name : {loaded.font_name}")
print(f"Family    : {loaded.font_family}")
print(f"Glyphs    : {loaded.num_glyphs}")
print(f"Variable  : {loaded.is_variable}")

metrics = loaded.metrics
print(f"UPM       : {metrics.units_per_em}")

ttf_bytes = loaded.to_bytes(FontType.TTF)
print(f"Serialized: {len(ttf_bytes)} bytes")

Định dạng được hỗ trợ

Định dạngTiện ích mở rộngĐọcGhi
TTF.ttf✓—
OTF.otf✓—
EOT.eot✓—
CFF.cff✓—
TYPE1.pfb/.pfa✓—
WOFF.woff✓—
WOFF2.woff2✓—

Tất cả các định dạng được tải qua FontLoader.open. Phông chữ TTF/OTF trả về một thể hiện TtfFont.


Mã nguồn mở & Giấy phép

Aspose.Font FOSS cho Python được phát hành dưới giấy phép MIT. Bạn có thể sử dụng nó trong các dự án cá nhân, thương mại và mã nguồn mở mà không mất phí. Mã nguồn có sẵn trên GitHub và gói được phân phối qua PyPI dưới dạng aspose-font.


Bắt đầu

Tài nguyên liên quan