Как исправить кодировку шрифта в FontForge

Многие сталкиваются с проблемой отображения кириллических символах при редактировании текста в программах типа GIMP или Inkscape.

Например, на скриншоте ниже вместо символов выбранного шрифта (MachineCTT) видны подстановленные символы из шрифта-алиаса “Sans”.

Подстановка Sans

В некоторых других программах вместо подстановки будут показаны квадратики или даже пустота. Дело тут вот в чём…

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

К счастью, вы сами можете исправить эту проблему буквально за пару минут. Для этого вам понадобится свободный редактор шрифтов FontForge.

Урок написан по горячим следам обсуждения на linux.org.ru, где проблемным шрифтом был MachineCTT. Давайте его откроем и посмотрим, что не так:

В нормальных юникодных шрифтах прописная «А» находится в слоте afii10017. Но поскольку многие программы считают, что имеют дело не с cp1251, а с юникодом, то в глазах такого софта кириллица съезжает в набор дополнительных символов латиницы (Latin-1 Supplement). Это всё равно что пытаться слать почту по старому адресу человеку, который не оставил новый адрес.

Всё, что надо сделать — это перекодировать шрифт в Unicode. Для начала добавим новую кодировку, поскольку FontForge по умолчанию про cp1251 ничего не знает.

В диалоге укажем название кодировки:

Затем принудительно переименуем кодировку в “cp1251”

Теперь FontForge знает, что это кодировка cp1251 (см. заголовок окна), и расставляет символы по правильным слотам:

Но нам всё ещё надо выполнить перекодировку. Правильной кодировкой символов будет ISO-10646-1 (Unicode, Full):

Теперь всё правильно (снова см. заголовок):

Буквы «ё» окажутся в таблице не по порядку, но на это можно закрыть глаза, поскольку они всё равно будут в правильно закодированных слотах.

Остаётся лишь заново сгенерировать шрифт. Для этого желательно дать файлу другое имя.

В открывшемся диалоге пишем примерно так:

Обратите внимание, что первое название должно быть написано слитно: таковы правила именования шрифтов в PostScript.

Нажмите ОК для применения изменений. Скорее всего, FontForge пожалуется, что вы не поменяли уникальный идентификатор шрифта, и предложит это автоматически исправить.

Запустите диалог генерирования шрифта.

Программа сама предложит новое имя файла:

Любым удобным способом активируем новый шрифт (лично я делаю это через Fontmatrix) и пробуем:

В общем-то, всё.

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

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*


Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.