design studio logo

FontLab + OpenType: как добавить в шрифт капитель,
лигатуры и старостильные строчные цифры


30
AUG
'13






Все эти украшения будут работать только в шрифте .OTF:

http://www.fontlab.com/contact-and-support/faq/faq-fontlab-typetool-mdash-character-sets-and-encoding/

Q: How to make old style figures? With either TypeTool or FontLab can one take say the old style figures out of one font and replace the lining figures in another font? My major gripe about type providers is that inevitably, even so-called old style fonts, old style (lower case) figures are not provided.

A: If you're making Type 1 fonts or TrueType fonts without OpenType features, you can open two fonts and simply drag-drop old style figures from one font to another. FontLab will ask you about replacement of the existing characters if you want to keep them. If you wish to add old-style numerals as an OpenType feature, first rename the old style numerals from "one" to "one.onum" etc., move them to the first font, and finally add an "onum" feature.


Для них надо в Фонтлабе создавать глифы с именами такого вида:

A.smcp B.smcp C.smcp ... — для капители,
zero.oldstyle one.oldstyle two.oldstyle ... — для старостильных цифр
a.salt z.salt — для альтернативных начертаний
f_i f_f_i — для лигатур


Вот советы от Адама Твардоха (Adam Twardoch, FontLab, http://www.twardoch.com/):

Improved Unicode support in FontLab Studio 5
http://www.twardoch.com/download/unicode2005_fontlab5.pdf

For example, for a ligature of the glyphs 'c' and 't', use 'c_t' as glyph name. For a ligature of the glyphs 'f', 'f' and 'i', use 'f_f_i' as glyph name. For a ligature of 'longs' and 'i' use 'longs_i' as glyph name. For a ligature of the glyphs 'F.smcp', 'F.smcp' and 'I.smcp', use 'F_F_I.smcp' as glyph name. For a ligature of the glyphs 'R.salt' and 's.sups', use 'R_s.salt_sups' as glyph name. For the African E character use the glyph name 'E_dotbelowcomb_acutecomb'.




Порядок работы


1. Пишу текстовый файл [smallcaps.txt]:

A.smcp B.smcp C.smcp D.smcp E.smcp F.smcp G.smcp H.smcp I.smcp
J.smcp K.smcp L.smcp M.smcp N.smcp O.smcp P.smcp Q.smcp R.smcp
S.smcp T.smcp U.smcp V.smcp W.smcp X.smcp Y.smcp Z.smcp
zero.oldstyle one.oldstyle two.oldstyle three.oldstyle four.oldstyle
five.oldstyle six.oldstyle seven.oldstyle eight.oldstyle nine.oldstyle



2. Генерирую с его помощью в Фонтлабе новые глифы для капители и строчных цифр.

FontLab > Generate Glyphs (Ctrl-G) > Open glyph list > [smallcaps.txt]



3. Перерисовываю обычные цифры в строчные.



4. Перерисовываю прописные буквы в капитель с учётом этих особенностей:

4.1. Сохраняю толщину штамбов как у прописных, либо как у строчных.

Толщина штамбов как у прописных позволяет удачно использовать полученную капитель для подзаголовков. Кроме того, при использовании капители вместо строчных в капитализованных логотипах толщина всех штрихов прописных и капители должна строго совпадать.

Прямое масштабирование не годится, надо вручную двигать все узлы, следя за сохранением пропорций глифов, толщин всех штрихов и гармоничности получившейся капительной буквы. Она может быть схожа с прописной, но может и отличаться, если это решение продиктовано эстетическими соображениями.

Джон Хадсон (John Hudson, Tiro Typeworks, tiro.com/fonts.html) делает капитель так:

Deriving Small Capitals from Capitals

Well-designed Small Caps are more than just scaled-down versions of the Capital Letters. John Hudson gave some tips on how to make smallcaps efficiently in FontLab by starting with the capital letters as a foundation.

1. Scale the uppercase letter uniformly to the desired height and put into the background mask layer. This will be the guide not only for height, but also for internal space...

4.2. Высоту капители лучше делать не равной строчным, а чуть выше.

Чтобы не путать капитель со строчными, особенно кирилловскими, которые, исторически так повелось, мало отличаются от прописных, сами по себе представляют нечто похожее на капитель.

Ник Шинн (Nick Shinn, ShinnType, shinntype.com myfonts.com/search/shinntype/fonts/) даёт этому такое обоснование:

When I was working as an art director, I liked to use small caps, but for most fonts I found them much too short and small. So I always make the small caps in my fonts quite a bit taller than the x-height, so that they work OK in all-small-caps settings, and as acronyms. I suspect that many type designers make them to look good in a caps-with-small-caps setting, or to match a paragraph of caps-with-small-caps against a paragraph of upper and lower case, in a specimen. But that's not how they are generally used.

I have recently discovered another reason for bigger small caps -- Cyrillic. Because the lower case Cyrillic (especially in Russian) has the look of small caps, with capital letterforms and few extenders, it's necessary to bump up the size of the small caps in a typeface to get adequate differentiation.

С капителью традиционно применяются старостильные цифры. В табличной вёрстке старостильные цифры тоже могут применяться, но это скорее исключение, кроме того, в этом случае необходимо, чтобы они были не пропорциональными, а моноширинными.



5. Существуют скрипты для Фонтлаба, автоматизирующие этот процесс.

Там же, в обсуждении на Typophile:

There are two helpers for this:

If your font is MultipleMaster, with a weight axis, try Tim Ahrens' RMX Tuner: http://justanotherfoundry.com/tools/RMX/ This gives the best results that an automatic method can provide today, and should be your first choice.

If the font has a single axis only, you may try the Glyph Tweaker script: http://www.kltf.de/kltf_otproduction.htm [Scroll down a bit. Requires RoboFab and Dialog Kit.]

First measure basic stem widths and height of your caps. Then run the script and fill in these values, plus stem widths and height of the small caps.

The script relies on FLS' Bold function, so the outlines are only as good as this function allows. If you switch on FontAudit, you will see what I mean. Especially diagonals need corrections -- Bold cares for x and y directions only. Still this is a good starting point to get the proportions. I put these into the uppercase's mask layer and adjust uppercase by moving nodes or with John Hudson's method to match the automatically generated proportions.

In essence, what this script does is combining the operations which Charles Ellertson describes: scaling and bolding. I did not want to calculate scaling and bolding factors myself each time, and put the according formulas into a script.

Работу с первым из этих инструментов, максимально автоматизирующим процесс создания капители — Font Remix Tools: RMX Scaler Easy демонстрирует Алексей Ваняшин (110design.ru, fontlab.blogspot.ru):

FontLab: Капитель c помощью RMX Tools
(How to build Small Caps in FontLab using RMX Tools. Vimeo)
.



6. Также будет полезен макрос для Фонтлаба, позволяющий смещать узлы с сохранением пропорций их направляющих и прилегающих кривых: Interpolated Nudge: FontLab Macros.

Этот макрос инсталлируется в Фонтлаб так:

6.1. В \Documents and Settings\User\My Documents\FontLab\Studio 5\Macros\ надо создать директорию \InterpolatedNudge\

6.2. Забросить в неё скрипты из дистрибутива:

NudgeDown10.py
NudgeLeft10.py
...

6.2. В \Documents and Settings\User\My Documents\FontLab\Studio 5\Macros\System\Modules\ надо забросить скрипт:

InterpolateNode.py

6.3. Показать тулбар макросов в Фонтлабе:

FontLab > View > Toolbar > Macro

6.4. Обновить его, чтобы подгрузились изменения.

6.5. Во втором слева дропбоксе Macro Folders выбрать:

InterpolateNudge

6.6. Назначить командам сдвига узлов клавиатурные сокращения (правая иконка тулбара Assign to keyboard):

NudgeDown10 — Shift-Alt-1
NudgeUp10 — Shift-Alt-2
NudgeLeft10 — Shift-Alt-3
NudgeRight10 — Shift-Alt-4
...



7. И вот готовы глифы капители, строчных цифр, лигатур, альтернативных начертаний и чего угодно ещё. Теперь надо написать код, который укажет, что из этого как будет обрабатываться при применении шрифта в программах вёрстки.



8. Пишу текстовый файл для кода, описывающего создаваемые OpenType features шрифта [smallcaps.fea]. Пример синтаксиса беру из образца, найденного в:

\Documents and Settings\User\My Documents\FontLab\Studio 5\Samples\freefontpro.fea

Также можно заглянуть в OpenType features лежащего там же шрифта:

\Documents and Settings\User\My Documents\FontLab\Studio 5\Samples\freefontpro.vfb

		@FIG_STANDARD = [zero one two three four five six seven eight nine];
		@FIG_OLDSTYLE = [zero.oldstyle one.oldstyle two.oldstyle three.oldstyle 
			four.oldstyle five.oldstyle six.oldstyle seven.oldstyle 
			eight.oldstyle nine.oldstyle];

		@LETTERS_UC = [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z];
		@LETTERS_LC = [a b c d e f g h i j k l m n o p q r s t u v w x y z];
		@LETTERS_SC = [A.smcp B.smcp C.smcp D.smcp E.smcp F.smcp G.smcp H.smcp 
			I.smcp J.smcp K.smcp L.smcp M.smcp N.smcp O.smcp P.smcp Q.smcp 
			R.smcp S.smcp T.smcp U.smcp V.smcp W.smcp X.smcp Y.smcp Z.smcp];

		@LETTERS_STANDARD = [a z];
		@LETTERS_ALT = [a.salt z.salt];

		@LIGATURES = [f_i  f_f_i];

		feature smcp {
			sub @LETTERS_LC by @LETTERS_SC;
		} smcp;

		feature onum {
			sub @FIG_STANDARD by @FIG_OLDSTYLE;
			sub [numbersign percent perthousand] by [numbersign.taboldstyle 
				percent.oldstyle perthousand.oldstyle];
		} onum;

		feature lnum {
			sub @FIG_OLDSTYLE by @FIG_STANDARD;
		} lnum;

		feature liga {
			sub f f i by f_f_i;
			sub f i by f_i;
			sub a e by ae;
			sub o e by oe;
			sub A E by AE;
			sub O E by OE;
		} liga;

		feature salt { # Stylistic Alternates
			sub @LETTERS_STANDARD by @LETTERS_ALT;
		} salt;

		...
			


9. Открываю в Фонтлабе окно OpenType:

FontLab > Window > Panels > OpenType

Загружаю написанный код:

OpenType > Open Features > [smallcaps.fea]

Запускаю его компиляцию:

Compile

Если вылезают ошибки — исправляю.

Предупреждение:

[WARNING] [internal] Feature block seen before any language system statement. You should place languagesystem statements before any feature definition [.../FontLab/Studio 5/fontlab.fea 32]

можно игнорировать, либо по совету сотрудников Фонтлаба проапгрейдить FEA вручную с 1.6 (FLS 5.0.x — Adobe Font Development Kit for OpenType, AFDKO 1.6) до 2.5 (FLS 5.1.x, AFDKO 2.5).

Получается, рисовать шрифты — это задача не художника, а скорее программиста.



10. Генерирую шрифт с инсталляцией в систему:

FontLab > Generate Font (Crl-Alt-G) > .otf

Если вылезает ошибка:

ERROR: There was a problem while compiling OpenType font. Final .otf font is not saved. Please, check OpenType features definition for errors

то можно устроить танцы с бубнами:

http://typophile.com/node/33743, http://typophile.com/node/39191...

выловить все возможные ошибки в коде, методом исключения свести его к пустому файлу, выставить настройки Фонтлаба по советам других пострадавших, деинсталлировать сгенерированный прежде .OTF, и всё равно получать ошибку.

А дело оказывается в том, что Фонтлаб инсталлирует шрифт какими-то своими тайными методами, так, что ни система, ни Adobe Type Manager его после деинсталляции не видит, а он всё равно залочен. И при генерации шрифта Фонтлаб, ругаясь на синтаксис, не только не выдаёт указателя на строку, но попросту не понимает, что ошибка вызвана блокировкой итогового файла. Надо перезагрузиться после деинсталляции, и Фонтлаб сможет записать файл.

Следует отметить, что этот функционал Фонтлаба ещё крайне сырой, и требуется ввести в него в первую очередь обработчик ошибок кода OpenType features с непременным указанием на строку, которая вызвала сбой. Без этого поиск причины сбоя не то чтобы невозможен, но крайне затруднён. Не говоря уже об автоматизации средствами программы всех описываемых тонкостей, чтобы дизайнеру шрифта не приходилось настолько отвлекаться от, собственно, дизайна. С другой стороны, доступ к коду описаний — приятная возможность, позволяющая контролировать больше, чем при привычном подходе, когда разработчик отделён от исходников интерфейсом.



11. Проверяю работу в программах вёрстки, поддерживающих OpenType:

Character > Options > Small Caps — с выделенными строчными буквами

Character > Options > OpenType > Old Style Figures — с выделенными цифрами

Window > Type > Glyphs

Small caps in Illustrator
http://www.creativepro.com/content/typetalk-small-caps-illustrator





Ссылки по теме






шрифт, fontlab, opentype, капитель

лигатуры, старостильные цифры










© 2000–2015 Студия дизайна «Индейское лето»
skype: summer-indian | mail:


iMage magnifier :: screen capture, loupe, color picker


студия веб-дизайна