Levererad rich-text-teckensnittsfallback
Sätt THPDFHeadlessTextAppearanceOptions.FallbackFontFamilies till True för att lösa saknade rich-text-glyphs från de familjer som levereras till HPDFBuildHeadlessRichTextFamilyAppearance eller SetRichTextFieldValueWithFamilies
Standardvärdet är False, vilket bevarar strikt val av varje författad familj och stil; enskildteckensnitts-textbyggaren söker inte efter andra familjer
Options:= THPDFHeadlessTextAppearanceOptions.Default;
Options.FallbackFontFamilies:= True;
Document.SetRichTextFieldValueWithFamilies(FieldIndex, Runs, Families, Options);
Val och shaping
Upplösaren använder kompletta Unicode 17-gränser för utökade grafem över intilliggande författade stilkörningar och tomma körningssömmar inom varje stycke; ett familjebeslut delar aldrig ett surrogatpar, en kombinerande sekvens, en variationssekvens eller en joiner-kluster
När den första berörda körningen levererar FontFamilyCandidates tar dess deklarerade ordning före, och varje konfigurerad kandidat måste täcka varje stylad del av det kompletta grafemet; om ingen kvalificerar gäller de befintliga reglerna nedan för vald familj och levererad array
Om de valda programmen täcker hela grafemet behålls deras författade familjer; annars provar upplösaren först den första berörda körningens familj och därefter de levererade familjerna i arrayordning, och väljer en familj som täcker varje stylad del av det kompletta grafemet med motsvarande faktiskt program för regular, bold, italic eller bold-italic
Saknade stilprogram hoppas över som kandidater, medan ett felaktigt program som måste inspekteras ger ett typat invalid-font-fel; layout- och shaping-kontroller kräver inte synliga cmap-glyphs; ett grafem som ingen levererad familj täcker ger haMissingGlyph
Befintlig kontextuell shaping, bidirectionell ordning, markörplacering över stilar, radbrytning, explicita styckebrytningar samt widgetrotation tillämpas på de upplösta appearance-körningarna
Värden och transaktioner
Fallback-körningar existerar bara under förberedelsen av appearance; anroparens körningar förblir oförändrade och dokumentet lagrar det ursprungliga plain-värdet samt författad rich-markup i V och RV
Typade punktstorlekar och RGB-komponenter skickas direkt till appearancelayouten utan att byggas om från det serialiserade rich-värdet, vars kanoniska textrepresentation har sin egen precision
Familje-medvetna FDF- och XFDF-importer accepterar samma alternativ och behåller sina befintliga kontrakt för oföränderlig källa, signatur, säkerhet, semantisk no-op och publicering
Gränser och beroenden
Den sammanlagda gränsen MaxFontBytes räknar varje familj-/stilprogram som inspekteras under fallback, inklusive giltiga kandidater som till slut inte bäddas in; appearancen bäddar endast in de valda stilarna
Befintliga budgetar för UTF-16-indata, glyphs, objekt och bytes gäller fortsatt, och upplösningen kan producera högst 4096 stylade körningar; avbrott kontrolleras under teckensnittsval och skalär täckning samt under layout och publicering
Komplex shaping behåller de befintliga beroendena HarfBuzz och FriBidi; fallback använder enbart levererade teckensnittsbytes, utan implicit upptäckt av systemteckensnitt, generiska alias, nerladdade teckensnitt eller nerladdade stilmallar; explicita ordnade listor med teckensnittskandidater behåller stödd inline-CSS-familjeordning
Nativa familje-API:er exponerar detta alternativ; namngiven Linux-familj i JSON accepterar samma valbara flagga och förbereder faktiska kandidatprogram; fallback-laddning via Windows-callback återstår som separat arbete
Godkännande
Sex nativa kompilatormål klarar vardera 199 kontroller över 30 sparade PDF:er samt 1098 oberoende kontroller av värden, inbäddade teckensnitt, glyphs, shaping, precision, rader och synliga pixlar; faktiska delmängds- och fullständiga teckensnittsprogram täcker alla fyra stilar, kombinerande markörer över stilar, arabisk sammanslutning, hebreiska, kompletterande joiners, ordnade familjekandidater, AES R5/R6, FDF/XFDF, typade budgetar samt åtta utvalda avbrottskontrollpunkter inklusive den sista
Färska C++Builder-gränssnitt kompilerar båda arkitekturerna; genuin publicerad evidens för saknad glyph samt det lyckade faktiska beviset med primär/fallback/primär-widgetglyphs bevaras separat