Przejdź do głównej zawartości

Macierz obsługi czcionek i pism

Dwie klasy czcionek decydują o tym, które pisma mogą zostać wyrenderowane. Czcionki standard-14 (Helvetica, Times, Courier) obejmują repertuar WinAnsiEncoding i nic więcej. Zarejestrowana czcionka osadzona TrueType lub OpenType renderuje pismo tylko wtedy, gdy obsługują je zarówno mapa znaków czcionki, jak i bieżąca ścieżka kształtowania. Żadna klasa czcionek sama nie renderuje całego Unicode.

PismoCzcionki standard-14Zarejestrowana osadzona czcionka
Łacińskie zachodnioeuropejskieTak — pełny repertuar WinAnsiEncoding (Windows-1252)Tak
Akcenty łacińskie poza WinAnsi, greka, cyrylicaNieTam, gdzie obejmuje je mapa znaków czcionki
Chińskie, japońskie, koreańskie (CJK)NieTam, gdzie obejmuje je mapa znaków czcionki
Arabskie, perskie, urduNiePrzy kształtowaniu kontekstowym, tam, gdzie mapa znaków obejmuje blok Arabic Presentation Forms-B
HebrajskieNiePrzestawiane do kolejności wizualnej; bez kształtowania
Tajskie i inne pisma złożoneNieTam, gdzie obejmuje je mapa znaków; zaawansowane kształtowanie jest ograniczone

Rodziny standard-14 — Helvetica, Times i Courier — renderują pełny repertuar WinAnsiEncoding (Windows code page 1252): zachodnioeuropejską łacinę z akcentami, znak euro oraz typowe znaki interpunkcji typograficznej, w tym półpauzę i pauzę, cudzysłowy drukarskie, punktor, wielokropek i znak towarowy (ISO 32000-2 Annex D.2). Nie renderują żadnego innego pisma. Dla każdego znaku spoza tego repertuaru zarejestruj czcionkę osadzoną. Symbol i ZapfDingbats to dwa kroje standard-14, które nie mają zamiennika zgodnego metrycznie; zarejestruj czcionkę możliwą do osadzenia, gdy potrzebujesz któregoś z nich.

Przepływ pracy z czcionkami standardowymi opisuje Komponowanie tekstu z czcionkami i wyrównaniem.

Zarejestrowana czcionka TrueType lub OpenType renderuje Unicode tylko wtedy, gdy pokrycie zapewniają zarówno mapa znaków wybranej czcionki, jak i bieżąca ścieżka kształtowania. Samo zarejestrowanie czcionki nie gwarantuje glifu dla każdego punktu kodowego.

  • Pokrycie wynika z mapy znaków. Silnik rysuje glif dla punktu kodowego tylko wtedy, gdy osadzona czcionka odwzorowuje ten punkt na glif. Czcionka zaprojektowana dla jednego pisma nie wyrenderuje innego.
  • Łacina, greka, cyrylica i CJK są renderowane bezpośrednio z mapy znaków, po jednym glifie na punkt kodowy, gdy czcionka je obejmuje.
  • Arabski wymaga dodatkowo kształtowania kontekstowego — form liter początkowej, środkowej, końcowej i izolowanej oraz ligatury Lam-Alef — a także czcionki, której mapa znaków obejmuje blok Arabic Presentation Forms-B. Obsługa czcionek polegających wyłącznie na OpenType Glyph Substitution (GSUB) oraz ścieżka kształtowania HarfBuzz pozostają w zakresie przyszłych prac.
  • Pisma od prawej do lewej (arabskie, hebrajskie, perskie, urdu) są przestawiane do kolejności wizualnej zgodnie z algorytmem dwukierunkowym Unicode z Unicode Standard Annex (UAX) #9. Tekst hebrajski jest przestawiany, ale nie jest kształtowany, co jest poprawne dla tego pisma.

Zobacz Renderowanie arabskiego HTML od prawej do lewej, gdzie opisano kompletny przykład arabskiego oraz bieżące ograniczenia obsługi od prawej do lewej.