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 isimlerifamily_name(str- Aile fonuweight(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 pozisyonuunderline_thickness(int) - Saldırı yoğunluğu vurgulamakencoding(list[str]) — 256-slot kodlama vektor (PostScript glyph isimleri)charstrings(dict[str, bytes]) — glyph adı → charstring bytes mappingsubrs(list[bytes]) — çarşaf motoru tarafından kullanılan subroutin byte zincirlerilen_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
| Format | Extension | Read | Write |
|---|---|---|---|
| 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.