マクロツイーター

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

LaTeX で \newfont したい話 (bxnewfont パッケージ)(補足)

前回の続き)

和文フォントで \newfontx する話

\newfontx(*) 命令は pTeX 系エンジンの和文フォント(和文 TFM)に対しても利用できる。

% pLaTeX 文書
\documentclass[a4paper]{jsarticle}
\usepackage{bxnewfont}
% 敢えて min10 してみる
\newfontx*\fmin{min10}
\begin{document}
{\Large
和文フォントをちょっとチェック。\par
{\fmin 和文フォントをちょっとチェック。\par}
}
\end{document}

結果をちょっとチェックすれば判るように、 \newfontx で定義された和文フォントは標準のものに比べると少しサイズが大きい。この理由は、標準の和文フォントには(NFSS の((jis も min10 も QUAD の値は 0.962216 である。だから、\newfontx で定義した \fmin では 1zw = 0.962216×10pt となる。しかし、jsarticle クラスでは標準の和文フォントに対して NFSS レベルでさらに 0.961 倍のスケールをかけているので、標準フォントでは 1zw = 0.961×0.962216×10pt となっている。)))スケールが適用されているのに対して、“新しいフォント”では適用されていないからである。

新たに定義する和文フォントにも標準のものと同じ(NFSS の)スケールを適用させるには、以下の命令を実行すればよい。

\newfontjascale{*}

これにより、以降に \newfontx(*) で定義される和文フォントについてスケールが適用される。

% pLaTeX 文書
\documentclass[a4paper]{jsarticle}
\usepackage{bxnewfont}
\newfontjascale{*}
\newfontx*\fmin{min10}
\begin{document}
{\Large
和文フォントをちょっとチェック。\par
{\fmin 和文フォントをちょっとチェック。\par}
}
\end{document}

\newfontjascale の仕様は以下の通り。

  • \newfontjascale{<実数>} : 以降に \newfontx(*) で定義される和文フォントについて指定の値のスケールを NFSS レベルで適用する。((つまり、\DeclareFontShape 中のフォント仕様指定に対して s*[<実数>] が適用される。))
  • \newfontjascale{<ファミリ名>} : その和文ファミリに対する NFSS スケール値を指定したのと同じ。
  • \newfontjascale{*}\mcdefault を指定したのと同じ。つまり標準の明朝体のスケールと合わせる。

OpenType フォントで \newfonx する話

\font プリミティブや \newfont 命令の書式中の「フォント名」の部分は普通は TFM の名前を書くが、XeTeX や LuaTeX(+ luaotfload)においてはここに OpenType フォントの名前(および拡張子付のファイル名)を書くことができる。

% plain XeTeX 文書
\font\fcomic="Comic Sans MS/I"
{\fcomic Thnaks {\TeX}, and Good-bye!}

\newfontx(*) 命令においてもフォント名の部分を \font\newfont と同じ書式で書くことができる。

% XeLaTeX 文書
\documentclass[a4paper]{article}
\usepackage{bxnewfont}
\newfontx*{\fcomic}{Comic Sans MS/I}
\begin{document}
{\fcomic Thnaks {\TeX}, and {\Large Good-bye!}}
\end{document}

もちろん、OpenType フォントを指定したいのであれば、普通は fontspec パッケージを用いる方が適切である。しかし、もしかしたら、ある付加設定について「\font プリミティブでの書き方は知っているけど、それを fontspec でどう書いたらいいのか判らない」という困った事態になるかも知れない。そういう場合の“姑息な手段”としては使えるだろう。

% XeLaTeX 文書
\documentclass[a4paper]{article}
\usepackage{bxnewfont}
% 合成斜体を適用する
\newfontx*{\fpop}{"HGP創英角ポップ体":slant=0.3}
\begin{document}
% 暑苦しいゆきだるま……
{\fpop\Large ☃ゆきだるま☃}
\end{document}

※ちなみに、“slant=0.3”に対応する fontspec のオプション指定は“FakeSlant=0.3”である。

\newfont で \newfontx する話

bxnewfont パッケージを読みこむ時にパッケージオプションとして newfont を付けると、\newfont 命令が \newfontx と等価に再定義される。もしかすると、何かの役に立つ場面があるかも知れない。

\documentclass[a4paper]{article}
\usepackage[newfont]{bxnewfont}
\begin{document}
\newfont{\fcmssqA}{cmssq8}
\newfont{\fcmssqB}{cmssq8 at 16pt}
{\fcmssqA {\LaTeX}!} {\fcmssqB {\LaTeX}!!}
\end{document}