Open sergey-s-betke opened 8 years ago
Преобразование stroked шрифта в кривые с удалением пересечений: http://www.ctan.org/tex-archive/graphics/MF-PS/roex
Да, в нашем случае можно преобразовать stroked шрифт в кривые с объединением с использованием roex.mf
. Как раз поддерживается только перо круглое, что нам и требуется.
Сейчас у меня реализовано это решение на fontforge. Возможно, стоит сейчас оставить преобразование с использованием fontforge, а для TeX использовать перо в metafont.
Но, тем не менее, попробовать использовать roex.mf
стоит...
Нда... mf2pt1
далеко не панацея.
Итого, стоит хорошо обдумать переход на metafont. Заманчиво, но сыровато...
Плюсы перехода:
Но для построения полноценных open type и true type шрифтов таким путём придётся применять комбинированный подход:
В общем и целом, при отсутствии возможности передачи хинтов из metafont в последующую обработку ценность подобного подхода при разработке существенно снижается.
Судя по указанному выше обзору, стоит обратить внимание на:
Судя по истории версий, обработку перьев в MetaType1 переписал автор. Стоит пробовать, учитывая, что у нас круглое перо всего лишь. Но это - \ отдельный язык **, по сути, имеющий к metafont далёкое отношение. Но поддерживаются ссылки (подпроцедуры в PS), явная работа с глифами, а не с кодами символов, и так далее. Уже куда ближе к шрифтам...
Итого, видимо, за основу стоит брать именно MetaType1...
http://metatype.sourceforge.net/faq.php - но это ещё один продукт!
Касательно ссылок :-) Ситуация решается в некоторой степени :-) makeotf
из AFDKO опционально выполняет операцию Subroutinization, которая как раз выделяет общие контуры для разных глифов и заменяет их ссылками! Таким образом может быть решена проблема отсутствия поддержки ссылок в MetaFont, MetaType1...
Склоняюсь к следующему процессу сборки шрифтов?
makeotf
и получим .otf с Type1 контурами, хинтами, лигатурами, кернингом и прочим. В том числе - выделяем общие подпроцедуры.ttfautohint
.P.S. Стоит посмотреть другие способы построения инструкций для .ttf. Возможно, есть возможность создавать внятные и редактируемые инструкции для ttf на более высоком уровне.
P.P.S. возможно, с помощью дополнительных макроопределений попробую использовать MetaType1 файлы как MetaFont файлы. Для целей непосредственного использования в TeX.
В любом случае, крайне важно добавлять тесты для всех генерируемых артефактов.
Остаются вопросы: каким образом стоит добавлять верхние и нижние индексы, математику, и т.д.? (те, что строить стоит через ссылки)...
Добавлять ли их в MetaFont - вопрос ещё тот (потому как кодировки в TeX крайне ограниченные). В таком случае - достаточно ограничиться предварительной обработкой Type1 шрифта через FontForge, добавлением необходимых символов через скрипт...
Ещё один вопрос - с акцентами... Стоит разобраться, создаются ли в MetaFont и MetaType1 якоря...
Стоит проверить возможности AFDKO по генерации .ttf. Сейчас выполняю эту задачу сценарием fontforge (ведь требуется преобразование типа кривых, а потом - упрощение, добавление экстремумов и так далее).
Пример проекта на MetaType1: http://www.tug.org/tugboat/tb29-1/tb91hoeppner.pdf
Есть ещё вариант. MetaPost поддерживает генерацию Type3 шрифтов (http://www.ntg.nl/maps/26/29.pdf). А Type3 уже можно конвертировать в TrueType с помощью fontforge. Всё-таки, MetaPost сопровождается и развивается большим сообществом, нежели MetaFont1.
http://mirrors.mit.edu/CTAN/info/metapost/doc/russian/mpman-ru/mpman-ru.pdf - хорошее описание MetaPost на русском.
MetaPost может генерировать только заготовку для Type3 шрифта. Требуется финишная сборка.
Однако... MetaType1 не входит в репозиторий MikTeX. Только в TeXLive. В MikTeX в чистом виде доступны лишь MetaFont, MetaPost. Так что писать придётся на MetaPost, видимо. И уже сразу - контурами, чего не хотелось...
А mf2pt1 доступен и в репозитории MikTeX.
MetaPost отдельно устанавливать не требуется, он входит в basic инсталляцию MikTeX.
Есть вариант: перейти с MikTeX на TeXLive (он так же поддерживает Windows): http://www.tug.org/texlive/acquire-netinstall.html.
Возможно, и с установкой будет проще.
Возможности инсталлятора:
обновление установленных пакетов и не только:
В общем и целом, стоит рассмотреть вариант перехода с MikTeX к TeXLive, в том числе - в целях дальнейшего использования MetaType1.
Однако:
While in MiKTeX an installation process is automatically triggered if you have, say, \usepackage{beamer} in a document preamble without the corresponding package installed, there is no such feature on TeX Live. The last statement is not true actually, as pointed out by wasteofspace in the comments there is the texliveonfly package that implements the on demand installation in TeX Live 2010 and later. I never tested it and don't know if it has drawbacks.
http://tex.stackexchange.com/questions/110501/auto-package-download-for-texlive
install-on-the-fly
. Что неудобно, безусловно. Но выше приведено решение.От установки на лету в TeXLive пришлось отказаться. Далеко не всё установить можно, только стилевые пакеты и классы. Не более. Пришлось отказаться и от schema-small
, перешёл на schema-medium
.
https://github.com/metapolator/metapolator/wiki/v1