Глава 15. Кириллические шрифты

Содержание

Шрифты для TeX/LaTeX
lh
Как "прикрутить"  произвольный Type1 шрифт.
Шрифты Type1
cm-super
literat
PSCYR
Paradissa
dmtr-fonts
sharatype
Шрифты для X Window
Cyr-RFX
Cronyx
xrus
European
xcyr
Шрифты TrueType
Консольные шрифты
EURORUS и PANCYRILLIC

На настоящий момент на рынке кириллических шрифтов существует только один продавец— это ParaType. Остальные (в том числе и "свободные" сайты типа Vedi или Litera) предлагают в основном акцидентные шрифты, для набора текстов не пригодные. С ценами Paratype можно ознакомится, естественно, на www.paratype.com. Однако при отборе шрифтов надо очень внимательно прочитать лицензию и договор[12]. Кроме того, необходимо озаботиться грамотным подбором гарнитур для начертаний \rm, \sf, \sc, \tt так, чтобы они были совместны. Иначе можно было бы ограничиться "свободной Литературной" от ParaType, но вопрос: откуда взять замену всем остальным ТеХовским шрифтам?!

Так что лучше пользоваться стандартными шрифтами lh Ольги Лапко (раздел “lh”). Относительно недавно появился полностью свободный набор шрифтов Type1 cm-super, которые получены преобразованием из стандартных cm-шрифтов (раздел “cm-super”). Возможно шрифты cm-super являются самым перспективным решением.

Шрифты для TeX/LaTeX

При работе с TeX/LaTeX можно использовать Type1 шрифты — где их можно найти, описано в разделе “Шрифты Type1”.

Внимание: При использовании Type1 шрифтов в тексте, насыщенном математическими символами, восприятие текста умеренно ухудшится. Математические CM-шрифты не будут сочетаться с текстовыми шрифтами. Это утверждение не относится к шрифтам cm-super (раздел “cm-super”) и в меньшей степени к шрифтам PsCyr (раздел “PSCYR”).

lh

В этом разделе описаны стандартные кириллические шрифты LaTeX, которых хватает в 90% случаев. В тех случаях, когда этих шрифтов не хватает (например, для просмотра pdf) следует воспользоваться шрифтами cm-super (раздел “cm-super”).

Благодаря Ольге Лапко (Издательство Мир) мы имеем бесплатный шрифт, который позволяет оформлять научные тексты с помощью LaTeX, совершенно не заботясь о подборке шрифтов для формул/текста. Как правило, эти шрифты уже есть в дистрибутиве LaTeX. Эти шрифты развиваются — в будущем обещают новые начертания (относительно недавно обещали добавить Concreate — "Конкретная Математика"). Шрифты lh всегда можно достать по следующим адресам:

Начиная с версии 3.20 LH поддерживает стандартные кодировки LaTeX “Пакет T2”, кроме того, поддерживаются LCY, OT2 и др.

Как "прикрутить"  произвольный Type1 шрифт.

Текст для этого раздела взят из fido7.ru.tex и пренадлежит перу Виктора Фигурнова.

Перед началом установки следует убедиться, что:

  1. шрифты правильные. В частности, чтобы имена символов в шрифтовых файлах соответствуют своим символам (глифам). То есть, например, скажем, символ "Д"  должен называться afii10021, а не Adieresis или как-то еще, как в некоторых кривых шрифтах. А символ с именем Adieresis должен выглядеть как латинская A с двумя точками сверху, а не как-то по другому...

  2. для курсивных или наклонных шрифтов параметр ItalicAngle (угол наклона) установлен правильно. Он должен быть отрицательным, т.к. в PostScript углы меряются против часовой стрелки. В некоторых шрифтах этот параметр указан без знака минус (скажем, ItalicAngle 12, тогда как правильно было бы ItalicAngle -12).

  3. для Type1-шрифтов имеются AFM-файлы. Если их нет, то можно их создать из .PFB + .PFM:

    1. прочесть шрифт любым редактором Type1 шрифтов (скажем, FontLab 2.5) и затем сохранить шрифт. В FontLab 2.5 это можно сделать сразу для многих шрифтов (File | Find Font, и задать преобразование из PFB в PFB);

    2. или использовать PostScript-программу pf2afm, она есть на диске TeX Live. Программы типа pfm2afm лучше не использовать — они не все шрифты обрабатывают правильно (составные символы, например, не понимают).

Основная проблема связана с тем, что модные сейчас кодировки TeX-овских шрифтов — T2а и им подобные, не соответствуют кодировкам имеющихся Type1 шрифтов, которые в большинстве своем сделаны либо в кодировке Windows CP 1251 (кириллические шрифты), либо в "стандартной кодировке Adobe" (латинские шрифты). Поэтому для установки этих шрифтов приходится использовать нетривиальные средства, такие как "виртуальные шрифты" (vf-файлы) и программу fontinst.

Ниже приведена примерная последовательность действий, при установке Type1 шрифтов для работы в TeX-овской кодировке T2A.

  • Копируете аfm-файлы шрифтов устанавливаемого семейства (гарнитуры) в рабочий каталог. Туда же — pfb-файлы (для удобства).

  • Если хотите, то можно переименовать эти файлы, чтобы имена соответствовали (более или менее) схеме Берри (см. texmf/doc/fontname/fontname.dvi)

  • Пишите задание для fontinst. Это лучше показать на примере. Скажем, мы хотим установить семейство "Академическая", и у нас есть ps-шрифты для русской, латинской и восточноевропейской кодировок, начертаний regular, bold и italic. Для удобства мы переименовали шрифты (AFM и PFB-файлы) так, что они имеют вид zacdBIE.afm (или .pfb), где

    1. B — насыщенность шрифта: r — regular, b — bold;

    2. I — начертание: n — обычное, i — курсивное;

    3. E — кодировка: c — кириллическая (Windows-1251), a — латинская, e — восточноевропейская.

    Вот задание для Fontinst:

    \input fontinst.sty \input fnstcorr \input cyralias \installfonts % ------ Читаем метрики шрифтов (AFM) и делаем метрики в формате MMX. % ------ начертание regular -- \aliasfonts{}{}{zacdrnc} % Читаем zacdrnc.afm (afm-метрики % кириллических шрифтов должны % преобразовываться в MMX с помощью % команды aliasfonts ) \transformfont{zacdrnr}{\reencodefont{8r}{\fromafm{zacdrna}}} % Шрифт zacdrna имеет кодировку % AdobeStandard, и мы должны его % преобразовать в кодировку 8r, иначе не % сможем использовать многие его символы. \fromafm{zacdrne} % Читаем zacdrne.afm (метрика % восточноевропейского шрифта) % ------ начертание bold --(без комментариев: все аналогично) \aliasfonts{}{}{zacdbnc} \transformfont{zacdbnr}{\reencodefont{8r}{\fromafm{zacdbna}}} \fromafm{zacdbne} % ------ начертание Italic -- \aliasfonts{}{}{zacdric} \transformfont{zacdrir}{\reencodefont{8r}{\fromafm{zacdria}}} \fromafm{zacdrie} % ------ начертание Bold Italic -- делаем наклонный шрифт из Bold: % Здесь 212 = целое(1000 * tan(12 градусов)), а 12 градусов -- это % угол наклона курсива для данного шрифта (см. параметр % ItalicAngle AFM-файла для курсивного начертания шрифта). \transformfont{zacdbic}{\slantfont{212}{\frommtx{zacdbnc}}} \transformfont{zacdbir}{\slantfont{212}{\frommtx{zacdbnr}}} \transformfont{zacdbie}{\slantfont{212}{\frommtx{zacdbne}}} % Устанавливаем семейство ZACD (Academy) в кодировке T2A \installfamily{T2A}{zacd}{} \installfont{zacdr6a}{zacdrnc,zacdrnr,zacdrne,cyrillic}% T2A regular {T2A}{T2A}{zacd}{m}{n}{} \installfont{zacdb6a}{zacdbnc,zacdbnr,zacdbne,cyrillic}% T2A bold {T2A}{T2A}{zacd}{b}{n}{} \installfont{zacdri6a}{zacdric,zacdrir,zacdrie,cyrillic}% T2A italic {T2A}{T2A}{zacd}{m}{it}{} \installfont{zacdbi6a}{zacdbic,zacdbir,zacdbie,cyrillic}% T2A bold italic {T2A}{T2A}{zacd}{b}{it}{} \installfont{zacdrc6a}{zacdrnc,zacdrnr,zacdrne,cyrillic}% T2A small caps {T2Ac}{T2A}{zacd}{m}{sc}{} % Замечание: порядок перечисления исходных шрифтов во втором аргументе % команды installfont важен: так, для начертания regular нужные символы % берутся из Type1-шрифта zacdrnc (кириллица), не найденные там символы % -- из Type1-шрифта zacdrnr (это перекодированный в кодировку 8r % шрифт zacdrnа), а потом, если символ все же не найден -- из Type1-шрифта % zacdrne (восточноевропейского). % Устанавливаем семейство ZACD (Academy) в кодировке T1. \installfamily{T1}{zacd}{} \installfont{zacdr8t}{zacdrnr,zacdrne,zacdrnc,latin}% T1 regular {T1}{T1}{zacd}{m}{n}{} \installfont{zacdb8t}{zacdbnr,zacdbne,zacdbnc,latin}% T1 bold {T1}{T1}{zacd}{b}{n}{} \installfont{zacdri8t}{zacdrir,zacdrie,zacdric,latin}% T1 italic {T1}{T1}{zacd}{m}{it}{} \installfont{zacdbi8t}{zacdbir,zacdbie,zacdbic,latin}% T1 bold italic {T1}{T1}{zacd}{b}{it}{} \installfont{zacdbc8t}{zacdbir,zacdbie,zacdbic,latin}% T1 bold italic {T1c}{T1}{zacd}{b}{it}{} % Замечание: если бы у нас был только один исходный кириллический % pfb-шрифт (в кодировке Windows=CP1251), то устанавливать этот % шрифт в TeX-овской кодировке T1 смысла бы, по видимому, не имело -- % материала для создания многих нужных символов кодировки T1 % в исходном шрифте нет. % Устанавливаем семейство ZACD (Academy) в кодировке TS1 % (text companion). Эта кодировка содержит некоторые полезные % вспомогательные символы -- параграф, номер, копирайт, и т.п., % для которых обычно нужно, чтобы они соответствовали по % своему виду (гарнитуре и начертанию) символам текста. \installfamily{TS1}{zacd}{} \installfont{zacdr8c}{zacdrnr,zacdrne,zacdrnc,textcomp}% {TS1}{TS1}{zacd}{m}{n}{} \installfont{zacdri8c}{zacdrir,zacdrie,zacdric,textcomp}% {TS1}{TS1}{zacd}{m}{it}{} \installfont{zacdb8c}{zacdbnr,zacdbne,zacdbnc,textcomp}% {TS1}{TS1}{zacd}{b}{n}{} \installfont{zacdbi8c}{zacdbir,zacdbie,zacdbic,textcomp}% {TS1}{TS1}{zacd}{b}{it}{} \endinstallfonts \documentclass[12pt]{article} \begin{document} \end{document}

    Этот текст надо записать в тот же каталог, что AFM-файлы.

  • Прогоняете полученный TeX-файл через LaTeX.

  • Для каждого полученного VPL-файла выполняете команду VPtoVF имя-файла.VPL имя-файла.VF имя-файла.TFM

  • Перемещаете:

    1. afm-файлы — в каталог texmf/fonts/afm/XXX

    2. pfb-файлы — в каталог texmf/fonts/type1/XXX

    3. tfm-файлы — в каталог texmf/fonts/tfm/XXX

    4. vf-файлы — в каталог texmf/fonts/vf/XXX

    5. fd-файл — в каталог texmf/tex/latex/XXX

    Где XXX — имя, которое вы выбрали для каталогов со своими шрифтами. Например, вы можете вместо XXX использовать "DFFonts".

  • Удаляете файлы с расширениями .log, .aux, .pl, .mtx.

  • Делаете файл для dvips, указывающий ему, как загружать (или создавать) Type1-шрифты, которые служат основой для создания виртуальных TeX-овских шрифтов (т.е. шрифтов в кодировках T2a, T1, TS1 и др.). Идентификаторы ("клички") этих Type1 шрифтов заданы в команде \aliasfonts (3-ий параметр), \transformfont (1-ый параметр) и \fromafm (когда эта команда используется отдельно). То есть, в нашем случае, надо определить для dvips шрифты с идентификаторами (условными кличками):

    1. zacdrnc, zacdrnr, zacdrne — для создания начертания regular, т.е. прямых светлых шрифтов;

    2. zacdric, zacdrir, zacdrie — для создания начертания italic, т.е. курсивных светлых шрифтов;

    3. zacdbnc, zacdbnr, zacdbne — для создания начертания bold, т.е. прямых полужирных шрифтов;

    4. zacdbic, zacdbir, zacdbie — для создания начертания bold italic, т.е. "курсивных" (на самом деле наклонных) полужирных шрифтов.

    Вот соответствующие команды для dvips:

    zacdrnc AcademyC < zacdrnc.pfb zacdrnr AcademyA " TeXBase1Encoding ReEncodeFont " <8r.enc < zacdrna.pfb zacdrne AcademyE < zacdrne.pfb zacdbnc AcademyC-Bold < zacdbnc.pfb zacdbnr AcademyA-Bold " TeXBase1Encoding ReEncodeFont " <8r.enc < zacdbna.pfb zacdbne AcademyE-Bold < zacdbne.pfb zacdric AcademyC-Italic < zacdric.pfb zacdrir AcademyA-Italic " TeXBase1Encoding ReEncodeFont " <8r.enc < zacdria.pfb zacdrie AcademyE-Italic < zacdrie.pfb zacdbic AcademyC-Bold " .212 SlantFont " < zacdbnc.pfb zacdbir AcademyA-Bold " .212 SlantFont TeXBase1Encoding ReEncodeFont " <8r.enc < zacdbna.pfb zacdbie AcademyE-Bold " .212 SlantFont " < zacdbne.pfb

    Здесь второй параметр в каждой команде — это PS-имя исходного шрифта, его можно посмотреть в AFM-файле: параметр FontName AFM-файла.

  • Все такие команды для устанавливаемых тобой шрифтов надо записать в один файл. Назовем его, скажем, DFFonts.map. Поместим его в каталог config программы DVIPS (texmf/dvips/config), а в файл config.ps из этого же каталога вставляем ссылку на него (строку +p DFFonts.map).

    При использовании pdftex, тот же файл надо поместить в каталог config программы PDFTEX (texmf/pdftex/config), и в файл pdftex.cfg из этого каталога вставить на него ссылку (строку map +DFFonts.map).

    Настройка dvipdfm на используемые шрифты, видимо, аналогична, но там формат .map-файла чуть другой. Видимо, .map-файл должен быть таким:

    zacdrnc default zacdrna.pfb zacdrnr 8r.enc zacdrna.pfb zacdrne default zacdrne.pfb zacdbnc default zacdbnc.pfb zacdbnr 8r.enc zacdbna.pfb zacdbne default zacdbne.pfb zacdric default zacdric.pfb zacdrir 8r.enc zacdria.pfb zacdrie default zacdrie.pfb zacdbic default zacdbnc.pfb -s 0.212 zacdbir 8r.enc zacdbna.pfb -s 0.212 zacdbie default zacdbne.pfb -s 0.212

    Назовите файл с такими командами, например, DFFontsD.map. Тогда надо поместить его в каталог config программы dvipdfm и вставить в файл config из этого каталога строку f DFFontsD.map . Пока что работоспособность этого варианта не проверялась.

  • При необходимости — пишете пакет, чтобы установленными шрифтами было удобно пользоваться. Если "собезьяннничать"  пакет pscyr (раздел “PSCYR”), то можно написать что-то вроде: Файл DFFonts.sty

    \ProvidesPackage{dffonts}[2002/09/20 v0.1] \def\acddefault{zacd} \DeclareRobustCommand\acdfamily {\not@math@alphabet\rmfamily\mathrm \fontfamily\acddefault\selectfont} \DeclareTextFontCommand{\textacd}{\acdfamily} % ... и так для каждого семейства установленных тобой шрифтов \endinput
  • Перегенерируйте индексные файлы TeX-а. Например с помощью команды initexmf -u .



[12] То есть, какие реально у вас будут права, какие реально есть гарантии и какую реально поддержку и сопровождение обеспечивает Paratype.