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 | Nonehhea—HheaTable | Nonemaxp—MaxpTable | Noneos2—Os2Table | Nonename—NameTable | Nonepost—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ềNonenế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ạng | Tiện ích mở rộng | Đọc | Ghi |
|---|---|---|---|
| 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.