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

Nazwane rodziny · Opcje wyglądów