The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Документация для Linux" / Оглавление документа

Глава 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.




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру