THPDFFontDecoder Kaydı
Font decode fallback zincirinin oluşturduğu, yüklenmiş bir PDF fontu için çözülmüş decode tablolarını ve genişlik metriklerini tutar
Bildirim
THPDFFontDecoder= record
FontKey: AnsiString; // resource key (e.g. /F1) for diagnostics
Subtype: AnsiString; // Type0, Type1, TrueType, CIDFontType2
Strategies: THPDFFontStrategies; // which fallbacks are populated
ToUnicodeMap: THPDFCMapParseResult;
EncodingMap: THPDFCMapParseResult; // /Encoding stream or named CMap
PredefinedEncoding: AnsiString; // 'WinAnsiEncoding' etc
CIDToGIDIdentity: boolean;
CIDToGIDs: array of Word; // binary CIDToGIDMap stream
CIDToUnicode: THPDFCIDToUnicodeTable; // cid2code.txt fallback
GlyphNameUnicode: array[0.. 255] of Cardinal;
GIDToUnicode: THPDFUnicodeByGID;
// v2.505.0 simple-font /Widths (PDF 1.7 9.6.3 Table 111). Index =
// (code - FirstChar); values are 1/1000-em glyph advances. Empty when
// the font has no /Widths array (the interpreter falls back to 0.5*fs)
Widths: array of Double;
FirstChar: Integer;
LastChar: Integer;
CIDWidths: THPDFCIDWidthRanges;
CIDDefaultWidth: Double;
// Vertical (WMode 1) counterparts from the descendant CIDFont /W2 and
// /DW2 (ISO 32000-1 9.7.4.3). Each /W2 metric is a [w1y v1x v1y]
// triple: w1y is the displacement along the writing axis, v1x/v1y the
// position vector from the glyph's horizontal origin to its vertical
// origin. A range entry (cFirst cLast w1y v1x v1y) stores one triple;
// a list entry (c [w1y v1x v1y ...]) stores one triple per CID from
// FirstCID to LastCID. VerticalWriting gates the resolver's vertical
// branch
CIDVertWidths: THPDFCIDWidthRanges;
CIDVertDefaultAdvance: Double; // /DW2 w1y (second entry); default -1000
CIDVertDefaultOriginY: Double; // /DW2 v1y (first entry); default 880
VerticalWriting: boolean;
Ascent: Double;
Descent: Double;
HasVerticalMetrics: boolean;
CodeUnitBytes: Integer; // bytes per char code
OK: boolean;
end;
Birim
HPDFTextExtraction
Alanlar
| Alan | Amaç |
|---|---|
FontKey | Fontu adlandıran /F1 gibi kaynak anahtarı; teşhis için tutulur |
Subtype | Font sözlüğü alt türü: Type0, Type1, TrueType, CIDFontType2 ve diğerleri |
Strategies | Başarıyla doldurulan fallback stratejileri kümesi |
ToUnicodeMap | bfchar ve bfrange girdileriyle ayrıştırılmış /ToUnicode CMap'i; en yüksek öncelik |
EncodingMap | Ayrıştırılmış /Encoding akışı veya adlandırılmış CMap |
PredefinedEncoding | WinAnsiEncoding gibi önceden tanımlı encoding adı |
CIDToGIDIdentity | CIDToGIDMap Identity olduğunda ve açık bir tablo gerekmediğinde True olur |
CIDToGIDs | CID başına bir Word'e genişletilmiş ikili CIDToGIDMap akışı |
CIDToUnicode | cid2code.txt fallback'inden CID-to-Unicode tablosu |
GlyphNameUnicode | /Differences kurtarmasının kullandığı 256 girdili glyph-adı-to-Unicode tablosu |
GIDToUnicode | Glyph ID'den Unicode'a çevrilmiş gömülü cmap |
Widths | 1/1000 em cinsinden simple-font /Widths ilerlemeleri; kod eksi FirstChar ile indekslenir |
FirstChar | Widths dizisinin desteklenen ilk karakter kodu |
LastChar | Widths dizisinin desteklenen son karakter kodu |
CIDWidths | CIDFont /W dizisinden CID genişlik aralıkları |
CIDDefaultWidth | /DW'den varsayılan CID ilerlemesi |
CIDVertWidths | CID veya aralık başına [w1y v1x v1y] üçlüsü olarak saklanan dikey /W2 metrikleri |
CIDVertDefaultAdvance | /DW2 w1y'den varsayılan dikey yer değiştirme; varsayılan -1000 |
CIDVertDefaultOriginY | /DW2 v1y'den varsayılan dikey orijin; varsayılan 880 |
VerticalWriting | WMode 1 metrikleri çözücünün dikey dalını yönlendirdiğinde True olur |
Ascent | Font descriptor metriklerinden okunan font ascent değeri |
Descent | Font descriptor metriklerinden okunan font descent değeri |
HasVerticalMetrics | Font için dikey metrikler bulunduğunda True olur |
CodeUnitBytes | Karakter kodu başına bayt sayısı; font için content interpreter'a bildirilir |
OK | En az bir decode stratejisi kullanılabilir olduğunda True olur |
Kullanım notları
HPDFBuildFontDecoderile oluşturun; sade kayıt, kendi başına heap ayırması olmadan bir sayfalık fontu ucuz tutarHPDFDecodeCharCodestratejileri öncelik sırasında gezinir ve isabetsizlikte 0 döndürür; eksik akışlar sessizce sonraki stratejiye düşer- Dinamik diziler referansla paylaşıldığından, bir decoder onu üreten cache'ten uzun yaşamak zorundaysa
HPDFCloneFontDecoderçağırın