CFF ve OpenType Yazı Tipi Alt Küme İşlevleri

PDF Filter Support

 

Ü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, CFF2 tablosu içeren bir sfnt'yi algılar. HPDFInstantiateCFF2Font; seçilen fvar koordinatlarını avar 1.0 veya 2.0 üzerinden çözer, özyinelemeli subroutine'lar boyunca VariationStore destekli blend işlemlerini değerlendirir, HVAR, VVAR ve MVAR metriklerini pişirir, değişken tabloları kaldırır ve sağlaması doğru statik bir sfnt döndürür

 

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, fvar, glyf ve loca içeren bir sfnt'yi algılar. HPDFInstantiateTrueTypeVariableFont; seçilen eksenleri avar üzerinden eşler, gvar demetlerini ve IUP enterpolasyonunu değerlendirir, basit ve bileşik konturları artı hayalet nokta metriklerini günceller, uygulanabilirse HVAR, VVAR ve MVAR'ı uygular, varyasyon tablolarını kaldırır ve sağlaması doğru statik bir sfnt döndürür

 

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 name tablosundan ad ID 6'yı okur ve varsa PostScript yazı tipi adını döndürür

 

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

HPDFType1Core, HPDFType1Glyphs, HPDFType1CFFHandler ve HPDFType1PFBHandler; yeniden kullanılabilir bayt dizisi okuyucuları, Type 1 glif konturu komut çıkarımı, CFF Header / INDEX / sözlük / charset / kodlama ayrıştırması ile Type 1 PFB üst verisi ve glif arama yardımcılarını sağlar. HPDFType1CFFHandler; Top ve Private DICT değerleri, CharStrings, charset, Encoding ve Local Subrs için FontSet genelinde SyntheticBase devralmasını çözerken geçersiz indeksleri, döngüleri ve aşırı derinliği reddeder. HPDFType1CB, C++Builder dostu bir ayrıştırıcı giriş noktası sağlar. Bu birimler Delphi ve C++Builder paket projelerine dahildir; böylece uygulamalar ikili ayrıştırıcıları yeniden yazmadan Type 1 PFB ve CFF verisini inceleyebilir

 

Ayrıca bkz.: EnableFontSubsetting, FontEmbedding, PDF filtre desteği

Type 2 stack işlemleri ve subroutine güvenliğ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