OpenType. Создаём классы. Часть4

OpenType class, пожалуй самый простой вид классов, хотя не без нюансов... Для примера, я хочу создать автоматическую замену обычных цифр на цифры старого стиля - фича 'onum' (Old numerals).

Old numerals

Создаю два ОТ класса, в первый перетаскиваю стандартные цифры во второй старостильные.

Class1Class2

Я просто выделяю все цифры, удерживаю Shift и тащу их в окно панели Classes. При перетаскивании серии объектов следует особое внимание уделять одинаковому порядку глифов в классах, в противном случае получиться полная каша.

одинаковый порядок глифов в классах

Изменяю название у первого класса на Digits, а у второго на Digits_onum, можно изменить и на любое другое название, просто мне так проще идентифицировать классы.

Изменяю название у первого класса на Digits

Ещё одна немаловажная деталь - количество символов, при замене одного класса на другой, должно быть одинаковым, иначе вы не сможете сгенерировать фичу. Количество символов в классе отображается внизу панели классов.

количество символов, при замене должно быть одинаковым

Для чего нужны такие сложности?! В качестве ответа, приведу код фичи 'onum' без использовании классов:

  feature onum { # Old Style Figures
# Latin
sub zero by zero.onum;
sub one by one.onum;
sub two by two.onum;
sub three by three.onum;
sub four by four.onum;
sub five by five.onum;
sub six by six.onum;
sub seven by seven.onum;
    sub eight by eight.onum;
sub nine by nine.onum;
} onum;

А вот та же фича 'onum' с собранными классами внутри фичи, в панели OpenType:

feature onum { # Old Style Figures
# Latin
sub [zero one two three four five six seven eight nine] by [zero.onum one.onum two.onum
three.onum four.onum five.onum six.onum seven.onum eight.onum nine.onum];
} onum;

а вот так выглядит фича 'onum' с использованными классами:

 feature onum { # Old Style Figures
# Latin
sub @Digits by @Digits_onum;
} onum;

Есть разница?
Думаю, что это стоит тех трудов, которые тратятся на классы... О написании кода для различных фичей, постараюсь рассказать в следующих уроках.


Предыдущие уроки из этой серии:
OpenType. Создаём классы. Часть1
OpenType. Создаём классы. Часть2
OpenType. Создаём классы. Часть3