Unicode の書記素境界
HPDFUnicodeTextBoundary は、リポジトリに収録された Grapheme_Cluster_Break、Indic_Conjunct_Break、Extended_Pictographic の各プロパティを使って、Unicode 17.0.0 のデフォルト拡張書記素クラスタを実装します
ポータブルな Pascal 実装は、GUI やセグメンテーション DLL を要求せずに、結合記号、ハングル、インド系リンカー列、絵文字 ZWJ 列、ペアの地域インジケーターを処理します
オフセットは 0 から数えた UTF-16 コードユニットで、テキストの開始と終了の両方を含みます。空テキストは単一のオフセット 0 を返します
入力はペアになった UTF-16 サロゲートを含まなければならず、呼び出し側は 1048576 までの正のコードユニット予算を供給します。デフォルトは 65535 です
キャンセルは、確保の前と各スカラーの消費中に確認されます。空入力の場合も含まれます
リッチフィールド折り返し
複数行折り返しリッチフィールド内の幅超過の語は、完全な拡張書記素クラスタで分割され、選択されたフォントとスペーシングで計測されます
各フラグメントは元の V と RV の値、実際の Unicode マッピング、段落配置を保持します。矩形より広い分割不能クラスタはそのまま保たれ、クリップされます
フラグメント幅はシェーピング後に確認されます。別々にシェーピングすると広がる接続形も含まれます。分割可能なオーバーフローは、完全なクラスタでもう一度分割されます
複雑スクリプトの描画は引き続き HarfBuzz と FriBidi を使います。書記素セグメンテーションは、グリフシェーピングや段落の双方向レイアウトを供給しません
デフォルトの Unicode 行分割機会は、同じポータブルユニットから利用できます。スタイル境界をまたぐ語の折り返しと混在スタイル段落の bidi は、引き続き別の作業対象です
準拠
Tests/Linux/Run-UnicodeGraphemeAcceptance.sh か、HotPDFUnicodeGraphemeTests と Tests/Linux/resources を使う Windows ポータブルテストランナーを実行してください
テストは、公式の Unicode 17 GraphemeBreakTest 766 件すべてを消費し、公開されたすべての境界を UTF-16 単位で比較します
Build-UnicodeTextBoundaryTables.py が、既存のピン留めされた UCD データから、コンパイル済み範囲テーブルを決定論的に再構築します