Native rich-text numeric math

Natywny dekoder rich textu XHTML ewaluuje skończone wyrażenia calc, min, max i clamp w font-size, rozmiarze shorthandu fontu i wysokości po ukośniku, line-height, letter-spacing i word-spacing

<body xmlns="http://www.w3.org/1999/xhtml" style="font-size:10pt;line-height:calc(1rem + 2pt)">
  <p style="letter-spacing:calc(.1em + 1pt);word-spacing:clamp(1pt, 3pt, 4pt)">Spaced text</p>
</body>

Ten przykład wylicza wysokość linii 12 punktów, letter spacing 2 punkty i word spacing 3 punkty, używając fontów dostarczonych przez wywołującego i istniejącego layoutu akapitów

Arytmetyka w nawiasach wspiera dodawanie, odejmowanie, mnożenie i dzielenie z pasującymi wymiarami dla sum; mnożenie i dzielenie śledzą potęgi długości, włącznie z skracaniem w wyrażeniu takim jak calc(20pt / 10pt * 6pt)

Binarny dodawanie i odejmowanie wymagają whitespace'u po obu stronach; min i max akceptują kompatybilne wyrażenia rozdzielane przecinkami, a clamp przyjmuje trzy kompatybilne wyrażenia, przy czym jego dolna granica wygrywa, gdy granice są odwrócone

Obsługiwane jednostki długości to pt, px przy 96 dpi, pc, in, cm, mm, q, em, rem, vw, vh, vmin i vmax; liczby dziesiętne i wykładnicze używają istniejącej skończonej konwersji dziesiętnej

Em i procenty font-size używają obliczonego rozmiaru fontu otoczenia; em i procenty line-height oraz em spacingu używają końcowego skaskadowanego rozmiaru fontu elementu deklarującego przed dziedziczeniem

rem używa obliczonego rozmiaru fontu body; własne wyrażenie font-size body używa początkowego rozmiaru korzenia z DefaultStyle.FontSize, a jego pozostałe metryki używają swojej końcowej obliczonej wielkości

Jednostki viewportu używają jawnych entrów width i height w MediaFeatures; te wymiary hosta to długości kompatybilne z punktami, a wymiary hosta em albo rem używają MediaInitialFontSize z jego istniejącym fallbackiem 12 punktów przy zerze

Wymiary hosta, rozdzielczość i niezerowe początkowe rozmiary fontu mediów zachowują istniejącą dolną granicę 0,000001 i górną 1000000; dokładne wartości dolnej granicy konsekwentnie używają współdzielonego porównania Double na wszystkich targetach kompilatorów, a wartości poniżej granicy pozostają odrzucane

vw wymaga width, vh wymaga height, a vmin albo vmax wymagają obu; brakujące wymiary pozostawiają deklarację niedopuszczoną, bez inferencji desktopu, rozmiaru strony ani viewportu przeglądarki

Line-height może wyliczyć się do bezjednostkowego dziedziczonego współczynnika albo długości punktowej; obliczone ujemne wysokości math są przycinane do zera, a font-size zachowuje swój istniejący dodatni zakres dopuszczania, a spacing długości punktowe ze znakiem

Letter i word spacing wymagają wyników długości; ich istniejąca składnia nagiego zera pozostaje dostępna, a spacing procentowy nie jest częścią tego profilu

Istniejąca kaskada per-property, priorytety important i jawne dziedziczenie obowiązują; odłożona matematyka linii i spacingu używa wygrywającego końcowego rozmiaru fontu, a shorthand fontu akceptuje spacje i dzielenie wewnątrz zbalansowanych funkcji math

Niepoprawne deklaracje fontu zachowują dopuszczony fallback; syntaktycznie dopuszczona wygrywająca metryka, która nie może wyliczyć się do skończonego ograniczonego wyniku, podnosi EHPDFHeadlessRichTextCodecError przed zwróceniem runów

Przekonwertowane wartości i zapisane wyniki arytmetyki binary64 muszą mieć wielkość co najwyżej 1e100, z potęgami długości od -64 do 64; istniejące budżety font-size i metryk nadal obowiązują

Mnożenie i dzielenie robią preflight skrajnych wartości przed operacją, żeby niemaskowane przepełnienie zmiennoprzecinkowe nie mogło uciec; końcowe checki używają tej samej granicy Double na wszystkich targetach kompilatorów, włącznie z subnormalnymi dzielnikami i wartościami na granicy profilu

Skany math honorują MaxNodes, a rekursywne wyrażenia honorują MaxDepth; anulowanie zachowuje EHPDFOperationCancelled i nie zwraca częściowych zdekodowanych runów, przy czym świeże i ponownie użyte opcje dekodowania pozostają używalne potem

Obliczone wartości punktowe zasilają rzeczywiste typowane wyglądy i kanoniczną serializację RV; importy rich FDF/XFDF profilu default używają tego samego dekodera bez transportowania własnych profili viewportu

Ten skończony profil nie dostarcza innych funkcji math CSS, stałych numerycznych, escape'owanych nazw funkcji math ani jednostek, jednostek fontu wywodzonych z metryk, logicznych ani dynamicznych jednostek viewportu, custom properties ani ogólnego layoutu CSS

Reguły arytmetyki i relatywne do korzenia podążają za obsługiwanymi częściami CSS Values and Units Level 4; ograniczony obsługiwany profil powyżej definiuje bieżące zachowanie biblioteki

Dekoder natywny · Opcje dekodowania · Line height · Run spacing · Font shorthand