マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

Arial のブラックなアレを TeX で使う (2)

前回の続き)

乙部氏の「書体拡張プロジェクト」のパッケージについての話の続き。

TeX Live で使うには

先述の通り、W32TeX においては「標準キット」をインストールするだけで当該のフォントが使用可能になるのだが、これは必要な dvipdfmx や pdfTeX 用のフォントマップの設定が W32TeX では予め行われているからである。従って、それ以外の TeX 配布(TeX Live 等)ではそのままでは使えない。といっても、「標準キット」自体も dviout 用の設定しか用意していないので、必要な設定を行うのは簡単ではない。

というわけで。

TeX Live の場合、インストール(ファイルの配置)を済ませた後、pdfTeX 用のマップファイルである pdftex-bxttnfss.map を updmap で有効化するとよい。

updmap --enable Map pdftex-bxttnfss.map
(またはupdmap-sys)
エンコーディングのアレな件を何とかする

ところで、「書体拡張プロジェクト」というのは、以前に「dviout の欧文フォントの謎が解けた!」のシリーズ((1)(2)(3))で紹介した「TTNFSS パッケージ」と同じものである。そしてその記事では

TTNFSS では T1 エンコーディングの定義を自己流に改変しているため、「普通の T1」を前提とする他のパッケージと共存させると不具合が生じる

ということを主張し、また実際に不具合が起こる例を示した。ただし、これは飽くまで「他のパッケージ*1と併用した場合」でしかも「『自己流の T1』エンコーディングを用いた場合」*2に限ることに注意されたい。すなわち、大概の場合はこの点が原因の不具合は起こらない。

どうしても気になる人*3は BXttnfss バンドルに含まれる bxwinenc パッケージを利用すればよい。TTNFSS で「T1」エンコーディングを使う場合は通常は(TTNFSS に含まれる)winenc パッケージを読み込むことになるが、これの代わりに bxwinenc を読み込むと、TTNFSS の「自己流の T1」は T1 でなく WT1 という別のエンコーディング名で取り扱われ、これにより「衝突」による不具合が解消される。なお、timesnew 等の「既定フォントを設定するパッケージ」では既定で「自己流 T1」エンコーディングを使う設定であり内部で winenc を読み込んでいる((「OT1」というパッケージオプションを指定すれば OT1 での使用となり winenc を読み込まない。ちなみに、tahoma 等の一部のパッケージでは肝心の winenc の読込を忘れているが、これはバグだと思う。))が、この場合はそのパッケージより前に bxwinenc を読み込めばよい。

[winenc パッケージ使用の場合:\texttrademark\textregistered 等の一部の記号*4が LM Sans で化ける]
\documentclass[a4paper]{jsarticle}
\usepackage{arial} % 内部で winenc を読み込む
\usepackage{textcomp}
\newcommand*\superR{\textsuperscript{\textregistered}} % 上付き丸R
\begin{document}
\noindent\sffamily Arial: % Windows なフォント
Microsoft\texttrademark 製の文書作成ソフトには、
Excel\superR、PowerPoint\superR 等があります。\par
\noindent\fontfamily{lmss}\selectfont LM Sans: % 普通の TeX なフォント
Microsoft\texttrademark 製の文書作成ソフトには、
Excel\superR、PowerPoint\superR 等があります。\par
\end{document}
[bxwinenc パッケージ使用の場合:全て正常出力]
\documentclass[a4paper]{jsarticle}
\usepackage{bxwinenc} % 先に bxwinenc を読み込んでおく
\usepackage{arial}
\usepackage{textcomp}
\newcommand*\superR{\textsuperscript{\textregistered}} % 上付き丸R
\begin{document} % 既定は「WT1」エンコーディングとなる
\noindent\sffamily Arial:
Microsoft\texttrademark 製の文書作成ソフトには、
Excel\superR、PowerPoint\superR 等があります。\par
\noindent\fontencoding{T1}\fontfamily{lmss}\selectfont LM Sans: % T1 に切替
Microsoft\texttrademark 製の文書作成ソフトには、
Excel\superR、PowerPoint\superR 等があります。\par
\end{document}

注意点として、bxwinenc を用いた場合、「WT1」が既定のエンコーディングとなるが、ここでは TTNFSS が提供する(Windows な)フォントファミリしか使えない。それ以外のファミリに切り替える場合には、エンコーディングを別の(T1 等)ものに変える必要がある。(上の例を参照。)

エンコーディング」という概念がどうしても解らない、という人のために別の手段も用意されている。bxwinenc を「T1」オプション付きで読み込むと(T1 が既定となるので)エンコーディングを気にする必要が無くなるが、その代わりに一部の記号*5が使えなくなる(警告が出て CM Roman で代替される)。どうしてもこれらの記号を使いたい場合は、\text...\WTT... に変えた命令(\WTTtrademark 等)を使えば出力できる。

\documentclass[a4paper]{jsarticle}
\usepackage[T1]{bxwinenc} % 先に bxwinenc を読み込んでおく
\usepackage{arial}
\usepackage{textcomp}
\newcommand*\superR{\textsuperscript{\textregistered}} % 上付き丸R
\newcommand*\WTTsuperR{\textsuperscript{\WTTregistered}} % \WTT なやつ
\begin{document}
\noindent\sffamily Arial:
Microsoft\WTTtrademark 製の文書作成ソフトには、
Excel\WTTsuperR、PowerPoint\WTTsuperR 等があります。\par
\noindent\fontfamily{lmss}\selectfont LM Sans:
Microsoft\texttrademark 製の文書作成ソフトには、
Excel\superR、PowerPoint\superR 等があります。\par
\end{document}

(出力結果は前の bxwinenc のものと同じ。全て正常である。)

*1:書体や記号の使用を拡張するパッケージが一番衝突しやすいと思うが、これ以外でも影響はありうる。なお、説明文書を読む限り、少なくとも、TTNFSS の作者(乙部氏)は他の書体拡張パッケージとの併用は想定していないのは確かである。

*2:OT1 での使用の場合は当該記事で示したような「衝突」は起こらない。ただし、後述の「winwnc パッケージの自動読込」についても注意が必要。

*3:わたし、気になります

*4:該当するのは「通常は textcomp パッケージを必要とされる(が TTNFSS の『自己流 T1』では使用可能な)記号」である。

*5:該当するのは前に winenc で「化ける」とした記号。この設定では「本物の T1」が有効になっているから使えなくなる。