Natywne domyślne wyglądy FreeText
Natywny fallback FreeText nakłada ograniczony stan default appearance na generowany tekst, layout, automatyczne dopasowanie i dekoracje
Dostarczony normalny wygląd ma pierwszeństwo przed generowaniem z domyślnego wyglądu FreeText i rich textu
Operatory default appearance
| Operatory | Zachowanie fallbacku |
|---|---|
Tf | Wybiera oryginalny zasób fontu i rozmiar tekstu; rozmiar zero żąda ograniczonego automatycznego dopasowania |
g rg k | Inicjalizuje kolor wypełnienia tekstu w gray, RGB albo CMYK |
Tc Tw Tz | Nakłada character spacing, word spacing i poziomą skalę tekstu na malowanie i pomiary layoutu |
Ts TL | Nakłada text rise i jawne rozdzielenie linii bazowej, włącznie z zerową albo ujemną interlinią |
Tm | Akceptuje co najwyżej jedną macierz; jej część liniowa transformuje generowany tekst, a layout adnotacji decyduje o umiejscowieniu |
Tr | Wybiera tryby malowania glifów i przycinania tekstu od zera do siedmiu |
G RG K w J j M d | Inicjalizuje kolor, szerokość, kapitalik, łączenie, miter i stan kreskowania dla tekstu i generowanych dekoracji |
Operandy translacji macierzy są walidowane, ale nie podmieniają umiejscowienia FreeText w jego prostokącie adnotacji
Skala pozioma może być zerowa albo ujemna; rise, spacing i macierz liniowa uczestniczą w transformowanej geometrii glifów, posuwów i dekoracji
To ograniczony profil default appearance, nie ogólny interpreter strumieni zawartości PDF; nieobsługiwane operatory, złe liczby operandów, zniekształcone wartości i powtórzone macierze tekstu produkują błąd renderowania
Składniki koloru obrysu muszą mieścić się w zakresie od zera do jedynki, wartości kapitalików i łączeń muszą być integerami od zera do dwóch, szerokość musi być nieujemna, a limit mitera co najmniej jeden
Tablica kreskowania może zawierać co najwyżej 256 nieujemnych skończonych wartości, a niepusta tablica musi zawierać wartość dodatnią; pusta tablica wybiera pełne obrysy, nieparzysta tablica się powtarza, a faza musi być nieujemna
Layout, zawijanie i umiejscowienie
Wyrównanie FreeText używa widocznych posuwów dla umiejscowienia do lewej, środka albo prawej; zakodowane końcowe spacje i ich mapowania źródłowe pozostają obecne, gdy wygenerowany strumień zachowuje te fragmenty
Zawijanie po granicach słów i twarde łamania akapitów mają osobną obsługę; twarda spacja nie staje się zwykłym miękkim separatorem ASCII
Oryginalna ścieżka raw font zachowuje swoje ograniczone reguły zawijania spacji i łączników; ten zbiór akceptacji nie rozstrzyga każdego przypadku łamania linii Unicode, dwukierunkowości ani złożonego kształtowania
Fizyczny prostokąt adnotacji, granice Formu korzenia i wewnętrzne przycięcie pozostają stałe; tymczasowe granice Formów potomnych uwzględniają kompletny łańcuch przodków i umiejscowienia
Malowanie glifów i przycinanie tekstu
Tr | Malowanie glifów | Wkład do przycięcia |
|---|---|---|
| 0 | Wypełnienie | Brak |
| 1 | Obrys | Brak |
| 2 | Wypełnienie i obrys | Brak |
| 3 | Brak malowania glifów | Brak |
| 4 | Wypełnienie | Kontury glifów |
| 5 | Obrys | Kontury glifów |
| 6 | Wypełnienie i obrys | Kontury glifów |
| 7 | Brak malowania glifów | Kontury glifów |
Tryby od czterech do siedmiu akumulują kontury glifów między generowanymi runami w jednym obiekcie tekstu; zakumulowane przycięcie tekstu działa po tym obiekcie tekstu na kolejne generowane dekoracje podkreślenia i przekreślenia
Przycięcie używa konturów glifów zamiast rozszerzonego sylwetkowego obrysu; stan malowania pozostaje specyficzny dla każdego runa, a obejmujący zakres stanu grafiki ogranicza czas życia przycięcia
Początkowy stan obrysu DA jest nakładany także w zakresie dekoracji korzenia oraz w zakresach tekstu; nadpisania per run i zapisywanie/przywracanie stanu grafiki zachowują swoje znaczenie
Cztery pozytywne przypadki przycinania to osobna brama akceptacji z ręcznie pisanymi wyglądami dwóch runów, pozytywnymi przyciętymi dekoracjami i białymi próbkami poza unią glifów
Ta brama używa też świadka wypełnienia prostokąta jawnego wyglądu do testowania przycinania tekstu w backendzie; świadek nie twierdzi, że generowanie brakującego wyglądu emituje wypełnienie prostokąta
Niezależna walidacja czytelników dla pozytywnych Tr4 do Tr7 przeszła cztery skończone przypadki dwóch runów z oficjalnym MuPDF 1.28.5 i Popplerem, włącznie z oboma wnętrzami glifów, przyciętymi dekoracjami i białymi próbkami poza unią glifów
Osobna rewizja testów tylko-przycinania używa Scale4 do wyboru kompletnych komórek pikseli z niezmienionych punktów świadka w przestrzeni strony; zachowuje oryginalne progi kolorów i zostawia normalne45 renderowanie na Scale1
MuPDF 1.28.2 ma problem zgodności granic przycinania, gdy zmiana koloru flushuje jeden run przed późniejszym runem w tym samym obiekcie tekstu; wcześniejszy run może być wykluczony z zakumulowanych granic przycięcia
Oficjalne CLI MuPDF 1.28.5 i niezależnie przypięty Poppler zaakceptowały te niezmienione wyglądy; wersje czytelników i skończone pozytywne kontrole pozostają czymś innym niż gwarancja dla każdego pipeline'u renderowania
Automatyczne dopasowanie
Rozmiar fontu DA równy zero startuje ograniczone wyszukiwanie z kurczeniem i rafinacją od początkowego wygenerowanego layoutu, używając transformowanych ścieżek glifów, posuwów i dekoracji zamiast tylko nieprzekształconej wysokości linii
Ekspansja obrysu obejmuje konserwatywną transformowaną podporę kreskowanych narożników z kwadratowym kapitalikiem i połączeń miter
Wyszukiwanie zachowuje ustaloną kwantyzację ścieżek Cairo i FreeType; nie obiecuje matematycznie największego idealnego rozmiaru fontu ani identycznego hintingu między czytelnikami
Jeśli żadna próba nie pasuje zanim ograniczone wyszukiwanie osiągnie swoją minimalną próbę, fizyczne przycięcie nadal ogranicza publikację; bardzo długa zawartość nie ma gwarancji pełnej widoczności
Oryginalne fonty i limity zasobów
Oryginalne osadzone Type1C, CIDFontType0C i goły fallback Type1 są już obsługiwane; kompletne ścieżki wyglądów OpenType CFF i CFF2 default instance zachowują swoje udokumentowane reguły mapowania i osadzania
Samodzielne surowe strumienie CFF2 i wybór niedomyślnych współrzędnych wariacji pozostają poza wydaną ścieżką CFF2
Limity tokenów, obiektów, pamięci roboczej, operacji, zdekodowanych danych i wyjścia obowiązują w parsowaniu, tymczasowych zasobach, dopasowaniu i publikacji; anulowanie jest odpytywane podczas ograniczonej pracy
Niepowodzenie zachowuje graf źródła i pozwala na odzyskanie w tym samym dokumencie; osiągnięcie limitu nie zmienia częściowo wygenerowanego wyglądu w udany wynik
Reprodukowalna akceptacja i pozostałe granice
Publiczna suita to Tests/Linux/AnnotationDefaultAppearance/RunAnnotationDefaultAppearance.py, dystrybuowana z zasobami i kompletnym manifestem archiwum
Jej tryb normalny uruchamia 45 par candidate/handwritten-AP przy maksymalnej różnicy kanałów dwa, siedem oryginalnych grup limitów i niezależną ciągłą geometrię oryginalnych AP przy epsilon 1e-6
Pozytywne rendery czytelników oryginalnych AP i znane pionowe obserwacje komórek pikseli są rejestrowane osobno od ciągłej geometrii; ani równość par, ani te skończone obserwacje nie dowodzą dowolnej geometrii generowanych kandydatów ani dowolnych transformowanych obwiedni rastrów
Tryb finite-AP sprawdza sześć zachowanych kontroli affine i kreskowania jawnego wyglądu; nie zastępuje normalnej akceptacji, checków generowanych kandydatów ani testów limitów
Zachowane 45 wygenerowanych wyglądów przeszło niezależną ciągłą geometrię przy epsilon 1e-6; ich 90 przypiętych obrazów czytelników MuPDF i Poppler przeszło też niezależny model całego obrazu po wszystkich 3.168.000 komórek pikseli z maksymalną różnicą kanałów zero, bez pominiętych obrazów i bez wykluczonych komórek
Ten skończony model wyprowadza oczekiwane glify, transformacje, przycinanie, obrysy i kompozycję z oryginalnych ręcznie pisanych wyglądów i konturów fontów, używając przypiętego kernela FreeType każdego czytelnika; nie uczy się oczekiwanych pikseli z obserwowanych obrazów
Oryginalna maksymalna różnica kanałów pozostaje dwa, a próg tuszu 245; te przejścia pokrywają zachowany korpus i przypięte pipeline'y, nie dowolne fonty, wszystkie buildy rendererów ani dowód matematycznie największego dopasowanego rozmiaru
Targety FPC Linux i Windows wymagają FPC 3.3.1 albo nowszego; Windows FPC używa osobno zweryfikowanego prywatnego buildu zależności NoGUI i bez uruchamiania desktopowego czytelnika
Powiązane tematy: fallback adnotacji, dekoracje adnotacji, run spacing rich textu, oryginalne wyglądy raw fontów i wyglądy default instance OpenType CFF2