有序的 Rich Text 字型候選清單

Rich text 可以保留明確的家族順序清單,為完整的 Unicode grapheme 選擇實際提供的字型程式時,就依照這個順序

Run:= THPDFHeadlessRichTextRun.Default;
Run.Text:= 'A' + WideChar($03A9) + 'B';
Run.FontFamily:= 'Primary';
SetLength(Run.FontFamilyCandidates, 3);
Run.FontFamilyCandidates[0]:= 'Primary';
Run.FontFamilyCandidates[1]:= 'Serif';
Run.FontFamilyCandidates[2]:= 'Sans';
Options:= THPDFHeadlessTextAppearanceOptions.Default;
Options.FallbackFontFamilies:= True;

實際的家族與樣式程式仍透過既有的具名家族 API 提供;FontFamilyCandidates 裡的標籤本身不會搜尋或下載字型

選擇與保留

整個 grapheme 的清單取自第一個受影響的既有 run,包含樣式接縫與 combining marks;每個設定的候選都必須以實際的 regular、bold、italic 或 bold-italic 程式涵蓋每個樣式片段

未知標籤與缺少樣式程式的候選會被略過;若宣告的候選都無法涵蓋該 grapheme,就套用既有的 selected-family 與 supplied-array fallback 規則

候選清單非空時,FontFamily 必須與其中第一個設定的標籤相符;typed JSON 省略 FontFamily 時會自動選用該相符項

fallback 只改變外觀準備:既有的純文字值、精確的 typed 大小與顏色、以及原本的候選順序都保留在 V 與 RV;resolver 絕不會改寫呼叫端的 runs

行內 XHTML 與資料交換

把 THPDFHeadlessRichTextDecodeOptions.PreserveFontFamilyLists 設為 True 並設定 FontFamilyNames,即可保留支援的逗號分隔行內 font-family 宣告,包含繼承與逐屬性的 important 優先權

家族感知的 FDF 與 XFDF 匯入,在外觀選項啟用 FallbackFontFamilies 時會啟用這項保留;嚴格的預設解碼維持既有的第一個設定家族選擇

清單最多十六個標籤,每個上限 128 個 UTF-16 code units,必須是有效 Unicode,不得含控制字元、前後空白、引號、反斜線、逗號或分號;重複與未知的宣告標籤保留既有順序

原生 Linux JSON

{"schemaVersion":1,"type":"forms.fill",
 "fontFamilies":["Primary","Sans","Serif"],"fallbackFontFamilies":true,
 "fields":[{"name":"Input","richTextRuns":[
   {"text":"A\u03a9B","fontFamily":"Primary",
    "fontFamilyCandidates":["Primary","Serif","Sans"]}
 ]}]}

即使操作把 Sans 排在 Serif 前面,宣告的 Serif 在前順序仍主導 fallback;既有 Fontconfig provider 會在相同的彙總字型與記憶體限制下提供實際的具名程式

typed run 候選陣列需要已設定的 fontFamilies 與已啟用的 fallbackFontFamilies;格式錯誤的陣列或標籤、缺少完整 grapheme 涵蓋、預算耗盡與取消,都會在 context 提交前以交易方式失敗

formData.richFontFamilyCandidates 能力旗標與 maxFontFamilyCandidates=16,透過不變的 V1 callback 與匯出符號版本公告這個有界選項

成功的鏈結表單填寫與等價的 FDF/XFDF 匯入,會保留已提交的文件與來源快照;輸出或結果 callback 失敗則保留前一個已提交的修訂

範圍

這個設定檔涵蓋提供的候選標籤與支援的行內宣告;外部樣式表、任意 CSS 版面、generic family 搜尋與 Windows callback fallback 載入仍是獨立的工作

fallback 行為 · typed run 記錄 · 解碼選項 · 原生 Linux 綁定