|
دعم تشكيل السريانية / المغولية / الديفاناغارية أسطح إمكانات النصوص المتعددة (v2.119.53 - v2.119.55)
|
تشكيل العربية خط أنابيب التشكيل التلقائي محرك GSUB |
يكشف HotPDF عن أسطح إمكانات فئة الربط / التحليل الموضعي / فئة المقاطع الهندية لثلاثة نصوص معقدة خارج العربية: السريانية (U+0700-U+074F)، والمغولية (U+1800-U+18AF)، والديفاناغارية (U+0900-U+097F). تتيح كل إمكانية للمستدعين تشغيل النص عبر محرك OpenType GSUB الحالي للحصول على تشكيل صحيح، مع إبقاء العمل الشاق (كشف حدود المجموعات، وحل BiDi، وتحديد موضع GPOS) خارج نطاق HotPDF
إمكانية تشكيل السريانية (v2.119.53) طريقتان جديدتان تكشفان عن سلوك ربط السريانية:
function GetSyriacJoiningClass(CP: Cardinal): TJoiningClass; function GetSyriacPosition(const Run: array of Cardinal; Index: Integer): TPosition;
تتبع السريانية نفس إطار الفئات الأربع (الربط الأيمن / الربط الثنائي / الشفاف / عدم الربط) مثل العربية؛ يصنف
على عكس العربية، لا تحتوي الكتلة السريانية على أي أشكال عرض مسبقة الترميز في Unicode - لا يوجد مكافئ سرياني لكتل أشكال العرض العربية U+FB50-FDFF / U+FE70-FEFC. لذلك يجب على المستهلكين تشغيل تشكيل السريانية من خلال عمليات بحث GSUB المحددة بالخط (عادةً
إمكانية تشكيل المغولية (v2.119.54) طريقتان متوازيتان للمغولية:
function GetMongolianJoiningClass(CP: Cardinal): TJoiningClass; function GetMongolianPosition(const Run: array of Cardinal; Index: Integer): TPosition;
تغطي التغطية المغولية الأساسية (U+1820-U+1842)، وتودو (U+1843-U+1877)، وسيبيه (U+1880-U+18A8)، والمانشو، وملحقات ألي غالي. تصنف محددات الاختلاف FVS1 / FVS2 / FVS3 (U+180B-U+180D)، والواصلة الناعمة NIRUGU (U+180A)، وعلامات علة ألي غالي جميعها على أنها شفافة (T-class) لذا فهي تشارك في الربط دون كسر سير العمل
مثل السريانية، لا تحتوي المغولية على أشكال عرض مسبقة الترميز في Unicode. من المتوقع أن يتم تشغيل التخطيط الرأسي التقليدي للمغولية، وقواعد تباين أشكال الحروف المعقدة، واختيار الشكل المدفوع بـ FVS بواسطة عمليات بحث GSUB المحددة بالخط (عادةً
إمكانية تشكيل الديفاناغارية الهندية (v2.119.55) تختلف الديفاناغارية جوهريًا عن العربية / السريانية / المغولية - فهي نص أبوجيدا هندي حيث الوحدة ذات المعنى هي مجموعة مقاطع لفظية (akshara)، وليست حرفًا واحدًا، وغالبًا ما يختلف الترتيب المعروض للرموز داخل المجموعة عن ترتيب Unicode المنطقي. تكشف طريقتان عن طبقة إمكانات الديفاناغارية الهندية:
function GetDevanagariCategory(CP: Cardinal): TIndicCategory; procedure ApplyDevanagariReorder(var Run: array of Cardinal);
يصنف
يعد
التكامل التلقائي (v2.119.67): عند وجود
سير العمل النموذجي (السريانية)
PDF.RegisterUnicodeTTF('Estrangelo', 'SyrCOMEdessa.otf'); PDF.SetGSUBScript('syrc'); // انظر مستند محرك GSUB for i := 0 to Length(Run) - 1 do begin Pos := PDF.GetSyriacPosition(Run, i); // init / medi / fina / isol // query GSUB for the position-appropriate substitute glyph // emit + MarkUnicodeGlyphUsed end;
سير العمل النموذجي (الديفاناغارية مع إعادة الترتيب التلقائي)
PDF.RegisterUnicodeTTF('NotoDeva', 'NotoSansDevanagari-Regular.ttf'); PDF.ShapingFeatures := [sfIndicShaping]; // إعادة ترتيب التلقائي لـ Repha + I-matra PDF.CurrentPage.SetFont('NotoDeva', [], 14); PDF.CurrentPage.UnicodeTextOut(50, 700, 0, UnicodeString(#$0939#$093F#$0928#$094D#$0926#$0940)); // "Hindi" docs-sync:unicode-helper-api:start مساعدات استخراج وتجزئة Unicode يسجل docs-sync:unicode-helper-api:end النطاق والقيود التكامل الحالي من جانب المنتج أصبح لتشكيل السريانية والمغولية والتبتية والهندية الآن صفحات مرجعية صريحة لواجهة برمجة التطبيقات API. يمكن تمكين السريانية من خلال يغطي النطاق الحالي أيضًا N'Ko وAdlam كخطوط متصلة من اليمين إلى اليسار، وترتيب علامات التشكيل نبرة الصوت لـ Thai/Lao SARA AM، وترتيب نيقود العبرية، وعلامات ما قبل الأساس لـ Javanese. تم توثيق هذه المسارات في طرق معالجة تشكيل النصوص مسبقًا
انظر أيضا: Arabic / Persian / Urdu Shaping Support, Automatic Shaping Pipeline (Phase 8), OpenType GSUB Substitution Engine, THotPDF.AssignSyntheticCodepointForGID |