ХИНТОВАЊЕ
Оливера Стојадиновић
август 2006.
Многи фонтови изгледају сасвим другачије када се гледају на монитору и када се одштампају. Дешава се да су на екрану стубови различитих дебљина а да су висине слова час мање час веће, па су често и ширине слова и размаци међу њима нелогични, а тај изглед се разликује при промени величине фонта или увећања на екрану. Напротив, те неправилности се губе када се текст одштампа. То значи да је фонт добро замишљен и нацртан, али да није (добро) спроведено хинтовање – додатно програмирање које обезбеђује уједначен изглед слова у мањим величинама и резолуцијама. Хинтовање је обавезно код фонтова који су намењени продаји и изводе га стручњаци задужени за продукцију. Међутим, програми за прављење фонтова који су доступни (Fontographer, FontLab) омогућују аутоматско хинтовање које може бити прилично успешно под условом да се претходно изврше потребна подешавања, па такво хинтовање може да изведе и сам дизајнер.
У дигиталним фонтовима слова су дефинисана векторски, као скуп затворених кривих линија које оивичавају површину слова. Те линије су записане помоћу координата тачака и крајева њихових тангенти. Векторски запис омогућава да се различите величине слова добијају геометријским повећавањем или смањивањем постојећег цртежа.
Приликом појављивања слова на екрану, осветљавања филма или штампања векторски цртеж мора да се претвори у битмапу, односно скуп тачака (пиксела) на мрежи чија је густина одређена резолуцијом излазног уређаја – екрана, штампача или осветљивача. Што су резолуција и величина фонта већи, то слика прецизније прати облике који су дефинисани цртежом. Уколико су резолуција или величина фонта мањи, број пиксела које су на располагању за приказивање слова је мањи, па може да се деси да слика доста одступа од свог геометријског цртежа. Величина која је за то меродавна је PPM (pixels per eM), односно број пиксела који улази у висину писма (M-square). Та величина је најмања при екранском приказу, пошто монитори имају најмању резолуцију, па је то разлог што неки фонтови на монитору изгледају много лошије него када се одштампају.
Величина PPM израчунава се на следећи начин:
PPM = резолуција [dpi] / 72 × величина писма [pt]
Тако ће на екрану чија је резолуција 72 dpi (dots per inch) фонт од 12 pt (1pt = 1/72 inch) бити дефинисан помоћу 12 пиксела, а ако је екранска резолуција 96 dpi – са 16 пиксела.
Процес у коме се геометријски цртеж претвара у скуп пиксела назива се растеризација. Линија која оивичава облик слова пада на растерску мрежу и они пиксели који се нађу унутар цртежа су црни – укључени, а они који су изван бели – искључени. Међутим, треба дефинисати и граничне пикселе на које пада сама линија цртежа. Од тога који од њих ће бити укључени а који искључени умногоме зависи и изглед растеризованог слова. При различитим величинама слова и резолуцијама растерске мреже цртеж слова ће заузимати другачије позиције Практично, координате тачака сваки пут треба да се заокруже на целобројну вредност по одређеном критеријуму.
Да би слова у фонту изгледала уједначено у различитим вредностима PPM (за различите резолуције и величине слова) фонту се додају алгоритми – програми који контролишу како ће се вршити растеризација. Скуп ових инструкција назива се хинтовима, а процес њиховог одређивања је хинтовање.
Поред векторске дефиниције слова и њихових размака, хинтови су битна карактеристика фонта. У случају да се фонт претвори у криве (као што се понекад ради приликом слања у штампарију) остају само цртежи слова са затеченим размацима, а хинтови се губе, па се понекад дешава да ситна слова у штампи испадну дебље или са неуједначеним стубовима. Због тога је важно да слова остану у облику фонта да би се растеризација вршила онако како је прописано хинтовањем.
PostScript и TrueType фонтови дефинисани су на различите начине, па им се и хинтовање разликује. Код PostScript формата векторска дефиниција је једноставнија, а хинтовање се лакше спроводи. Када се добро подесе параметри, аутоматско хинтовање даје сасвим задовољавајуће резултате. TrueType формат предвиђа три врсте различитих програма (инструкција) који на различитим нивоима контролишу позиционирање тачака приликом растеризације. Ови програми користе посебан програмски језик и веома су делотворни, али и компликовани за примену, па се хинтовање TrueType фонтова обично поверава експертима специјализованим за ову област. Добро урађено TrueType хинтовање даје боље резултате од PostScript (Type 1) хинтова у малим величинама, посебно код курзивних фонтова.
Постоје хинтови на нивоу фонта и у оквиру појединачних знакова.
На нивоу фонта дефинишу се зоне поравнања (alignment zones) и стандардне ширине стубова (stem widths), као и контролни подаци који додатно одређују процес хинтовања.
У оквиру знака могу се унети хинтови хоризонталних и вертикалних стубова (stem hints), дијагонални и серифни хинтови. Type 1 хинтови су искључиво хоризонтални и вертикални (stem), а дијагонални и серифни се додају код TrueTupe формата.
Зоне поравнања контролишу понашање препуста (округла слова и врхови препуштени су испод и изнад линије равних слова) при малим вредностима PPM (висинама писма у пикселима). Доње и горње зоне поравнања обухватају величину препуста, како за мала, тако и за велика слова. Такође је дефинисан и правац поравнања, односно, округла слова при малим величинама теже да се поравнају са равним словима (препуст се губи). Осим ових основних зона поравнања могу бити дефинисане и помоћне зоне око висина горњих и доњих завршетака. Зоне поравнања називају се још и плаве зоне (blue values).
Да би ове зоне биле правилно дефинисане, треба водити рачуна при цртању слова да сва равна слова леже на основној линији и да су подједнаке висине, а да округла слова и врхови не прелазе вредности препуста.
У оквиру фонта обично се неколико стандардних вредности ширина стубова понавља код различитих слова. Стубови могу бити хоризонтални или вертикални, а њихову ширину дефинише ортогонално растојање измеду две карактеристичне тачке. Важно је да те тачке морају да буду екстреми, што значи да су им тангенте хоризонталне, односно вертикалне. (Код дијагоналних стубова ширина се дефинише помоћу две задате тачке које не морају бити екстреми.)
Да би слова могла правилно да се хинтују, пожељно је да оне елементе слова које желимо да се увек приказују подједнако нацртамо прецизно, тако да буду истих димензија. Тако треба да се међусобно уједначе, рецимо, ширине вертикалних потеза малих слова, ширине заобљених потеза малих слова, ширине хоризонталних потеза малих слова, дебљине серифа итд. Све то се примењује и на велика слова и остале знаке.
Трећи сегмент хинтовања на нивоу фонта су додатни контролни параметри. Помоћу њих се може задати до које вредности PPM се неће појављивати препуст, а такође се може задати толеранција за ширине стубова које подлежу хинтовању. Називи ових параметара такође носе ознаку „плаво”: BlueScale, BlueShift, BlueFuzz. Код аутоматског хинтовања они у старту имају неке уобичајене почетне вредности.
У оквиру појединих слова такође се спроводи хинтовање, где се осим величина дефинисаних у оквиру фонта хинтују и растојања карактеристична за то слово, а то могу да буду растојања између појединих елемената, као и ширине белина, односно отвора.
Да би се хинтовање правилно спровело, потребно је следеће:
- Прецизан цртеж код кога су уједначене ширине стубова, висине слова и величине препуста.
- Дефинисани екстреми – тачке са хоризонталним и вертикалним тангентама (могуће је одредити их аутоматски).
- Правилно одредити почетне тачке линије цртежа (стаза) и њихово усмерење (такође се одређује аутоматски).
- Дефинисати зоне поравнања (аутоматски или уношењем граничних вредности)
- Одредити најчешће ширине стубова (аутоматски или мерењем и уписивањем)
- Обележити врсте хинтова које подржава жељени формат.
Превелик број хинтова може да поквари изглед слова. Kod PostScript фонтова треба искључити дијагоналне и серифне хинтове, јер они нису дефинисани у том формату. Уколико аутоматско хинтовање не даје исправан изглед неког појединачног знака (слова), хинтови се могу додати или одузети мануелно.
Type 1 хинт је дефинисан помоћу две карактеристичне тачке и има одређен смер. Приказан је као хоризонтална или вертикална дуж са стрелицом која означава смер. Постоје правила о међусобном положају Type 1 хинтова. Они се не могу настављати један на други, а такође се не смеју ни преклапати.
Потешкоћа која се јавља код PostScript-a је хинтовање три подједнако размакнута стуба. Они не могу да се правилно хинтују стандардним поступком, него слово мора да се подели на два сегмента. Њихови хинтови су наизменично активни, па се тиме избегава преклапање. Овај поступак зове се hint replacement (није га могуће применити у Fontographer-у, већ само у FontLab-у).
Када је у питању TrueType формат, хинтовање је сасвим другачије. За сваки знак се креира посебан програм који контролише померање тачака при промени величине PPM. Постоје три врсте инструкција: општи програм (назива се Font Program) ступа у дејство када се фонт позове. Други општи програм (PPM Program) делује при промени величине PPM. Локални програми (Glyph Programs) делују за свако појединачно слово при промени његове величине. Тачке чије се померање контролише зову се touched points, а положаји осталих тачака добијају се интерполацијом. Осим стубова, који могу бити и коси, као и отвора, хинтују се и серифи. Тачке се повезују помоћу стубова (stems), једноструких и двоструких веза (links), а последња корекција врши се помоћу тзв. делта-хинтова.
Иако је поступак хинтовања различит него код PostScript формата, препуручљиво је да се слова прво нацртају и хинтују као PostScript (Type 1), па да се тек онда пребаце у TrueType формат. Правилно унешени Type 1 хинтови добра су основа за даљи рад на TrueType хинтовима.
ЛИТЕРАТУРА
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