(Кому лень много читать -- мои вопросы в конце. )
Моя борьба с Lout.
Искал я недавно небольшую систему подготовки документов под Win32 (то бишь typesetting system, не знаю как это одним словом перевести). Мой любимый TeX увы слишком большой и для этой цели не подошел. Troff (nroff, groff и т.д.), имхо, устарели и держутся исключительно благодаря man-страницам. Да и язык какой-то маразматический.
А вот описание (и размеры) системы Lout (преемник scribus) мне понравилось. Его преимущества:
- исполняемый файл после того, как я его почистил при помощи stripe и сжал upx'ом, стал занимать 175 кБ, вся система полностью (включая макропакеты и ) -- мегабайта полтора.
- довольно сносный язык, хотя до TeX'а по читабельности не дотягивает (тех -- лучше всех! ),
- читабельные (!), внятно составленные (!!) и комментированные (!!!) конфиги и макросы,
- заявленная интернационализация, включающая русский язык,
- на выходе дает PostScript или PDF.
Однако, установив эту чудесную систему, я столкнулся с массой проблем, ибо многое там было сделано через одно интересное место.
1. Русификация.
1.1. Про перевод терминов достаточно, думаю, было бы сказать, что слово "Index" было переведено как "Индекс", а "Abstract" -- как (о ужас!) "Абстракт". Благо, движок полностью от настроек и шрифтов отделен.
1.2. Из кодировок можно было использовать только koi8-r (но зато аж в 3-х инкарнациях). У меня было два пути, один из которых -- постоянно использовать перекодировку в конвейере. Но я не ищу легких путей и написал map-файл для cp1251. Сказать, что вообружившись табличками с кодировкой Adobe и koi8-r вбивать все эти afii10054 да еще и для каждой буквы указывать код строчного/прописного написания не так интересно, как может показаться.
1.3. Самое главное -- шрифты. Я включил русский язык, написал проверочный текст, получил постскриптовый файл и тут оказалось, что в таблице шрифтов всюду прописана кодировка Latin-1. Причем жестко. Тоже мне i18n, блин! Ну, разумеется, я это исправил. Но, результат все равно не выводился.
Как выяснилось, хоть Lout совершенно не интересуется глифами шрифтов, но (и это естественно) он все же использует afm-метрики от используемых шрифтов с размерами символов и указаниями о кернинге. Но эти шрифты русских букв не предусматривали.
Ну, взял я утилиту ttf2afm и сделал ему для использумых шрифтов описания. PDF файлы стали нормально просматриваться (Acrobat и Foxit все равно используют системные шрифты). Однако, GhostScript показывать PostScript отказался -- в стандартной поставке, видимо, тоже шрифты без русских символов. Раньше я это не замечал, так как работал в основном с результатами работы dvips, а тот, наверное, шрифты внедряет (все же ComputerModern -- это только для TeX'а стандарт).
Поискал я в интернете русификацию. Нашел какие-то шрифты и инструкцию по подключению к GhostScript. Ерунда полная!!! Там в шрифтах русские буквы не по названиям вставлены, а по коду, причем в кодировке koi8r. Вернее, по названиям, но для соответствующих символов из Latin-1. Это все равно что рубанком бриться! Так что пришлось взять виндосовский TimesNR и конвертировать его в Type 1. Только тогда появился нормальный результат.
Впрочем, сказать, что я нормально локализовал Lout нельзя. Осталась жесткая привязка к cp1251. Впрочем, меня это не огорчает.
2. Прочее. Тут особо ругаться не буду. Видно, что автор старался.
2.1. Однако ввод формул а-ля OpenOffice (или наоборот, в OpenOffice ввод формул а-ля Lout ) -- огромная трата букв. Ну, в самом деле, что удобнее и понятнее: "x^2" или "x sup 2". А уж длинные формулы разрастаются неимоверно.
2.2. Кстати, меня позабавил способ, при помощи которого автор создавал математические символы. Волнистая стрелка, например, -- это гибрид тильды и простой стрелки. Автор впал в зависимость от стандартных шрифтов. Причем, судя по тому, что результат удивительно похож на то, что выдает Microsoft Equation, эта метода пользуется популярностью. Видимо, придется переписывать макрос и добавлять шрифты из TeX'а. Ибо корявый интеграл с корявыми индексами (как в Lout, так и в MS Equation) портит мне аппетит.
2.3. Вводить каждый раз между параграфами @PP раздражает. Да и вообще, @ -- не самый удачный управляющий символ (кстати, в Lout очень интересная ситуация с пробелами). К счастью, я вручную на нем ничего писать не собираюсь: система нужна лишь как промежуточное звено.
Вопросы
- Кто-нибудь занимался русификацией GhostScript?
- Как конвертировать TTF в Type 1 с сохранением хинтов? Есть ли какая-нибудь маленькая утилитка? ttf2pfb (из MikTeX) вроде хинты не сохраняет. А пользоваться FontLab для конвертирования не так удобно (кстати, а он сохраняет? ).
- (!) Есть ли какая-нибудь небольшая утилита для внедрения шрифтов в PDF (или хоть PostScript)? Как это сделать вручную?
- Как Acrobat ищет шрифты? Если в PDF указан какой-то экзотический шрифт, отутствующий в системе, но, например, из семейства Times, подставит ли Acrobat имеющийся шрифт из того же семейства если в ps-файле нет таблицы подстановки?
- (!) Какие шрифты считаются более-менее стандартными и их можно не внедрять? (Ну, например, Times-Roman вроде считается таким.)
- Есть ли небольшая утилита для сжатия PDF? (GhostScript я небольшой утилитой не считаю. )
- Кто нибудь портировал Lout под Win32? VC его откомпилирует, или нужен MinGW? А то бинарник под Win32 собран с не самыми лучшими опциями.
- Где можно почитать про алгоритм переносов, используемый в TeX (и Lout)?
P.S. Кому нужен обработанный мной Lout версии 3.30 -- обращайтесь.