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 font
  • full_name (str- Tên đầy đủ người đọc
  • family_name (str- Gia đình font
  • weight (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 monospace
  • font_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 mapping
  • subrs (list[bytes]- Subroutin byte string được sử dụng bởi động cơ chạm
  • len_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ợ

FormatExtensionReadWrite
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.


bắt đầu

Tài nguyên liên quan