Introduction

Tip 1 Adobe’nin orijinal ölçeklenebilir yazı tipi biçimidir, TrueType ve OpenTYpe’yi önceden kullanır. Tip 1 yazı tipi iki dosyadan oluşur: a .pfb (İç Yazı) Dosyası içerir Şifreleme programı ve bir .afm (Adobe Font Metrics) dosyası ile çerçeve ve OpenType tarafından değiştirilmesine rağmen, Tip 1 yazı tipleri yaygın olarak devam eder. Çalışma akışları, PostScript borularını ve arşiv belgelerini yayınlamak.

Aspose.Font FOSS for Python provides direct access to Type 1 internals through Type1Font, Type1FontData, Type1Serializer,ve Type1Interpreter.Yükleme yapabilirsiniz PFB veya PFA dosyaları üzerinden FontLoader.open, içeride yazı tipi program metadata incelemek, Glif yolları için çarşaflar yorumlamak ve yazı tiplerini PFB veya PFA biçiminde geri serialize etmek.

Kütüphane Pypi’de yayınlanmaktadır. aspose-font MIT lisansı altında lisanslanmıştır. Bu, zorunlu ticari bağımlılıkları yoktur ve standart Python 3’te çalışır.


Ana Özellikler

Tip 1 yazı tipi

Kullanım FontLoader.open PFB veya PFA dosyasını yüklemek için. iade edilen nesne hem Standart Font Tip 1 ve tip 1 özellikleri ile işlevselliği Type1Font Sınıfı :

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 1. Tip formatını dosya başlığından otomatik olarak tespit eder.PFB PFA dosyaları da desteklenmektedir.


AFM Metrik Yükleme

Tip 1 yazı tipleri metriklerini ayrı bir şekilde gönderir. .afm Dosya - The Type1Font Sınıfı A’yı göstermek load_afm(path) AFM verilerini yüklü yazı tipi nesneye bağlayan yöntem, Kern Pair Arama Yapmak İçin get_kern_pairs().

AFM dosyası olmadan, get_kern_pairs() boş bir listeyi geri getirir çünkü çekirdek veri hayatta kalır PFB’de değil, AFM dosyasında. load_afm Metoda bir dosyayı kabul eder yol çizgisi eşine işaret eder .afm Dosya için.


Tip1FontData Metadata Kullanımı

O zamanlar Type1FontData sınıf, tip 1’de yer alan yazı tipi programı sözlüğünü gösterir. Metrikler, sınır kutusu, kodlama vektoru, çarşaflar ve subroutinler içerir:

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 Mülkiyet :

  • font_name (str) — PostScript yazı tipi adı
  • full_name (str* İnsan okunabilir isimleri
  • family_name (str- Aile fonu
  • weight (str• Ağırlık çubuğu (örneğin,. "Medium")
  • italic_angle (floatİtalyanca derecede açılımı
  • is_fixed_pitch (bool* Monopartikül fonksiyonları için geçerlidir.
  • font_bbox (tuple[int, int, int, int]• Bounding Box (llx, lly, urx, ury)
  • underline_position (int1) - fon birimlerinde alt çizgi pozisyonu
  • underline_thickness (int) - Saldırı yoğunluğu vurgulamak
  • encoding (list[str]) — 256-slot kodlama vektor (PostScript glyph isimleri)
  • charstrings (dict[str, bytes]) — glyph adı → charstring bytes mapping
  • subrs (list[bytes]) — çarşaf motoru tarafından kullanılan subroutin byte zincirleri
  • len_iv (int• Leniv şifreleme parametreleri

Charstrings yorumları

Type1Interpreter Tip 1 programları şarj etmek için dekod GlyphPath Yorumlar - Pass Yakıtlı çamurlu bitler Type1FontData.charstrings için 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 geri döner a (GlyphPath, int) Tupla - The GlyphPath Çizim içerir Glif çıkış çizgisine komutlar. bütünü, uygulama sonrası son çubuk derinliğidir, Bu da kötü şekillendirilmiş çarşafları yıkamak için yararlıdır.


PFB ve PFA’ya Seriye Ediliyor

Type1Serializer Bir yüklü Tip 1 yazı tipi biner PFB veya metin PFA biçimine dönüştürülür. Her iki yöntem de kabul edilir. Font Üstelik ve geri dönüş bitleri:

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")

Metrik fonksiyonu

Metrik ve kodlama standart aracılığıyla erişilebilir. Font Arka plan :

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}")

Hızlı Başlangıç

Kütüphaneyi kurmak için:

.venv/bin/pip install aspose-font

Bir PFB yazı tipi yükleme ve kontrol edin:

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")

Desteklenen Formatlar

FormatExtensionReadWrite
TTF.TFK
OTF.OTP
EOT.EOT
CFF.CFF
TYPE1.pfb / pfa için
WOFF.Wooff
WOFF2.YÜK 2

Tip 1 yazı tipi şarj edilir FontLoader.open Seriye ile yapılmıştır Type1Serializer.


Açık Kaynak & Lisans

Aspose.Font FOSS for Python is released under the MIT License. You can use it in Kişisel, ticari ve açık kaynak projeleri ücretsiz. kaynak kodu GitHub’da mevcuttur ve paket PyPI aracılığıyla dağıtılır. aspose-font.


Başlamaya başlar

İlgili Kaynaklar