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átory | Chování fallbacku |
|---|---|
Tf | Vybere původní font resource a velikost textu; velikost nula žádá ohraničené automatické přizpůsobení |
g rg k | Inicializuje barvu výplně textu v gray, RGB či CMYK |
Tc Tw Tz | Aplikuje rozestup znaků, rozestup slov a horizontální textové měřítko na kreslení i měření layoutu |
Ts TL | Aplikuje zdvih textu a explicitní rozestup baseliny, včetně nulového či záporného proředění |
Tm | Přijímá nejvýše jednu matici; její lineární část transformuje generovaný text, zatímco umístění určuje layout anotace |
Tr | Vybere režimy kreslení glyfů a textového clipingu od nuly do sedmi |
G RG K w J j M d | Inicializuje 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
Tr | Glyph paint | Přínos clipu |
|---|---|---|
| 0 | Výplň | Žádný |
| 1 | Tah | Žádný |
| 2 | Výplň a tah | Žádný |
| 3 | Žádné kreslení glyfů | Žádný |
| 4 | Výplň | Obrysy glyfů |
| 5 | Tah | Obrysy glyfů |
| 6 | Výplň a tah | Obrysy 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