Native FreeText default appearances

Nativní FreeText fallback aplikuje ohraničený stav default-appearance na generovaný text, layout, automatické přizpůsobení i dekorace

Dodaný normal appearance má přednost před generováním z FreeText default appearance a rich textu

Operátory default-appearance

OperátoryChování fallbacku
TfVybere původní font resource a velikost textu; velikost nula žádá ohraničené automatické přizpůsobení
g rg kInicializuje barvu výplně textu v gray, RGB či CMYK
Tc Tw TzAplikuje rozestup znaků, rozestup slov a horizontální textové měřítko na kreslení i měření layoutu
Ts TLAplikuje zdvih textu a explicitní rozestup baseliny, včetně nulového či záporného proředění
TmPřijímá nejvýše jednu matici; její lineární část transformuje generovaný text, zatímco umístění určuje layout anotace
TrVybere režimy kreslení glyfů a textového clipingu od nuly do sedmi
G RG K w J j M dInicializuje barvu tahu, šířku, cap, join, miter a dash stav pro text i generované dekorace

Translační operandy matice se validují, ale nenahrazují umístění FreeText uvnitř jeho anotačního obdélníku

Horizontální měřítko může být nula či záporné; zdvih, rozestupy i lineární matice vstupují do transformované geometrie glyfů, posunů i dekorací

Toto je ohraničený profil default-appearance, nikoli obecný interpret PDF content streamů; nepodporované operátory, neplatné počty operandů, poškozené hodnoty a opakované textové matice vedou k rendering chybě

Složky barvy tahu musí být v rozsahu nula až jedna, hodnoty cap a join musí být celá čísla od nuly do dvou, šířka nesmí být záporná a miter limit musí být nejméně jedna

Dash pole může obsahovat nejvýše 256 nezáporných konečných hodnot a neprázdné pole musí obsahovat kladnou hodnotu; prázdné pole vybírá plné tahy, liché pole se opakuje a fáze musí být nezáporná

Layout, obtékání a umístění

Zarovnání FreeText používá viditelné posuny pro levé, středové či pravé umístění; kódované koncové mezery a jejich zdrojová mapování zůstávají přítomny, když generovaný stream tyto fragmenty uchová

Obtékání na hranicích slov a tvrdé konce odstavců mají samostatné zpracování; nezalomitelná mezera se nestane obyčejným ASCII měkkým oddělovačem

Původní raw-font cesta si zachovává svá ohraničená pravidla pro mezery a dělení spojovníkem; tato množina přijetí nepokrývá každý Unicode případ lámání řádků, obousměrného textu či komplexního tvarování

Fyzický anotační obdélník, meze kořenového Formu a vnitřní clip zůstávají pevné; dočasná meze podřízených Formů zohledňují kompletní řetězec předků a umístění

Kreslení glyfů a textový clipping

TrGlyph paintPřínos clipu
0VýplňŽádný
1TahŽádný
2Výplň a tahŽádný
3Žádné kreslení glyfůŽádný
4VýplňObrysy glyfů
5TahObrysy glyfů
6Výplň a tahObrysy glyfů
7Žádné kreslení glyfůObrysy glyfů

Režimy čtyři až sedm hromadí obrysy glyfů napříč generovanými běhy v jednom textovém objektu; nahromaděný textový clip se aplikuje po daném textovém objektu na následné generované dekorace podtržení a přeškrtnutí

Clip používá obrysy glyfů, nikoli rozšířenou siluetu tahu; stav kreslení zůstává specifický pro každý běh a obalující scope grafického stavu omezuje životnost clipu

Počáteční stav tahu DA se aplikuje v kořenovém dekorativním scope i v textových scopech; přepisy per běh i save/restore grafického stavu si zachovávají svůj význam

Čtyři kladné případy clipingu jsou samostatná akceptační brána s ručně psanými dvouběhovými appearances, kladnými clipovanými dekoracemi a bílými vzorky mimo unii glyfů

Tato brána používá také witness vyplnění obdélníku explicitním appearance k testování backend textového clipingu; witness netvrdí, že generování chybějícího appearance vydává vyplnění obdélníku

Nezávislá validace čtečkami pro kladné Tr4 až Tr7 prošla čtyřmi konečnými dvouběhovými případy s oficiálním MuPDF 1.28.5 a Popplerem, včetně obou vnitřků glyfů, clipovaných dekorací a bílých vzorků mimo unii glyfů

Samostatná revize testu jen pro clip používá Scale4 k výběru kompletních pixelových buněk z nezměněných witness bodů v prostoru stránky; zachovává původní barevné prahy a ponechává normální rendering při Scale1

MuPDF 1.28.2 má problém kompatibility hranic clipingu, když změna barvy flushne jeden běh před pozdějším během ve stejném textovém objektu; dřívější běh může být z nahromaděných hranic clipu vynechán

Oficiální MuPDF 1.28.5 CLI a nezávisle pinovaný Poppler tyto nezměněné appearances přijaly; verze čteček a konečné kladné kontroly zůstávají oddělené od záruky pro každý rendering pipeline

Automatické přizpůsobení

Nulová velikost písma DA spustí ohraničené hledání zmenšování a dolaďování od počátečního generovaného layoutu, s použitím transformovaných cest glyfů, posunů i dekorací, a nikoli pouze netransformované výšky řádku

Rozšíření tahu zahrnuje konzervativní transformovanou podporu rohů s dash a square cap a miter spojů

Hledání zachovává zavedenou kvantizaci cest Cairo a FreeType; neslibuje matematicky největší ideální velikost písma ani identické hinting napříč čtečkami

Pokud se žádný pokus nevejde, dřív než ohraničené hledání dosáhne svého minima, fyzický clip i tak omezuje publikaci; velmi dlouhý obsah nemusí zůstat celý viditelný

Původní písma a limity zdrojů

Původní vložené Type1C, CIDFontType0C a holý Type1 fallback jsou už podporované; kompletní OpenType CFF a CFF2 cesty appearance default instance si zachovávají zdokumentovaná mapovací a vkládací pravidla

Samostatné raw CFF2 streamy a výběr výchozích variation souřadnic zůstávají mimo vydanou CFF2 cestu

Limity tokenů, objektů, pracovní paměti, operací, dekódovaných dat i výstupu se vztahují na parsování, dočasné zdroje, přizpůsobení i publikaci; zrušení je dotazováno během ohraničené práce

Selhání zachovává zdrojový graf a dovoluje obnovu ve stejném dokumentu; dosažení limitu nemění částečně generované appearance v úspěšný výsledek

Reprodukovatelná akceptace a zbývající hranice

Veřejná sada je Tests/Linux/AnnotationDefaultAppearance/RunAnnotationDefaultAppearance.py, distribuovaná se svými assety a kompletním manifestem archivu

Normální režim běží 45 dvojic kandidát/ručně psaný AP při maximálním rozdílu kanálu dva, sedm skupin původních limitů a nezávislou spojitou geometrii původních AP při epsilon 1e-6

Kladná čtení původních AP čtečkami a známá vertikální pozorování pixelových buněk se zaznamenávají odděleně od spojité geometrie; ani rovnost dvojic ani ta konečná pozorování nedokazují libovolnou geometrii generovaných kandidátů či libovolné transformované rastrové obálky

Režim finite-AP kontroluje šest zachovaných explicitních appearance afinních a dash kontrol; nenahrazuje normální akceptaci, kontroly generovaných kandidátů ani limitní testy

Zachovaných 45 generovaných appearances prošlo nezávislou spojitou geometrií při epsilon 1e-6; jejich 90 pinovaných čtečkových obrázků MuPDF a Poppler také prošlo nezávislým full-image modelem přes všech 3,168,000 pixelových buněk s maximálním rozdílem kanálu nula, bez přeskočených obrázků a bez vynechaných buněk

Tento finite model odvozuje očekávané glyfy, transformace, cliping, tahy a skládání z původních ručně psaných appearances a obrysů písem, s využitím pinovaného FreeType jádra každé čtečky; neučí se očekávané pixely z pozorovaných obrázků

Původní maximální rozdíl kanálu zůstává dva a práh inku zůstává 245; tyto průchody pokrývají zachovaný korpus a pinované pipeline, nikoli libovolná písma, všechna sestavení rendererů ani důkaz matematicky největší přizpůsobené velikosti

Linuxové a Windows FPC cíle vyžadují FPC 3.3.1 či novější; Windows FPC používá samostatně ověřené soukromé NoGUI závislosti a žádné spouštění desktopového čteče

Související témata: annotation fallback, anotační dekorace, rich-text run spacing, původní raw-font appearances a appearances OpenType CFF2 default instance