供給リッチテキストフォントフォールバック
THPDFHeadlessTextAppearanceOptions.FallbackFontFamilies を True にすると、HPDFBuildHeadlessRichTextFamilyAppearance やSetRichTextFieldValueWithFamilies に供給したファミリーから、欠けているリッチテキストグリフを解決します
既定は False で、記述された各ファミリーとスタイルの厳格な選択を保ちます。単一フォントのテキストビルダーは他のファミリーを探索しません
Options:= THPDFHeadlessTextAppearanceOptions.Default;
Options.FallbackFontFamilies:= True;
Document.SetRichTextFieldValueWithFamilies(FieldIndex, Runs, Families, Options);
選択とシェーピング
リゾルバは、隣接する記述済みスタイル run と段落内の空 run の継ぎ目をまたいだ、Unicode 17 の完全な拡張書記素境界を使います。ファミリーの決定がサロゲートペア、結合シーケンス、異体字セレクタ、接合子クラスタを分割することはありません
最初の対象 run が FontFamilyCandidates を供給する場合、その宣言順序が優先され、設定された各候補は完全な書記素のすべてのスタイル部分を覆わなければなりません。どれも条件を満たさなければ、以下の既存の選択ファミリーと供給配列のフォールバック規則が適用されます
選択されたプログラムが書記素全体を覆うなら、記述されたファミリーが使い続けられます。そうでなければ、リゾルバは最初の対象 run のファミリーを試し、次に配列順に供給ファミリーを試して、対応する実際の regular、bold、italic、bold-italic プログラムとともに書記素のすべてのスタイル部分を覆う 1 つのファミリーを選びます
欠けているスタイルプログラムは候補から除外され、検査を要する不正なプログラムは型付きの無効フォントエラーになります。レイアウトとシェーピングの制御は可視な cmap グリフを必要としません。どの供給ファミリーも覆わない書記素は haMissingGlyph になります
既存の文脈依存シェーピング、双方向の順序付け、スタイル間の記号配置、折り返し、明示的な段落区切り、ウィジェット回転は、解決されたアピアランス run に適用されます
値とトランザクション
フォールバック run はアピアランス準備の間だけ存在します。呼び出し側の run は変更されず、ドキュメントは元の平文値と記述済みリッチマークアップを V と RV に保存します
型付きポイントサイズと RGB 成分は、シリアライズ済みリッチ値から再構成されずにアピアランスレイアウトへ直接渡されます。正規テキスト表現には独自の精度があります
ファミリー対応 FDF・XFDF インポートは同じオプションを受け付け、既存の不変ソース、署名、セキュリティ、意味的 no-op、公開の各契約を保ちます
上限と依存関係
合計 MaxFontBytes 上限は、フォールバック中に検査された各ファミリー/スタイルプログラムを数えます。最終的に埋め込まれない有効な候補も含みます。アピアランスが埋め込むのは選択されたスタイルだけです
既存の UTF-16 入力、グリフ、オブジェクト、バイトの各予算は引き続き有効で、解決が生成するスタイル付き run は最大 4096 です。キャンセルはフォント選択とスカラー被覆の間、およびレイアウトと公開の間に検査されます
複雑なシェーピングは既存の HarfBuzz と FriBidi 依存を保ちます。フォールバックは供給されたフォントバイトだけを使い、暗黙のシステムフォント探索、汎用エイリアス、ダウンロードフォント、ダウンロードスタイルシートはありません。明示的な順序付きフォント候補リストはサポート対象のインライン CSS ファミリー順序を保ちます
ネイティブファミリー API がこのオプションを公開します。Linux の名前付きファミリー JSON は同じオプトインフラグを受け付け、実際の候補プログラムを準備します。Windows コールバックのフォールバックロードは別途の作業です
受け入れ
6 つのネイティブコンパイラターゲットがそれぞれ、30 個の保存 PDF に対する 199 検査と、1098 件の独立した値・埋め込みフォント・グリフ・シェーピング・精度・行・可視ピクセルの検査に合格します。実際のサブセットとフルのフォントプログラムは、4 スタイルすべて、スタイル間の結合記号、アラビア語の接続、ヘブライ語、補助の接合子、順序付きファミリー候補、AES R5/R6、FDF/XFDF、型付き予算、最終チェックポイントを含む 8 つの選択されたキャンセルチェックポイントをカバーします
新しい C++Builder インターフェースは両アーキテクチャでコンパイルされます。実際にリリースされた欠落グリフのエビデンスと、実際の primary/fallback/primary ウィジェットグリフの成功証明は、別々に保存されます