Introduction

Các tập tin chữ được cấu trúc xung quanh bảng - mỗi bảng lưu trữ một loại dữ liệu cụ thể như các bản ghi glyph, bản đồ nhân vật, tên metadata, hoặc đo ngang. Hiểu và truy cập vào các bảng này là cần thiết cho các nhiệm vụ như phân tích font, chỉnh sửa metdata, đảm bảo chất lượng, và định dạng chuyển đổi.

Aspose.Font FOSS for Python (aspose-font) cho phép bạn truy cập trực tiếp đến toàn bộ các bảng OpenType và TrueTYpe thông qua API Python sạch. Thư viện được phát hành dưới giấy phép MIT với số lượng phụ thuộc bên ngoài không, vì vậy bạn có thể tích hợp nó vào bất kỳ dự án nào mà không cần phải lo lắng về cấp phép.

Bài viết này đi qua các lớp bảng chính có sẵn trong thư viện - từ đọc dữ liệu siêu tiêu đề để kiểm tra dữ kiện glyph và sửa đổi hồ sơ tên - tất cả được hỗ trợ bởi các tài khoản. TtfTableSet container trên TtfFont.


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

Tải font và Access tabs

Mỗi chữ cái được tải lên với FontLoader Hiển thị các bảng thông qua ttf_tables Tài sản tại TtfFont.The TtfTableSet object cung cấp truy cập tiêu chuẩn cho mỗi bảng, cộng với truy nhập byte nguyên bằng qua get_raw() cho các bảng tùy chỉnh hoặc không được nhận dạng.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
tables = font.ttf_tables

# Typed table access
head = tables.head
name = tables.name
cmap = tables.cmap

# Raw bytes for any table tag
raw_os2 = tables.get_raw("OS/2")

Đọc bàn đầu

Các HeadTable lưu trữ các thông số phông chữ cơ bản: đơn vị mỗi em, sửa đổi, hộp biên giới, ngày tạo và phong cách lá cờ. Những giá trị này là quan trọng cho rendering động cơ và font validators.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
head = font.ttf_tables.head

print(f"Units per em: {head.units_per_em}")
print(f"Revision: {head.font_revision}")
print(f"Bounding box: ({head.x_min}, {head.y_min}) to ({head.x_max}, {head.y_max})")
print(f"Mac style flags: {head.mac_style}")
print(f"Glyph data format: {head.glyph_data_format}")

Làm việc với bảng tên

Các NameTable giữ tất cả các metadata có thể đọc bởi con người: tên gia đình chữ cái, phong cách, bản quyền, giấy phép, thiết kế và mô tả. Bạn có được truy vấn ghi danh ID, lấy tên địa điểm hoặc sửa đổi nội dung để tái thương hiệu.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
name_table = font.ttf_tables.name

# Read the font family name (name ID 1)
family = name_table.best_name(1, ["en"])
print(f"Family: {family}")

# List all localized versions of the full name (name ID 4)
localized = name_table.localized_names(4)
for lang, value in localized.items():
    print(f"  {lang}: {value}")

# Replace the font family name
name_table.replace_name(1, "MyCustomFamily")

Kiểm tra bảng CMAP

Các CmapTable Bản đồ Unicode codepoints đến glyph IDs. Nó có thể chứa nhiều bảng điều khiển cho các nền tảng khác nhau và kết hợp mã hóa. best_subtable() để có được bản đồ phù hợp nhất cho trường hợp sử dụng của bạn.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
cmap = font.ttf_tables.cmap

# Get the best Unicode subtable
subtable = cmap.best_subtable()
print(f"Platform: {subtable.platform_id}, Encoding: {subtable.encoding_id}")

# Look up the glyph ID for 'A'
gid = subtable.get_gid(ord("A"))
print(f"Glyph ID for 'A': {gid}")

Đọc OS/2 và Metrics chân trời

Các Os2Table cung cấp OS/2 và Windows-specific metrics bao gồm typographic ascender/descender, nhãn vương, và Panose phân loại. HheaTableHmtxTable cung cấp các định dạng định vị ngang được sử dụng cho việc hình thành văn bản.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
os2 = font.ttf_tables.os2
hhea = font.ttf_tables.hhea

print(f"Typo ascender: {os2.s_typo_ascender}")
print(f"Typo descender: {os2.s_typo_descender}")
print(f"Embedding flags (fsType): {os2.fs_type}")
print(f"Panose: {os2.panose.hex()}")

print(f"Hhea ascender: {hhea.ascender}")
print(f"Max advance width: {hhea.advance_width_max}")
print(f"Number of hmetrics: {hhea.number_of_hmetrics}")

Kerning và Glyph Data

Các KernTable các cửa hàng làm cặp cho điều chỉnh không gian ngang. GlyfTable chứa dữ liệu xuất xứ glyph thực sự cho các phông chữ TrueType. bạn cũng có thể sử dụng PostTable Giải quyết tên glyph.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")

# Kerning lookup
kern = font.ttf_tables.kern
if kern:
    pairs = kern.pairs
    print(f"Total kern pairs: {len(pairs)}")
    # Look up a specific pair by glyph IDs
    adjustment = kern.get(36, 57)
    print(f"Kern adjustment: {adjustment}")

# Glyph name from post table
post = font.ttf_tables.post
if post:
    glyph_name = post.glyph_name(0)
    print(f"Glyph 0 name: {glyph_name}")

Khởi động nhanh

pip install aspose-font>=1.0.0
import aspose_font

# Load any TTF or OTF font
font = aspose_font.FontLoader.open("MyFont.ttf")
tables = font.ttf_tables

# Print basic table info
print(f"Font: {font.font_name}")
print(f"Family: {font.font_family}")
print(f"Glyphs: {font.num_glyphs}")
print(f"Units/em: {tables.head.units_per_em}")

# Read name table entries
name_table = tables.name
for name_id in [0, 1, 2, 4, 5, 6]:
    value = name_table.best_name(name_id, ["en"])
    if value:
        print(f"  Name ID {name_id}: {value}")

# Check character coverage
cmap = tables.cmap
subtable = cmap.best_subtable()
for char in "ABCabc012":
    gid = subtable.get_gid(ord(char))
    print(f"  '{char}' -> glyph {gid}")

Các định dạng hỗ trợ

FormatExtensionReadWrite
TTF.Ttf
OTF.OTP
CFF.CFF
WOFF.Vôff
WOFF2.Đồ họa WOFF2
EOT.EOT
TYPE1.pfb/pfa

Open Source & Giấy phép

Aspose.Font FOSS for Python is released under the MIT license. The source code is available on GitHub and the package is published on PyPI as aspose-font.Bạn có thể sử dụng, sửa đổi và phân phối nó trong cả các dự án cá nhân và thương mại mà không bị hạn chế.


bắt đầu

Tài nguyên liên quan