Introduction

Format Font Compact (CFF) là định dạng mô tả glyph nhị phân được sử dụng trong OpenType. fonts with a PostScript-compatible outline engine. Aspose.Font FOSS for Python exposes Một tập hợp các lớp học dành riêng dưới aspose_font.cff Tên miền để đọc và Kiểm tra cấu trúc dữ liệu CFF: CffFont, CffCharset, CffEncoding, CffDict, CffIndex, và Type2Interpreter.Bài viết này đi qua cách tải các phông chữ CFF, di chuyển qua bảng nội bộ của họ, và giải thích các chương trình chart bằng cách sử dụng thư viện.

gói được cấp phép MIT. cài đặt với pip install aspose-font>=1.0.0.


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

Tải Font CFF

FontLoader.open() phát hiện định dạng CFF tự động – thông qua một hoặc một bản tắt .cff file hoặc một tệp OTF mà chứa bảng kết quả CFF. đối tượng trả về là một CffFont (được truy cập qua các cff_font Tài sản tại TtfFont Các file OTF.

from aspose_font.loader import FontLoader

# Load a standalone CFF file
font = FontLoader.open("OpenSans.cff")

# Load a standalone CFF file (auto-detected from format)
font = FontLoader.open("OpenSans.cff")
print(font.font_name, font.num_glyphs)

CFF Charset - Mapping Glyph IDs to Names (Điểm danh)

CffCharset maps glyph IDs (GIDs) to PostScript glyf names. sử dụng standard() để Nhận tiêu chuẩn ISO Adobe charset hoặc from_reader() để phân tán một chiếc xe từ binary CFF dữ liệu.The name_for() phương pháp trả về tên PostScript cho GID, và gid_for() Thực hiện theo hướng ngược.

from aspose_font.cff.charset import CffCharset

charset = CffCharset.standard()
print(charset.name_for(1))    # ".notdef" or similar
print(charset.gid_for("A"))   # GID for the PostScript name "A"

CFF Encoding - Bản đồ Unicode-to-GID

CffEncoding quản lý bảng mã hóa CFF, trong đó bản đồ các mã nhân vật đến Glyph ID. standard() - Trả lại mã hóa tiêu chuẩn, expert() trả lại mã hóa chuyên gia, và from_reader() parses một mã hóa tùy chỉnh từ dữ liệu CFF. sử dụng unicode_to_gid() để Xem GID bằng Unicode code point và get_all_codepoints() Tìm tất cả chủ đề bởi maped Mục mã điểm.

from aspose_font.cff.encoding import CffEncoding

encoding = CffEncoding.standard()
gid = encoding.unicode_to_gid(0x41)  # Unicode for 'A'
all_codepoints = encoding.get_all_codepoints()
print(f"Standard encoding covers {len(all_codepoints)} code points")

Từ điển CFF Parsing

Các phông chữ CFF lưu trữ dữ liệu siêu cấp và tư nhân trong các từ điển. CffDict.from_bytes() parses một cFF DICT blob và cho bạn get()set() Truy cập bởi key operator. TopDict.from_dict() chuyên về điều này cho các từ điển CFF cấp cao, và PrivateDict.from_dict() Điều tương tự cũng xảy ra với các DICT tư nhân.

from aspose_font.cff.dict_ import CffDict

# Parse a raw CFF DICT from bytes
raw_dict_bytes = b"..."  # CFF-encoded DICT bytes
d = CffDict.from_bytes(raw_dict_bytes)
vals = d.get(21)  # retrieve values for operator 21 (PostScript CharstringType)

CFF Index cấu trúc

CffIndex đại diện cho một cấu trúc dữ liệu CFF INDEX — một chuỗi định dạng dài của biến thể. dài byte dây được sử dụng cho các chart, subrs và tên bảng. from_reader() Parsê một INDEX từ một người đọc nhị phân và kết quả có thể được đăng ký bởi chỉ số toàn bộ.

from aspose_font.cff.index import CffIndex
from aspose_font._io import BinaryReader  # internal API — may change between releases
import io

raw_index = b"..."  # raw CFF INDEX bytes
reader = BinaryReader(io.BytesIO(raw_index))
index = CffIndex.from_reader(reader)
print(f"INDEX entries: {len(index)}")

Loại 2 - Charting Interpretation

Type2Interpreter chạy một chương trình charting loại 2 (tương tự PostScript nhỏ gọn) định dạng được sử dụng trong các phông chữ CFF) và tạo ra một GlyphPath Lời bài hát: Calls interpret() với các byte chart và từ điển tư nhân liên quan. cho phép bạn lấy ra các chiết xuất glyph thô từ các mảnh CFF mà không cần một PostScript dịch giả.

from aspose_font.cff.type2 import Type2Interpreter

interpreter = Type2Interpreter()
glyph_path = interpreter.interpret(charstring_bytes, private_dict)
for cmd in glyph_path.commands:
    print(type(cmd).__name__, cmd)

Khởi động nhanh

pip install aspose-font>=1.0.0
from aspose_font.loader import FontLoader

# Load an OTF with embedded CFF outlines
font = FontLoader.open("OpenSans-Regular.otf")

glyph_id = font.encoding.unicode_to_gid(0x41)
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
print(f"Path commands for 'A': {len(glyph.path.commands)}")

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

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

Open Source & Giấy phép

Aspose.Font FOSS for Python is MIT licensed. Source code is on GitHub at Tải về: Font-FOSS for Python. Cài đặt từ PyPI như aspose-font.


bắt đầu

Tài nguyên liên quan