(前回の続き)
新しい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
はそれ自体が単ウェイト用設定を有効化する。↩