|
Hỗ trợ tạo hình Syriac / Mongolian / Devanagari Các bề mặt năng lực đa script (v2.119.53 - v2.119.55)
|
Hỗ trợ tạo hình Arabic Chuỗi tạo hình tự động Bộ máy GSUB OpenType |
|
HotPDF cung cấp các bề mặt năng lực về joining-class, positional-analysis và Indic syllabic-category cho ba script phức tạp ngoài Arabic: Syriac (U+0700-U+074F), Mongolian (U+1800-U+18AF) và Devanagari (U+0900-U+097F). Mỗi năng lực cho phép bên gọi điều khiển script qua OpenType GSUB engine hiện có để tạo hình đúng, trong khi phần việc nặng như phát hiện ranh giới cụm, phân giải BiDi và định vị GPOS vẫn nằm ngoài phạm vi của HotPDF
Năng lực tạo hình Syriac (v2.119.53) Hai phương thức mới phơi bày hành vi nối chữ của Syriac
function GetSyriacJoiningClass(CP: Cardinal): TJoiningClass; function GetSyriacPosition(const Run: array of Cardinal; Index: Integer): TPosition;
Syriac dùng cùng khung bốn lớp Right-Joining / Dual-Joining / Transparent / Non-Joining như Arabic;
Khác với Arabic, khối Syriac không có Presentation Forms được mã hóa sẵn trong Unicode - không có khối tương đương với Arabic Presentation Forms U+FB50-FDFF / U+FE70-FEFC. Vì vậy bên tiêu thụ phải điều khiển tạo hình Syriac qua các tra cứu GSUB do phông định nghĩa, thường là
Năng lực tạo hình Mongolian (v2.119.54) Hai phương thức song song cho Mongolian
function GetMongolianJoiningClass(CP: Cardinal): TJoiningClass; function GetMongolianPosition(const Run: array of Cardinal; Index: Integer): TPosition;
Phạm vi bao gồm Mongolian cơ bản (U+1820-U+1842), Todo (U+1843-U+1877), Sibe (U+1880-U+18A8), Manchu và các phần mở rộng Ali Gali. Các Variation Selector FVS1 / FVS2 / FVS3 (U+180B-U+180D), soft hyphen NIRUGU (U+180A) và các dấu nguyên âm Ali Gali đều được xếp là Transparent (T-class) nên chúng tham gia vào quá trình nối mà không làm đứt bước đi
Giống như Syriac, Mongolian không có Presentation Forms được mã hóa sẵn trong Unicode. Bố cục dọc truyền thống của Mongolian, các quy tắc biến đổi hình chữ phức tạp và việc chọn dạng dựa trên FVS đều được kỳ vọng sẽ do các tra cứu GSUB do phông định nghĩa điều khiển (thường là
Năng lực tạo hình Indic của Devanagari (v2.119.55) Devanagari về cơ bản khác với Arabic / Syriac / Mongolian - đây là một script abugida Indic trong đó đơn vị có ý nghĩa là một cụm âm tiết (akshara), không phải một chữ cái đơn lẻ, và thứ tự glyph được kết xuất bên trong cụm thường khác với thứ tự Unicode logic. Hai phương thức phơi bày lớp năng lực Indic của Devanagari
function GetDevanagariCategory(CP: Cardinal): TIndicCategory; procedure ApplyDevanagariReorder(var Run: array of Cardinal);
Tích hợp tự động (v2.119.67): khi
Quy trình điển hình (Syriac)
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;
Quy trình điển hình (Devanagari với reorder tự động)
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"
Trợ giúp tập con Unicode và trích xuất
Phạm vi và giới hạn Tích hợp hiện tại phía producer Tạo hình Syriac, Mongolian, Tibetan và Indic hiện đã có các trang tham khảo API riêng. Syriac có thể bật qua Phạm vi hiện tại cũng bao gồm N'Ko và Adlam như các script chữ viết tay RTL, thứ tự SARA AM và dấu thanh Thai/Lao, thứ tự niqqud Hebrew, và các dấu tiền-base của Javanese. Các đường dẫn này được ghi trong các phương thức tiền xử lý tạo hình script
Xem thêm: Hỗ trợ tạo hình Arabic / Persian / Urdu, Chuỗi tạo hình tự động (Phase 8), Bộ máy thay thế OpenType GSUB, THotPDF.AssignSyntheticCodepointForGID |