|
シリア語 / モンゴル語 / デーヴァナーガリー文字 シェーピングサポート マルチスクリプト機能サーフェス (v2.119.53 - v2.119.55)
|
アラビア文字シェーピング 自動シェーピングパイプライン GSUB エンジン |
|
HotPDF は Arabic 以外の 3 つの complex scripts、Syriac (U+0700-U+074F)、Mongolian (U+1800-U+18AF)、Devanagari (U+0900-U+097F) 向けに、joining-class / positional-analysis / Indic syllabic-category capability surfaces を公開します。各 capability により、caller は既存の OpenType GSUB engine を通じて script を正しく shape できます。一方で cluster boundary detection、BiDi resolution、GPOS positioning などの heavy lifting は HotPDF の scope 外に保たれます
シリア語のシェーピング機能 (v2.119.53) シリア語の結合の動作を公開する2つの新しいメソッドがあります。
function GetSyriacJoiningClass(CP: Cardinal): TJoiningClass; function GetSyriacPosition(const Run: array of Cardinal; Index: Integer): TPosition;
シリア語はアラビア語と同じ、右結合 / 両側結合 / 透過 / 非結合 の4つのクラスのフレームワークに従います。
アラビア語とは異なり、シリア語ブロックにはUnicodeに事前にエンコードされた表示形がありません - U+FB50-FDFF / U+FE70-FEFC アラビア表示形ブロックに相当するシリア語のものはありません。したがって、コンシューマーは、コードポイントの書き換えではなく、フォントで定義されたGSUBルックアップ(通常は
モンゴル語のシェーピング機能 (v2.119.54) モンゴル語用の2つの並行メソッドがあります。
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 クラス) に分類されるため、歩みを止めることなく結合に参加します。
シリア語と同様に、モンゴル語にはUnicodeに事前にエンコードされた表示形がありません。モンゴル語の伝統的な縦書きレイアウト、複雑な文字形状のバリエーションのルール、およびFVSによる形状選択はすべて、フォントで定義されたGSUBルックアップ(通常は
デーヴァナーガリー文字のインド系シェーピング機能 (v2.119.55) デーヴァナーガリー文字はアラビア語 / シリア語 / モンゴル語とは根本的に異なります。これは、意味のある単位が1つの文字ではなく音節クラスター(アクシャラ)であるインド系のアブギダ文字であり、クラスター内のグリフのレンダリング順序は、論理的なUnicodeの順序とは異なることがよくあります。2つのメソッドがデーヴァナーガリー文字のインド系機能レイヤーを公開します。
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;
一般的なワークフロー (自動並べ替え付きのデーヴァナーガリー文字)
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"
Unicode サブセットと抽出のヘルパー
範囲と制限事項 現在のプロデューサー側の統合 Syriac、Mongolian、Tibetan、Indic shaping には明示的な API reference pages があります。Syriac は 現在の scope は、RTL cursive scripts としての N'Ko と Adlam、Thai/Lao SARA AM と tone-mark ordering、Hebrew niqqud ordering、Javanese pre-base signs も cover します。これらの paths は スクリプトシェーピング前処理メソッド に記載されています
See also: アラビア語 / ペルシア語 / ウルドゥー語 シェーピングサポート, 自動シェーピングパイプライン (フェーズ 8), Open型 GSUB 置換エンジン, THotPDF.AssignSyntheticCodepointForGID |