السجل THPDFFontDecoder

يحمل جداول فك الترميز المحلولة ومقاييس العرض لخط 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جدول من 256 مدخلًا يحوّل أسماء المحارف إلى Unicode تستخدمه استعادة /Differences
GIDToUnicodeجدول cmap المضمَّن معكوسًا من معرّف المحرف إلى 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 في الفرع الرأسي للحلّال
Ascentعلو الخط المقروء من مقاييس واصف الخط
Descentانخفاض الخط المقروء من مقاييس واصف الخط
HasVerticalMetricsيصبح True عندما تُعثر على مقاييس رأسية للخط
CodeUnitBytesعدد البايتات لكل رمز محرف، ويُقدَّم لمفسّر المحتوى لهذا الخط
OKيصبح True عندما تكون إحدى استراتيجيات فك الترميز قابلة للاستخدام على الأقل

ملاحظات الاستخدام

واجهات برمجة التطبيقات ذات الصلة