Hinting

Z MruczekWiki

Hinting (również instructing) to proces stosowany w fontach polegający na zastosowaniu instrukcji matematycznych w celu dostosowania wyświetlania fontu tak, aby kontury były wyrównane do siatki (najczęściej pikseli matrycy), w celu uzyskania lepszego, bardziej klarownego obrazu. Instrukcje te noszą też nazwę podpowiedzi, gdyż w istocie "podpowiadają", jak ma się zachować silnik renderujący podczas rysowania fontów na ekranie.

W związku z postępującym zwiększaniem rozdzielczości ekranów a co za tym idzie zwiększaniem gęstości problem wyświetlania fontów na ekranie staje się coraz mniej rażący i część postuluje odejście od hintingu w przyszłości – co w sumie już nastąpiło w przypadku smartfonów, które za sprawą wysokich rozdzielczości i małej powierzchni ekranu posiadają znacznie większą gęstość pikseli niż ekran komputera. Pomimo tego, w 2021 hinting nadal pozostaje znaczącym czynnikiem mającym spory wpływ na jakość renderowania poszczególnych fontów w przypadku niektórych laptopów i większości komputerów stacjonarnych.

Opis

Większość krojów jest projektowana z myślą o tym, jak będą się prezentowały wydrukowane na kartce papieru w rozdzielczości ponad dziesięciokrotnie większej, niż większość ekranów komputerowych. Kształty poszczególnych glifów przechowywane są w pliku jako kontury zdefiniowane krzywymi Béziera (podobnie jak grafika wektorowa). Kontury te świetnie wyglądają w wysokich rozdzielczościach, ale ulegają sporemu zniekształceniu, gdy muszą być przekształcone do grupy pikseli, które tworzą wyświetlacz komputera, przez co czasem mogą nawet stać się nieczytelne.

Ze względu na ograniczenia wyświetlaczy postanowiono zaimplementować hinting – proces kontrolowania, jak poszczególne glify będą się wyświetlać przy danej rozdzielczości i rozmiarze fontu. Pierwszymi popularnymi fontami, które obficie korzystały z funkcji hintingu były chociażby Verdana oraz Georgia, które zostały pierwotnie zaprojektowane w każdym rozmiarze jako fonty bitmapowe (zwane również rastrowymi, które przechowywały jedynie które piksele są kolorowane, a które nie). Dopiero później zaprojektowano kontury, zaś hinting zrobiono manualnie tak, aby po wyrenderowaniu poszczególne kształty były zgodne z bitmapami w określonym rozmiarze.

Na tym polega hinting: jest to zestaw instrukcji, które pozwalają dokładnie doprecyzować, jak dany font jest renderowany na ekranie, czyli jak dany font jest przekształcany z konturów na poszczególne piksele matrycy. Hinting może kontrolować wysokość i szerokość dużych i małych liter, szerokość poszczególnych wierszy, odstępy między literami, kąt pochylenia w przypadku kursywy oraz wiele innych opcji, pozwalających na dokładne dostosowanie wyświetlania fontu co do piksela.

Hinting jest dość czasochłonnym procesem; manualny hinting nawet podstawowego fonta wspierającego jedynie najpowszechniejsze znaki może zająć nawet parędziesiąt godzin. Z tego względu powstało wiele narzędzi (między innymi ttfautohint) generujących hinting automatycznie – zwane autohinterami – z lepszymi bądź gorszymi efektami.

Typy

Różne rodzaje fontów inaczej sobie radzą w przypadku hintingu. Współcześnie większość fontów jest w formacie OpenType, najczęściej z rozszerzeniem .ttf lub .otf. Wyróżnia się ponadto dwa rodzaje fontów OpenType:

  • TrueType,
  • PostScript, czasem również nazywany Compact Font Format (CFF).

W przypadku fontów PostScript za hinting przeważnie odpowiada silnik – oprogramowanie rasteryzujące (rasteryzator) – więc fonty PostScript najczęściej posiadają prosty hinting wygenerowany przez program do edycji fontów, bądź również nie posiadają go wcale. Poszczególna jakość i klarowność renderowania fontów PostScript zależy więc od samego oprogramowania rasteryzującego.

Nieco inaczej sprawa wygląda w przypadku rodzaju TrueType. Oprogramowanie rasteryzujące w przypadku fontów TrueType przykłada sporą wagę do instrukcji, które znajdują się w foncie. Sam rasteryzator nie podejmuje decyzji odnośnie tego, jak wyrenderować dany font na ekranie, lecz posługuje się w tym celu instrukcjami, które są zestawem rozkazów w jaki sposób należy przekształcić poszczególne kształty przy określonym rozmiarze.

Oba te systemy mają swoje wady i zalety:

  • W przypadku systemu PostScript największym ograniczeniem jest sam rasteryzator, co jest sporą zaletą – każde ulepszenie oprogramowania rasteryzującego skutkuje znacznym ulepszeniem renderowania wszystkich fontów PostScript. Nawet stare 20-letnie fonty wyświetlane są ładnie na najnowszym Maku, którzy korzysta z systemu PostScript.
  • W systemie TrueType usprawnienie rasteryzatora wymaga również aktualizacji hintingu we wszystkich fontach w celu uzyskania optymalnych wyników. W związku z tym fonty przygotowane z myślą o renderowaniu czarno-białym bądź w skali szarości nie będą działać dobrze z rasteryzatorem ClearType w systemie Windows. Z drugiej strony, TrueType pozwala na bezpośrednią kontrolę nad procesem rasteryzacji, piksel po pikselu, czego nie można powiedzieć o hinting PostScript.

Apple (chociażby w macOS) wykorzystuje hinting PostScript, zaś Microsoft Windows wykorzystuje TrueType. Podstawową, zauważalną różnicą jest to, że rasteryzator Microsoftu wyrównuje poszczególne kształty do siatki pikseli, w wyniku czego odmiany zwykłe wyglądają na cienkie i lżejsze, zaś odmiany pogrubione na bardzo ciężkie; ponadto poszczególne kształty w małych rozmiarach ulegają sporemu zniekształceniu. Rasteryzator Microsoftu daje fenomenalne wyniki w przypadku paru wbudowanych fontów z ręcznym hintingiem, ale dość średnie w przypadku większości innych fontów. Rasteryzator Apple z kolei stara się zachować ogół kształtu danego kroju w jak największym stopniu, czasami kosztem klarowności. Pozwala to renderowanie wszystkich czcionek z równie dobrą jakością, niezależnie od ich formatu.

Ze względu na te fundamentalne różnice w przypadku rasteryzatorów, o hintingu najczęściej mówi się wyłącznie w przypadku fontów rodzaju TrueType przeznaczonych na system Windows.

Windows

Grid-fitting (czarno-białe)

Grid-fitting (dopasowanie do siatki, również czarno-biały hinting), został opracowany w czasach, gdy systemy operacyjne podczas renderowania fontów mogły jedynie "włączać" i "wyłączać" poszczególne piksele. Ten rodzaj podpowiedzi nazywa się dopasowaniem do siatki, gdyż kontury najczęściej były w taki sposób modyfikowane, aby pasowały do siatki pikseli na ekranie. W tym procesie również zazwyczaj dodaje się białe piksele pomiędzy poszczególnymi znakami w celu poprawy czytelności, co może powodować różnicę w długości między drukowaną, a ekranową wersją tekstu.

Nowsze technologie wyparły system czarno-białych podpowiedzi i umożliwiły bardziej wierne oddanie kształtu kroju na ekranie.

Greyscale rendering (skala szarości)

Greyscale rendering (hinting w skali szarości) opiera się o technikę antyaliasingu wprowadzoną w systemie Windows 98. Wygładza poszczególne krawędzie, używając odcieni szarości w renderowaniu tekstu na ekranie. Zamiast wyłącznie czarnych i białych pikseli, rasteryzator może wybierać piksele w odcieniach szarości, umożliwiając mniejsze zniekształcenie kształtu kroju.

Przy użyciu tego typu hintingu najczęściej stosuje się mniejszy zestaw instrukcji, gdyż nie ma potrzeby dopasowywania poszczególnych kształtów idealnie do siatki pikseli. Greyscale rendering jest również najlepszym systemem, który można zastosować na monitorach CRT; większość nowszych rasteryzatorów wykorzystuje technologie, które działają wyłącznie w przypadku ekranów LCD.

GDI ClearType

GDI ClearType to rasteryzator zaimplementowany przez Microsoft w systemie Windows XP (domyślnie wyłączony) oraz Windows Vista (domyślnie włączony). Wykorzystuje technologię renderowania subpikselowego (subpixel rendering), która polega na wykorzystaniu faktu, że w kolorowych wyświetlaczach LCD piksele składa się z czerwonych, zielonych i niebieskich subpikseli. Poprzez wykorzystanie odcieni czerwonego, niebieskiego i zielonego istnieje możliwość "oszukania" oka człowieka, w efekcie symulując znacznie wyższą rozdzielczość.

Instrukcje w systemie GDI ClearType są wyłącznie w osi poziomej, co skutecznie zmniejsza o połowę ilość pracy w procesie hintingu. Oznacza to, że rozdzielczość tekstu może być trzykrotnie większa, ale tylko w poziomie.

Z systemem Windows Vista ponadto dołączono zestaw fontów przystosowanych do ClearType, nazwanych przez Microsoft ClearType Font Collection. Należą do niego fonty Calibri, Cambria, Candara, Consolas, Constantia i Corbel.

Ze względu na różnice w tym jak poszczególne monitory tworzą obraz, ClearType najczęściej wymaga manualnego skonfigurowania przez użytkownika w przypadku gdy dane fonty są rysowane nieostro na ekranie.

Tekst renderowany przy użyciu rasteryzatora GDI ClearType jest często ostry i cienki. W przypadku większości niewbudowanych w system Windows fontów występują problemy ze znaczącym zniekształceniem kształtów oraz nierównym kolorze kroju na ekranie.

DirectWrite

Porównanie renderowania fontu PostScript w GDI (góra) i DirectWrite (dół).

DirectWrite jest nowym rasteryzatorem zaimplementowanym przez Microsoft w celu zastąpienia wcześniejszego renderera – GDI. Pierwotnie wydany wraz z Windowsem 7 i jest stosowany w większości współczesnych aplikacji (GDI jest stosowany przeważnie w przypadku aplikacji Win32). Stosuje antyaliasing zarówno w poziomie, jak i w pionie, przez co krzywe wyglądają znacznie bardziej gładko niż w przypadku wcześniejszego rasteryzatora.

Sam rasteryzator może wykorzystywać renderowanie subpikselowe ClearType, aczkolwiek w nowszych aplikacjach Microsoft odchodzi od tej technologii na rzecz innego ClearType wykorzystującego antyaliasing w odcieniach szarości, często nazywane Natural ClearType, ale przeważnie znane właśnie jako DirectWrite. Jest to spowodowane zapewnieniem wsparcia dla tabletów, gdzie stosowana może być również orientacja pionowa, oraz zwiększeniu rozdzielczości w ekranach komputerowych.

Aplikacje z pakietu Microsoft Office 2013 zaczęły korzystać z własnego silnika opartego na DirectWrite bez renderowania subpikselowego. Murray Sargent w następujący sposób argumentował tą decyzję:

Istnieje jeden problem z ClearType: działanie tej technologii zależy od koloru tła. Tego problemu nie ma przy założeniu, że tło jest białe, jak w przypadku tekstu. Ale w ogólnym przypadku wymagałoby to mnóstwa obliczeń dla danego koloru tła, co zajęłoby sporo czasu. Tymczasem Word 2013 oferuje fajne animacje i płynne powiększenie. Nic już nie przeskakuje. Nawet migająca pionowa linia w miejscu wstawiania tekstu płynnie przesuwa się z jednej pozycji do drugiej podczas pisania. Przeskakiwanie po prostu nie jest już fajne. Animacje i przybliżenia muszą być szybsze niż czas reakcji człowieka, aby wyglądały płynnie. A to wyklucza zastosowanie ClearType, przynajmniej na sprzęcie obecnej generacji. A w przyszłości ekrany będą miały wystarczająco wysoką rozdzielczość, aby wystarczył antyaliasing w skali szarości.

Najbardziej radykalną zmianą w DirectWrite jest znacząca poprawa renderowania fontów PostScript. Wcześniejsze rasteryzatory kompletnie nie radziły sobie z fontami PostScript, znacząco je zniekształcając i sprawiając, że są nieczytelne.

Zobacz też