Как кодировать неюникодовские лигатуры в FontlabStudio5 ?

Статус
Закрыто для дальнейших ответов.

Букволюб

Участник
Топикстартер
Сообщения
14
Реакции
0
Здравствуйте!
Осваиваю FontlabStudio5. У меня в шрифте отрисованы неюникодовскме лигатуры, допустим, "пр, что", строчные и прописные. Как сделать, чтобы, допустим в Ворде, сочетания "пр, что" автоматически превращались в строчные лигатуры, а "Пр/ПР", "Что/ЧТО" соответно в прописные.

Я прочитал в Мануале главу Ligature Substitution (Лигатурная замена)
Там написано с примерами:
A Ligature substitution rule is specified as (Правило лигатурной замены определено как):
substitute <glyph sequence> by <glyph>;
For example:
substitute [one one.onum] [slash fraction] [two two.onum] by onehalf;
substitute f i by fi;
substitute f f i by f_f_i
Хотя примеры даны для юникодовских лигатур, но, ибо в шрифтах встречаются и неюникодовские, нп. арабские или знаки тонального ударения, то, значит, теоретически возможны любые.
В моем случае, вероятно, правило будет:
substitute п р by пр (или п_р) -- жирным выделено имя лигатуры в "Glyph Properties"
substitute ч т о by что (или ч_т_о)
Но мне не ясно в какое поле вводить это правило, а также все дальнейшие шаги.

Прошу совета у опытных. Желательно пошаговую инструкцию для первого раза.
 

RIM13

Участник
Сообщения
41
Реакции
19
Так у Вас ничего не выйдет.

Переименуйте свои лигатуры (триграфы?) в приемлемые.
«Поле для ввода» это окно OT фич в ФЛС.
Ворд, в большинстве случаев не увидит таких знаков.
Посмотрите и соотнесите свои задумки и поддержу в Ворде расширенной OT типографики.
 

Букволюб

Участник
Топикстартер
Сообщения
14
Реакции
0
Переименуйте в приемлемые.
Не понимаю. Пожалуйста, напишите конкретно, нп. приемлемое имя для "пр, что".

«Поле для ввода» это окно OT фич в ФЛС.
Я открыл окно глифа, и открыл "Open Type panel". Оно? Открылось внизу окно с тремя полями: левое узкое, верхнее и нижнее. Допустим, у меня лигатура "пр" с кодами составляющих: п (043F) и р (0440)
Пожалуйста, разъясните: куда, как и что вводить? По-ша-го-во!

Я посмотрел Open Type panel для примера у лигатуры с именем uni02E602E5 (тональный знак). В левом поле стоят "видовые маркеры" и нажатие на каждый вызывает в верхнем поле различные скрипты для меня непостижимые. Понимаю, что скрипты тонального знака -- не тот пример, кой могу взять за аналог действий, но я не нашёл в шрифтах нормальную буквенную не-юникодовскую лигатуру.

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

RIM13

Участник
Сообщения
41
Реакции
19
приемлемое имя для "пр, что"
Возможные именования знаков от Адобе

куда, как и что вводить? По-ша-го-во!
Это только ФЛС Руководство. См. стр. 815-882. Про ОТ панель стр. 841-853.

Тональные не-юникодовские лигатуры мой Ворд видит
Ворд может видеть многое, а писать надо непосредственно под его возможности.
Поддержка ОТ в Ворде.
 

Букволюб

Участник
Топикстартер
Сообщения
14
Реакции
0
За ссылку от Адобе (и другую) благодарю! Но почитав, убедился, что ранее имена для лигатур я составлял основном правильно (из нескольких попыток) -- по аналогии с «законными» лигатурами просто складывал коды компонентов. И пытался составлять скрипт-feature по аналогии.
Например, цитаты из «законных щрифтов»:

feature liga { # Standard Ligatures
# Latin
sub f b by f_b;
sub f f b by f_f_b;
language TRK ; # Turkish
language ROM ; # Romanian
} liga;

feature rlig { # Required Ligatures
script arab; # Arabic
lookupflag IgnoreMarks, RightToLeft;
sub uni0644.init uni0622.fina by uni06440622.isol;
sub uni0644.init uni0623.fina by uni06440623.isol;
language URD ; # Urdu
} rlig;

Моё:
feature liga { # Standard Ligatures
# Cyrillic
sub uni043F uni0440 by uni043F0440
} liga;

Как оформлять «lookup, lookupflag» -- не понял.

Раньше я генерировал в TrueType/OpenTypeTT, но шрифт фичу не сохранял (выходит просто TrueType).
Но у меня стоят Type 1-хинты, и подумал, что надо генерировать в OpenTypePS. Попытался. Перед генерацией прога требует уменьшения размера до 1000 единиц. В мануале в разделе «Generating OpenType Fonts» про такое требование не упоминается. Я в FontInfo наобум переключил size на 1000. Бесполезно -- в OpenTypePS шрифт вообще не сохраняется.

Что же касомо страниц 841-853, то я их и раньше читал (и перечитал), но чего не так делаю – не понял. Поэтому и вопрос задал.
 

Н. Васильева

Участник
Сообщения
386
Реакции
736
Какие проблемы? Имена лигатур в фичах (и шрифте) могут быть произвольными. Стандартных наименований на все случаи жизни нет. Вот пример фичи liga для каллиграфического шрифта, где альтернативных символов немереное количество, и все имена взяты из головы.
 

Вложения

  • liga.jpg
    liga.jpg
    188.4 КБ · Просм.: 1 036

Н. Васильева

Участник
Сообщения
386
Реакции
736
В моем случае, вероятно, правило будет:
substitute п р by пр (или п_р) -- жирным выделено имя лигатуры в "Glyph Properties"
substitute ч т о by что (или ч_т_о)

Должны быть указаны не кириллические буквы как они есть, а их имена (afii10089, afii10084 и т. п. — или как они выглядят в вашем случае). В фичах указываются имена глифов.

sub afii10089 afii10084 afii10080 by ch_t_o;

См. пример, сделанный на скорую руку.
Кириллические символы в фичах не используются.
 

Вложения

  • liga2.jpg
    liga2.jpg
    191.8 КБ · Просм.: 883

Букволюб

Участник
Топикстартер
Сообщения
14
Реакции
0
Благодарю за ответ, сударыня!
Попытался написать скрипт по вашему образцу, затем чуть подправив (всё на скане). На OpenSample-панели ничего не отражается. (У меня лигатура – моносимвол. Названо для простоты uniE001, бо помещено в зону личных символов). Шрифт в формате OpenType PS не генерируется.
Попутно вопросы:
- Правильно ли понимаю, что необязательны надписи типа: # Standard Ligatures/ # Latin / # Cyrillic / script… / language… ?
- Надо ли на GlyphProperties панели выставлять Ligature для lookup?
- Почему в вашем скрипте ligaturа с конечным «a»?
- Если у меня Type1-хинтинг, то можно ли полноценно генерировать шрифт в формате OpenType TT?
- При генерации шрифта в формат OpenType PS прога требует изменить размер в 1000. Как это сделать правильно? И также -- я один раз при генерации раз на всякий случай снял метку в окошке Scale all glyphs according to UPM size change, и у меня все символы в клетках окна шрифта стали больше клеток и неудобны для работы. Как вернуть размер обратно в этом случае? Исходный файл не потерял ли качество?
- Ну и, что ещё мне делать дальше?

Извините за многословие.
 

Вложения

  • пр.png
    пр.png
    20.2 КБ · Просм.: 991

Н. Васильева

Участник
Сообщения
386
Реакции
736
Благодарю за ответ, сударыня!
Попытался написать скрипт по вашему образцу, затем чуть подправив (всё на скане). На OpenSample-панели ничего не отражается. (У меня лигатура – моносимвол. Названо для простоты uniE001, бо помещено в зону личных символов). Шрифт в формате OpenType PS не генерируется.
Попутно вопросы:
- Правильно ли понимаю, что необязательны надписи типа: # Standard Ligatures/ # Latin / # Cyrillic / script… / language… ?
- Надо ли на GlyphProperties панели выставлять Ligature для lookup?
- Почему в вашем скрипте ligaturа с конечным «a»?

Чтобы фичи работали в ФонтЛабе, их нужно сгенерировать (иконка "compile" в виде стопки листов). Указания языков нужны, чтобы фичи работали при выборе любого языка в издательской системе. Иногда они имеют особенности, например в турецком и азербайджанском языках различаются i с точкой и без точки, что приходится учитывать в рисунке капители и при написании фич smcp и c2sc, и т. п. При тестировании это можно опустить.
Текст, начинающийся с #, является комментарием и не обязателен.

Вот текст фичи liga из реального проекта. Замените наименования символов, и все.

feature liga {

lookup HAS_I {
sub f i by fi;
sub f f i by ffi;
sub f f by ff;
sub f l by fl;
sub f f l by ffl;
} HAS_I;

lookup NO_I {
sub f l by fl;
sub f f by ff;
sub f f l by ffl;
} NO_I;

language dflt;
lookup HAS_I;
language TRK exclude_dflt;
lookup NO_I;
language AZE exclude_dflt;
lookup NO_I;
script grek; # Greek
lookup HAS_I;
script cyrl; # Cyrillic
lookup HAS_I;

} liga;


Не поняла вопрос "Надо ли на GlyphProperties панели выставлять Ligature для lookup?" Lookup — это процедура, аналогичная обычным процедурам в программировании, то есть повторяющийся набор команд. Называть их можете как угодно, лишь бы латиницей. В панели свойств указывать лигатуры не обязательно, хотя это (не проверяла, но вероятно) влияет на отображение их в панели глифов в ИнДизайне. На работу фич не влияет.

Насчет хинтования — не занимаюсь им вручную, ограничиваюсь автоматическим хинтованием, с проблемами при генерации файлов не сталкивалась. Насчет 1000 единиц — это рекомендация, при желании ее можно игнорировать.
 

Букволюб

Участник
Топикстартер
Сообщения
14
Реакции
0
Чтобы фичи работали в ФонтЛабе, их нужно сгенерировать (иконка "compile" в виде стопки листов).
Текст, начинающийся с #, является комментарием и не обязателен.
Lookup — Называть их можете как угодно, лишь бы латиницей.
Это ясно, спасибо!

Вот текст фичи liga из реального проекта. Замените наименования символов, и все.
Возможно, вы, глядя на этот трёхэтажный скрипт, знаете, что значит «и всё». Я – нет. Но мне ясно то, что фича для моего случая должна быть проще. Я всё же попробовал «и всё». Написал для двух лигатур так:

feature liga {
# Cyrillic
language Rus;
lookup HAS_I {
sub afii10081 afii10082 by uniE001;
sub afii10081 afii10082 afii10065 by uniE003;
script cyrl; # Cyrillic
} HAS_I;
} liga;


Нажал "compile". На OpenSample-панели лигатуры видны. Уже хорошо. Далее сгенерировал OT-шрифт, проигнорировав рекомендацию изменить размер. В нижнем окне вылезла надпись:

[WARNING] <BBB-Century> The feature file OS/2 overrides TypoAscender and TypoDescender do not sum to the font bbox size!
Это ладно, мне эти размеры пока важны. Открыл шрифт в Фонтлабе, посмотрел фичу. Она сохранилась но(!) изменилась. Стало:

feature liga { # Standard Ligatures
# Latin
language Rus exclude_dflt;
sub afii10081 afii10082 afii10065 by uniE003;
sub afii10081 afii10082 by uniE001;
} liga;


Ради опыта я заменил «HAS_I» на «ligature1» -- от вас так понял, что команда может формулироваться всяко.
Всё повторил. Сгенерировалась та же изменённая фича.

Почему вылезает «# Latin»?
С какой стати «Rus exclude», и что такое «_dflt»?
При установке шрифта в OS, эта фича не работает в Ворде. (Кстати не работает и кернинг, хотя его фича в шрифте тоже сохранилась.)
А вот, нп. от шрифта Таймс лигатуры фонознаков в Ворде получаются. Может быть в моём случае нужен lookupflag? Какой?
Итак, если вы разбираетесь в предмете, пожалуйста, просто напишите мне работающую фичу кон-крет-но для моего случая и для русского языка. Например, для:
sub afii10081 afii10082 by uniE001;
subafii10081 afii10082 afii10065 byuniE003;
 

Н. Васильева

Участник
Сообщения
386
Реакции
736
Итак, если вы разбираетесь в предмете, пожалуйста, просто напишите мне работающую фичу кон-крет-но для моего случая и для русского языка.

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

Фича для лигатур (без учета символа i с точкой/без точки) выглядит так:

feature liga {
lookup My_Change {
Требуемые действия
} My_Change;


language dflt;
lookup My_Change;
language TRK exclude_dflt;
lookup My_Change;
language CYR exclude_dflt;
lookup My_Change;
language AZE exclude_dflt;
lookup My_Change;
script grek; # Greek
lookup My_Change;
script cyrl; # Cyrillic
lookup My_Change;

} liga;


Dflt — состояние по умолчанию, exclude_dflt — стандартная формула для отдельных языков. Их перечисление гарантирует, что фича будет работать при выборе любого языка. Script означает систему письменности.
А подробная инструкция для начинающих — здесь: Features. Образчик фичи liga там как раз есть, причем в предельно простом виде. Можно обойтись без lookup и language, но это может ограничить функциональность.
См. также www.adobe.com/devnet/opentype/afdko/topic_feature_file_syntax.html#5.d

При генерации шрифта программа меняет имена и вносит другие изменения, ну и что? Разработчик обычно имеет дело с редактированием проекта в формате VFB, а не с конечными продуктами. (Я не штудировала всю документацию Microsoft на формат OpenType, мне достаточно того, что актуально для моих целей.)

Про Word ничего сказать не могу, я его не воспринимаю как нормальный рабочий инструмент и не пользуюсь им. ИнДизайн все "видит" прекрасно.
 

Букволюб

Участник
Топикстартер
Сообщения
14
Реакции
0
человек должен сам решать свои проблемы?
Я просил не решать за меня всё, а ещё в первом посте -- лишь дать «пошаговую инструкцию для первого раза» -- пример для аналогий. Остальное предполагал делать по примеру. На примерах учатся и звери и люди. За примером я и обратился на форум. Обратился потому, что при чтении мануала к ФонтЛабу, а также при анализе фич "системных" шрифтов не нашёл примера для русского. Даже не знаю как правильно записать: language RUS / Rus / Russian или как-то ещё. И ещё, не достаточно хорошо знаю английский, что бы быть уверенным в правильном понимании. Поэтому обратился на русский форум. Разумеется, вы не обязаны отвечать подробно и даже вообще отвечать. Моя настойчивость исходила лишь из моего предположения, что если уж браться давать советы, то надо это делать так и до тех пор, чтобы вопрошающий понял. И уж ни в коем случае не давать таких советов, кои могут сбить с толку.

Я не знаю, каков ваш конкретный случай, у меня нет вашего файла
Мне казалось, я уже описал мой случай вполне конкретно: имена глифов, только русский язык и чтобы работало в Ворде. Мало?..

А подробная инструкция для начинающих — здесь: Features. Образчик фичи liga там как раз есть, причем в предельно простом виде. Можно обойтись без lookup и language, но это может ограничить функциональность.
См. также www.adobe.com/devnet/opentype/afdko/topic_feature_file_syntax.html#5.d
За ссыли благодарю! Но инструкции в подобном “обще-латинском” виде есть и в мануале. Но это не мой конкретно-русский случай. К тому же не хочу ограничивать функциональность, если можно этого избежать, т. е. lookup и language хочу написать правильно.

Фича для лигатур (без учета символа i с точкой/без точки) выглядит так:
Хотя мне не понятно, зачем там нужны другие языки, кроме русского, а собственно русского нет, зато есть некий «CYR» (который не интерпретируется в Фонтлабе наравне с AZE и TRK), я ввёл «Требуемые действия» в вашу фичу. При генерации фича трансформировалась (подробностями вас не гружу – полагаю, это не интересно). В Ворде фича не работает. Всё.

зато есть собственная работа.
Благодарю за прочие ответы и уделённое мне время. Желаю вам успеха в вашей собственной работе!

С уважением
Букволюб
 
Последнее редактирование:

Н. Васильева

Участник
Сообщения
386
Реакции
736
Мне казалось, я уже описал мой случай вполне конкретно: имена глифов, только русский язык и чтобы работало в Ворде. Мало?..

Разумеется, мало. Это все равно что ничего. В случае конкретных вопросов желательно присылать непосредственно проблемные файлы, в данном случае VFB. В этом случае человек с опытом может решить проблему за 5 минут. Иначе получается гадание на кофейной гуще. Что значит "только для русского"? Чтобы в случае назначения стилю других языков фича принципиально не работала? Не пишите указания на другие языки (кроме русского).
script cyrl;
lookup xxx;

Lookup
— это шаблон для нескольких повторяющихся команд, как я уже говорила. Его подставляют там, где предполагается выполнение этих команд. Можно обойтись без lookup и повторно писать сами команды, но если их несколько, это будет длинно.

Вот еще пример, здесь на русском. Learn FontLab | Уроки FontLab: Opentype — шаблон для написания OT-фич
Смотрите также на список пунктов в раскрывающихся списках "Script" и "Language" на панели OpenType.
Я не могу смоделировать вашу ситуацию, у меня другие файлы, другие глифы, другие имена. И вряд ли кто-то еще стопроцентно решит ваши проблемы заочно, не имея под руками исследуемого материала.

Word имею только старой версии, про работу новых версий с OpenType ничего не знаю. Тестирую шрифты в ИнДизайне (в котором и работаю).
 

Denisbox

15 лет на форуме
Сообщения
402
Реакции
249
feature liga { # Standard Ligatures
# Latin
sub afii10081 afii10082 by afii10081_afii10082;
sub afii10081 afii10082 afii10065 by afii10081_afii10082_afii10065;
script cyrl; # Cyrillic
sub afii10081 afii10082 by afii10081_afii10082;
sub afii10081 afii10082 afii10065 by afii10081_afii10082_afii10065;
} liga;
 

Букволюб

Участник
Топикстартер
Сообщения
14
Реакции
0
Это все равно что ничего. В случае конкретных вопросов желательно присылать непосредственно проблемные файлы, в данном случае VFB.
Не думал что шрифто-матрицы могут отличаться. Но если это принципиально – сейчас я конкретно экспериментирую с обычным шрифтом «Century». В исходнике не было фич, кроме кернинга.
За ссылку спасибо!

Выложил здесь CENTURY_.vfb , если это что-то даёт.

Denisbox, благодарю за участие! Я поменял имена лигатур на “ваши”. На панели предсмотра лигатуры получаются, но в Ворде – нет. Я могу допустить, что не в порядке мой Ворд, но почему тогда работает подобная фича (ccmp) для Таймса? Нп.
sub uni02E5 uni02E6 by uni02E502E6;
˥ +˦ > ˥˦
Ещё вопрос: принципиально ли число пробелов перед «sub»?
 

Н. Васильева

Участник
Сообщения
386
Реакции
736
Не думал что шрифто-матрицы могут отличаться. Но если это принципиально – сейчас я конкретно экспериментирую с обычным шрифтом «Century». В исходнике не было фич, кроме кернинга.
Ещё вопрос: принципиально ли число пробелов перед «sub»?

Число пробелов не принципиально, имена лигатур повергли меня в изумление (вы же в них не сможете ориентироваться!), в Word'e не проверяла (не имею последних версий), а в ИнДизайне все работает. Только для русского языка. Как включить другие языки, раньше говорилось.
файл VFB
 

Вложения

  • cent.jpg
    cent.jpg
    53.1 КБ · Просм.: 827
Статус
Закрыто для дальнейших ответов.