Supplied Rich Text Font Fallback
Ustaw THPDFHeadlessTextAppearanceOptions.FallbackFontFamilies na True, aby rozpoznawać brakujące glify rich text z rodzin dostarczonych do HPDFBuildHeadlessRichTextFamilyAppearance albo SetRichTextFieldValueWithFamilies
Default to False, zachowując ścisły wybór każdej autorskiej rodziny i stylu; builder tekstu pojedynczego fontu nie szuka innych rodzin
Options:= THPDFHeadlessTextAppearanceOptions.Default;
Options.FallbackFontFamilies:= True;
Document.SetRichTextFieldValueWithFamilies(FieldIndex, Runs, Families, Options);
Selection and shaping
Resolver używa kompletnych granic rozszerzonych grafemów Unicode 17 między sąsiednimi autorskimi runami stylów i pustymi szwami runów wewnątrz każdego akapitu; decyzja o rodzinie nigdy nie dzieli pary surrogate, sekwencji łączącej, sekwencji wariacji ani klastra joinera
Gdy pierwszy dotknięty run dostarcza FontFamilyCandidates, jego zadeklarowana kolejność ma pierwszeństwo i każdy skonfigurowany kandydat musi pokryć każdą stylizowaną część kompletnego grafemu; gdy żaden się nie kwalifikuje, stosują się poniższe istniejące reguły fallback wybranej rodziny i dostarczonej tablicy
Gdy wybrane programy pokrywają cały grafem, ich autorskie rodziny pozostają w użyciu; w przeciwnym razie resolver najpierw próbuje rodziny pierwszego dotkniętego runa, a potem dostarczonych rodzin w kolejności tablicy, wybierając jedną rodzinę pokrywającą każdą stylizowaną część kompletnego grafemu odpowiadającym rzeczywistym programem regular, bold, italic albo bold-italic
Brakujące programy stylów są pomijane jako kandydaci, podczas gdy wadliwy program, który musi być zbadany, daje typowany błąd invalid-font; kontrolki layoutu i shapingu nie wymagają widocznych glifów cmap; grafem, którego żadna dostarczona rodzina nie pokrywa, daje haMissingGlyph
Istniejący kontekstowy shaping, porządkowanie dwukierunkowe, pozycjonowanie znaków między stylami, zawijanie, jawne złamania akapitów i rotacja widgetów dotyczą rozpoznanych runów wyglądów
Values and transactions
Runy fallback istnieją wyłącznie podczas przygotowania wyglądów; runy wywołującego pozostają niezmienione, a dokument przechowuje oryginalną wartość zwykłą i autorskie markup rich w V i RV
Typowane rozmiary punktów i składowe RGB przechodzą bezpośrednio do layoutu wyglądów bez odtwarzania z serializowanej wartości rich, której kanoniczna reprezentacja tekstowa ma własną precyzję
Importy FDF i XFDF świadome rodzin akceptują tę samą opcję i zachowują swoje istniejące kontrakty niemutowalnego źródła, podpisów, bezpieczeństwa, semantycznego no-op i publikacji
Bounds and dependencies
Zagregowany limit MaxFontBytes liczy każdy program rodziny/stylu zbadany podczas fallback, łącznie z poprawnymi kandydatami ostatecznie nieosadzonymi; wygląd osadza wyłącznie wybrane style
Istniejące budżety wejścia UTF-16, glifów, obiektów i bajtów pozostają w mocy, a rozpoznawanie może dać co najwyżej 4096 stylizowanych runów; anulowanie jest sprawdzane podczas wyboru fontów i pokrycia skalarów oraz podczas layoutu i publikacji
Złożony shaping zachowuje istniejące zależności HarfBuzz i FriBidi; fallback używa wyłącznie dostarczonych bajtów fontów, bez niejawnego odkrywania fontów systemowych, aliasów generycznych, pobieranych fontów albo pobieranych arkuszy stylów; jawne uporządkowane listy kandydatów fontów zachowują obsługiwany inline porządek rodzin CSS
Natywne API rodzin odsłaniają tę opcję; Linux JSON nazwanych rodzin akceptuje tę samą flagę opt-in i przygotowuje rzeczywiste programy kandydatów; ładowanie fallbacków callbacków Windows pozostaje odrębną pracą
Acceptance
Sześć natywnych celów kompilatorów każdy przechodzi 199 sprawdzeń nad 30 zapisanymi PDF-ami i 1098 niezależnych sprawdzeń wartości, osadzonych fontów, glifów, shapingu, precyzji, linii i widocznych pikseli; rzeczywiste programy fontów subset i pełne pokrywają wszystkie cztery style, znaki łączące między stylami, łączenie arabskie, hebrajski, uzupełniające joinery, uporządkowane kandydatów rodzin, AES R5/R6, FDF/XFDF, typowane budżety i osiem wybranych checkpointów anulowania łącznie z finalnym
Świeże interfejsy C++Builder kompilują obie architektury; prawdziwe wydane dowody brakujących glifów i udany rzeczywisty dowód glifów widgeta primary/fallback/primary są zachowywane oddzielnie