Introduction
Type 1 là định dạng phông chữ có thể mở rộng ban đầu của Adobe, trình bày TrueType và OpenTYpe. Các phông chữ loại 1 bao gồm hai tệp: a .pfb (Phần 2) File có chứa các file chương trình phông chữ mã hóa, và một .afm (Adobe Font Metrics) file với kerning và Mặc dù được thay thế bởi OpenType, các phông chữ Type 1 vẫn phổ biến trong xuất bản dòng công việc, đường ống PostScript và tài liệu lưu trữ.
Aspose.Font FOSS for Python provides direct access to Type 1 internals through Type1Font, Type1FontData, Type1Serializer, và Type1Interpreter.Bạn có thể tải PFB hoặc PFA file qua FontLoader.open, kiểm tra các metadata của chương trình phông chữ tích hợp, Hiển thị các bản vẽ cho các con đường glyph, và serialize phông chữ trở lại PFB hoặc định dạng PFA.
Thư viện được xuất bản trên PyPI như: aspose-font được cấp phép theo giấy phép MIT. Nó không có phụ thuộc thương mại bắt buộc và chạy trên Python tiêu chuẩn 3.
Các tính năng chính
Loading Type 1 Fonts - Tính năng
Sử dụng FontLoader.open để tải một tệp PFB hoặc PFA. đối tượng trả về cho thấy cả hai Tiêu chuẩn Font giao diện và chức năng cụ thể loại 1 thông qua Type1Font lớp :
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Courier.pfb")
print(loaded.font_name) # e.g. "Courier"
print(loaded.font_family) # e.g. "Courier"
print(loaded.num_glyphs) # number of defined glyphs
print(loaded.font_style) # style string, e.g. "Regular"
FontLoader.open phát hiện định dạng Type 1 tự động từ đầu tệp.PFB Và các tệp PFA đều được hỗ trợ.
Tính năng AFM Metrics
Type 1 fonts gửi metrics của họ trong một riêng biệt .afm file. là Type1Font lớp học Hiển thị A load_afm(path) phương pháp gắn dữ liệu AFM vào đối tượng chữ cái tải, Khả năng tìm kiếm cặp kernel qua get_kern_pairs().
Không có file AFM, get_kern_pairs() trả về một danh sách trống vì dữ liệu kern sống trong file AFM, không phải trong chương trình PFB. load_afm Phương pháp chấp nhận một file đường dây chỉ ra đối tác .afm file .
Truy cập Type1FontData Metadata
Các Type1FontData lớp thể hiện từ điển chương trình chữ cái được nhúng trong kiểu 1 Nó bao gồm các metrics, hộp kết nối, mã hóa vector, charstrings và subroutines:
from aspose_font.type1.data import Type1FontData
# Type1FontData is the font program dictionary parsed from the PFB
# Access its properties to inspect the raw PostScript font data
Type1FontData Tài sản :
font_name(str- PostScript tên của fontfull_name(str- Tên đầy đủ người đọcfamily_name(str- Gia đình fontweight(str- Tính trọng lượng (ví dụ:."Medium")italic_angle(float- Tiếng Ý trong độis_fixed_pitch(bool- Tính hợp với font monospacefont_bbox(tuple[int, int, int, int]- Bảng giới hạn box(llx, lly, urx, ury)underline_position(int- vị trí dưới dạng font đơn vịunderline_thickness(int- Tăng cường độ dày của đột quỵencoding(list[str]- 256-slot coding vector (PostScript glyph tên)charstrings(dict[str, bytes]) — glyph tên → charstring bytes mappingsubrs(list[bytes]- Subroutin byte string được sử dụng bởi động cơ chạmlen_iv(int- Leniv mã hóa thông số
Giải thích Charstrings
Type1Interpreter - Tải loại 1 cho các chương trình chart GlyphPath Đánh giá: Pass Các loại chà rác từ Type1FontData.charstrings để interpret:
from aspose_font.type1.interpreter import Type1Interpreter
interpreter = Type1Interpreter()
charstring = b"\x0e" # seac or other charstring bytes
glyph_path, stack_depth = interpreter.interpret(charstring)
for cmd in glyph_path.commands:
print(cmd)
interpret Trở lại a (GlyphPath, int) Tuple. là GlyphPath chứa bản vẽ lệnh cho dòng xuất xứ glyph. toàn bộ là độ sâu của cột cuối cùng sau khi thực hiện, Điều này có lợi cho việc phá vỡ các mảnh vẹn bị biến dạng.
Phân tích về PFB và PFA
Type1Serializer Chuyển đổi một phông chữ Type 1 tải trở lại PFB hoặc định dạng văn bản PFA. Cả hai phương pháp đều chấp nhận bất kỳ Font Ví dụ và trả lại các byte nguyên:
from aspose_font import FontLoader
from aspose_font.type1.serializer import Type1Serializer
# Serialize to PFB (binary) format
pfb_bytes = Type1Serializer.serialize_pfb(loaded)
with open("output/Courier_copy.pfb", "wb") as fh:
fh.write(pfb_bytes)
# Serialize to PFA (text) format
pfa_bytes = Type1Serializer.serialize_pfa(loaded)
with open("output/Courier_copy.pfa", "wb") as fh:
fh.write(pfa_bytes)
print(f"PFB: {len(pfb_bytes)} bytes")
print(f"PFA: {len(pfa_bytes)} bytes")
Font Metrics Đánh giá
Metrics và mã hóa có thể truy cập thông qua tiêu chuẩn Font Giao diện :
from aspose_font import FontLoader
metrics = loaded.metrics
print(f"Units per em : {metrics.units_per_em}")
print(f"Ascender : {metrics.ascender}")
print(f"Descender : {metrics.descender}")
print(f"Underline pos : {metrics.underline_position}")
print(f"Underline tck : {metrics.underline_thickness}")
Khởi động nhanh
Cài đặt thư viện:
.venv/bin/pip install aspose-font
Tải phông PFB và kiểm tra nó:
from aspose_font import FontLoader
from aspose_font.type1.serializer import Type1Serializer
loaded = FontLoader.open("Courier.pfb")
print(f"Font name : {loaded.font_name}")
print(f"Family : {loaded.font_family}")
print(f"Style : {loaded.font_style}")
print(f"Glyphs : {loaded.num_glyphs}")
metrics = loaded.metrics
print(f"UPM : {metrics.units_per_em}")
# Round-trip: serialize back to PFB
pfb_bytes = Type1Serializer.serialize_pfb(loaded)
print(f"Serialized: {len(pfb_bytes)} bytes")
Các định dạng hỗ trợ
| Format | Extension | Read | Write |
|---|---|---|---|
| TTF | .Ttf | ✓ | — |
| OTF | .OTP | ✓ | — |
| EOT | .EOT | ✓ | — |
| CFF | .CFF | ✓ | — |
| TYPE1 | .pfb/pfa | ✓ | — |
| WOFF | .Vôff | ✓ | — |
| WOFF2 | .Đồ họa WOFF2 | ✓ | — |
Các phông chữ loại 1 được tải qua FontLoader.open và được phân phối qua Type1Serializer.
Open Source & Giấy phép
Aspose.Font FOSS for Python is released under the MIT License. You can use it in dự án cá nhân, thương mại và nguồn mở không có chi phí. mã nguồn là: có sẵn trên GitHub và gói được phân phối qua PyPI như: aspose-font.