Unicode 斷行
HPDFUnicodeLineBreaks 以簽入的 Line_Break、General_Category、East_Asian_Width 與 Extended_Pictographic 屬性,實作 Unicode 17.0.0 預設斷行機會
可攜實作不依賴 segmentation DLL,即可處理 combining 序列、標點上下文、數字運算式、Hangul、婆羅米系正字音節、emoji 修飾符與成對區域指示符
函式回傳第一個 scalar 之前與每個 scalar 之後的位置,以零基 UTF-16 偏移表示;每個位置為禁止、允許或強制
文字結尾一律為強制斷行,空輸入也一樣;非空文字的開頭為禁止,成對 surrogate 內部沒有位置
預設的東南亞處理把一般 SA 字元解析為 AL、SA combining marks 解析為 CM;語言字典與連字屬於另外的 tailoring 服務
HPDFUnicodeLineBreakClass 公開單一 code point 的原始或 LB1 解析後屬性;THPDFUnicodeLineBreakClass 名稱保留所有 Unicode 17 屬性縮寫
既有的 HPDFComputeLineBreaks 與 HPDFLineBreakClassOf 文件 API,在 Delphi 2009 與更新版本以及支援的 FPC 目標上使用同一套完整表格,保留既定的 enum 序數與空輸入行為
格式錯誤的 UTF-16,以及超出 1 到 1048576 的 code unit 預算,都會丟出 EArgumentException;配置之前、解碼期間與評估邊界時都會檢查取消
實際 rich 欄位排版
換行的 typed rich runs 會使用合法的預設斷行機會、讓不換行空格群組與開頭標點保持在一起,並把 CRLF、NEL、LINE SEPARATOR 與 PARAGRAPH SEPARATOR 視為明確斷行
原始分隔符保留在 V 與 canonical RV;行分隔符不會出現在繪製的 glyph 片段中,過寬群組則使用既有的完整 grapheme 緊急換行
同一實體行上的獨立片段以量測前進量接續;合法斷行不必另起實體行,除非排版估算選擇了它
完整段落斷行機會在樣式變更之間保留合法群組並合併被拆開的 CRLF;整個可容納的群組何時移到新行,由實際樣式化前進量決定
跨樣式 grapheme 緊急排版與情境 shaping、混合樣式段落 bidi、任意 XHTML 與特定語言 tailoring,仍是進行中的整合目標
一致性
HotPDFUnicodeLineBreakTests 跑遍官方 Unicode 17 LineBreakTest 全部 19338 個案例,比對每個發布位置;強制結尾以及格式錯誤、預算與取消行為另有獨立檢查
Build-UnicodeLineBreakTables.py --check 驗證可重現性,以及三個額外 UCD 屬性輸入的 SHA-256 釘選值
Unicode 17 斷行規則 · 邊界函式 · 回傳位置 · rich 欄位整合