|
תמיכה בעיצוב סורית / מונגולית / דבנאגארי משטחי יכולות מרובי כתבים (v2.119.53 - v2.119.55)
|
Arabic Shaping Auto Shaping Pipeline GSUB Engine |
|
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;
סורית עוקבת אחר אותה מסגרת בת ארבע מחלקות של חיבור ימני / חיבור כפול / שקוף / ללא חיבור כמו ערבית;
בניגוד לערבית, לבלוק הסורי אין צורות תצוגה המקודדות מראש ביוניקוד - אין מקבילה סורית לבלוקי צורות התצוגה בערבית 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) כך שהם משתתפים בחיבור מבלי לקטוע את המעבר
בדומה לסורית, למונגולית אין צורות תצוגה המקודדות מראש ביוניקוד. הפריסה האנכית המסורתית של מונגולית, חוקי וריאציית צורת האותיות המורכבים, ובחירת צורה מונחית FVS - כולם צפויים להיות מונעים על ידי חיפושי GSUB המוגדרים בגופן (בדרך כלל
יכולת עיצוב אינדית של Devanagari (v2.119.55) Devanagari שונה מהותית מערבית / סורית / מונגולית - זהו כתב אבוגידה אינדי שבו היחידה המשמעותית היא צביר הברות (akshara), לא אות בודדת, וסדר הרינדור של הגליפים בתוך צביר שונה לרוב מסדר היוניקוד הלוגי. שתי מתודות חושפות את שכבת היכולות האינדית של Devanagari:
function GetDevanagariCategory(CP: Cardinal): TIndicCategory; procedure ApplyDevanagariReorder(var Run: array of Cardinal);
שילוב אוטומטי (v2.119.67): כאשר
זרימת עבודה טיפוסית (סורית)
PDF.RegisterUnicodeTTF('Estrangelo', 'SyrCOMEdessa.otf'); PDF.SetGSUBScript('syrc'); // see GSUB engine doc 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;
זרימת עבודה טיפוסית (Devanagari עם שינוי סדר אוטומטי)
PDF.RegisterUnicodeTTF('NotoDeva', 'NotoSansDevanagari-Regular.ttf'); PDF.ShapingFeatures := [sfIndicShaping]; // auto Repha + I-matra reorder PDF.CurrentPage.SetFont('NotoDeva', [], 14); PDF.CurrentPage.UnicodeTextOut(50, 700, 0, UnicodeString(#$0939#$093F#$0928#$094D#$0926#$0940)); // "Hindi"
עוזרי תת-קבוצה וחילוץ של יוניקוד
טווח ומגבלות שילוב נוכחי בצד היצרן לעיצוב סורית, מונגולית, טיבטית ואינדית יש כעת דפי ייחוס מפורשים של API. ניתן להפעיל סורית דרך הטווח הנוכחי מכסה גם את N'Ko ואדלאם ככתבים מחוברים מסוג RTL, סידור SARA AM וסימני טון בתאית/לאו, סידור ניקוד בעברית, וסימנים טרום-בסיסיים של ג'אוונית. נתיבים אלו מתועדים ב-מתודות עיבוד מקדים לעיצוב כתב
ראה גם: |