Unicode の行分割

HPDFUnicodeLineBreaks は、リポジトリに収録された Line_Break、General_Category、East_Asian_Width、Extended_Pictographic の各プロパティを使って、Unicode 17.0.0 のデフォルト行分割機会を実装します

ポータブル実装は、セグメンテーション DLL なしで、結合シーケンス、句読点コンテキスト、数値表現、ハングル、ブラーフミー系の正書法音節、絵文字モディファイア、ペアの地域インジケーターを解決します

関数は、最初のスカラーの前とすべてのスカラーの後の位置を、0 始まりの UTF-16 オフセットとして返します。各位置は禁止・許可・必須のいずれかです

テキストの終端は必須位置で、空入力でも同じです。空でないテキストの先頭は禁止位置で、ペアのサロゲートの内部には位置がありません

デフォルトの東南アジア処理は、通常の SA 文字を AL に、SA 結合記号を CM に解決します。言語辞書とハイフネーションは、別のテーラリングサービスです

HPDFUnicodeLineBreakClass は、個々のコードポイントについて生のプロパティまたは LB1 解決後のプロパティを公開します。THPDFUnicodeLineBreakClass の名前は、Unicode 17 のプロパティ略記をすべて保持します

既存の HPDFComputeLineBreaks と HPDFLineBreakClassOf ドキュメント API は、Delphi 2009 以降と対応 FPC ターゲットで同じ完全なテーブルを消費し、確立済みの enum 序数と空入力の動作を保ちます

不正な UTF-16 と、1 から 1048576 の範囲外のコードユニット予算は EArgumentException を発生させます。キャンセルは、確保の前、デコード中、境界の評価中に確認されます

実際のリッチフィールドレイアウト

折り返される型付きリッチ run は、合法なデフォルト機会を消費し、改行なしスペースのグループと開き句読点をまとめて保持し、CRLF、NEL、LINE SEPARATOR、PARAGRAPH SEPARATOR を明示的な改行として扱います

元の区切り文字は V と正規化 RV に残ります。行区切り文字は描画されるグリフフラグメントからは省かれ、幅超過のグループは既存の書記素全体緊急折り返しを使います

同じ実際の行上の独立したフラグメントは、計測されたアドバンスで続きます。合法な分割は、フィッティングが選ばない限り別の物理行を要求しません

段落全体の分割機会は、スタイル変更をまたいで合法なグループを保持し、分割された CRLF を統合します。フィットするグループ全体が新しい行に移るタイミングは、実際のスタイル付きアドバンスが決めます

スタイル横断の書記素緊急フィッティングと文脈シェーピング、混在スタイル段落の bidi、任意の XHTML、言語固有のテーラリングは、引き続き統合作業中の対象です

準拠

HotPDFUnicodeLineBreakTests は、公式の Unicode 17 LineBreakTest 19338 件すべてを消費し、公開されたすべての位置を比較します。必須の終端や、不正入力・予算・キャンセルの動作には個別のチェックがあります

Build-UnicodeLineBreakTables.py --check が、再現性と、追加 3 つの UCD プロパティ入力の SHA-256 ピンを検証します

Unicode 17 の行分割規則 · 境界関数 · 返される位置 · リッチフィールド統合