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 データから、コンパイル済み範囲テーブルを決定論的に再構築します

Unicode 17 のテキストセグメンテーション規則 · 境界関数 · リッチフィールド動作