FEATURE FRAC. Дефинирането на свойството дроби в open type шрифт


Дефинирането на свойството дроби в open type шрифт има за цел да отвори кръга от дробни числа, които са предварително дефинирани в Unicode и да го направи неограничен.
Дефинирани като дробни числа в Unicode са:
1/4 (U+00BC VULGAR FRACTION ONE QUARTER),
1/2 (U+00BD VULGAR FRACTION ONE HALF),
3/4 (U+00BE VULGAR FRACTION THREE QUARTERS) в частта Latin-1 Supplement,
както и редица други в частта Number Forms на Unicode.

На сайта I Love Typography Martin Wenzel предлага елегантно решение за вграждане на свойството FRAC в open type шрифт (feature frac). Опирам се изцяло на решението, предложено от Martin Wenzel, като го допълвам с някои обяснения.

Преди да пристъпим към изграждане на (feature frac) се нуждаем от NUMERATOR | ЧИСЛИТЕЛ и DENOMINATOR | ЗНАМЕНАТЕЛ глифове, както и от глифа FRACTION.
Безплатната програма FontForge има вградена функция за създаване на NUMERATOR | ЧИСЛИТЕЛ и DENOMINATOR | ЗНАМЕНАТЕЛ глифовете. Разбира се, препоръчително е след автоматичното им генериране те да бъдат дооформени в съответствие с цялостната структура на шрифта.
FontForge създава NUMERATOR | ЧИСЛИТЕЛ и DENOMINATOR | ЗНАМЕНАТЕЛ глифовете, като ги записва с разширения .denominator и .numerator. Martin Wenzel предлага разширенията да са само .dnom и .numr.
След създаването на глифовете DENOMINATOR и NUMERATOR – с цялостно разширение (.denominator, .numerator) или със съкратено разширение (.dnom, .numr). Можем да пристъпим към създаване на (feature frac). Преди това обаче трябва да се убедим, че разполагаме с подходящия глиф за наклонена черта на дробта – FRACTION SLASH (U+2044).
В Unicode има няколко няколко глифа, които представляват наклонена черта:
/ (това е U+002F SOLIDUS в Basic Latin),
(това е U+2044 FRACTION SLASH в General Punctuation) и др.
FRACTION SLASH (U+2044) не бива да се бърка с DIVISION SLASH (U+2215), който принадлежи към частта Mathematical Operators на Unicode. За останалите напомнящи начертанието на FRACTION SLASH (U+2044) глифове вижте раздела Confusables в Codepoint.

И така, стъпките към дефиниране на (feature frac) са няколко:

1. Заместване на slash (U+002F) с fraction (U+2044) – sub slash by fraction; така че, ако при набора на текст е използван глифът slash, той да бъде заместен с глифа fraction:
sub slash by fraction;

2. Дефиниране на класове за заместване на обичайните числа последователно с числата за NUMERATOR | ЧИСЛИТЕЛ и DENOMINATOR | ЗНАМЕНАТЕЛ

клас на обичайните числа
@standard = [zero one two three four five six seven eight nine];

клас NUMERATOR | ЧИСЛИТЕЛ
@numerator = [zero.numr one.numr two.numr three.numr four.numr five.numr six.numr seven.numr eight.numr nine.numr];

клас DENOMINATOR | ЗНАМЕНАТЕЛ
@denominator = [zero.dnom one.dnom two.dnom three.dnom four.dnom five.dnom six.dnom seven.dnom eight.dnom nine.dnom];

3. Последователно заместване на обичайните числа с дефинираните класове за NUMERATOR | ЧИСЛИТЕЛ и DENOMINATOR | ЗНАМЕНАТЕЛ

sub @standard by @numerator; – всеки глиф от класа STANDART се замества със съответстващия му от класа NUMERATOR | ЧИСЛИТЕЛ и всички глифове за числа вече са от класа NUMERATOR | ЧИСЛИТЕЛ. (За по-добрата използваемост на свойството FRAC Martin Wenzel препоръчва обичайните числа да бъдат превръщани в ЧИСЛИТЕЛНИ чрез класа NUMERATOR веднага и без наличието (присъствието) на глифа FRACTION (U+2044).)

sub fraction @numerator’ by @denominator; – всеки глиф от класа NUMERATOR | ЧИСЛИТЕЛ, който е предхождан от глифа fraction, се замества със съответстващия му от класа DENOMINATOR | ЗНАМЕНАТЕЛ

sub @denominator @numerator’ by @denominator; – в случая всеки глиф от класа NUMERATOR | ЧИСЛИТЕЛ, предхождан от глиф от класа DENOMINATOR | ЗНАМЕНАТЕЛ, се замества със съответстващия му от класа DENOMINATOR

В крайния си вид FEATURE FRAC изглежда така:

feature frac { # Fractions
# DEFAULT
sub slash by fraction;
sub @standard by @numerator;
sub fraction @numerator’ by @denominator;
sub @denominator @numerator’ by @denominator;
} frac;

ТЕСТВАНЕ

Тестването на FEATURE FRAC в QuarkXpress и Indesigh показва, че:

1. В QuarkXpress FEATURE FRAC се дефинира коректно за всички езици (включително и за българския език).
2. В Indesigh FEATURE FRAC се дефинира коректно за всички латински езици и при избор на NO LANGUAGE (но оставя знаменателя като числител във всички кирилски езици без украинския).

ОЩЕ ПО ТЕМАТА

Fractions на сайта на Glyphs
Tal Leming – idea for a different approach to implementing a fraction feature

Стефан Пеев

Top ↑

If you like this site and find it useful, help us to make it better by giving feedback, suggesting
improvements or by donation.


Donate

Съвременни форми на кирилицата

Съвременна българска форма на кирилицата

Advertisements

Вашият коментар

Попълнете полетата по-долу или кликнете върху икона, за да влезете:

WordPress.com лого

You are commenting using your WordPress.com account. Log Out / Промяна )

Twitter picture

You are commenting using your Twitter account. Log Out / Промяна )

Facebook photo

You are commenting using your Facebook account. Log Out / Промяна )

Google+ photo

You are commenting using your Google+ account. Log Out / Промяна )

Connecting to %s