OldFonts 古ロシア語フォント〜Minion, Palatino 利用

先日『OldFonts 古ロシア語フォント集成』について書いた。そのときは Adobe Minion と Palatino Linotype のインストールには触れなかった。今日はこの2フォントの追加インストールと,upLaTeX で組版し,dvipdfmx で日本語混在の PDF を作成する概略を示す。

Minion, Palatino フォントの設定

  1. OldFonts パッケージは Adobe Minion と Palatino Linotype のフォントを添付していない。これは権利問題のためである。OldFonts の INSTALL ドキュメントによれば,Adobe Minion Pro は Adobe Reader に添付されている OpenType フォント(MinionPro-Regular.otf など4書体),Palatino Linotype は Windows XP/Vista に添付されている TrueType フォント(pala.ttf など4書体)を想定している。システムにこれらフォントファイルが存在していれば,TeX システムから参照できるよう TDS フォントツリーに適切なシンボリックリンクを設定する。
  2. OldFonts パッケージで組んだ dvi 中の Minion, Palatino フォントを dvips で処理するための map 及び enc ファイルが Mariusz Wodzicki 教授によって提供されている(ドミートリエフ教授のサイトにある pala-enc.tar.gz)。しかしながら,dvipdfmx で使うためには,別途 map を準備する必要がある。また Wodzicki 教授の enc ファイルだと,dvipdfmx ではコンマやピリオドなどの記号が拾えず(原因不明),ロシア文字以外を既存の enc ファイルから移植してこれを訂正する必要があった。私が作成したこれらのファイル: oldfonts-dvipdfmx.map, t2a-pala-iy.enc, t2d-pala-iy.enc をこのリンクからダウンロードして,TeX ツリーに格納し,さらにマップファイル登録をして欲しい。oldfonts-dvipdfmx.map については,updmap-sys で登録するのではなく,dvipdfmx.cfg に "f oldfonts-dvipdfmx.map" という行を追加してもよい。
  3. % ls
    oldfonts-dvipdfmx.map    t2a-pala-iy.enc   t2d-pala-iy.enc
    % su -m
    # mkdir -p $TEXDIR/fonts/map/dvipdfmx/oldfonts/
    # mkdir -p $TEXDIR/fonts/enc/dvips/oldfonts/
    # cp oldfonts-dvipdfmx.map $TEXDIR/fonts/map/dvipdfmx/oldfonts/
    # cp t2a-pala-iy.enc $TEXDIR/fonts/enc/dvips/oldfonts/
    # cp t2d-pala-iy.enc $TEXDIR/fonts/enc/dvips/oldfonts/
    # mktexlsr
    # updmap-sys --enable Map=oldfonts-dvipdfmx.map 

OldFonts 使い方

ロシア語旧正字法テキストをタイプセットするには,TeX のフォントエンコーディングは T2D を使用しなければならない。t2denc.def がシステムに組込まれている必要がある。もしなければ,ドミートリエフ教授のサイト等から入手して,TeX ツリーに格納しておく。

upLaTeX を用いると,旧正字法ロシア語テキストをそのまま原稿に記述することができる。革命前の旧正書法の文字 ѣ (ять ヤッチ), ѵ (ижица イージツァ), ѳ (фита フィター), і (и с точкой イー・ス・トーチコイ) を直接タイプできるのである。ただし,そのためには Dominique Unruh 氏による unicode パッケージ(Unicode support for LaTeX)に含まれる utf8x.def ファイルが必要である。LaTeX 標準の utf8.def では T2D 古ロシア文字が処理できない。

upLaTeX でキリル文字を組版するときは,\kcatcode`б=15 をプリアンブルで指定しておく。これによりキリル文字テキストが欧文として扱われるようになる。

OldFonts の各ファミリーを使用するためのスタイル,[ファミリー名] は以下のとおり。

- Академическая (Academy Old): AcademyOld, [fao]
- Академическая Узкая (Academy Old Narrow): AcademyOldN, [fan]
- Елизаветинская (Elizavet): Elizavet, [fez]
- Елизаветинская Узкая (Elizavet Narrow): ElizavetN, [fen]
- Литературная (Latin): Latin, [flt]
- Литературная Узкая (Latin Narrow): LatinN, [fln]
- Обыкновенная новая (New Standard): NewStandard, [fns]
- Обыкновенная новая Узкая (New Standard Narrow): NewStandardN, [fnn]
- ПТ-Курьер (CourierRO): CourierRO, [tcr]
- Миньон (Minion Pro): Minion, [pmn]
- Палатино (Palatino Linotype): Palatino, [pmn]
- Древнерусский (Drevnerusskij): Drevnerus, [fdr]
- Пушкин (Pushkin): Pushkin, [tpk]
例えば Академическая フォントファミリー fao を使う場合は,AcademyOld.sty を読込んでおき,\usefont 命令でフォント切替えを行う。
\usepackage[T2D]{fontenc}%フォントエンコーディング
\usepackage[utf8x]{inputenc}% unicode utf8x を使用
\usepackage{AcademyOld}% Академическая (Academy Old)
\begin{document}
\fontencoding{T2D}\selectfont% T2D 切替え
...
\usefont{T2D}{fao}{m}{n}% ファミリー切替え
Пушкинъ ...

ただし,unicode utf8x.def を用いて直接旧正字法ロシア文字でテキストを作成し,T2D フォントエンコーディングでタイプセットするとき,注意事項がある。utf8x.def は古ロシア語文字 і(U+0456)を \cyrii 命令(T2A で定義されているウクライナ文字)に展開するが,T2D ではこの文字は \cyrii ではなく \cyrizhe で定義されているため,エラーとなってしまうのである。このため,T2D フォントエンコーディングが選択されている場合は,\cyrii\cyrizhe として処理するよう,以下のような互換命令をプリアンブルで定義しておく。

\makeatletter%
\def\@td{T2D}%
\let\CYRIItmp=\CYRII%
\let\cyriitmp=\cyrii%
\def\cyrii{\ifx\cf@encoding\@td\cyrizhe\else\cyriitmp\fi}% lower case
\def\CYRII{\ifx\cf@encoding\@td\CYRIZHE\else\CYRIItmp\fi}% upper case
\makeatother%

タイプセット試験

すべてのファミリーを使うタイプセット例を示す。ただし,ノーマル立体のみの例であって,斜体,スモールキャピタルなどの書体は例示していない。各自,適宜試していただきたい。比較の参考として Babel 標準の LH フォントによる出力例も付加してある(LH T2D Type1 フォントについては『LH キリル T2D/OT2 Type1 フォント集』を参照)。以下のような LaTeX 原稿 orj.tex を準備した。原稿は UTF-8 エンコーディングで記述しなければならない。

旧正字法で用いられる文字の入力をサポートする IME が必要である。私は Emacs 用のインプットメソッド Elisp をダウンロードサービスで公開している。『Emacs スラヴ語/古典ギリシア語汎用インプットメソッド』を参照。

% -*- coding: utf-8; -*-
%
%     OldFonts 試験
%     Примѣръ русской дореволюціонной орѳографіи
%     -- coded by isao yasuda, June 2, 2009.
%
\documentclass[b5paper,papersize,10pt,uplatex]{jsarticle}
\usepackage[T2D,T2A]{fontenc}
\usepackage[utf8x]{inputenc}% from the unicode package
\usepackage{AcademyOld, AcademyOldN}
\usepackage{NewStandard, NewStandardN}
\usepackage{Elizavet, ElizavetN}
\usepackage{Latin, LatinN}
\usepackage{CourierRO}
\usepackage{Palatino, Minion}
\usepackage{Drevnerus, Pushkin}
\pagestyle{empty}
\kcatcode`б=15% disable cjk for cyrillic by upLaTeX
\makeatletter%
% \cyrii 互換命令(T2D 選択時 \cyrizhe 機能)
% \CYRII\cyrii T2D compatible (they become \CYRIZHE\cyrizhe in T2D)
\def\@td{T2D}%
\let\CYRIItmp=\CYRII%
\let\cyriitmp=\cyrii%
\def\cyrii{\ifx\cf@encoding\@td\cyrizhe\else\cyriitmp\fi}%
\def\CYRII{\ifx\cf@encoding\@td\CYRIZHE\else\CYRIItmp\fi}%
% フォント切替え命令の定義 definitions for fonts switching
\def\aks{\usefont{\cf@encoding}{fao}{m}{n}}% Academy Old Standard
\def\akn{\usefont{\cf@encoding}{fan}{m}{n}}% Academy Old Narrow
\def\els{\usefont{\cf@encoding}{fez}{m}{n}}% Elizavet Standard
\def\eln{\usefont{\cf@encoding}{fen}{m}{n}}% Elizavet Narrow
\def\cre{\usefont{\cf@encoding}{tcr}{m}{n}}% CourierRO
\def\lts{\usefont{\cf@encoding}{flt}{m}{n}}% Latin Standard
\def\ltn{\usefont{\cf@encoding}{fln}{m}{n}}% Latin Narrow
\def\ons{\usefont{\cf@encoding}{fns}{m}{n}}% New Standard
\def\onn{\usefont{\cf@encoding}{fnn}{m}{n}}% New Standard Narrow
\def\drs{\usefont{\cf@encoding}{fdr}{m}{n}}% Archic Russain (map deffers)
\def\psk{\usefont{\cf@encoding}{tpk}{m}{n}}% Pushkin (some glyphs lacking)
\def\plt{\usefont{\cf@encoding}{lpl}{m}{n}}% Palatino (from Windows XP ttf)
\def\mno{\usefont{\cf@encoding}{pmn}{m}{n}}% Minion (from Adebe Reader otf)
\def\ldr{\usefont{\cf@encoding}{cmr}{m}{n}}% LH cmr (ldrm)
\makeatother%
\def\fnm#1{\makebox[22ex][l]{#1}}%
\begin{document}
% sample texts
\def\testtxt{Пушкинъ, свѣдѣніе, мѵро, Ѳедоръ Достоевскій}%
% sample texts for CourierRO
\def\testtxtc{Пушкинъ, свѣдѣнiе, мѵро, Ѳедоръ Достоевскiй}%
\noindent%
\large%
\textbf{{\aks OldFonts} ロシア語旧正字法試験}
 
\fontencoding{T2D}\selectfont%
\noindent%
\aks\textbf{Примѣръ русской дореволюціонной орѳографіи}
 
\vspace{1em}
\normalsize
\aks \fnm{Academy Old: }\aks\testtxt\par
\aks \fnm{Academy Old N: }\akn\testtxt\par
\aks \fnm{Elizavet: }\els\testtxt\par
\aks \fnm{ }(dvipdfmxでは{\aks і}のアキが不正。dvipsならOK)\par
\aks \fnm{Elizavet N: }\eln\testtxt\par
\aks \fnm{CourierRO: }\cre\testtxtc\par% і ない
\aks \fnm{ }({\aks і}ない,ラテン文字iで代用)\par
\aks \fnm{Latin: }\lts\testtxt\par
\aks \fnm{Latin N: }\ltn\testtxt\par
\aks \fnm{New Standard: }\ons\testtxt\par
\aks \fnm{New Standard N: }\onn\testtxt\par
\aks \fnm{Palatino: }\plt\testtxt\par
\aks \fnm{Minion: }\mno\testtxt\par
\aks \fnm{Drevnij: }\drs\testtxt\par
\aks \fnm{ }(フォントマップT2Dと異なる)\par 
\aks \fnm{Pushkin: }\psk\testtxt\par
\aks \fnm{ }({\aks і, ѵ, ѳ}ない)\par
\aks \fnm{LH cmr: }\ldr\testtxt\par
\end{document}

これを uplatex orj.tex で処理し,dvipdfmx -p b5 orj.dvi で PDF を生成する。その結果 PDF の画像を以下に示す。PDF も orj.pdf として掲載しておく。

ファミリーによっては旧正字法グリフの欠落がある。Elizavet では i のあとに不正なアキが入っている。原因は不明である。私の使用している dvipdfmx-20070409 が古いからかも知れない。xdvi, dvips, pdflatex では問題ない。

※ 2010.1.20 付記
最新の ptexlive-20091009 及び ptetex3-20090610 + uptex-0.28 に含まれる dvipdfmx では,ここで指摘した Elizavet の不正なアキは解消されていた。

oldfonts-test.png