(前回の続き)
新しいzxjafont(1.1版)の機能を語ってみる
従来の版(0.4版以前)の情報については以下を参照。
xeCJKでもzxjafontできる話
zxjafontのプリセットの指定対象は、例えばipaの場合は以下のようになる。
- zxjatypeを読み込んだ場合: 和文の
\rmfamilyが「IPA明朝」、和文の\sffamilyが「IPAゴシック」になる。(和文サポートモード) - それ以外:
\rmfamilyが「IPA明朝」、\sffamilyが「IPAゴシック」になる。
zxjatypeがない場合は日本語組版はサポートされないしそもそもフォントに「和文と欧文」の区別もない。しかしzxjafontはそういう状況で使うことも想定されていて、その場合は(区別のない)全体のフォントが設定対象となる。
ところがこれまでzxjafontは「zxjatypeが読まれずxeCJKだけ読み込まれている」状況は想定しておらず、この状況で無理に使うと「日本語のフォントが欧文だけに設定される」という奇妙な動作になっていた。「日本語組版をやりたいならzxjatypeを使っていて当然」であればそうで構わないのであるが、前回に述べたの通り、「日本語組版機能のためのzxjatype」という地位が非常に危ういものになっている。この辺りの事情を踏まえて考慮した結果、1.0版において、「xeCJKが読み込まれた場合も、zxjatype読込時と同様に和文サポートモードを適用する」という仕様変更を行うことにした。
zxjafontで原ノ味フォントできる話
既に前回のzxjatypeの例の中に登場しているが、「原ノ味フォント」を指定するプリセットオプションharanoajiが追加された。
※BXjsclsのクラスを用いたXeLaTeX文書でクラスオプションにjafont=haranoajiを指定した場合、zxjafontが読み込まれてプリセットharanoajiが適用される。
% XeLaTeX文書; UTF-8 \documentclass[xelatex,ja=standard,jafont=haranoaji, prefercjk,a4paper]{bxjsarticle} \begin{document} ①☀っ☁☂☀~っ?\par ❷☃っ☃☃☃~っ!\par \end{document}

これで、ptex-fontmaps、pxchfon、luatexja-preset、zxjafontの全ててharanoajiが使用可能になったことになる。
XeLaTeXでも3ウェイトが使える話
zxjafontパッケージの目的は「(u)pLaTeXのpxchfonパッケージやLuaLaTeXのluatexja-presetパッケージが提供するようなプリセット指定機能をXeLaTeXで実現すること」であるが、特に多ウェイトのプリセットについてはzxjafontは他のパッケージにはない制限があった。それは「明朝・ゴシック各々2ウェイトしか使えない」ということである。
例えば、LuaLaTeXでluatexja-presetパッケージをdeluxe付きで読み込んだ場合、明朝体で細字(通常より細い)を指定する\ltseriesとゴシック体で極太を指定する\ebseriesが使えるようになる。
※(u)pLaTeXでjapanese-otfをdeluxe付きで読み込んだ場合と同じ。
% LuaLaTeX文書; UTF-8 \documentclass[a4paper]{ltjsarticle} % 源ノフォントを多ウェイトで使う \usepackage[sourcehan,deluxe]{luatexja-preset} \begin{document} % 3ウェイトが使える ☃明朝体で{\ltseries 細字}や中字や\textbf{太字}。\par \sffamily ゴシックで中字や\textbf{太字}や{\ebseries 極太}。\par \end{document}
対して、旧来のzxjafontでは、多ウェイトのプリセットを指定した場合でも、\ltseriesや\ebseriesは提供されず、またそもそもプリセット自体が中字と太字の2ウェイトしか定義されていなかった。
源ノフォントで3ウェイトしてみる話
1.0版以降のzxjafontでは、luatexja-presetやjapanese-otfと同様に「明朝・ゴシック各々3ウェイト」が使えるようになる。すなわち、\ltseriesや\ebseriesの命令が提供され、プリセットの定義も3ウェイトになる。
% XeLaTeX文書; UTF-8 \documentclass[xelatex,ja=standard,jafont=sourcehan,prefercjk, a4paper]{bxjsarticle} \begin{document} ☃明朝体で{\ltseries 細字}や中字や\textbf{太字}。\par \sffamily ゴシックで中字や\textbf{太字}や{\ebseries 極太}。\par \end{document}

この「3ウェイト定義」を有効にするオプションはthreeweightであるが、このオプションは原則的に既定で有効になっているので指定は不要である。逆に、何らかの理由(例えば\ltseriesや\ebseriesの定義がトラブルを起こす、など)でthreeweightの機能を無効にしたい場合はnothreeweightというオプションを指定1すればよい。
% XeLaTeX文書; UTF-8 \documentclass[xelatex,ja=standard,jafont=sourcehan,prefercjk, nothreeweight,a4paper]{bxjsarticle} \begin{document} ☃明朝体で中字や\textbf{太字}。\par \sffamily ゴシックで中字や\textbf{太字}。\par \end{document}

源ノフォントだけど単ウェイトしてみる話
「源ノフォント」を使いたいが、でも「明朝・ゴシック各々1ウェイトしか使わず、かつ明朝の太字をゴシックにする」という「単ウェイトの和文フォント設定」を維持したい場合は、oneweightというオプション(これは昔から存在する)を指定すればよい。
\documentclass[xelatex,ja=standard,jafont=sourcehan,prefercjk, oneweight,a4paper]{bxjsarticle} %……あとは直前の例と同じ

出力結果をみて判るように、このoneweightを指定したときに明朝とゴシックで実際に使われるウェイトは、多ウェイトプリセットにおいて「中字」のウェイトに相当するものである2。
0.7版以降ではboldというオプションが利用できる。これを利用すると、oneweightと同じく「単ウェイトの設定」が維持されるが、そこで使われるゴシックのウェイトがプリセットの「太字」に相当するものになる。これはluatexja-presetやjapanese-otfのboldオプションと同様の機能である。
\documentclass[xelatex,ja=standard,jafont=sourcehan,prefercjk, bold,a4paper]{bxjsarticle} %……あとは直前の例と同じ

まとめ
多ウェイトのプリセットの制御のオプションをまとめると以下のようになる。
threeweight: 3ウェイトを使用。これが既定。nothreeweight: 2ウェイトを使用。oneweight: 単ウェイト用設定。bold: 単ウェイト用設定3で、ゴシックを太字にする。
ただしこれらのオプションの実際の仕様は少し複雑で以下のとおりである:
threeweight、oneweight、boldにはそれぞれ無効にするオプションnothreeweight、nooneweight、noboldが存在して、独立に有効無効を切り替えられる。- フォント設定に関して、3つのオプションの優先度は
bold>oneweight>threeweightとなる。 threeweightが有効の場合、\ltseriesと\ebseriesが定義される。これはboldやoneweightには影響されない。boldやoneweightは既定で無効。threeweightは既定で有効であるが、fontspecの版が古い(3ウェイトの設定がサポートされない)場合は無効になる。
その他もろもろ
- たとえzxjatypeやxeCJKが読み込まれていても無視して和文サポートモードへの移行を抑止するためのオプションを追加。
ignorejatype: zxjatype/xeCJKの読込を無視し、和文サポートモードを無効にする。noignorejatype:ignorejatypeの否定。
90jisとjis2004の両方を否定して既定状態に戻すオプションnojisshapeを追加。haranoaji以外の新設プリセットオプション:nopreset: 和文フォントのプリセット設定を行わない。- Mogaフォント系のプリセットを整理した(
mogaN-90を追加)。恐らく現在はMogaフォントの需要はないと思われるので、詳細は笑楽する。
- luatexja-preset互換のオプション別名を追加。
deluxe:nooneweightの別名nodeluxe:oneweightの別名jis90:90jisの別名2004jis:jis2004の別名match: 何もしないオプションnoembed:nopresetの別名。
- ptex-fontmapsとの互換のためのプリセット別名を追加。
kozuka:kozuka-proの別名morisawa:morisawa-proの別名hiragino:hiragino-proの別名
- 0.3版で非推奨となったプリセットを0.5版で廃止した。
kozuka4、kozuka6、kozuka6n、hiragino、ms-dx、ipa-dx、hiragino-dxが廃止。
-
BXjsclsクラスの
jafontオプションによりzxjafontが読み込まれている場合、zxjafontにオプションを指定するにはクラスオプション(グローバルオプション)として指定すればよい。↩ -
厳密にいうと、プリセットの種類によってはゴシックについて「
oneweight指定時専用のウェイト」が使われる。例えば、sourcehanプリセットではゴシックの中字は「Source Han Sans Regular」であるが、oneweight指定時のゴシックは「Source Han Sans Medium」であり、これは「Regular」よりも若干太い。↩ -
luatexja-presetと異なり、zxjafontの
boldはそれ自体が単ウェイト用設定を有効化する。↩