% 文字コードは UTF-8
% xelatex で組版する
\documentclass[xelatex,ja=standard,jafont=ipaex,
  a4paper]{bxjsarticle}
\xeCJKDeclareCharClass{CJK}{`■,`※}
\usepackage{color}
\definecolor{myblue}{rgb}{0,0,0.75}
\definecolor{mygreen}{rgb}{0,0.45,0}
\usepackage[colorlinks,hyperfootnotes=false]{hyperref}
\hypersetup{linkcolor=myblue,urlcolor=mygreen}
\usepackage{bxtexlogo}
\bxtexlogoimport{*}
\usepackage{shortvrb}
\MakeShortVerb{\|}
\newcommand{\PkgVersion}{1.2}
\newcommand{\PkgDate}{2020/02/24}
\newcommand{\Pkg}[1]{\textsf{#1}}
\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
\newcommand{\Note}{\par\noindent ※}
\newcommand{\Means}{：\ }
\newcommand{\JEmph}{\textgt}
\newcommand{\JSl}{\mbox{／}\linebreak[0]}
%-----------------------------------------------------------
\begin{document}
\title{\Pkg{zxjafont} パッケージ（v\PkgVersion）}
\author{八登崇之\ （Takayuki YATO; aka.~``ZR''）}
\date{v\PkgVersion\quad[\PkgDate]}
\maketitle

%===========================================================
\section{概要}

{\XeLaTeX}＋\Pkg{fontspec}でのフォントファミリ名を直接指定する方式は
「好きなフォントを指定する」という点では、
{\pLaTeX}\>よりも格段に使い易いが、
日本語を扱うためには必ず何らかのフォント設定を行う必要があり、
これが煩わしく感じられる場合もある。
本パッケージでは、日本語\>{\LaTeX}\>において
一般的に行われている日本語用フォント設定を予め用意しておいて、
簡単に呼び出せるようにしている。

\paragraph{前提環境}\mbox{}
\begin{itemize}
\item フォーマット\Means {\LaTeX}
\item エンジン\Means {\XeTeX}
\item 依存パッケージ\Means \Pkg{fontspec}パッケージ
\end{itemize}

%===========================================================
\section{使い方}
\label{sec:Usage}

以下のようにパッケージを読み込むだけである。
（ユーザ命令・環境はない。）
\begin{quote}\small
|\usepackage[|\Meta{メイン設定}|,|\Meta{サブ設定}|,|%
\Meta{他オプション}|]{zxjafont}|
\end{quote}

\Meta{メイン設定}は1つだけ指定できるが、
\Meta{サブ設定}と\Meta{他オプション}は任意個数指定可能である。
もし\Pkg{fontspec}が未読込の場合は自動的に読み込む。
{\XeLaTeX}\>には和文と欧文の元来の区別がないので、
このパッケージで指定するフォントが全ての文字に通用される。
ただし、\Pkg{xeCJK}パッケージや\Pkg{zxjatype}パッケージの
日本語処理機能を利用する場合には和文と欧文が区別されるようになり、
この場合は\JEmph{和文のみ}にフォント設定が適用される。

%-------------------
\subsection{メイン設定オプション}
\label{ssec:Main-Option}

{\LaTeX}\>の総称ファミリに関するプリセット設定、すなわち、
\Pkg{fontspec}の\>|\setmainfont|\JSl|\setsansfont|\JSl|\setmonofont|\>%
（\Pkg{xeCJK}\JSl\Pkg{zxjatype}併用時は\>%
|\setCJKmainfont|\JSl|\setCJKsansfont|\JSl|\setCJKmonofont|）
を行うもの。

\Note メイン設定のプリセットは\Pkg{pxchfon}パッケージにおける
プリセットをそのまま
引き継いでいる。
設定内容の詳細については、
\JEmph{\Pkg{pxchfon}の説明書を参照してほしい}。

\Note 1.0版より、\Pkg{pxchfon}パッケージの多ウェイト設定について
明朝・ゴシックの3ウェイトが全てサポートされるようになった。

\paragraph{単ウェイト用プリセット}
明朝・ゴシック各々1ウェイトのみを用いる設定。
セリフ（|\rmfamily|）に明朝、
サンセリフ（|\sffamily|）と等幅（|\ttfamily|）にゴシックを割り当てる。
さらに、{\pLaTeX}\>の習慣に合わせて、
セリフの太字（|\bfseries|）もゴシックにする。
（これは必ずしも好ましい設定ではないことに注意。）

\begin{itemize}
\item |ms|\Means
MS フォント。
\item |ipa|\Means
IPAフォント。
\item |ipaex|\Means
IPAexフォント。
\end{itemize}
\Note {\XeTeX}\>は「フォント非埋込のPDF生成」に対応していないので、
|noembed| プリセットは存在しない。

例えば、|ms|\>プリセットは以下の\Pkg{fontspec}の設定を行う：
\begin{quote}\small\begin{verbatim}
\setmainfont{MS-Mincho}[BoldFont=MS-Gothic]
\setsansfont{MS-Gothic}[BoldFont=MS-Gothic]
\setmonofont{MS-Gothic}[BoldFont=MS-Gothic]
\end{verbatim}\end{quote}
\Note \Pkg{xeCJK}\JSl\Pkg{zxjatype}読込時は和文用フォントの
設定（|\setCJKmainfont|\>等）に置き換わり、またこの場合は
和文スケール設定（|Scale|\>オプションキー）が追加される。
これは以降で紹介する例についても同様である。

\paragraph{多ウェイト用プリセット}
セリフ（|\rmfamily|）に明朝、
サンセリフ（|\sffamily|）と等幅（|\ttfamily|）にゴシックを割り当て、
各々について中字（|\mdseries|）と太字（|\bfseries|）のフォントを
\Pkg{pxchfon}のプリセットと同様に個別に設定する。

さらに、|threeweight|\>オプションが有効の場合は、
{p\LaTeX}\>の\Pkg{japanese-otf}で\>|deluxe|\>オプションを指定したときと
同様に、「明朝の細字（|\rmfamily\ltseries|）」と
「ゴシックの極太（|\sffamily\ebseries|）」が指定できるようになり、
明朝とゴシックの各々について3ウェイトのフォントが
\Pkg{pxchfon}のプリセットと同様に個別に設定される。
\Note |threeweight|\>オプションは通常は既定で有効になっている
（詳細は\>\ref{ssec:Other-Option}\>節を参照）。

\begin{itemize}
\item |ms-hg|\Means
  MSフォント + HGフォント。
  \Note HGフォント = Microsoft Office 付属の日本語フォント
\item |ipa-hg|\Means
  IPAフォント + HGフォント。
\item |ipaex-hg|\Means
  IPAexフォント + HGフォント。
\item |moga|\Means
  Mogaフォント（MogaEx；2004JIS字形）。
  \Note \Pkg{pxchfon}の\>|moga-mobo-ex|（|jis2004|\>有効）と同じで、
  MogaEx系統が用いられる。
\item |moga-90|\Means
  Mogaフォント（MogaEx；90\JSl 2000JIS字形）。
  \Note \Pkg{pxchfon}の\>|moga-mobo-ex|（|jis2004|\>無効）と同じで、
  MogaEx90系統が用いられる。
\item |mogaN-90|\Means
  Mogaフォント（Moga；90\JSl 2000JIS字形）。
  \Note \Pkg{pxchfon}の\>|moga-mobo|（|jis2004|\>無効）と同じで、
  Moga90系統が用いられる。
  \Note |moga|\JSl|moga-90|\JSl|mogaN-90|\>の各プリセットは、%
  |jis2004|\JSl|jis90|\>オプションが併用された場合にはそれに応じて
  適切な字形をもつフォントの方に切り替える。
\item |ume|\Means
  梅フォント。
\item |kozuka-pro|\Means
  小塚フォント（Pro版）。
\item |kozuka-pr6|\Means
  小塚フォント（Pr6版）。
\item |kozuka-pr6n|\Means
  小塚フォント（Pr6N版）。
\item |hiragino-pro|\Means
  ヒラギノフォント基本6書体セット（Pro/Std版）。
\item |hiragino-pron|\Means
  ヒラギノフォント基本6書体セット（ProN/StdN版）。
\item |morisawa-pro|\Means
  モリサワフォント基本7書体（Pro版）。
\item |morisawa-pr6n|\Means
  モリサワフォント基本7書体（Pr6N版）。
\item |yu-win|\Means
  游書体（Windows~8.1搭載版）。
\item |yu-win10|\Means
  游書体（Windows~10搭載版）。%TODO
\item |yu-osx|\Means
  游書体（macOS搭載版）。
\item |sourcehan|\Means
  Source Han Serif（源ノ明朝）+ Source Han Sans（源ノ角ゴシック）、
  非サブセット版。%TODO
  \Note つまり地域別サブセットOTF版以外のもの。
  フォント名での指定であるため、%
  \Pkg{pxchfon}の\>|sourcehan|\>と\>|sourcehan-otc|\>の両方と
  等価である。
\item |sourcehan-jp|\Means
  Source Han Serif + Source Han Sans、
  日本用地域別サブセット版。
\item |noto|\Means
  Noto Serif CJK + Noto Sans CJK、
  非サブセット版。
  \Note |sourcehan|\>と同様の補足事項が当てはまる。
  \Pkg{pxchfon}の\>|noto|\>と\>|noto-otc|\>の両方と等価。
\item |noto-jp|\Means
  Noto Serif JP + Noto Sans JP、
  日本用地域別サブセット版。
\item |haranoaji|\Means
  原ノ味フォント。
\end{itemize}

例えば\>|haranoaji|\>プリセットについて説明すると、%
|threeweight|\>が有効の場合は以下の設定
（3ウェイト）が行われる%
\footnote{実際には、状況に応じてフォント名の代わりにファイル名
（\texttt{*.otf}）での指定に切り替わる。}
：
\begin{quote}\small\begin{verbatim}
\setmainfont{HaranoAjiMincho-Regular}[BoldFont=HaranoAjiMincho-Bold,
    FontFace={l}{n}{HaranoAjiMincho-Light}]
\setsansfont{HaranoAjiGothic-Regular}[BoldFont=HaranoAjiGothic-Bold,
    FontFace={eb}{n}{HaranoAjiGothic-Heavy}]
\setmonofont{HaranoAjiGothic-Regular}[BoldFont=HaranoAjiGothic-Bold,
    FontFace={eb}{n}{HaranoAjiGothic-Heavy}]
\end{verbatim}\end{quote}

|threeweight|\>が無効の場合は以下の設定
（中字・太字のみの2ウェイト）が行われる：
\begin{quote}\small\begin{verbatim}
\setmainfont{HaranoAjiMincho-Regular}[BoldFont=HaranoAjiMincho-Bold]
\setsansfont{HaranoAjiGothic-Regular}[BoldFont=HaranoAjiGothic-Bold]
\setmonofont{HaranoAjiGothic-Regular}[BoldFont=HaranoAjiGothic-Bold]
\end{verbatim}\end{quote}

|oneweight|\>オプション指定時は以下の設定
（1ウェイトのみ）が行われる：
\begin{quote}\small\begin{verbatim}
\setmainfont{HaranoAjiMincho-Regular}[BoldFont=HaranoAjiGothic-Medium]
\setsansfont{HaranoAjiGothic-Medium}[BoldFont=HaranoAjiGothic-Medium]
\setmonofont{HaranoAjiGothic-Medium}[BoldFont=HaranoAjiGothic-Medium]
\end{verbatim}\end{quote}
\Note 先の例と異なり明朝の太字がゴシックとなり、
かつゴシックとして“|HaranoAjiGothic-Medium|”%
（\Pkg{pxchfon}プリセットにおいて\>|\setgothicfont|\>に
割り当てられているフォント）が使われることに注意。

そして\>|bold|\>オプション指定時は以下の設定が行われる：
\begin{quote}\small\begin{verbatim}
\setmainfont{HaranoAjiMincho-Regular}[BoldFont=HaranoAjiGothic-Bold]
\setsansfont{HaranoAjiGothic-Bold}[BoldFont=HaranoAjiGothic-Bold]
\setmonofont{HaranoAjiGothic-Bold}[BoldFont=HaranoAjiGothic-Bold]
\end{verbatim}\end{quote}

\paragraph{特殊なプリセット}
\mbox{}

\begin{itemize}
\item |nopreset|\Means
  メイン設定を何も行わない。
  \Note フォントの設定は自分で行うが、それでも何らかの理由で
  \Pkg{zxjafont}パッケージを読み込みたいという場合に
  用いることが想定されている。
\end{itemize}

\paragraph{他パッケージとの互換用のプリセット}
\mbox{}

\begin{itemize}
\item |kozuka|\Means
  |kozuka-pro| の別名。
  （\Pkg{ptex-fontmaps}でのプリセット名。）
\item |morisawa|\Means
  |morisawa-pro| の別名。
  （\Pkg{ptex-fontmaps}でのプリセット名。）
\item |moga-mobo|\Means
  |mogaN-90| の別名。
  （\Pkg{ptex-fontmaps}でのプリセット名。）
\item |moga-mobo-ex|\Means
  |moga-90| の別名。
  （\Pkg{ptex-fontmaps}でのプリセット名。）
  \Note 1.2版より、Moga系プリセットが\>|jis90|\JSl|jis2004|\>での
  字体指定に従うようになったため、
  他のパッケージの動作との互換がより高い動作に変更された。
  現在は既定で90JIS字形になることに注意。
\item |noto-otf|\Means
  |noto| の別名。
  （\Pkg{luatexja-preset}でのプリセット名。）
\item |hiragino|\Means
  |hiragino-pro| の別名。
  （\Pkg{ptex-fontmaps}でのプリセット名。）
  \Note 0.6版で追加。
  0.4版以前では |hiragino| が別の設定を指していたが、
  これは0.5版で廃止された。
\end{itemize}

\paragraph{廃止されたプリセット}

0.2a版以前で用意されていた次のプリセット設定は、
0.5版において廃止された。
現在は指定するとエラーが発生する。

\Note ただし |hiragino| については現在では |hiragino-pro| の別名と
解釈される。

\begin{quote}
|kozuka4|、|kozuka6|、|kozuka6n|、|hiragino|、
|ms-dx|、|ipa-dx|、|hiragino-dx|
\end{quote}

%-------------------
\subsection{サブ設定のオプション}
\label{ssec:Sub-Option}

\Pkg{fontspec}では使用するフォントを |\newfontfamily| 命令で
増やすことができる。
それを利用した追加設定である。

\begin{itemize}
\item |hg|\Means
Microsoft Officeのフォント（HGフォント）に対応する、
以下のファミリ命令が定義される。
\begin{itemize}
\item |\hgmcfamily|\Means HGS明朝B、太字=HGS明朝E。
\item |\hgprfamily|\Means HGS創英ﾌﾟﾚｾﾞﾝｽEB
\item |\hggtfamily|\Means HGSｺﾞｼｯｸM、太字=HGSｺﾞｼｯｸE。
\item |\hggufamily|\Means HGS創英角ｺﾞｼｯｸUB
\item |\hgmgfamily|\Means HG丸ｺﾞｼｯｸM-PRO
\item |\hgkkfamily|\Means HGS教科書体
\item |\hgksfamily|\Means HG正楷書体-PRO
\item |\hggsfamily|\Means HGS行書体
\item |\hgppfamily|\Means HGS創英角ﾎﾟｯﾌﾟ体
\end{itemize}

\item |hiraginomg|\Means
ヒラギノの丸ゴシックを使う設定。
\begin{itemize}
\item |\hmgfamily|\Means ヒラギノ丸ゴ Pro W4
\end{itemize}

\item |mobo|\Means
Moboフォント（2004JIS字形）を使う設定。
\begin{itemize}
\item |\mobofamily|\Means Moboフォント（2004JIS字形）
\end{itemize}

\item |mobo-90|\Means
Moboフォント（90\JSl 2000JIS字形）を使う設定。
\begin{itemize}
\item |\mobofamily|\Means Moboフォント（90\JSl 2000JIS字形）
\end{itemize}

\item |maruberi|\Means
マルベリフォントを使う設定。
\begin{itemize}
\item |\mmgfamily|\Means モトヤLマルベリ3等幅
\end{itemize}
\end{itemize}

%-------------------
\subsection{その他のオプション}
\label{ssec:Other-Option}

\begin{itemize}
\item |oneweight|\Means
多ウェイト用のプリセットを単ウェイトとして用いる。
\Note \Pkg{pxchfon}のマニュアルのプリセットの記述に
おいて\>|\setminchofont|\>と\>|\setgothicfont|\>で設定されている
ウェイトのフォントが用いられる。
\item |nooneweight|（既定）\Means
|oneweight|\>の否定。

\item |threeweight|（既定）\Means
多ウェイト用プリセットを使う場合に3ウェイトを利用できるようにする。
\item |nothreeweight|\Means
|threeweight|\>の否定。
多ウェイト用プリセットは2ウェイトのみ使える。
\Note |(no)threeweight|\>は1.0版で追加された。
\Note 既定は\>|threeweight|\>であるが、使用中の\Pkg{fontspec}の版が
古くて追加ウェイトに対応できない場合は\>|nothreeweight|\>が既定になる。

\item |bold|\Means
|oneweight|\>と同じく多ウェイト用プリセットを単ウェイトとして用いるが、
この際のゴシック体のフォントとして太字ウェイトに相当するものを用いる。
\Note \Pkg{pxchfon}のプリセットでの\>|\setminchofont|\>%
と\>|\setboldgothicfont|\>のフォントが用いられる。
\Note \Pkg{luatexja-preset}とは異なり、|bold|\>の指定自体が
単ウェイト設定を強制する。
|bold|\>と\>|oneweight|\>を同時に指定した場合は\>|bold|\>が優先する。
\item |nobold|（既定）\Means
|bold|\>の否定。

\item |prop|\Means
プロポーショナル幅のフォントを用いる。
例えば「IPA明朝」の代わりに「IPA P明朝」、
「HGS行書体」の代わりに「HGP行書体」を指定する。
既定で用いるのは等幅のフォントだが、
「欧文のみプロポーショナル」の変種（HGフォントの場合「HGS～」名称のもの）
がある場合はそれを優先させる。
\Note 1.1版より、\Pkg{xeCJK}\JSl\Pkg{zxjatype}併用時でも\>|prop|\>が
指定できるようになった。
\item |noprop|（既定）\Means
|prop|\>の否定。
（和文が）等幅のフォントを用いる。

\item |scale=|\Meta{実数}\Means
和文スケール値（\Pkg{fontspec}の |Scale| 属性の値）。
既定値は、\Pkg{BXjscls}の文書クラスおよび
\Pkg{zxjatype}パッケージで指定されている場合はその値、
なければ1となる。

\item |jis90|\JSl|90jis|\Means
90JIS字形（2000JIS字形）の使用を指定する。
\item |jis2004|\JSl|2004jis|\Means
2004JIS字形の使用を指定する。
\item |nojisshape|（既定）\Means
特定のJIS字形の使用の指定を行わない。

\item |expert|\Means
横組専用仮名字形を（可能であれば）利用する。
\Note \Pkg{luatexja-preset}の\>|expert|\>とは異なり、
ルビ用字形は未サポート。

\item |ignorejatype|\Means
たとえ\Pkg{xeCJK}\JSl\Pkg{zxjatype}が読み込まれていたとしても
それらを無視して、「和文欧文の区別がない」前提の動作を行う。
\Note この場合「プリセットで指定した日本語フォントが\JEmph{欧文のみ}に
適用される」という奇妙な動作になる。
有用性はほぼないと思われるが念のため用意している。
\item |noignorejatype|（既定）\Means
|ignorejatype|\>の否定。
\Note |(no)ignorejatype|\>は1.0版で追加された。

\item |feature={|\Meta{属性リスト}|}|\Means
このパッケージで指定されるフォント全てに通用する
\Pkg{fontspec}の属性の指定。
既定値は空。

\end{itemize}

\paragraph{他パッケージとの互換用のオプション}
\Pkg{luatexja-preset}との互換のためのもの。

\begin{itemize}
\item |deluxe|\JSl|nodeluxe|\Means
  それぞれ |nooneweight|\JSl|oneweight| の別名。
\item |match|\JSl|fontspec|\Means
  これらの機能は“常に有効”と考えられるため、黙って無視される。
\item |nfssonly|\Means
  非サポートのため警告が出て無視される。
\item |noembed|\Means
  \ref{ssec:Main-Option}で述べた通り、非埋込の設定はサポートできない
  ので、警告が出た上で、|nopreset|\>プリセットが指定されたものと
  見なされる。
\end{itemize}

%===========================================================
\end{document}
%% EOF
