HINTOVANJE
Olivera Stojadinović
avgust 2006.
Mnogi fontovi izgledaju sasvim drugačije kada se gledaju na monitoru i kada se odštampaju. Dešava se da su na ekranu stubovi različitih debljina a da su visine slova čas manje čas veće, pa su često i širine slova i razmaci među njima nelogični, a taj izgled se razlikuje pri promeni veličine fonta ili uvećanja na ekranu. Naprotiv, te nepravilnosti se gube kada se tekst odštampa. To znači da je font dobro zamišljen i nacrtan, ali da nije (dobro) sprovedeno hintovanje – dodatno programiranje koje obezbeđuje ujednačen izgled slova u manjim veličinama i rezolucijama. Hintovanje je obavezno kod fontova koji su namenjeni prodaji i izvode ga stručnjaci zaduženi za produkciju. Međutim, programi za pravljenje fontova koji su dostupni (Fontographer, FontLab) omogućuju automatsko hintovanje koje može biti prilično uspešno pod uslovom da se prethodno izvrše potrebna podešavanja, pa takvo hintovanje može da izvede i sam dizajner.
U digitalnim fontovima slova su definisana vektorski, kao skup zatvorenih krivih linija koje oivičavaju površinu slova. Te linije su zapisane pomoću koordinata tačaka i krajeva njihovih tangenti. Vektorski zapis omogućava da se različite veličine slova dobijaju geometrijskim povećavanjem ili smanjivanjem postojećeg crteža.
Prilikom pojavljivanja slova na ekranu, osvetljavanja filma ili štampanja vektorski crtež mora da se pretvori u bitmapu, odnosno skup tačaka (piksela) na mreži čija je gustina određena rezolucijom izlaznog uređaja – ekrana, štampača ili osvetljivača. Što su rezolucija i veličina fonta veći, to slika preciznije prati oblike koji su definisani crtežom. Ukoliko su rezolucija ili veličina fonta manji, broj piksela koje su na raspolaganju za prikazivanje slova je manji, pa može da se desi da slika dosta odstupa od svog geometrijskog crteža. Veličina koja je za to merodavna je PPM (pixels per eM), odnosno broj piksela koji ulazi u visinu pisma (M-square). Ta veličina je najmanja pri ekranskom prikazu, pošto monitori imaju najmanju rezoluciju, pa je to razlog što neki fontovi na monitoru izgledaju mnogo lošije nego kada se odštampaju.
Veličina PPM izračunava se na sledeći način:
PPM = rezolucija [dpi] / 72 × veličina pisma [pt]
Tako će na ekranu čija je rezolucija 72 dpi (dots per inch) font od 12 pt (1pt = 1/72 inch) biti definisan pomoću 12 piksela, a ako je ekranska rezolucija 96 dpi – sa 16 piksela.
Proces u kome se geometrijski crtež pretvara u skup piksela naziva se rasterizacija. Linija koja oivičava oblik slova pada na rastersku mrežu i oni pikseli koji se nađu unutar crteža su crni – uključeni, a oni koji su izvan beli – isključeni. Međutim, treba definisati i granične piksele na koje pada sama linija crteža. Od toga koji od njih će biti uključeni a koji isključeni umnogome zavisi i izgled rasterizovanog slova. Pri različitim veličinama slova i rezolucijama rasterske mreže crtež slova će zauzimati drugačije pozicije Praktično, koordinate tačaka svaki put treba da se zaokruže na celobrojnu vrednost po određenom kriterijumu.
Da bi slova u fontu izgledala ujednačeno u različitim vrednostima PPM (za različite rezolucije i veličine slova) fontu se dodaju algoritmi – programi koji kontrolišu kako će se vršiti rasterizacija. Skup ovih instrukcija naziva se hintovima, a proces njihovog određivanja je hintovanje.
Pored vektorske definicije slova i njihovih razmaka, hintovi su bitna karakteristika fonta. U slučaju da se font pretvori u krive (kao što se ponekad radi prilikom slanja u štampariju) ostaju samo crteži slova sa zatečenim razmacima, a hintovi se gube, pa se ponekad dešava da sitna slova u štampi ispadnu deblje ili sa neujednačenim stubovima. Zbog toga je važno da slova ostanu u obliku fonta da bi se rasterizacija vršila onako kako je propisano hintovanjem.
PostScript i TrueType fontovi definisani su na različite načine, pa im se i hintovanje razlikuje. Kod PostScript formata vektorska definicija je jednostavnija, a hintovanje se lakše sprovodi. Kada se dobro podese parametri, automatsko hintovanje daje sasvim zadovoljavajuće rezultate. TrueType format predviđa tri vrste različitih programa (instrukcija) koji na različitim nivoima kontrolišu pozicioniranje tačaka prilikom rasterizacije. Ovi programi koriste poseban programski jezik i veoma su delotvorni, ali i komplikovani za primenu, pa se hintovanje TrueType fontova obično poverava ekspertima specijalizovanim za ovu oblast. Dobro urađeno TrueType hintovanje daje bolje rezultate od PostScript (Type 1) hintova u malim veličinama, posebno kod kurzivnih fontova.
Postoje hintovi na nivou fonta i u okviru pojedinačnih znakova.
Na nivou fonta definišu se zone poravnanja (alignment zones) i standardne širine stubova (stem widths), kao i kontrolni podaci koji dodatno određuju proces hintovanja.
U okviru znaka mogu se uneti hintovi horizontalnih i vertikalnih stubova (stem hints), dijagonalni i serifni hintovi. Type 1 hintovi su isključivo horizontalni i vertikalni (stem), a dijagonalni i serifni se dodaju kod TrueTupe formata.
Zone poravnanja kontrolišu ponašanje prepusta (okrugla slova i vrhovi prepušteni su ispod i iznad linije ravnih slova) pri malim vrednostima PPM (visinama pisma u pikselima). Donje i gornje zone poravnanja obuhvataju veličinu prepusta, kako za mala, tako i za velika slova. Takođe je definisan i pravac poravnanja, odnosno, okrugla slova pri malim veličinama teže da se poravnaju sa ravnim slovima (prepust se gubi). Osim ovih osnovnih zona poravnanja mogu biti definisane i pomoćne zone oko visina gornjih i donjih završetaka. Zone poravnanja nazivaju se još i plave zone (blue values).
Da bi ove zone bile pravilno definisane, treba voditi računa pri crtanju slova da sva ravna slova leže na osnovnoj liniji i da su podjednake visine, a da okrugla slova i vrhovi ne prelaze vrednosti prepusta.
U okviru fonta obično se nekoliko standardnih vrednosti širina stubova ponavlja kod različitih slova. Stubovi mogu biti horizontalni ili vertikalni, a njihovu širinu definiše ortogonalno rastojanje izmedu dve karakteristične tačke. Važno je da te tačke moraju da budu ekstremi, što znači da su im tangente horizontalne, odnosno vertikalne. (Kod dijagonalnih stubova širina se definiše pomoću dve zadate tačke koje ne moraju biti ekstremi.)
Da bi slova mogla pravilno da se hintuju, poželjno je da one elemente slova koje želimo da se uvek prikazuju podjednako nacrtamo precizno, tako da budu istih dimenzija. Tako treba da se međusobno ujednače, recimo, širine vertikalnih poteza malih slova, širine zaobljenih poteza malih slova, širine horizontalnih poteza malih slova, debljine serifa itd. Sve to se primenjuje i na velika slova i ostale znake.
Treći segment hintovanja na nivou fonta su dodatni kontrolni parametri. Pomoću njih se može zadati do koje vrednosti PPM se neće pojavljivati prepust, a takođe se može zadati tolerancija za širine stubova koje podležu hintovanju. Nazivi ovih parametara takođe nose oznaku "plavo": BlueScale, BlueShift, BlueFuzz. Kod automatskog hintovanja oni u startu imaju neke uobičajene početne vrednosti.
U okviru pojedinih slova takođe se sprovodi hintovanje, gde se osim veličina definisanih u okviru fonta hintuju i rastojanja karakteristična za to slovo, a to mogu da budu rastojanja između pojedinih elemenata, kao i širine belina, odnosno otvora.
Da bi se hintovanje pravilno sprovelo, potrebno je sledeće:
- Precizan crtež kod koga su ujednačene širine stubova, visine slova i veličine prepusta.
- Definisani ekstremi – tačke sa horizontalnim i vertikalnim tangentama (moguće je odrediti ih automatski).
- Pravilno odrediti početne tačke linije crteža (staza) i njihovo usmerenje (takođe se određuje automatski).
- Definisati zone poravnanja (automatski ili unošenjem graničnih vrednosti)
- Odrediti najčešće širine stubova (automatski ili merenjem i upisivanjem)
- Obeležiti vrste hintova koje podržava željeni format.
Prevelik broj hintova može da pokvari izgled slova. Kod PostScript fontova treba isključiti dijagonalne i serifne hintove, jer oni nisu definisani u tom formatu. Ukoliko automatsko hintovanje ne daje ispravan izgled nekog pojedinačnog znaka (slova), hintovi se mogu dodati ili oduzeti manuelno.
Type 1 hint je definisan pomoću dve karakteristične tačke i ima određen smer. Prikazan je kao horizontalna ili vertikalna duž sa strelicom koja označava smer. Postoje pravila o međusobnom položaju Type 1 hintova. Oni se ne mogu nastavljati jedan na drugi, a takođe se ne smeju ni preklapati.
Poteškoća koja se javlja kod PostScript-a je hintovanje tri podjednako razmaknuta stuba. Oni ne mogu da se pravilno hintuju standardnim postupkom, nego slovo mora da se podeli na dva segmenta. Njihovi hintovi su naizmenično aktivni, pa se time izbegava preklapanje. Ovaj postupak zove se hint replacement (nije ga moguće primeniti u Fontographer-u, već samo u FontLab-u).
Kada je u pitanju TrueType format, hintovanje je sasvim drugačije. Za svaki znak se kreira poseban program koji kontroliše pomeranje tačaka pri promeni veličine PPM. Postoje tri vrste instrukcija: opšti program (naziva se Font Program) stupa u dejstvo kada se font pozove. Drugi opšti program (PPM Program) deluje pri promeni veličine PPM. Lokalni programi (Glyph Programs) deluju za svako pojedinačno slovo pri promeni njegove veličine. Tačke čije se pomeranje kontroliše zovu se touched points, a položaji ostalih tačaka dobijaju se interpolacijom. Osim stubova, koji mogu biti i kosi, kao i otvora, hintuju se i serifi. Tačke se povezuju pomoću stubova (stems), jednostrukih i dvostrukih veza (links), a poslednja korekcija vrši se pomoću tzv. delta-hintova.
Iako je postupak hintovanja različit nego kod PostScript formata, prepuručljivo je da se slova prvo nacrtaju i hintuju kao PostScript (Type 1), pa da se tek onda prebace u TrueType format. Pravilno unešeni Type 1 hintovi dobra su osnova za dalji rad na TrueType hintovima.
LITERATURA
Using Fontographer.pdf [1.77 kb]
FontLab Studio User's Manual
Adobe Systems: Basic Type 1 Hinting, by David Lemon
Microsoft: Introduction to [TrueType] Hinting
Microsoft: The Raster Tragedy at Low Resolution, by Beat Stamm
SIL: Notes on Hinting with FontLab, by Victor Gaultney
TrueType Typography: TrueType Hinting, by Laurence Penney
Will-Harris: Get The Hint! Tom Rickner interview