|
CFF ve OpenType Yazı Tipi Alt Küme İşlevleri
|
Üst EnableFontSubsetting İçindekiler |
Bu birim düzeyi işlevler, HotPDF'in gömülü yazı tipi hattının kullandığı herkese açık CFF, OpenType-CFF ve sfnt yazı tipi inceleme yüzeyini ortaya koyar. HotPDF ayrıca daha alt düzey yazı tipi incelemesi gerektiren çağıranlar için yeniden kullanılabilir Type 1 PFB ve CFF ayrıştırıcı birimleri de içerir
Delphi sözdizimi function HPDFSubsetCFF(const CFFBytes: TBytes; const KeepGlyph: array of Boolean): TBytes; function HPDFIsCFF2Font(const FontBytes: TBytes): Boolean; function HPDFInstantiateCFF2Font(const FontBytes: TBytes; const AxisValues: THPDFVariableFontAxisValueArray): TBytes; function HPDFSubsetCFF2Font(const FontBytes: TBytes; const KeepGlyph: array of Boolean): TBytes; function HPDFIsTrueTypeVariableFont(const FontBytes: TBytes): Boolean; function HPDFInstantiateTrueTypeVariableFont(const FontBytes: TBytes; const AxisValues: THPDFVariableFontAxisValueArray): TBytes; function HPDFSfntIsOTF(const Data: TBytes): Boolean; function HPDFOTFFindCFFTable(const Data: TBytes; out TableOff: Cardinal; out TableLen: Cardinal): Boolean; function HPDFSubsetOTFContainer(const OTFBytes: TBytes; const KeepGlyph: array of Boolean): TBytes; function HPDFExtractTTFPostScriptName(const Data: TBytes): AnsiString;
Açıklama HPDFSubsetCFF, bir CFF yazı tipi yükünü yerinde yeniden yazar; glif ID'lerini korur ve kullanılmayan CharString ile subroutine'ları en kısa saplamalarla değiştirir. Bu, bir yazı tipi kapsayıcısından CFF tablosunu çoktan çıkarmış çağıranlar için yardımcıdır
HPDFIsCFF2Font,
HPDFSubsetCFF2Font, aynı varsayılan koordinat örneklemesini gerçekleştirir ve kullanılmayan glif programlarını boş CharString'lerle değiştirir. Glif ID'lerini, çok-FD sözlüklerini, özel hint verisini ve yazı tipi matrislerini korur
HPDFIsTrueTypeVariableFont,
HPDFSfntIsOTF, sürümü OTTO olan bir sfnt kapsayıcısını algılar. HPDFOTFFindCFFTable, gömülü 'CFF ' tablosunu bulur. HPDFSubsetOTFContainer, gömülü CFF veya CFF2 verisini alt kümeler ve geçerli sfnt sağlamalarıyla bir OTF kapsayıcısı döndürür. HPDFExtractTTFPostScriptName, sfnt
Alt kümeleyici hem ad anahtarlı CFF'yi (tek Private DICT, tek Local Subr INDEX) hem CID anahtarlı CFF'yi (Top DICT ROS operatörü, çok sayıda alt yazı tipi Private DICT'inden oluşan FDArray, FDSelect glif-to-FD haritası, FD başına Local Subr INDEX'leri) tanır. CID desteği CJK / Indic / Arapça OpenType-CFF yazı tiplerini kapsar; kapanış taraması, tutulan her CharString'in FD bağlamını izler ve FD başına Local Subr INDEX'leri bağımsız olarak alt kümelenebilir
Daha alt düzey CFF tamsayı çözücüleri, FDArray / FDSelect ayrıştırıcıları ve subroutine tarayıcıları, bu herkese açık yardımcı yüzeyin arkasındaki uygulama ayrıntılarıdır
Type 1 and CFF parser units
Ayrıca bkz.: EnableFontSubsetting, FontEmbedding, PDF filtre desteği |
Yerel glyph renderleyici, put, get, ifelse, random, dup, exch, index ve roll dahil standart Type 2 Boolean, aritmetik, koşullu, transient-array ve stack işlemlerini uygular
Transient değerler her glif için sıfırlanır, random değerler yeniden üretilebilirdir ve operand, transient-array, özyineleme ile çalıştırma sınırları bozuk programları kısmi bir kontur döndürmeden reddeder
Alt küme tarayıcısı, yerel ve global subroutine çağrılarının kullandığı aritmetik ve transient-array ifadelerini, Type 2 16.16 sabit noktalı operandlar dahil çözer
Random değerler, bilinmeyen transient durum veya prosedürler arası stack etkileri bir çağrı hedefini belirsizleştirdiğinde alt kümeleme, potansiyel olarak erişilebilir bir kontur bağımlılığını düşürmek yerine her aday subroutine'i korur
Ayrılmış ve kullanımdan kaldırılmış Multiple Master işlemleri desteklenmez ve açık biçimde başarısız olur