THPDFFontDecoder Record
جدولهای رمزگشایی حلشده و سنجههای پهنا را برای یک فونت PDF بارگذاریشده نگه میدارد و توسط زنجیرهٔ جایگزین رمزگشایی فونت ساخته میشود
اعلان
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;
واحد
HPDFTextExtraction
فیلدها
| فیلد | هدف |
|---|---|
FontKey | کلید منبعی مانند /F1 که فونت را نام میبرد و برای تشخیص نگه داشته میشود |
Subtype | زیرنوع دیکشنری فونت: Type0، Type1، TrueType، CIDFontType2 و مشابهها |
Strategies | مجموعهٔ راهبردهای جایگزینی که با موفقیت پر شدهاند |
ToUnicodeMap | CMap تجزیهشدهٔ /ToUnicode با مدخلهای bfchar و bfrange؛ بالاترین اولویت |
EncodingMap | استریم /Encoding تجزیهشده یا CMap نامدار |
PredefinedEncoding | نام انکودینگ از پیش تعریفشده، مانند WinAnsiEncoding |
CIDToGIDIdentity | True وقتی CIDToGIDMap از نوع Identity باشد و به جدول صریحی نیاز نباشد |
CIDToGIDs | استریم باینری CIDToGIDMap گسترشیافته به یک Word به ازای هر CID |
CIDToUnicode | جدول CID به Unicode از جایگزین cid2code.txt |
GlyphNameUnicode | جدول نامگلیف به Unicode با 256 مدخل که بازیابی /Differences به کار میبرد |
GIDToUnicode | cmap جاسازیشده وارونهشده از glyph ID به Unicode |
Widths | پیشرویهای /Widths فونت ساده بر حسب 1/1000 em، اندیسگذاریشده با کد منهای FirstChar |
FirstChar | نخستین کد نویسهٔ پشتیبانیشده در آرایهٔ Widths |
LastChar | آخرین کد نویسهٔ پشتیبانیشده در آرایهٔ Widths |
CIDWidths | بازههای پهنای CID از آرایهٔ /W مربوط به CIDFont |
CIDDefaultWidth | پیشروی پیشفرض CID از /DW |
CIDVertWidths | سنجههای عمودی /W2 ذخیرهشده بهصورت سهتاییهای [w1y v1x v1y] به ازای هر CID یا بازه |
CIDVertDefaultAdvance | جابهجایی عمودی پیشفرض از w1y مربوط به /DW2؛ بهطور پیشفرض -1000 |
CIDVertDefaultOriginY | مبدأ عمودی پیشفرض از v1y مربوط به /DW2؛ بهطور پیشفرض 880 |
VerticalWriting | True وقتی سنجههای WMode 1 شاخهٔ عمودی resolver را کنترل میکنند |
Ascent | صعود فونت خواندهشده از سنجههای توصیفگر فونت |
Descent | نزول فونت خواندهشده از سنجههای توصیفگر فونت |
HasVerticalMetrics | True وقتی برای فونت سنجههای عمودی یافت شده باشد |
CodeUnitBytes | بایت به ازای هر کد نویسه، که به مفسر محتوا برای این فونت پاس داده میشود |
OK | True وقتی دستکم یک راهبرد رمزگشایی قابل استفاده باشد |
یادداشتهای استفاده
- با
HPDFBuildFontDecoderساخته میشود؛ رکورد ساده باعث میشود فونتهای یک صفحه ارزان بمانند و خودش هیچ تخصیص heapای ندارد HPDFDecodeCharCodeراهبردها را به ترتیب اولویت میپیماید و در صورت نیافتن 0 برمیگرداند؛ استریمهای غایب بیصدا به راهبرد بعدی تنزل میکنند- وقتی یک رمزگشا باید از حافظهٔ نهانی که ساختهاش عمر بیشتری بکند،
HPDFCloneFontDecoderرا صدا بزنید، چون آرایههای پویا با ارجاع به اشتراک گذاشته میشوند