texlive[45253] Master/texmf-dist: pxchfon (9sep17)

commits+karl at tug.org commits+karl at tug.org
Sun Sep 10 00:34:38 CEST 2017


Revision: 45253
          http://tug.org/svn/texlive?view=revision&revision=45253
Author:   karl
Date:     2017-09-10 00:34:38 +0200 (Sun, 10 Sep 2017)
Log Message:
-----------
pxchfon (9sep17)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/platex/pxchfon/README-ja.md
    trunk/Master/texmf-dist/doc/platex/pxchfon/README.md
    trunk/Master/texmf-dist/doc/platex/pxchfon/pxchfon.pdf
    trunk/Master/texmf-dist/doc/platex/pxchfon/pxchfon.tex
    trunk/Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty
    trunk/Master/texmf-dist/tex/platex/pxchfon/pxjafont.sty

Modified: trunk/Master/texmf-dist/doc/platex/pxchfon/README-ja.md
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/platex/pxchfon/README.md
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/platex/pxchfon/pxchfon.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/platex/pxchfon/pxchfon.tex
===================================================================
--- trunk/Master/texmf-dist/doc/platex/pxchfon/pxchfon.tex	2017-09-09 22:34:23 UTC (rev 45252)
+++ trunk/Master/texmf-dist/doc/platex/pxchfon/pxchfon.tex	2017-09-09 22:34:38 UTC (rev 45253)
@@ -10,8 +10,8 @@
 \usepackage{metalogo}
 \usepackage{shortvrb}
 \MakeShortVerb{\|}
-\newcommand{\PkgVersion}{1.0b}
-\newcommand{\PkgDate}{2017/06/29}
+\newcommand{\PkgVersion}{1.1a}
+\newcommand{\PkgDate}{2017/09/09}
 \newcommand{\Pkg}[1]{\textsf{#1}}
 \newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
 \newcommand{\Note}{\par\noindent ※}
@@ -33,16 +33,17 @@
 
 {\pLaTeX}/{\upLaTeX}の文書の標準のフォント(明朝・ゴシック)
 をユーザ指定のものに置き換える。
-dvipdfmx 専用である。
-他のフォント追加パッケージと異なり、
-追加するフォントを{\LaTeX}文書中で指定するので、
+dvipdfmx専用である。
+使用するフォントを{\LaTeX}文書中で指定するので、
 一度パッケージをインストールするだけで、
 任意の日本語フォント(ただし等幅に限る)を使うことができる。
 欧文部分を同じ日本語フォントで置き換えることも可能である。
-\Pkg{UTF}/\Pkg{OTF} パッケージにも対応している。
+\Pkg{japanese-otf}\footnote{\Pkg{japanese-otf}パッケージ\Means
+  https://www.ctan.org/pkg/japanese-otf}%
+パッケージにも対応している。
 
-0.5 版での拡張で、{\pTeX}において広く行われているフォント設定
-(IPA フォントの使用等)をパッケージオプション一つで
+0.5版での拡張で、{\pTeX}において広く行われているフォント設定
+(IPAフォントの使用等)をパッケージオプション一つで
 行う機能を追加した。
 
 %===========================================================
@@ -49,11 +50,11 @@
 \section{前提環境}
 
 \begin{itemize}
-\item {\TeX}フォーマット: {\pLaTeX}/{\upLaTeX}
-\item DVIウェア: dvipdfmx
-\item 前提パッケージ:
+\item {\TeX}フォーマット\Means {\pLaTeX}/{\upLaTeX}
+\item DVIウェア\Means dvipdfmx
+\item 前提パッケージ\Means
   \begin{itemize}
-  \item \Pkg{atbegshi} パッケージ(|everypage| オプション使用時)
+  \item \Pkg{atbegshi}パッケージ(|everypage| オプション使用時)
   \end{itemize}
 \end{itemize}
 
@@ -69,7 +70,7 @@
 オプションは次のものが用意されている。
 
 \begin{itemize}
-\item ドライバオプション\Means
+\item \textbf{ドライバオプション}\Means
   |dvipdfmx|、|dvips|、|dviout|、|xdvi| および |nodvidriver|%
   \footnote{ドライバ依存動作を明示的に無効化するための指定。}
   が指定できる。
@@ -81,11 +82,11 @@
   ドライバオプションの既定値は |dvipdfmx| である。
 \item \textbf{プリセット指定オプション}(|ipa|、|hiragino| 等)
   名前に対応するプリセット指定を有効にする。
-  詳細については\ref{sec:Preset}節を参照。
+  \Note 詳細については\ref{sec:Preset}節を参照。
 \item \textbf{ファイルプリセット指定オプション}%
   (|+|\mbox{}\textgt{名前} または |*|\mbox{}\textgt{名前})
   名前に対応するファイルプリセット指定を有効にする。
-  詳細については\ref{sec:FilePreset}節を参照。
+  \Note 詳細については\ref{sec:FilePreset}節を参照。
 \item |alphabet|\Means
   欧文フォントも指定されたフォントの英数字部分で置き換える。
   (明朝が |\rmfamily|、ゴシックが |\sffamily| に適用される。)
@@ -95,28 +96,26 @@
   欧文フォントは変更しない。
   インストール時に欧文用の設定をしていない場合は必ずこれを
   指定する必要がある。
-  プリセット指定オプション使用の場合はこちらが既定で有効になる。
+  \textbf{プリセット指定オプション使用の場合はこちらが既定で有効になる。}
 \item |otf|(既定)\Means
-  \Pkg{OTF}および\Pkg{UTF}パッケージの使用時に、
+  \Pkg{japanese-otf}パッケージの使用時に、
   そのフォントも置き換えの対象とする。
 \item |nootf|\Means
   |otf| の否定。
-  \Pkg{OTF}/\Pkg{UTF}パッケージのフォントは置き換えない。
-  この場合、\Pkg{OTF}パッケージで |noreplace| を指定しない限り、
-  標準の和文フォントは変化しない。
+  \Pkg{japanese-otf}パッケージのフォントは置き換えない。
+  \Note この場合、\Pkg{japanese-otf}パッケージで |noreplace| を
+  指定しない限り、標準の和文フォントは変化しない。
 \item |prefer2004jis|\Means
-  {\pTeX}/{\upTeX}の標準和文フォントのCMapを2004JIS字形指定のものに
-  変更する。
-  Adobe-Japan1に対応したOpenTypeフォント使用の場合は、
-  所謂「2004JIS字形」が使われることになる。
-  \footnote{\Pkg{OTF}パッケージの和文フォントについては、
-    \Pkg{OTF}パッケージの\texttt{jis2004}オプションで2004JIS字形
+  {\pTeX}/{\upTeX}の標準和文フォントのCMapを「2004JIS字形」指定の
+  ものに変更する。
+  \footnote{\Pkg{japanese-otf}パッケージの和文フォントについては、
+    \Pkg{japanese-otf}パッケージの |jis2004| オプションで2004JIS字形
     指定を行う仕様になっている。
-    そのため、本パッケージの\texttt{prefer2004jis}の対象にはならない。
-    ところが実際には、0.7h版以前の本パッケージでは、
-    {\upTeX}上の\Pkg{OTF}の和文フォントにも\texttt{prefer2004jis}を
+    そのため、本パッケージの |prefer2004jis| の対象にはならない。
+    ところが0.7h版以前の本パッケージでは、
+    {\upTeX}上の\Pkg{japanese-otf}の和文フォントにも |prefer2004jis| を
     適用していた。
-    これは、昔の\Pkg{OTF}が{\upTeX}上では\texttt{jis2004}オプションに
+    これは、昔の\Pkg{japanese-otf}が{\upTeX}上では |jis2004| オプションに
     未対応であったためであり、非公式の暫定仕様であった。
     現在では、この暫定仕様は廃止されている。}
 \item |noprefer2004jis|(既定)\Means
@@ -123,16 +122,16 @@
   |prefer2004jis| の否定。
 \item |(no)jis2004|\Means
   |(no)prefer2004jis| の別名。
-  \Note グローバルオプションに |jis2004| を指定して\Pkg{OTF}と
+  \Note グローバルオプションに |jis2004| を指定して\Pkg{japanese-otf}と
   \Pkg{pxchfon}の両方に適用することを意図している。
 \item |oneweight|\Means
-  \Pkg{OTF}パッケージを単ウェイトで使用する場合に、
+  \Pkg{japanese-otf}パッケージを単ウェイトで使用する場合に、
   プリセット設定で使われるフォントの集合を{\pTeX}標準と同一にする。
   \footnote{小塚フォントのプリセットでは、{\pTeX}標準のゴシック
   (jisg等)にはMウェイト(Acrobatに付属のフォントの一つ)を
-  割り当てる一方で、\Pkg{OTF}パッケージの3ウェイトのゴシックには
+  割り当てる一方で、\Pkg{japanese-otf}パッケージの3ウェイトのゴシックには
   R、B、Hウェイトを割り当てている。
-  従って、\Pkg{OTF}を単ウェイトで用いる時にMウェイトを使いたい
+  従って、\Pkg{japanese-otf}を単ウェイトで用いる時にMウェイトを使いたい
   場合には \texttt{oneweight} オプションを指定すればよい。
   現状では、小塚フォント以外のプリセットではこのオプションを
   用いる必要はない。}
@@ -156,51 +155,65 @@
   排他である。
 \item |everypage|\Means
   DVIの全ページにマップ設定を書き込む。
-  詳細は「dvipdfmx のページ抜粋処理への対応」を参照。
+  \Note 詳細については\ref{sec:PageSelection}節を参照。
 \item |noeverypage|(既定)\Means
   |everypage|の否定。
   DVIの先頭ページにのみマップ設定を書き込む。
-\item |directunicode|\Means
-  \Pkg{OTF}パッケージのUnicode出力用フォント(|\UTF{}| の出力)
-  について、Unicodeを用いてフォントのグリフにアクセスするように
-  設定する。
-  この設定を用いると、当該のフォントのもつ任意のUnicode文字
-  (ただし全角幅に限る)が利用可能になる。
-  \footnote{通常は、Unicodeを一旦Adobe-Japan1のCIDに変換して、
-  CIDでフォントのグリフにアクセスするという処理になる。
-  このため、Adobe-Japan1のグリフと対応しないUnicode文字は
-  普通は使えない。なお、\texttt{directunicode} は0.6c版では
-  横書きのみの対応であったが、0.7版で縦書きにも対応した。
-  ただし、dvipdfmxの仕様の都合で、縦書き用グリフにはならない。
-  また、現状では実質的に効果がBMP内の文字に限られる。}
-\item |directunicode*|\Means
-  |directunicode| の設定を適用し、さらに、{\upTeX}標準の
-  和文フォントにもUnicodeを用いたグリフアクセスを設定する。
-  \Note これは、「非標準的なCMapをもつOpenTypeフォント
-  \footnote{例えば、Adobeの「Source Han Sans」など。}%
-  を\Pkg{pxchfon}で使いたい」
-  という要求のための部分的な解決法である。
-  このオプションを利用する場合、状況によって一部の出力が異常になる
-  可能性があることに予め注意すべきである。
-  例えば、|prefer2004jis| は機能しなくなるし、また縦組の約物の
-  出力は異常になる。
-\item |nodirectunicode|(既定)\Means
-  |directunicode| の否定。
+\item \textbf{Unicode直接指定オプション}\Means
+  一部(または全部)のフォントについて、エンコーディング指定方式を
+  “Cmap指定”から“Unicode直接指定”に変更する。
+  |nodirectunicode|(既定)、|directunicode|、|directunicode*|、
+  |unicode*|、|unicode| の5種類の指定がある。
+  \Note 詳細については\ref{sec:DirectUnicode}節を参照。
+  \Note 一部のプリセット指定はUnicode直接指定の既定値を変更する。
+%\item |directunicode|\Means
+%  \Pkg{japanese-otf}パッケージのUnicode出力用フォント(|\UTF{}| の出力)
+%  について、Unicodeを用いてフォントのグリフにアクセスするように
+%  設定する。
+%  この設定を用いると、当該のフォントのもつ任意のUnicode文字
+%  (ただし全角幅に限る)が利用可能になる。
+%  \footnote{通常は、Unicodeを一旦Adobe-Japan1のCIDに変換して、
+%  CIDでフォントのグリフにアクセスするという処理になる。
+%  このため、Adobe-Japan1のグリフと対応しないUnicode文字は
+%  普通は使えない。なお、\texttt{directunicode} は0.6c版では
+%  横書きのみの対応であったが、0.7版で縦書きにも対応した。
+%  ただし、dvipdfmxの仕様の都合で、縦書き用グリフにはならない。
+%  また、現状では実質的に効果がBMP内の文字に限られる。}
+%\item |directunicode*|\Means
+%  |directunicode| の設定を適用し、さらに、{\upTeX}標準の
+%  和文フォントにもUnicodeを用いたグリフアクセスを設定する。
+%  \Note これは、「非標準的なCMapをもつOpenTypeフォント
+%  \footnote{例えば、Adobeの「Source Han Sans」など。}%
+%  を\Pkg{pxchfon}で使いたい」
+%  という要求のための部分的な解決法である。
+%  このオプションを利用する場合、状況によって一部の出力が異常になる
+%  可能性があることに予め注意すべきである。
+%  例えば、|prefer2004jis| は機能しなくなるし、また縦組の約物の
+%  出力は異常になる。
+%\item |nodirectunicode|(既定)\Means
+%  |directunicode| の否定。
 \item |usecmapforalphabet|\Means
   |alphabet|(または |relfont|)を指定して日本語フォントの英数字部分を
-  欧文フォントとして使う際に、グリフのアクセスを「Unicode直接」でなく
-  半角英数字用のCMap(\texttt{UniJIS-UCS2-HW-H})を用いたCIDでの
-  アクセスで行う。
-  Adobe-Japan1のCIDアクセス対応のOpenTypeフォントの場合、「Unicode直接」
+  欧文フォントとして使う際に、そのフォントマップについて
+  “CMap指定”を利用する。
+  \Note “CMap指定”と“Unicode直接指定”の違いについては
+  \ref{sec:DirectUnicode}節を参照。
+  \Note 半角英数字用の\texttt{UniJIS-UCS2-HW-H}というCMapが指定される。
+  \Note “AJ1である”OpenTypeフォントの場合、“Unicode直接指定”
   を使うと英数字がプロポーショナル幅のものになってしまうので、
   このオプションを指定して半角幅のものを使う必要がある。
   \footnote{%
   念のため補足すると、半角幅しかサポートされないのは技術的制限による。
-  すなわち、フォントを「後から置き換える」ということを可能に
-  するためには、TFMは固定幅でなければならないのである。
-  \ref{sec:Notice}節も参照されたい。}
+%  すなわち、フォントを「後から置き換える」ということを可能に
+%  するためには、TFMは固定幅でなければならないのである。
+  \ref{sec:Notice}節を参照されたい。}
 \item |nousecmapforalphabet|(既定)\Means
   |usecmapforalphabet| の否定。
+  \Note 和文と異なり、欧文フォントでは“Unicode直接指定”の方が
+  既定となる。
+  ただし、|unicode*| または |unicode| が指定された場合はそちらの指定が
+  優先されて欧文フォントもUnicode直接指定になる。
+  \Note 一部のプリセット指定は |usecmapforalphabet| の指定を強制する。
 \item |dumpmap|\Means
   「通常マップファイルダンプ出力」を有効にする。
   すなわち、本パッケージにより文書に設定されるマップ行を、
@@ -214,15 +227,30 @@
   (|ptex-NAME.map|、|otf-NAME.map|、|uptex-NAME.map|、
   |otf-up-NAME.map| の4つ、ただし |NAME| はジョブ名)
   を出力する。
-  \Note 例えば、\Pkg{OTF}パッケージが使われない場合は
-  \Pkg{OTF}パッケージ用のマップ行は適用されない。
+  \Note 例えば、\Pkg{japanese-otf}パッケージが使われない場合は
+  \Pkg{japanese-otf}パッケージ用のマップ行は適用されない。
   そのため、通常ダンプ出力はそのようなマップ行は書き出されない。
   これに対して、
   {\TeX} Live用ダンプ出力は「実際に適用されるか」は無関係で
   kanji-config-updmapの規則に従うため、
-  \Pkg{OTF}パッケージ用のマップが |otf-*.map| に書き出される。
+  \Pkg{japanese-otf}パッケージ用のマップが |otf-*.map| に書き出される。
 \item |nodumpmaptl|(既定)\Means
   |dumpmaptl| の否定。
+\item |strictcsi|\Means
+  |Identity-H/V| のCMapが指定されたマップ行について、“CSI指定”は
+  (仕様に厳密に従って)フォントがTrueTypeグリフの場合にのみ出力する。
+  \Note “CSI指定”とはフォントファイル名の直後に書く“|/AJ1|”の類の
+    ことで、本来は(グリフ集合情報を持たない)TrueTypeグリフのフォント
+    のためのものである。
+    しかし、CFFグリフのフォントに対してCSI指定があっても特に問題は
+    起こらず、また、フォントのグリフ種別の判断する処理は少し時間が
+    かかるため、既定では厳密な判定は行わない。
+\item |nostrictcsi|(既定)\Means
+  |strictcsi| の否定。
+  |Identity-H/V| に対する“CSI指定”は常に出力される。
+  \Note さすがにファイルに出力されたマップ行に不備があるのは
+    避けたいので、|dumpmap(tl)| が指定された場合は、
+    既定が |strictcsi| に変更される。
 \end{itemize}
 
 %===========================================================
@@ -235,8 +263,8 @@
 \item {\upTeX}の日本語フォント --- |urml*|/|ugbm*|/|uprml*|/|upgbm*|
 \item {\upTeX}の中国語・韓国語フォント
 \item \Pkg{UTF}パッケージのフォント --- |hmr*|/|hkb*|/|unij*|/|cid*|
-\item \Pkg{OTF}パッケージの日本語フォント --- |hmin*|/|hgoth*|/|otf-{u,c}j*|
-\item \Pkg{OTF}パッケージの中国語・韓国語フォント
+\item \Pkg{japanese-otf}パッケージの日本語フォント --- |hmin*|/|hgoth*|/|otf-{u,c}j*|
+\item \Pkg{japanese-otf}パッケージの中国語・韓国語フォント
 %\item \Pkg{PXfontspec}パッケージの日本語フォント --- |nja{r,s}-*|
 \end{itemize}
 
@@ -249,7 +277,7 @@
 欧文フォントについては実現方法が少し異なる
 (\ref{sec:Mechanism-Alph}節を参照)。
 
-\Pkg{OTF}パッケージを |deluxe| オプション付きで用いている
+\Pkg{japanese-otf}パッケージを |deluxe| オプション付きで用いている
 場合\textgt{以外}、すなわち明朝・ゴシックとも単ウェイトの場合、
 以下の命令を用いる。
 
@@ -272,7 +300,7 @@
 \end{verbatim}
 \end{quote}
 
-\Pkg{OTF}パッケージを |deluxe| 付きで用いている場合は、
+\Pkg{japanese-otf}パッケージを |deluxe| 付きで用いている場合は、
 明朝・ゴシックともに3ウェイトを使う。
 この時は、各ウェイト毎にフォント指定ができる。
 またこの場合、丸ゴシック(|\mgfamily|)が使用可能になるが、
@@ -428,7 +456,7 @@
 %-------------------
 \subsection{多ウェイト用の設定}
 
-\Pkg{OTF}パッケージの |deluxe| オプション使用時に有効になる。
+\Pkg{japanese-otf}パッケージの |deluxe| オプション使用時に有効になる。
 明朝3ウェイト、ゴシック3ウェイト、丸ゴシック1ウェイトを設定する。
 
 \begin{itemize}
@@ -435,6 +463,11 @@
 \item |ms-hg|\Means
   MSフォント + HGフォント。
   \Note HGフォント = Microsoft Office 付属の日本語フォント
+  \Note 「HG丸ゴシックM-PRO」
+  は欧文が等幅でないので |alphabet| オプション指定と
+  ともに使うことができない。
+  (後掲の |ipa-hg|、|ipaex-hg| についても同様。)
+
 \begin{quote}\small\begin{verbatim}
 \setminchofont[0]{msmincho.ttc}    % MS 明朝
 \setboldminchofont[0]{hgrme.ttc}   % HG明朝E
@@ -652,6 +685,14 @@
 
 \item |yu-win10|\Means
   游書体(Windows~10搭載版)。
+  \Note フォントの性質のため、この設定では欧文引用符
+  “\,”‘\,’の出力が不正になる。
+  この不具合は |unicode| オプションを指定する
+  (dvipdfmxの20170627版が必要)、
+  または代わりに |yu-win10+| プリセットを指定する
+  (dvipdfmxの20170318版が必要)ことで回避できる。
+  詳細については\ref{sec:DirectUnicode}節を参照されたい。
+
 \begin{quote}\small\begin{verbatim}
 \setminchofont{yumin.ttf}
 \setlightminchofont{yuminl.ttf}
@@ -673,54 +714,67 @@
 \setxboldgothicfont{YuGo-Bold.otf}     % 游ゴシック体 ボールド
 \setmarugothicfont{YuGo-Medium.otf}    % 游ゴシック体 ミディアム
 \end{verbatim}\end{quote}
-\end{itemize}
 
-なお、以上の設定で登場したフォントのうち、
-「HG丸ゴシックM-PRO」
-は欧文が等幅でないので |alphabet| オプション指定と
-ともに使うことができない。
-
-%-------------------
-\subsection{試験的なプリセット設定}
-
-以下は試験的に実装されたプリセット設定である。
-これらについては将来的な仕様変更・廃止の可能性がある
-ことに注意されたい。
-\Note 具体的な設定内容は未確定のため割愛する。
-
-\begin{itemize}
 \item |sourcehan-otc|\Means
   Source Han Serif(源ノ明朝)+ Source Han Sans(源ノ角ゴシック)、
   OTC版。
-  \Note |SourceHanSerif-Regular.ttc|、|SourceHanSans-Regular.ttc|等。
 
+\begin{quote}\small\begin{verbatim}
+\setminchofont[0]{SourceHanSerif-Regular.ttc}
+\setlightminchofont[0]{SourceHanSerif-Light.ttc}
+\setboldminchofont[0]{SourceHanSerif-Bold.ttc}
+\setgothicfont[0]{SourceHanSans-Medium.ttc}
+\setmediumgothicfont[0]{SourceHanSans-Regular.ttc}
+\setboldgothicfont[0]{SourceHanSans-Bold.ttc}
+\setxboldgothicfont[0]{SourceHanSans-Heavy.ttc}
+\setmarugothicfont[0]{SourceHanSans-Medium.ttc}
+\end{verbatim}\end{quote}
+
 \item |sourcehan|\Means
   Source Han Serif(源ノ明朝)+ Source Han Sans(源ノ角ゴシック)、
   言語別OTF版。
-  \Note |SourceHanSerif-Regular.otf|、|SourceHanSans-Regular.otf|等。
 
+\begin{quote}\small\begin{verbatim}
+\setminchofont{SourceHanSerif-Regular.otf}
+\setlightminchofont{SourceHanSerif-Light.otf}
+\setboldminchofont{SourceHanSerif-Bold.otf}
+\setgothicfont{SourceHanSans-Medium.otf}
+\setmediumgothicfont{SourceHanSans-Regular.otf}
+\setboldgothicfont{SourceHanSans-Bold.otf}
+\setxboldgothicfont{SourceHanSans-Heavy.otf}
+\setmarugothicfont{SourceHanSans-Medium.otf}
+\end{verbatim}\end{quote}
+
 \item |noto-otc|\Means
   Noto Serif CJK + Noto Sans CJK、
   OTC版。
-  \Note |NotoSerifCJK-Regular.ttc|、|NotoSansCJK-Regular.ttc|等。
 
+\begin{quote}\small\begin{verbatim}
+\setminchofont[0]{NotoSerifCJK-Regular.ttc}
+\setlightminchofont[0]{NotoSerifCJK-Light.ttc}
+\setboldminchofont[0]{NotoSerifCJK-Bold.ttc}
+\setgothicfont[0]{NotoSansCJK-Medium.ttc}
+\setmediumgothicfont[0]{NotoSansCJK-Regular.ttc}
+\setboldgothicfont[0]{NotoSansCJK-Bold.ttc}
+\setxboldgothicfont[0]{NotoSansCJK-Black.ttc}
+\setmarugothicfont[0]{NotoSansCJK-Medium.ttc}
+\end{verbatim}\end{quote}
+
 \item |noto|\Means
   Noto Serif CJK + Noto Sans CJK、
   言語別OTF版。
-  \Note |NotoSerifCJKjp-Regular.otf|、|NotoSansCJKjp-Regular.otf|等。
 
-\end{itemize}
+\begin{quote}\small\begin{verbatim}
+\setminchofont{NotoSerifCJK-Regular.otf}
+\setlightminchofont{NotoSerifCJK-Light.otf}
+\setboldminchofont{NotoSerifCJK-Bold.otf}
+\setgothicfont{NotoSansCJK-Medium.otf}
+\setmediumgothicfont{NotoSansCJK-Regular.otf}
+\setboldgothicfont{NotoSansCJK-Bold.otf}
+\setxboldgothicfont{NotoSansCJK-Black.otf}
+\setmarugothicfont{NotoSansCJK-Medium.otf}
+\end{verbatim}\end{quote}
 
-\Note 種々の事情のため、上記の4つの“Source Han系”のプリセットでは
-現状の実装では日本語用の設定のために
-繁体中国語等の日本語以外のフォントも利用している。
-従って、言語別OTF版のフォントファイルを利用する場合は、
-原則的に全てのCJK言語の版を用意する必要がある。
-
-\begin{itemize}
-\item |yu-win10+|\Means
-  |yu-win10| で引用符“\,”‘\,’の出力が不正になることに
-  対処したもの。
 \end{itemize}
 
 %-------------------
@@ -764,7 +818,7 @@
   \Note |kozuka-pr6|+|oneweight| オプションで代替可能。
 \item |kozuka6n|\Means
   小塚フォント(Pr6n版)の単ウェイト使用。
-  \Note |kozuka-prn|+|oneweight| オプションで代替可能。
+  \Note |kozuka-pr6n|+|oneweight| オプションで代替可能。
 \item |hiragino|\Means
   ヒラギノフォントの単ウェイト使用。
   \Note |hiragino-pro|+|oneweight| オプションで代替可能。
@@ -848,7 +902,121 @@
 
 
 %===========================================================
+\section{Unicode直接指定}
+\label{sec:DirectUnicode}
+
+dvipdfmxのフォントマップ設定において、和文フォントのエンコーディングを
+指定する方法は“CMap指定”と“Unicode直接指定”の2種類がある。
+\footnote{詳細についてはdvipdfmxのマニュアルを参照されたい。}
+かつては、Unicodeで包摂されている異体字を区別するためには
+CMap指定の利用が必須であったため、慣習的に、dvipdfmxのフォントマップ
+設定においてはCMap指定が主に用いられてきた。
+
+しかしこのCMap指定は、Adobe-Japan1(AJ1)%
+\footnote{または各々のCJK言語の“Adobe標準”のグリフ集合、
+例えば簡体字中国語ならAdobe-GB1。}%
+のグリフ集合に対応したOpenTypeフォントにしか適用できない、
+という欠点がある。
+近年は、“AJ1でない”OpenTypeフォント
+\footnote{例えば、Adobe開発のフリーフォントの
+「Source Han Serif(源ノ明朝)」など。}%
+が普及しつつあり、そのようなフォントでは異体字の切替などの
+付加機能を専ら“OpenType属性の指定”により行うことを想定している。
+これに対応するため、dvipdfmxのマップ指定において
+“OpenType属性の指定”がサポートされるようになった。
+
+\Pkg{pxchfon}では和文フォントのエンコーディングに対する
+Unicode直接指定をサポートしている。
+特に1.0版から、新しいdvipdfmxのOpenType属性の指定を積極的に
+利用することで、“AJ1でない”フォントを使用した場合でも、
+CMap指定の場合の機能性を可能な限り保つことを目財している。
+
+\Note Unicode直接指定に対するサポートは発展途上であるため、
+過渡的な要素が多く混ざっていてやや煩雑になっていることに
+注意してほしい。
+
+\paragraph{“Unicode直接指定”オプション}
+以下のパッケージオプションを指定することで
+Unicode直接指定が有効になる。
+
+\begin{itemize}
+\item |unicode|\Means
+  全般的にUnicode直接指定を利用する。
+  最も理想的な設定であるが、現存の{\TeX} Live 2017では利用できない。
+  \Note dvipdfmxの20170627版以降({\TeX} Live 2018以降)が必要。
+\item |unicode*|\Means
+  |unicode| と同じだが、{\TeX} Live 2017のdvipdfmaに対応するために
+  妥協を入れた(過渡的な)設定。
+  一部の約物・記号の出力が異常になる可能性がある。
+  \Note dvipdfmxの20170318版以降({\TeX} Live 2017以降)が必要。
+\item |directunicode*|\Means
+  |unicode| と同じだが、古い({\TeX} Live 2016以前の)dvipdfmaに
+  対応するために、OpenType属性の指定を全く行わない設定。
+  つまり、入力のUnicode文字に対する既定のグリフが常に出力され、
+  異体字の区別は全て無効になる。
+\item |directunicode|\Means
+  \Pkg{japanese-otf}の|\UTF|入力のフォントに限って
+  Unicode直接指定を利用する。
+  |directunicode*| と同じくOpenType属性の指定を全く行わない。
+  \Note 前述の通り |directunicode*| はデメリットが強いため、
+  適用範囲を限定したもの。
+\end{itemize}
+
+\paragraph{Unicode直接指定専用プリセット}
+
+以下に挙げるプリセット設定は“AJ1でない”OpenTypeフォントを
+利用するものである。
+そのため、これらのプリセットを指定した場合は、
+自動的に |unicode| が(既定として)指定される。
+
+\Note …というのが本来の仕様であるが、現状では{\TeX} Liveの
+dvipdfmxで |unicode| が使えないため、{\TeX} Live 2018のリリースまでの
+暫定措置として、これらのプリセット指定は、|+| 付きの名前の
+特殊プリセットに自動的に振り返られるようにする。
+つまり、|noto| は |noto+| と等価になる。
+ただし、Unicode直接指定のオプション(|unicode| 等)が明示された
+場合は、この振り替え措置は行われなくなる。
+
+\begin{itemize}
+\item |sourcehan|
+\item |sourcehan-otc|
+\item |noto|
+\item |noto-otc|
+\end{itemize}
+
+\paragraph{特殊プリセット指定\<(過渡的)}
+
+現状の{\TeX} Live 2017のdvipdfmxで |unicode| が使えない
+という問題に対処するため、
+一部のプリセット指定について、
+「|unicode| を指定した理想的な状態を模倣する」
+特殊なプリセット設定を用意した。
+これらの設定はdvipdfmxの20170318版以降({\TeX} Live 2017以降)
+において使用できる。
+
+本来使えないはずの設定を模倣するために、
+少々邪悪な細工を行ている。
+
+\begin{itemize}
+\item |sourcehan+|、|sourcehan-otc+|、
+    |noto+|、|noto-otc+|\Means
+  これらの特殊プリセット指定は、対応する(|+| 無しの)
+  Unicode直接指定専用プリセットの設定を模倣する。
+  日本語用の一部のグリフを
+  日本語以外(繁体中国語等)のフォントに振り替えている。
+  従って、言語別OTF版のフォントファイルを利用する場合は、
+  原則的に全てのCJK言語の版を用意する必要がある。
+
+\item |yu-win10+|\Means
+  |yu-win10| に |unicode| を加えた設定を模倣する。
+  クオートの出力を正常にするため、クオートのグリフを
+  「Yu Gothic UI」フォントに振り替えている。
+\end{itemize}
+
+
+%===========================================================
 \section{dvipdfmxのページ抜粋処理への対応}
+\label{sec:PageSelection}
 
 dvipdfmxには元のDVI文書の一部のページだけを抜粋してPDF文書に変換する
 機能がある(|-s| オプション)。
@@ -893,18 +1061,18 @@
   ({\ss} 等)も使えない。
   大抵の日本語用フォントにはその文字を出力するためのグリフがそもそも
   ないのであるが、例えあったとしても使えない。
-\item \Pkg{OTF}/\Pkg{UTF}パッケージ使用時に |\UTF| や |\CID| で
+\item \Pkg{japanese-otf}/\Pkg{UTF}パッケージ使用時に |\UTF| や |\CID| で
   指定した文字が出力されるかは、
   指定したフォントがその文字を持っているかに依存する。
-\item |deluxe| 付きの\Pkg{OTF}パッケージと |alphabet| 付きの
+\item |deluxe| 付きの\Pkg{japanese-otf}パッケージと |alphabet| 付きの
   \Pkg{pxchfon}を同時に使う場合には、
-  \Pkg{OTF}パッケージを先に読み込む必要がある。
+  \Pkg{japanese-otf}パッケージを先に読み込む必要がある。
   (これに反した場合はエラーになる。)
 \item 単ウェイトの場合は、明朝の太字はゴシックになるという一般的な
   設定に欧文フォントの置換の際にも従っているが、
   明朝のみが置換されている場合は、
   明朝の置換フォントが太字にも適用される。
-\item 既述のように、0.3版以降では\Pkg{OTF}パッケージで |deluxe|、
+\item 既述のように、0.3版以降では\Pkg{japanese-otf}パッケージで |deluxe|、
   |bold|、|noreplace| のいずれも指定されてない場合でも |\setgothicfont|
   が有効になる。
 \end{itemize}
@@ -980,7 +1148,7 @@
 \section{中国語・韓国語フォントへの対応}
 \label{sec:Non-Japanese}
 
-0.7c版で\Pkg{OTF}パッケージ(|multi| オプション指定)および
+0.7c版で\Pkg{japanese-otf}パッケージ(|multi| オプション指定)および
 {\upTeX}標準の中国語・韓国語フォントについてのサポートを始めた。
 以下の命令で、実フォントの置換指定ができる。
 
@@ -1009,7 +1177,7 @@
 \item |directunicode(*)| 指定は中国語・韓国語のフォントに対しても
 有効である。
 効果の範囲は日本語の場合と同様で、
-|directunicode| では「\Pkg{OTF}パッケージのUnicode入力命令」
+|directunicode| では「\Pkg{japanese-otf}パッケージのUnicode入力命令」
 (|\UTFK|、|\UTFM|、等)が対象となり、
 |directunicode*| ではこれに加えて{\upTeX}標準のフォントも
 対象になる。

Modified: trunk/Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty
===================================================================
--- trunk/Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty	2017-09-09 22:34:23 UTC (rev 45252)
+++ trunk/Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty	2017-09-09 22:34:38 UTC (rev 45253)
@@ -1,6 +1,6 @@
 %%
 %% This is file 'pxchfon.sty'.
-%% 
+%%
 %% Copyright (c) 2017 Takayuki YATO (aka. "ZR")
 %%   GitHub:   https://github.com/zr-tex8r
 %%   Twitter:  @zr_tex8r
@@ -10,7 +10,7 @@
 
 %% package declaration
 \NeedsTeXFormat{pLaTeX2e}
-\ProvidesPackage{pxchfon}[2017/06/29 v1.0b]
+\ProvidesPackage{pxchfon}[2017/09/09 v1.1a]
 \def\pxcz at pkgname{pxchfon}
 
 %% preparations
@@ -23,20 +23,65 @@
 %% variables
 \newif\ifpxcz at ok
 \newif\ifpxcz at utf
+\let\pxcz at pre\relax
+\let\pxcz at post\relax
 
+%% unique tokens
+\def\pxcz at end{\pxcz at end@}
+\def\pxcz at mt{\pxcz at mt@}
+
+%% \pxcz at csletcs{<cs1>}{<cs2>}
+\def\pxcz at csletcs#1#2{%
+  \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname}
+
+%% \pxcz at cond\ifXXX...\fi{<true>}{<false>}
+\@gobbletwo\if\if \def\pxcz at cond#1\fi{%
+  #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
+
+%% \pxcz at onlypreamble@csdef{<csname>}
+\def\pxcz at onlypreamble@csdef#1{%
+  \expandafter\pxcz at onlypreamble@def\csname#1\endcsname}
+%% \pxcz at onlypreamble@def\CS
+\def\pxcz at onlypreamble@def#1{%
+  \@onlypreamble#1\def#1}
+
+%% \pxcz at csuse@or{<csname>}{<default>}
+\def\pxcz at csuse@or#1#2{%
+  \expandafter\ifx\csname#1\endcsname\relax \expandafter\@firstoftwo
+  \else \expandafter\@secondoftwo
+  \fi{#2}{\csname#1\endcsname}}
+
+%% \pxcz at lower\CS
+\def\pxcz at lower#1{%
+  \expandafter\pxcz at lower@a#1\pxcz at end#1}
+\def\pxcz at lower@a#1\pxcz at end#2{%
+  \lowercase{\def#2{#1}}}
+
+%% \pxcz at split{<at>}{<target>}
+\def\pxcz at split#1#2{%
+  \edef\pxcz at tmpx{{#1}{#2}}%
+  \expandafter\pxcz at split@a\pxcz at tmpx}
+\def\pxcz at split@a#1#2{%
+  \def\pxcz at tmpx##1#1##2\pxcz at end{\pxcz at split@b{##1}{##2}}%
+  \pxcz at tmpx#2\pxcz at mt#1\pxcz at end}
+\def\pxcz at split@b#1#2{%
+  \let\pxcz at pre\relax \let\pxcz at post\relax
+  \ifx\pxcz at end#2\pxcz at end\else
+    \pxcz at split@c#2\pxcz at end{#1}%
+  \fi}
+\def\pxcz at split@c#1\pxcz at mt#2\pxcz at end#3{%
+  \def\pxcz at pre{#3}\def\pxcz at post{#1}}
+
 %--------------------------------------- environment check
 
 %% check for 'pxjafont' package
 % if old version of pxjafont is loaded (probably this package is
-% required from pxjafont), then I abort here with an error message
-% and in addition cause pxjafont to abort immediately.
+% required from pxjafont), then I abort here with an error message.
 \@ifpackageloaded{pxjafont}{%
   \ifx\pxAliasedPxjafont\@undefined
-    \pxcz at error{Package 'pxjafont' is of incompatible version}%
-    {You must use version 0.5 of pxjafont.}%
-    \DeclareOption{noalphabet}{}\ProcessOptions
-    \let\pxjf at main@preset\relax % make pxjafont bombout
-  \endinput\fi}{}
+    \PackageError\pxcz at pkgname
+     {FATAL: Old 'pxjafont' is loaded}{\@ehc}
+  \expandafter\@@end\fi}{}
 
 %% \ifpxcz at uptex
 \newif\ifpxcz at uptex \pxcz at uptexfalse
@@ -63,6 +108,7 @@
 \newif\ifpxcz at everypage
 \newif\ifpxcz at oneweight
 \newif\ifpxcz at uniquify
+\newif\ifpxcz at fullwidth
 \let\pxcz at directunicode\relax
 \let\pxcz at main@preset\relax
 \let\pxcz at file@preset\relax
@@ -71,6 +117,12 @@
 \newif\ifpxcz at rel
 \newif\ifpxcz at dumpmap
 \newif\ifpxcz at dumpmap@tl
+\newif\ifpxcz at switch@font \pxcz at switch@fonttrue
+\newif\ifpxcz at switch@font at xwid
+\newif\ifpxcz at switch@font at xjis
+\let\pxcz at strict@csi\relax
+\newif\ifpxcz at directunicode@default
+\let\pxcz at legacycode\relax
 
 %% process options
 % drivers
@@ -107,7 +159,6 @@
 \chardef\pxcz at directunicode@otf=1
 \chardef\pxcz at directunicode@all=2
 \chardef\pxcz at directunicode@full=3
-\let\pxcz at directunicode\pxcz at directunicode@none
 \DeclareOption{directunicode*}{\let\pxcz at directunicode\pxcz at directunicode@all}
 \DeclareOption{directunicode}{\let\pxcz at directunicode\pxcz at directunicode@otf}
 \DeclareOption{nodirectunicode}{\let\pxcz at directunicode\pxcz at directunicode@none}
@@ -117,6 +168,21 @@
 % (no)dumpmaptl
 \DeclareOption{dumpmaptl}{\pxcz at dumpmap@tltrue}
 \DeclareOption{nodumpmaptl}{\pxcz at dumpmap@tlfalse}
+% (no)switchfont
+\DeclareOption{switchfont}{\pxcz at switch@fonttrue}
+\DeclareOption{noswitchfont}{\pxcz at switch@fontfalse}
+% (no)strictcsi
+\DeclareOption{strictcsi}{\let\pxcz at strict@csi=t}
+\DeclareOption{nostrictcsi}{\let\pxcz at strict@csi=f}
+% XXXXX-legacycode
+\chardef\pxcz at legacycode@apply=0
+\chardef\pxcz at legacycode@ignore=1
+\chardef\pxcz at legacycode@suppress=2
+\chardef\pxcz at legacycode@replace=3
+\DeclareOption{apply-legacycode}{\let\pxcz at legacycode\pxcz at legacycode@apply}
+\DeclareOption{ignore-legacycode}{\let\pxcz at legacycode\pxcz at legacycode@ignore}
+\DeclareOption{suppress-legacycode}{\let\pxcz at legacycode\pxcz at legacycode@suppress}
+\DeclareOption{replace-legacycode}{\let\pxcz at legacycode\pxcz at legacycode@replace}
 % preset spec options
 \def\pxcz at all@main at preset{%
   noembed,%
@@ -138,18 +204,25 @@
 \@for\pxcz at x:=\pxcz at all@main at preset\do{%
   \expandafter\pxcz at do\expandafter{\pxcz at x}}
 % others
-\def\pxcz at opt@@unicode{unicode}
-\def\pxcz at opt@@unicodeS{unicode*}
+% The 'unicode' option means a Unicode-oriented mapping, and requires
+% dvipdfmx of version 20170627 or later. The 'unicode-fwid' is a variant.
+% The 'unicode*(-fwid)' option is a transitional (deteriorated) version
+% of 'unicode(-fwid)' and can work with dvipdfmx of version 20170318.
+\@namedef{pxcz at POPT/unicode}{%
+  \let\pxcz at directunicode\pxcz at directunicode@full}
+\@namedef{pxcz at POPT/unicode*}{%
+  \pxcz at uniquifytrue
+  \let\pxcz at directunicode\pxcz at directunicode@full}
+\@namedef{pxcz at POPT/unicode-fwid}{%
+  \pxcz at fullwidthtrue
+  \let\pxcz at directunicode\pxcz at directunicode@full}
+\@namedef{pxcz at POPT/unicode*-fwid}{%
+  \pxcz at fullwidthtrue \pxcz at uniquifytrue
+  \let\pxcz at directunicode\pxcz at directunicode@full}
 \DeclareOption*{%
-  \ifx\CurrentOption\pxcz at opt@@unicode
-    \let\pxcz at directunicode\pxcz at directunicode@full
-  \else\ifx\CurrentOption\pxcz at opt@@unicodeS
-    \pxcz at uniquifytrue
-    \let\pxcz at directunicode\pxcz at directunicode@full
-  \else
+  \pxcz at csuse@or{pxcz at POPT/\CurrentOption}{%
     \pxcz at parse@opt\CurrentOption
-    \ifpxcz at ok\else \@unknownoptionerror \fi
-  \fi\fi}
+    \ifpxcz at ok\else \@unknownoptionerror \fi}}
 \@onlypreamble\pxcz at parse@opt
 \def\pxcz at parse@opt#1{%
   \expandafter\pxcz at parse@opt at a#1\@nnil}
@@ -167,14 +240,22 @@
   \fi\fi \pxcz at tmpa}
 \@onlypreamble\pxcz at parse@opt at c
 \def\pxcz at parse@opt at c#1#2\@nnil{%
+  \pxcz at oktrue
   \edef\pxcz at file@preset{#2}}
 % dispatch
 \ProcessOptions*
+
 %% 'everypage' needs 'atbegshi' package
 \ifpxcz at everypage
 \RequirePackage{atbegshi}
 \fi
 
+%% apply default value for \pxcz at directunicode
+\ifx\pxcz at directunicode\relax
+  \let\pxcz at directunicode\pxcz at directunicode@none
+  \pxcz at directunicode@defaulttrue
+\fi
+
 %% set 'pxcz at alpha'
 \@tempswafalse
 \if\pxcz at main@preset\relax
@@ -213,35 +294,108 @@
 \else \pxcz at alphafontfalse
 \fi\fi
 
+%% apply default for \pxcz at strict@csi
+\ifx\pxcz at strict@csi\relax
+  % 'dumpmap(tl)' changes the 'strictcsi' default to true.
+  \let\pxcz at strict@csi=f
+  \ifpxcz at dumpmap \let\pxcz at strict@csi=t \fi
+  \ifpxcz at dumpmap@tl \let\pxcz at strict@csi=t \fi
+\fi
+\if t\pxcz at strict@csi
+  % 'strictcsi' requires some pdfTeX feature.
+  \ifx\pdffiledump\@undefined
+    \PackageWarning\pxcz at pkgname
+     {The option 'strictcsi' cannot be used, because\MessageBreak
+      the engine does not support '\string\pdffiledump'}
+    \let\pxcz at strict@csi=f
+  \fi
+\fi
+
+%% apply 'switch at font'
+\ifpxcz at switch@font
+  \pxcz at switch@font at xjistrue
+\else
+  \let\pxcz at switch@font at xwidtrue\pxcz at switch@font at xwidfalse
+  \let\pxcz at switch@font at xjistrue\pxcz at switch@font at xjisfalse
+\fi
+
 %--------------------------------------- preset-triggered setup
 
-%% \pxcz at if@main at preset{<name>}{<code>}
-\@onlypreamble\pxcz at if@main at preset
-\def\pxcz at if@main at preset#1{%
-  \edef\pxcz at tmpa{#1}%
-  \ifx\pxcz at main@preset\pxcz at tmpa \expandafter\@firstofone
-  \else \expandafter\@gobble
-  \fi}
-%% setup
-\def\pxcz at preset@setup at sourcehan{%
-  \ifnum\pxcz at directunicode=\pxcz at directunicode@all \else
+%% \pxcz at apply@opt at unicode
+% Forces the 'unicode' setup (unless a directunicode option was given).
+\@onlypreamble\pxcz at apply@opt at unicode
+\def\pxcz at apply@opt at unicode{%
+  \ifpxcz at directunicode@default %  default -> unicode+
+    \pxcz at warn@unicode % NOTE: will change to unicode in future
     \let\pxcz at directunicode\pxcz at directunicode@full
-    \pxcz at uniquifyfalse
+    \pxcz at switch@font at xwidtrue \pxcz at uniquifyfalse
+  \else\ifnum\pxcz at directunicode=\pxcz at directunicode@full
+    \ifpxcz at uniquify % unicode* -> unicode+
+      \pxcz at switch@font at xwidtrue \pxcz at uniquifyfalse
+    \fi % unicode -> (unchanged)
+  \else \pxcz at uniquifyfalse % otherwise, enable switch-font
+  \fi\fi}
+%% \pxcz at apply@opt at unicodeP
+% Forces the 'unicode+' setup, which is a 'unicode' with switch-font
+% enabled on the width features.
+\@onlypreamble\pxcz at apply@opt at unicodeP
+\def\pxcz at apply@opt at unicodeP{%
+  \pxcz at uniquifyfalse
+  \pxcz at switch@font at xwidtrue % 'unicode+'
+  \ifnum\pxcz at directunicode=\pxcz at directunicode@full\else
+    \pxcz at warn@unicode
+    \let\pxcz at directunicode\pxcz at directunicode@full
   \fi}
-\pxcz at if@main at preset{sourcehan}{%
-  \pxcz at preset@setup at sourcehan}
-\pxcz at if@main at preset{sourcehan-otc}{%
-  \pxcz at preset@setup at sourcehan}
-\pxcz at if@main at preset{noto}{%
-  \pxcz at preset@setup at sourcehan}
-\pxcz at if@main at preset{noto-otc}{%
-  \pxcz at preset@setup at sourcehan}
-\pxcz at if@main at preset{yu-win10+}{%
-  \let\pxcz at directunicode\pxcz at directunicode@full
-  \pxcz at uniquifyfalse}
+%% \pxcz at warn@unicode
+\@onlypreamble\pxcz at warn@unicode
+\def\pxcz at warn@unicode{%
+  \PackageWarningNoLine\pxcz at pkgname
+   {The option 'unicode(*)' is enforced, because the\MessageBreak
+    preset '\pxcz at main@preset' is selected.}}
 
+%% the setup
+\def\pxcz at do#1{%
+  \edef\pxcz at tmpa{#1}%
+  \pxcz at cond\ifx\pxcz at main@preset\pxcz at tmpa\fi
+      {\@firstofone}{\@gobble}}
+% A 'XXXX+' preset forces 'unicode+' setting.
+% 'sourcehan(-otc)' and 'noto(-otc)' should force 'unicode', but currently
+% equivalent to the corresponding 'XXXX+' preset.
+\pxcz at do{sourcehan}{\pxcz at apply@opt at unicode}
+\pxcz at do{sourcehan-otc}{\pxcz at apply@opt at unicode}
+\pxcz at do{noto}{\pxcz at apply@opt at unicode}
+\pxcz at do{noto-otc}{\pxcz at apply@opt at unicode}
+\pxcz at do{sourcehan+}{\pxcz at apply@opt at unicodeP}
+\pxcz at do{sourcehan-otc+}{\pxcz at apply@opt at unicodeP}
+\pxcz at do{noto+}{\pxcz at apply@opt at unicodeP}
+\pxcz at do{noto-otc+}{\pxcz at apply@opt at unicodeP}
+\pxcz at do{yu-win10+}{\pxcz at apply@opt at unicodeP}
+
+%% apply default for \pxcz at legacycode
+\ifx\pxcz at legacycode\relax
+  \ifnum\pxcz at directunicode=\pxcz at directunicode@full
+    \let\pxcz at legacycode\pxcz at legacycode@replace
+  \else \let\pxcz at legacycode\pxcz at legacycode@apply
+  \fi
+\fi
+
+%% 'replace-lecacycode' requires the 'pxufont' package
+\ifnum\pxcz at legacycode=\pxcz at legacycode@replace
+  \IfFileExists{pxufont.sty}{}{%else
+    \PackageError\pxcz at pkgname
+     {The option 'replace-lecacycode' requires the 'pxufont'\MessageBreak
+       package, but it is not installed}%
+     {The option 'suprress-lecacycode' is applied as fallback.\MessageBreak
+      \@ehc}
+    \let\pxcz at legacycode\pxcz at legacycode@suppress}%
+\fi
+
 %--------------------------------------- user interface
 
+%% \pxcz at sym@list
+\def\pxcz at sym@list{%
+  mnl,mnr,mnb,gtr,gtb,gtx,gtu,mgr,kom,kog,scm,scg,tcm,tcg}
+
 %%<*> \setminchofont/\setgothicfont/etc.
 \newcommand*\setminchofont{\pxcz at setfont{mnl,mnr,mnb}}
 \newcommand*\setgothicfont{\pxcz at setfont{gtr,gtb,gtx,gtu}}
@@ -261,16 +415,24 @@
 \newcommand*\settchinesegothicfont{\pxcz at setfont{tcg}}
 \@onlypreamble\pxcz at setfont
 \def\pxcz at setfont#1{\@ifnextchar[%]
-  {\pxcz at setfont@a{#1}}{\pxcz at setfont@a{#1}[]}}
+  {\pxcz at setfont@a{#1}}{\pxcz at setfont@a{#1}[0]}}
 \@onlypreamble\pxcz at setfont@a
 \def\pxcz at setfont@a#1[#2]#3{%
-  \@for\pxcz at x:={#1}\do{%
-    \ifx @#2@\@namedef{pxcz at FS/\pxcz at x}{#3}%
-    \else\@namedef{pxcz at FS/\pxcz at x}{:#2:#3}\fi}}
-\@for\pxcz at x:={%
-  mnl,mnr,mnb,gtr,gtb,gtx,gtu,mgr,%
-  kom,kog,scm,scg,tcm,tcg%
-}\do{\@namedef{pxcz at FS/\pxcz at x}{}}
+  \edef\pxcz at tmpa{#3}\pxcz at lower\pxcz at tmpa
+  \pxcz at split{?:}{?\pxcz at tmpa}%
+  \ifx\pxcz at pre\relax
+    \pxcz at split{tc?}{\pxcz at tmpa?}%
+    \ifx\pxcz at pre\relax \pxcz at setfont@b{#1}{#3}%
+    \else \pxcz at setfont@b{#1}{:#2:#3}%
+    \fi
+  \else \pxcz at setfont@b{#1}{#3}%
+  \fi}
+\@onlypreamble\pxcz at setfont@b
+\def\pxcz at setfont@b#1#2{%
+  \@for\pxcz at tmpx:=#1\do{%
+    \@namedef{pxcz at FS/\pxcz at tmpx}{#2}}}
+\@for\pxcz at x:=\pxcz at sym@list\do{%
+  \@namedef{pxcz at FS/\pxcz at x}{}}
 
 %--------------------------------------- '\asUTF'
 % NB. This feature is superseded by the \diruni command.
@@ -297,6 +459,9 @@
 % The value given to \set...font to mean 'no-embed'.
 \def\pxcz at noembed{*}
 
+%% \pxcz at kill@mapping
+\def\pxcz at kill@mapping{!}
+
 %% \pxcz at cmap@directuni
 % CMap symbol for "direct unicode".
 \def\pxcz at cmap@directuni{unicode}
@@ -306,9 +471,9 @@
 \def\pxcz at cmap@hwuni{UniJIS-UCS2-HW-H}
 
 %%<*> \usecmapforalphabet/\nousecmapforalphabet
-\def\usecmapforalphabet{%
+\newcommand*\usecmapforalphabet{%
   \global\let\pxcz at cmap@uni\pxcz at cmap@hwuni}
-\def\nousecmapforalphabet{%
+\newcommand*\nousecmapforalphabet{%
   \global\let\pxcz at cmap@uni\pxcz at cmap@directuni}
 \ifpxcz at cmap@alpha \usecmapforalphabet
 \else \nousecmapforalphabet \fi
@@ -318,8 +483,7 @@
   \def\pxcz at tmpb{#2}%
   \@for\pxcz at tmpa:=#1\do{%
     \expandafter\let\csname pxcz at NEF/\pxcz at tmpa\endcsname\pxcz at tmpb
-  }%
-}
+  }}
 \pxcz at do{mnl,mnr,mnb}{Ryumin-Light}
 \pxcz at do{gtr,gtb,gtx,gtu,mgr}{GothicBBB-Medium}
 \pxcz at do{kom}{HYSMyeongJo-Medium}
@@ -366,101 +530,216 @@
   \@ifstar{\pxcz at set@pfx at jis\pxcz at pfx@jis at star}%
    {\pxcz at set@pfx at jis}}
 \def\pxcz at set@pfx at jis#1{%
-  \edef\pxcz at pfx@jis{\ifpxcz at mmivjis#1\fi}}
+  \edef\pxcz at pfx@jis{#1}}
 \setnewglyphcmapprefix{\pxcz at pfx@jis at dflt}
 
-%% \pxcz at pfx@unijis
-\edef\pxcz at pfx@unijis{UniJIS\ifpxcz at mmivjis 2004\fi}
+%% variables
+\let\pxcz at sym\relax
+\let\pxcz at cmap\relax
+\let\pxcz at font\relax
+\let\pxcz at csi\relax
+\newif\ifpxcz at ext
+\let\pxcz at lopts\relax
+\let\pxcz at mopts\relax
+\let\pxcz at font@tribe\relax
 
-%% \pxcz at enable@switch at realfont
-\def\pxcz at enable@switch at realfont{%
-  \let\pxcz at switch@realfont\pxcz at do@switch at realfont
-}
-\let\pxcz at switch@realfont\relax
+%% \pxcz@@jpXX
+\edef\pxcz@@jpXX{%
+  \ifpxcz at mmivjis jp04\else jp90\fi}
+%% \pxcz at add@lopt
+\@onlypreamble\pxcz at add@lopt
+\def\pxcz at add@lopt#1{%
+  \edef\pxcz at lopts{%
+    \ifx\pxcz at lopts\@empty\else \pxcz at lopts:\fi#1}}
+%% \pxcz at uniquify@lopts
+\@onlypreamble\pxcz at uniquify@lopts
+\def\pxcz at uniquify@lopts#1#2{%
+  \pxcz at oktrue
+  \def\pxcz at tmpb{jp90}\ifx\pxcz at tmpb\pxcz at lopts\pxcz at okfalse\fi
+  \def\pxcz at tmpb{jp04}\ifx\pxcz at tmpb\pxcz at lopts\pxcz at okfalse\fi
+  \ifx\@empty\pxcz at lopts\if t#1\pxcz at okfalse\fi\fi
+  \ifpxcz at ok
+    \edef\pxcz at lopts{#2}%
+  \fi}
 
-%% \pxcz at do@switch at realfont
-\@onlypreamble\pxcz at do@switch at realfont
-\def\pxcz at do@switch at realfont{%
-  \edef\pxcz at reset@mmivjis{%
-    \ifpxcz at mmivjis \noexpand\pxcz at mmivjistrue
-    \else \noexpand\pxcz at mmivjisfalse \fi}%
-  \let\pxcz at empty\relax
-  \pxcz at mmivjistrue  \edef\FONT{\FONTs}%
-  \pxcz at mmivjisfalse \edef\FONTo{\FONTs}%
-  \pxcz at reset@mmivjis \edef\FONTs{\FONTs}%
-  \let\pxcz at empty\@empty}
+%% \pxcz at is@jis at cmap
+\@onlypreamble\pxcz at is@jis at cmap
+\def\pxcz at is@jis at cmap{%
+  \pxcz at okfalse
+  \expandafter\pxcz at is@jis at cmap@a\pxcz at cmap\pxcz at end}
+\@onlypreamble\pxcz at is@jis at cmap@a
+\def\pxcz at is@jis at cmap@a#1#2\pxcz at end{%
+  \ifx\pxcz at mt#2\pxcz at mt \pxcz at oktrue \fi}
 
-%% \pxcz at MI
-% NB: not \edef
-\def\pxcz at MI#1#2:{\ifpxcz at mmivjis:#1:\else:#2:\fi}
-
-%% \pxcz at SH
-% NB: not \edef
-\def\pxcz at SH#1{%
-  \ifx#1/\expandafter\pxcz at SH@otf at dif
-  \else \expandafter\pxcz at SH@otc at dif
+%% \pxcz at force@mmiv at cmap
+\@onlypreamble\pxcz at force@mmiv at cmap
+\def\pxcz at force@mmiv at cmap{%
+  \pxcz at is@jis at cmap \ifpxcz at ok
+    \edef\pxcz at cmap{\pxcz at pfx@jis\pxcz at cmap}%
+  \else
+    \pxcz at split{UniJIS-}\pxcz at cmap
+    \ifx\pxcz at pre\relax\else
+      \edef\pxcz at cmap{UniJIS2004-\pxcz at post}%
+    \fi
   \fi}
-\def\pxcz at SH@otc at dif#1:{%
-  :\the\pxcz at entry@type:}
-\def\pxcz at SH@otf at dif#1-{%
-  #1\ifcase\pxcz at entry@type\or K\or SC\fi-}
 
-%% \pxcz at NC
-% NB: not \edef
-\def\pxcz at NC#1{%
-  \ifx#1/\expandafter\pxcz at NC@otf at dif
-  \else \expandafter\pxcz at NC@otc at dif
+%% \pxcz at inspect@font at tribe
+\@onlypreamble\pxcz at inspect@font at tribe
+\def\pxcz at inspect@font at tribe{%
+  \let\pxcz at font@tribe\@empty
+  \ifx\pxcz at font\@empty
+  \else\ifx\pxcz at font\pxcz at noembed
+  \else
+    \pxcz at inspect@font at tribe@a{?SourceHanSerif-}{.otf?}{sourcehan}%
+    \pxcz at inspect@font at tribe@a{?SourceHanSans-}{.otf?}{sourcehan}%
+    \pxcz at inspect@font at tribe@a{?:0:SourceHanSerif-}{.ttc?}{sourcehanC}%
+    \pxcz at inspect@font at tribe@a{?:0:SourceHanSans-}{.ttc?}{sourcehanC}%
+    \pxcz at inspect@font at tribe@a{?NotoSerifCJKjp-}{.otf?}{noto}%
+    \pxcz at inspect@font at tribe@a{?NotoSansCJKjp-}{.otf?}{noto}%
+    \pxcz at inspect@font at tribe@a{?:0:NotoSerifCJK-}{.ttc?}{notoC}%
+    \pxcz at inspect@font at tribe@a{?:0:NotoSansCJK-}{.ttc?}{notoC}%
+    \pxcz at inspect@font at tribe@a{?yumin}{.ttf?}{yumin}%
+    \pxcz at inspect@font at tribe@a{?YUMIN}{.TTF?}{yuminU}%
+    \pxcz at inspect@font at tribe@a{:YuGoth}{.ttc?}{yugoth}%
+    \pxcz at inspect@font at tribe@a{:YUGOTH}{.TTC?}{yugoth}%
+    \pxcz at inspect@font at tribe@a{:moga}{.ttc?}{mogamobo}%
+    \pxcz at inspect@font at tribe@a{:mobo}{.ttc?}{mogamobo}%
+  \fi\fi
+  \ifx\pxcz at font@tribe\@empty\else
+    \PackageInfo\pxcz at pkgname
+     {Font tribe is '\pxcz at font@tribe':\MessageBreak
+      \@spaces\pxcz at font\@gobble}%
   \fi}
-\def\pxcz at NC@otc at dif#1:{%
-  :\the\pxcz at entry@type:}
-\def\pxcz at NC@otf at dif#1jp{%
-  #1\ifcase\pxcz at entry@type jp\or kr\or sc\fi}
+\@onlypreamble\pxcz at inspect@font at tribe@a
+\def\pxcz at inspect@font at tribe@a#1#2#3{%
+  \pxcz at split{#1}{?\pxcz at font}%
+  \ifx\pxcz at pre\relax\else
+    \pxcz at split{#2}{\pxcz at font?}%
+    \ifx\pxcz at pre\relax\else
+      \def\pxcz at font@tribe{#3}%
+    \fi
+  \fi}
 
-%% \pxcz at YW
-\def\pxcz at YW#1{%
-  \ifx#1/\expandafter\pxcz at YW@mc at dif
-  \else \expandafter\pxcz at YW@gt at dif
+%% \pxcz at switch@font at for{<feature>}
+% Modifies \pxcz at font, assuming \pxcz at font@tribe is properly set.
+\@onlypreamble\pxcz at switch@font at for
+\def\pxcz at switch@font at for#1{%
+  \pxcz at csletcs{pxcz at tmpb}{pxcz at switch@font@@\pxcz at font@tribe @#1}%
+  \ifx\pxcz at tmpb\relax\else
+%\typeout{#1:\pxcz at font-->\expandafter\pxcz at tmpb\pxcz at font}%
+    \edef\pxcz at font{\expandafter\pxcz at tmpb\pxcz at font}%
   \fi}
-\def\pxcz at YW@gt at dif#1:{%
-  \ifnum\pxcz at entry@type=\tw@ :1:\else:0:\fi}
-\def\pxcz at YW@mc at dif#1.ttf{%
-  \ifnum\pxcz at entry@type=\tw@ \@nameuse{pxcz at YWG/#1}\else#1.ttf\fi}
-\@namedef{pxcz at YWG/yuminl}{:1:YuGothL.ttc}
-\@namedef{pxcz at YWG/yumin}{:1:YuGothR.ttc}
-\@namedef{pxcz at YWG/yumindb}{:1:YuGothM.ttc}
-
-%% primary macros
-\let\pxcz at unidirect\@empty
-\let\pxcz at unidirectX\@empty
-\let\pxcz at unidirect@wopt\@empty
-\let\pxcz at unidirectX@wopt\@empty
-\let\pxcz at unidirectX@lopt\@gobble
-\ifnum\pxcz at directunicode<\pxcz at directunicode@otf\else
-\def\pxcz at unidirect#1-#2-#3{\pxcz at cmap@directuni}
-\def\pxcz at unidirect@wopt{ -w 1}
+% entries
+\ifpxcz at switch@font at xwid
+  \def\pxcz at switch@font@@sourcehanC at fwid#1:0:{:2:}
+  \def\pxcz at switch@font@@sourcehanC at hwid#1:0:{:1:}
+  \def\pxcz at switch@font@@sourcehan at fwid#1-{#1SC-}
+  \def\pxcz at switch@font@@sourcehan at hwid#1-{#1K-}
+  \def\pxcz at switch@font@@notoC at fwid#1:0:{:2:}
+  \def\pxcz at switch@font@@notoC at hwid#1:0:{:1:}
+  \def\pxcz at switch@font@@noto at fwid#1jp{#1sc}
+  \def\pxcz at switch@font@@noto at hwid#1jp{#1kr}
+  \def\pxcz at switch@font@@yugoth at fwid#1:0:{:1:}
+  \def\pxcz at switch@font@@yumin at fwid#1.ttf{%
+    \@nameuse{pxcz at SFYM/#1.ttf}}
+  \def\pxcz at switch@font@@yuminU at fwid#1.TTF{%
+    \@nameuse{pxcz at SFYM/#1.TTF}}
+  \def\pxcz at do#1{\@namedef{pxcz at SFYM/#1}}
+  \pxcz at do{yuminl.ttf}{:1:YuGothL.ttc}
+  \pxcz at do{yumin.ttf}{:1:YuGothR.ttc}
+  \pxcz at do{yumindb.ttf}{:1:YuGothM.ttc}
+  \pxcz at do{YUMINL.TTF}{:1:YUGOTHL.TTC}
+  \pxcz at do{YUMIN.TTF}{:1:YUGOTHR.TTC}
+  \pxcz at do{YUMINDB.TTF}{:1:YUGOTHM.TTC}
 \fi
-\ifnum\pxcz at directunicode<\pxcz at directunicode@all\else
-\let\pxcz at unidirectX\pxcz at unidirect
-\let\pxcz at unidirectX@wopt\pxcz at unidirect@wopt
+\ifpxcz at switch@font at xjis
+  \@namedef{pxcz at switch@font@@mogamobo at jp90}#1.ttc{%
+    \pxcz at csuse@or{pxcz at SFMG/#1.ttc}{#1.ttc}}
+  \def\pxcz at do#1#2#3{\@namedef{pxcz at SFMG/:#1:#3}{:#2:#3}}
+  \pxcz at do{0}{3}{mogam.ttc}
+  \pxcz at do{1}{4}{mogam.ttc}
+  \pxcz at do{0}{3}{mogamb.ttc}
+  \pxcz at do{1}{4}{mogamb.ttc}
+  \pxcz at do{0}{2}{mogag.ttc}
+  \pxcz at do{1}{3}{mogag.ttc}
+  \pxcz at do{0}{2}{mogagb.ttc}
+  \pxcz at do{1}{3}{mogagb.ttc}
+  \pxcz at do{0}{2}{mobog.ttc}
+  \pxcz at do{1}{3}{mobog.ttc}
+  \pxcz at do{0}{2}{mobogb.ttc}
+  \pxcz at do{1}{3}{mobogb.ttc}
 \fi
-\ifnum\pxcz at directunicode<\pxcz at directunicode@full\else
-\def\pxcz at unidirectX@lopt#1{ -l #1}
-\fi
-%% secondary macros
-\def\pxcz at entry@UniJIS{\@+\pxcz at pfx@unijis}%
-\def\pxcz at entry@@hwid{\@l{hwid}}%
-\def\pxcz at entry@@fwid{\@l{fwid}}%
-\def\pxcz at entry@@jp#1#2{\@l{jp#1#2}}%
-\ifpxcz at mmivjis
-\def\pxcz at entry@@jpXX{\@l{jp04}}
-\else
-\def\pxcz at entry@@jpXX{\@l{jp90}}
-\fi
-\ifpxcz at uniquify
-\let\pxcz at entry@@hwid\pxcz at entry@@jpXX
-\let\pxcz at entry@@fwid\pxcz at entry@@jpXX
-\fi
 
+%% \pxcz at declare@entry at modifier{<name>}
+\@onlypreamble\pxcz at declare@entry at modifier
+\def\pxcz at declare@entry at modifier#1{%
+  \pxcz at onlypreamble@csdef{pxcz at MEM/#1}}
+%% entry modifiers
+% Uni: Changes cmap to 'unicode' if directunicode.
+\pxcz at declare@entry at modifier{Uni}{%
+  \ifnum\pxcz at directunicode<\pxcz at directunicode@otf\else
+    \ifx\pxcz at font\pxcz at noembed\else
+      \let\pxcz at cmap\pxcz at cmap@directuni
+    \fi
+  \fi}
+% Uni*: Changes cmap to 'unicode' if directunicode*.
+\pxcz at declare@entry at modifier{Uni*}{%
+  \ifnum\pxcz at directunicode<\pxcz at directunicode@all\else
+    \ifx\pxcz at font\pxcz at noembed\else
+      \let\pxcz at cmap\pxcz at cmap@directuni
+    \fi
+  \fi}
+% Switch
+\pxcz at declare@entry at modifier{Switch}{%
+  \ifpxcz at mmivjis
+    \pxcz at force@mmiv at cmap
+  \else
+    \pxcz at switch@font at for{jp90}%
+  \fi
+  \pxcz at add@lopt{\pxcz@@jpXX}}
+% 04
+\pxcz at declare@entry at modifier{04}{%
+  \pxcz at add@lopt{jp04}}
+% 90
+\pxcz at declare@entry at modifier{90}{%
+  \pxcz at switch@font at for{jp90}%
+  \pxcz at add@lopt{jp90}}
+% HWid
+\pxcz at declare@entry at modifier{HWid}{%
+  \ifx\pxcz at font\pxcz at noembed
+    \let\pxcz at cmap\pxcz at cmap@hwuni
+  \else
+    \let\pxcz at cmap\pxcz at cmap@uni
+    \pxcz at switch@font at for{hwid}%
+  \fi
+  \pxcz at add@lopt{hwid}%
+  \def\pxcz at tmpa{mgr}\ifx\pxcz at sym\pxcz at tmpa
+    \let\pxcz at font\@empty
+  \fi}
+% FWid
+\pxcz at declare@entry at modifier{FWid}{%
+  \pxcz at switch@font at for{fwid}%
+  \pxcz at add@lopt{fwid}}
+% AJ16/AK12/AG14/AC14
+\pxcz at declare@entry at modifier{AJ16}{\def\pxcz at csi{AJ16}}
+\pxcz at declare@entry at modifier{AK12}{\def\pxcz at csi{AK12}\pxcz at exttrue}
+\pxcz at declare@entry at modifier{AG14}{\def\pxcz at csi{AG14}\pxcz at exttrue}
+\pxcz at declare@entry at modifier{AC14}{\def\pxcz at csi{AC14}\pxcz at exttrue}
+% V: Adds '-w 1' if cmap is 'unicode'.
+\pxcz at declare@entry at modifier{V}{%
+  \ifx\pxcz at cmap\pxcz at cmap@directuni
+    \edef\pxcz at mopts{ -w 1\pxcz at mopts}%
+  \fi}
+% Fin: final step
+\pxcz at declare@entry at modifier{Fin}{%
+  \ifx\pxcz at csi\relax\else
+    \expandafter\ifx\csname pxcz at OT/\pxcz at sym\endcsname\relax
+      \edef\pxcz at mopts{/\pxcz at csi}%
+    \else % omit CSI part for CFF fonts
+      \let\pxcz at mopts\@empty
+    \fi
+  \fi}
+
 %% \pxcz at spec
 \let\pxcz at spec\@empty
 
@@ -467,55 +746,65 @@
 %% \pxcz at addtospec{<id>}
 \@onlypreamble\pxcz at addtospec
 \def\pxcz at addtospec#1{%
-  \bgroup \let\Entry\pxcz at Entry
-    \let\ \space \let\*\pxcz at pfx@jis
-    \let\UniJIS\pxcz at entry@UniJIS
-    \let\@hwid\pxcz at entry@@hwid \let\@fwid\pxcz at entry@@fwid
-    \let\@jp\pxcz at entry@@jp \let\@jpXX\pxcz at entry@@jpXX
-    \@nameuse{pxcz at ME/#1}\egroup}
+  \begingroup
+    \let\Entry\pxcz at Entry
+    \@nameuse{pxcz at ME/#1}%
+  \endgroup}
+%% \Entry{<sym>}{<tfm>}{<cmap>}{<modify>,...}
 \@onlypreamble\pxcz at Entry
-\def\pxcz at Entry#1{%
-  \def\pxcz at entry@sym{#1}%
-  \expandafter\let\expandafter\FONT\csname pxcz at FS/#1\endcsname
-  \let\FONTo\FONT \let\FONTs\FONT
-  \ifx\FONT\pxcz at noembed
-    \let\UniCMap\pxcz at cmap@hwuni
-    \let\+\@empty \let\w\@empty \def\@+{}\let\@w\@empty
-    \let\@l\@gobble
-    \edef\FONT{!\@nameuse{pxcz at NEF/#1}}%
-    \let\FONTo\FONT \let\FONTs\FONT
-  \else\ifx\FONT\@empty\else
-    \let\UniCMap\pxcz at cmap@uni
-    \let\+\pxcz at unidirect \let\w\pxcz at unidirect@wopt
-    \def\@+{\pxcz at unidirectX}\let\@w\pxcz at unidirectX@wopt
-    \let\@l\pxcz at unidirectX@lopt
-    \pxcz at switch@realfont
+\def\pxcz at Entry#1#2#3#4{%
+  \def\pxcz at sym{#1}\def\pxcz at cmap{#3}%
+  \let\pxcz at csi\relax \let\pxcz at mopts\@empty \let\pxcz at lopts\@empty
+  \pxcz at extfalse
+  \edef\pxcz at font{\@nameuse{pxcz at FS/\pxcz at sym}}%
+  \pxcz at inspect@font at tribe
+  % apply modifiers
+  \@for\pxcz at tmpx:=#4,Fin\do{%
+    \ifx\pxcz at font\@empty\else
+      \@nameuse{pxcz at MEM/\pxcz at tmpx}%
+    \fi}%
+  % resolve no-embed font spec
+  \ifx\pxcz at font\pxcz at noembed
+    \edef\pxcz at font{!\@nameuse{pxcz at NEF/\pxcz at sym}}%
+  \fi
+  % apply layout options when using 'unicode'
+  \ifnum\pxcz at directunicode<\pxcz at directunicode@full\else
+    \ifx\pxcz at cmap\pxcz at cmap@directuni
+      \ifpxcz at uniquify
+        \pxcz at uniquify@lopts{t}{\pxcz@@jpXX}%
+        \ifpxcz at fullwidth
+          \pxcz at add@lopt{fwid}%
+        \fi
+      \else
+        \ifpxcz at fullwidth
+          \pxcz at split{wid}\pxcz at lopts\ifx\pxcz at pre\relax
+            \pxcz at add@lopt{fwid}%
+          \fi
+        \fi
+      \fi
+      \ifx\pxcz at lopts\@empty\else
+        \edef\pxcz at mopts{\pxcz at mopts\space -l \pxcz at lopts}%
+      \fi
+    \fi
+  \fi
+  % suppress legacy-code mappings unless 'apply-legacycode'
+  \ifx\pxcz at cmap\pxcz at cmap@directuni\else \ifpxcz at ext\else
+    \ifnum\pxcz at legacycode=\pxcz at legacycode@apply % no-op
+    \else\ifnum\pxcz at legacycode=\pxcz at legacycode@ignore
+      \let\pxcz at font\@empty % skip
+    \else\ifx\pxcz at font\@empty\else
+      \let\pxcz at font\pxcz at kill@mapping % kill
+    \fi\fi\fi
   \fi\fi
-  \ifx\FONT\@empty \expandafter\@gobbletwo
-  \else \expandafter\pxcz at entry@a \fi}
-\@onlypreamble\pxcz at entry@a
-\def\pxcz at entry@a#1#2{%
-  \chardef\pxcz at entry@type=#1\relax
-  \ifnum\pxcz at entry@type=\@ne\ifx\pxcz at cmap@uni\pxcz at cmap@hwuni
-    \let\@l\@gobble
-  \fi\fi
-  \pxcz at check@entry \ifpxcz at ok
-    \xdef\pxcz at spec{%
-      \pxcz at spec\noexpand\special{\pxcz at mapline{#2}}}%
-  \fi}
+  % output it
+  \ifx\pxcz at font\pxcz at kill@mapping
+    \xdef\pxcz at spec{\pxcz at spec\noexpand\special{%
+      \pxcz at mapline{-#2}}}%
+  \else\ifx\pxcz at font\@empty\else
+    \xdef\pxcz at spec{\pxcz at spec\noexpand\special{%
+      \pxcz at mapline{#2 \pxcz at cmap\space\pxcz at font\pxcz at mopts}}}%
+  \fi\fi}
 
-%% \pxcz at check@entry
-\@onlypreamble\pxcz at check@entry
-\def\pxcz at sym@@mgr{mgr}
-\def\pxcz at check@entry{%
-  \pxcz at oktrue
-  \ifnum\pxcz at entry@type=\@ne
-    \ifx\pxcz at entry@sym\pxcz at sym@@mgr
-      \expandafter\ifx\csname pxcz at FS/gtr\endcsname\relax\else
-        \pxcz at okfalse \fi
-    \fi
-  \fi}
-
 %% \pxcz at do@file at preset
 \@onlypreamble\pxcz at do@file at preset
 \def\pxcz at do@file at preset{%
@@ -542,202 +831,193 @@
 %--------------------------------------- map entry definitions
 
 %% \pxcz at mapentry{<id>}{<text>}
+\@onlypreamble\pxcz at mapentry
 \def\pxcz at mapentry#1{%
-  \expandafter\pxcz at mapentry@a\csname pxcz at ME/#1\endcsname}
-\def\pxcz at mapentry@a#1{\@onlypreamble#1\def#1}
+  \pxcz at onlypreamble@csdef{pxcz at ME/#1}}
 
 %% map entries
-% \FONT: file name for the 2004JIS font
-% \FONTo: file name for the 90JIS font
-% \FONTs: \FONT if prefer2004jis, \FONTo otherwise
-% \*H: 2004-H if prefer2004jis, H otherwise
-% \UniJIS: UniJIS2004 if prefer2004jis, UniJIS otherwise
-% \+Uni...-H: replaced by 'unicode' if directunicode
-% \@+Uni...-H: replaced by 'unicode' if directunicode*
-% \w: '-w 1' if directunicode
-% \@w: '-w 1' if directunicode*
 \pxcz at mapentry{STD}{%
-\Entry{mnr}0{rml             \*H                     \FONTs}%
-\Entry{mnr}0{rmlv            \*V                     \FONTs}%
-\Entry{gtu}0{gbm             \*H                     \FONTs}%
-\Entry{gtu}0{gbmv            \*V                     \FONTs}%
+\Entry{mnr}{rml}           {H}                   {Switch}%
+\Entry{mnr}{rmlv}          {V}                   {Switch,V}%
+\Entry{gtu}{gbm}           {H}                   {Switch}%
+\Entry{gtu}{gbmv}          {V}                   {Switch,V}%
 }
 \pxcz at mapentry{ALPHA}{%
-\Entry{mnl}1{r-cfjar-l- at PXcjk0@ \UniCMap\            \FONT\@hwid}%
-\Entry{mnr}1{r-cfjar-r- at PXcjk0@ \UniCMap\            \FONT\@hwid}%
-\Entry{mnb}1{r-cfjar-b- at PXcjk0@ \UniCMap\            \FONT\@hwid}%
-\Entry{gtr}1{r-cfjas-r- at PXcjk0@ \UniCMap\            \FONT\@hwid}%
-\Entry{gtb}1{r-cfjas-b- at PXcjk0@ \UniCMap\            \FONT\@hwid}%
-\Entry{gtx}1{r-cfjas-x- at PXcjk0@ \UniCMap\            \FONT\@hwid}%
-\Entry{mgr}1{r-cfjas-r- at PXcjk0@ \UniCMap\            \FONT\@hwid}%
+\Entry{mnl}{r-cfjar-l- at PXcjk0@}{unicode}         {HWid}%
+\Entry{mnr}{r-cfjar-r- at PXcjk0@}{unicode}         {HWid}%
+\Entry{mnb}{r-cfjar-b- at PXcjk0@}{unicode}         {HWid}%
+\Entry{gtr}{r-cfjas-r- at PXcjk0@}{unicode}         {HWid}%
+\Entry{gtb}{r-cfjas-b- at PXcjk0@}{unicode}         {HWid}%
+\Entry{gtx}{r-cfjas-x- at PXcjk0@}{unicode}         {HWid}%
+\Entry{mgr}{r-cfjas-r- at PXcjk0@}{unicode}         {HWid}%
 }
 \pxcz at mapentry{UTF}{%
-\Entry{mnr}0{unijmin-h       \UniJIS-UTF16-H         \FONTs\@jpXX}%
-\Entry{mnr}0{unijmin-v       \UniJIS-UTF16-V         \FONTs\@w\@jpXX}%
-\Entry{mnr}0{cidmin-h        Identity-H              \FONT/AJ16}%
-\Entry{mnr}0{cidmin-v        Identity-V              \FONT/AJ16}%
-\Entry{mnr}0{hmr             \*H                     \FONTs}%
-\Entry{mnr}0{hmrv            \*V                     \FONTs}%
-\Entry{gtu}0{unijgoth-h      \UniJIS-UTF16-H         \FONTs\@jpXX}%
-\Entry{gtu}0{unijgoth-v      \UniJIS-UTF16-V         \FONTs\@w\@jpXX}%
-\Entry{gtu}0{cidgoth-h       Identity-H              \FONT/AJ16}%
-\Entry{gtu}0{cidgoth-v       Identity-V              \FONT/AJ16}%
-\Entry{gtu}0{hkb             \*H                     \FONTs}%
-\Entry{gtu}0{hkbv            \*V                     \FONTs}%
+\Entry{mnr}{unijmin-h}     {UniJIS-UTF16-H}      {Uni*,Switch}%
+\Entry{mnr}{unijmin-v}     {UniJIS-UTF16-V}      {Uni*,Switch,V}%
+\Entry{mnr}{cidmin-h}      {Identity-H}          {AJ16}%
+\Entry{mnr}{cidmin-v}      {Identity-V}          {AJ16,V}%
+\Entry{mnr}{hmr}           {H}                   {Switch}%
+\Entry{mnr}{hmrv}          {V}                   {Switch,V}%
+\Entry{gtu}{unijgoth-h}    {UniJIS-UTF16-H}      {Uni*,Switch}%
+\Entry{gtu}{unijgoth-v}    {UniJIS-UTF16-V}      {Uni*,Switch,V}%
+\Entry{gtu}{cidgoth-h}     {Identity-H}          {AJ16}%
+\Entry{gtu}{cidgoth-v}     {Identity-V}          {AJ16,V}%
+\Entry{gtu}{hkb}           {H}                   {Switch}%
+\Entry{gtu}{hkbv}          {V}                   {Switch,V}%
 }
 \pxcz at mapentry{OTF}{%
-\Entry{mnl}0{otf-ujml-h      \+UniJIS-UTF16-H        \FONTo\@jp90}%
-\Entry{mnl}0{otf-ujml-v      \+UniJIS-UTF16-V        \FONTo\w\@jp90}%
-\Entry{mnl}0{otf-cjml-h      Identity-H              \FONT/AJ16}%
-\Entry{mnl}0{otf-cjml-v      Identity-V              \FONT/AJ16}%
-\Entry{mnl}0{hminl-h         H                       \FONTo}%
-\Entry{mnl}0{hminl-v         V                       \FONTo}%
-\Entry{mnl}0{otf-ujmln-h     \+UniJIS2004-UTF16-H    \FONT\@jp04}%
-\Entry{mnl}0{otf-ujmln-v     \+UniJIS2004-UTF16-V    \FONT\w\@jp04}%
-\Entry{mnl}0{hminln-h        H                       \FONT}%
-\Entry{mnl}0{hminln-v        V                       \FONT}%
-\Entry{mnr}0{otf-ujmr-h      \+UniJIS-UTF16-H        \FONTo\@jp90}%
-\Entry{mnr}0{otf-ujmr-v      \+UniJIS-UTF16-V        \FONTo\w\@jp90}%
-\Entry{mnr}0{otf-cjmr-h      Identity-H              \FONT/AJ16}%
-\Entry{mnr}0{otf-cjmr-v      Identity-V              \FONT/AJ16}%
-\Entry{mnr}0{hminr-h         H                       \FONTo}%
-\Entry{mnr}0{hminr-v         V                       \FONTo}%
-\Entry{mnr}0{otf-ujmrn-h     \+UniJIS2004-UTF16-H    \FONT\@jp04}%
-\Entry{mnr}0{otf-ujmrn-v     \+UniJIS2004-UTF16-V    \FONT\w\@jp04}%
-\Entry{mnr}0{hminrn-h        H                       \FONT}%
-\Entry{mnr}0{hminrn-v        V                       \FONT}%
-\Entry{mnb}0{otf-ujmb-h      \+UniJIS-UTF16-H        \FONTo\@jp90}%
-\Entry{mnb}0{otf-ujmb-v      \+UniJIS-UTF16-V        \FONTo\w\@jp90}%
-\Entry{mnb}0{otf-cjmb-h      Identity-H              \FONT/AJ16}%
-\Entry{mnb}0{otf-cjmb-v      Identity-V              \FONT/AJ16}%
-\Entry{mnb}0{hminb-h         H                       \FONTo}%
-\Entry{mnb}0{hminb-v         V                       \FONTo}%
-\Entry{mnb}0{otf-ujmbn-h     \+UniJIS2004-UTF16-H    \FONT\@jp04}%
-\Entry{mnb}0{otf-ujmbn-v     \+UniJIS2004-UTF16-V    \FONT\w\@jp04}%
-\Entry{mnb}0{hminbn-h        H                       \FONT}%
-\Entry{mnb}0{hminbn-v        V                       \FONT}%
-\Entry{gtr}0{otf-ujgr-h      \+UniJIS-UTF16-H        \FONTo\@jp90}%
-\Entry{gtr}0{otf-ujgr-v      \+UniJIS-UTF16-V        \FONTo\w\@jp90}%
-\Entry{gtr}0{otf-cjgr-h      Identity-H              \FONT/AJ16}%
-\Entry{gtr}0{otf-cjgr-v      Identity-V              \FONT/AJ16}%
-\Entry{gtr}0{hgothr-h        H                       \FONTo}%
-\Entry{gtr}0{hgothr-v        V                       \FONTo}%
-\Entry{gtr}0{otf-ujgrn-h     \+UniJIS2004-UTF16-H    \FONT\@jp04}%
-\Entry{gtr}0{otf-ujgrn-v     \+UniJIS2004-UTF16-V    \FONT\w\@jp04}%
-\Entry{gtr}0{hgothrn-h       H                       \FONT}%
-\Entry{gtr}0{hgothrn-v       V                       \FONT}%
-\Entry{gtb}0{otf-ujgb-h      \+UniJIS-UTF16-H        \FONTo\@jp90}%
-\Entry{gtb}0{otf-ujgb-v      \+UniJIS-UTF16-V        \FONTo\w\@jp90}%
-\Entry{gtb}0{otf-cjgb-h      Identity-H              \FONT/AJ16}%
-\Entry{gtb}0{otf-cjgb-v      Identity-V              \FONT/AJ16}%
-\Entry{gtb}0{hgothb-h        H                       \FONTo}%
-\Entry{gtb}0{hgothb-v        V                       \FONTo}%
-\Entry{gtb}0{otf-ujgbn-h     \+UniJIS2004-UTF16-H    \FONT\@jp04}%
-\Entry{gtb}0{otf-ujgbn-v     \+UniJIS2004-UTF16-V    \FONT\w\@jp04}%
-\Entry{gtb}0{hgothbn-h       H                       \FONT}%
-\Entry{gtb}0{hgothbn-v       V                       \FONT}%
-\Entry{gtx}0{otf-ujge-h      \+UniJIS-UTF16-H        \FONTo\@jp90}%
-\Entry{gtx}0{otf-ujge-v      \+UniJIS-UTF16-V        \FONTo\w\@jp90}%
-\Entry{gtx}0{otf-cjge-h      Identity-H              \FONT/AJ16}%
-\Entry{gtx}0{otf-cjge-v      Identity-V              \FONT/AJ16}%
-\Entry{gtx}0{hgotheb-h       H                       \FONTo}%
-\Entry{gtx}0{hgotheb-v       V                       \FONTo}%
-\Entry{gtx}0{otf-ujgen-h     \+UniJIS2004-UTF16-H    \FONT\@jp04}%
-\Entry{gtx}0{otf-ujgen-v     \+UniJIS2004-UTF16-V    \FONT\w\@jp04}%
-\Entry{gtx}0{hgothebn-h      H                       \FONT}%
-\Entry{gtx}0{hgothebn-v      V                       \FONT}%
-\Entry{mgr}0{otf-ujmgr-h     \+UniJIS-UTF16-H        \FONTo\@jp90}%
-\Entry{mgr}0{otf-ujmgr-v     \+UniJIS-UTF16-V        \FONTo\w\@jp90}%
-\Entry{mgr}0{otf-cjmgr-h     Identity-H              \FONT/AJ16}%
-\Entry{mgr}0{otf-cjmgr-v     Identity-V              \FONT/AJ16}%
-\Entry{mgr}0{hmgothr-h       H                       \FONTo}%
-\Entry{mgr}0{hmgothr-v       V                       \FONTo}%
-\Entry{mgr}0{otf-ujmgrn-h    \+UniJIS2004-UTF16-H    \FONT\@jp04}%
-\Entry{mgr}0{otf-ujmgrn-v    \+UniJIS2004-UTF16-V    \FONT\w\@jp04}%
-\Entry{mgr}0{hmgothrn-h      H                       \FONT}%
-\Entry{mgr}0{hmgothrn-v      V                       \FONT}%
+\Entry{mnl}{otf-ujml-h}    {UniJIS-UTF16-H}      {Uni,90,FWid}%
+\Entry{mnl}{otf-ujml-v}    {UniJIS-UTF16-V}      {Uni,90,FWid,V}%
+\Entry{mnl}{otf-cjml-h}    {Identity-H}          {AJ16}%
+\Entry{mnl}{otf-cjml-v}    {Identity-V}          {AJ16,V}%
+\Entry{mnl}{hminl-h}       {H}                   {90}%
+\Entry{mnl}{hminl-v}       {V}                   {90,V}%
+\Entry{mnl}{otf-ujmln-h}   {UniJIS2004-UTF16-H}  {Uni,04,FWid}%
+\Entry{mnl}{otf-ujmln-v}   {UniJIS2004-UTF16-V}  {Uni,04,FWid,V}%
+\Entry{mnl}{hminln-h}      {H}                   {}%
+\Entry{mnl}{hminln-v}      {V}                   {V}%
+\Entry{mnr}{otf-ujmr-h}    {UniJIS-UTF16-H}      {Uni,90,FWid}%
+\Entry{mnr}{otf-ujmr-v}    {UniJIS-UTF16-V}      {Uni,90,FWid,V}%
+\Entry{mnr}{otf-cjmr-h}    {Identity-H}          {AJ16}%
+\Entry{mnr}{otf-cjmr-v}    {Identity-V}          {AJ16,V}%
+\Entry{mnr}{hminr-h}       {H}                   {90}%
+\Entry{mnr}{hminr-v}       {V}                   {90,V}%
+\Entry{mnr}{otf-ujmrn-h}   {UniJIS2004-UTF16-H}  {Uni,04,FWid}%
+\Entry{mnr}{otf-ujmrn-v}   {UniJIS2004-UTF16-V}  {Uni,04,FWid,V}%
+\Entry{mnr}{hminrn-h}      {H}                   {}%
+\Entry{mnr}{hminrn-v}      {V}                   {V}%
+\Entry{mnb}{otf-ujmb-h}    {UniJIS-UTF16-H}      {Uni,90,FWid}%
+\Entry{mnb}{otf-ujmb-v}    {UniJIS-UTF16-V}      {Uni,90,FWid,V}%
+\Entry{mnb}{otf-cjmb-h}    {Identity-H}          {AJ16}%
+\Entry{mnb}{otf-cjmb-v}    {Identity-V}          {AJ16,V}%
+\Entry{mnb}{hminb-h}       {H}                   {90}%
+\Entry{mnb}{hminb-v}       {V}                   {90,V}%
+\Entry{mnb}{otf-ujmbn-h}   {UniJIS2004-UTF16-H}  {Uni,04,FWid}%
+\Entry{mnb}{otf-ujmbn-v}   {UniJIS2004-UTF16-V}  {Uni,04,FWid,V}%
+\Entry{mnb}{hminbn-h}      {H}                   {}%
+\Entry{mnb}{hminbn-v}      {V}                   {V}%
+\Entry{gtr}{otf-ujgr-h}    {UniJIS-UTF16-H}      {Uni,90,FWid}%
+\Entry{gtr}{otf-ujgr-v}    {UniJIS-UTF16-V}      {Uni,90,FWid,V}%
+\Entry{gtr}{otf-cjgr-h}    {Identity-H}          {AJ16}%
+\Entry{gtr}{otf-cjgr-v}    {Identity-V}          {AJ16,V}%
+\Entry{gtr}{hgothr-h}      {H}                   {90}%
+\Entry{gtr}{hgothr-v}      {V}                   {90,V}%
+\Entry{gtr}{otf-ujgrn-h}   {UniJIS2004-UTF16-H}  {Uni,04,FWid}%
+\Entry{gtr}{otf-ujgrn-v}   {UniJIS2004-UTF16-V}  {Uni,04,FWid,V}%
+\Entry{gtr}{hgothrn-h}     {H}                   {}%
+\Entry{gtr}{hgothrn-v}     {V}                   {V}%
+\Entry{gtb}{otf-ujgb-h}    {UniJIS-UTF16-H}      {Uni,90,FWid}%
+\Entry{gtb}{otf-ujgb-v}    {UniJIS-UTF16-V}      {Uni,90,FWid,V}%
+\Entry{gtb}{otf-cjgb-h}    {Identity-H}          {AJ16}%
+\Entry{gtb}{otf-cjgb-v}    {Identity-V}          {AJ16,V}%
+\Entry{gtb}{hgothb-h}      {H}                   {90}%
+\Entry{gtb}{hgothb-v}      {V}                   {90,V}%
+\Entry{gtb}{otf-ujgbn-h}   {UniJIS2004-UTF16-H}  {Uni,04,FWid}%
+\Entry{gtb}{otf-ujgbn-v}   {UniJIS2004-UTF16-V}  {Uni,04,FWid,V}%
+\Entry{gtb}{hgothbn-h}     {H}                   {}%
+\Entry{gtb}{hgothbn-v}     {V}                   {V}%
+\Entry{gtx}{otf-ujge-h}    {UniJIS-UTF16-H}      {Uni,90,FWid}%
+\Entry{gtx}{otf-ujge-v}    {UniJIS-UTF16-V}      {Uni,90,FWid,V}%
+\Entry{gtx}{otf-cjge-h}    {Identity-H}          {AJ16}%
+\Entry{gtx}{otf-cjge-v}    {Identity-V}          {AJ16,V}%
+\Entry{gtx}{hgotheb-h}     {H}                   {90}%
+\Entry{gtx}{hgotheb-v}     {V}                   {90,V}%
+\Entry{gtx}{otf-ujgen-h}   {UniJIS2004-UTF16-H}  {Uni,04,FWid}%
+\Entry{gtx}{otf-ujgen-v}   {UniJIS2004-UTF16-V}  {Uni,04,FWid,V}%
+\Entry{gtx}{hgothebn-h}    {H}                   {}%
+\Entry{gtx}{hgothebn-v}    {V}                   {V}%
+\Entry{mgr}{otf-ujmgr-h}   {UniJIS-UTF16-H}      {Uni,90,FWid}%
+\Entry{mgr}{otf-ujmgr-v}   {UniJIS-UTF16-V}      {Uni,90,FWid,V}%
+\Entry{mgr}{otf-cjmgr-h}   {Identity-H}          {AJ16}%
+\Entry{mgr}{otf-cjmgr-v}   {Identity-V}          {AJ16,V}%
+\Entry{mgr}{hmgothr-h}     {H}                   {90}%
+\Entry{mgr}{hmgothr-v}     {V}                   {90,V}%
+\Entry{mgr}{otf-ujmgrn-h}  {UniJIS2004-UTF16-H}  {Uni,04,FWid}%
+\Entry{mgr}{otf-ujmgrn-v}  {UniJIS2004-UTF16-V}  {Uni,04,FWid,V}%
+\Entry{mgr}{hmgothrn-h}    {H}                   {}%
+\Entry{mgr}{hmgothrn-v}    {V}                   {V}%
 %
 \ifpxcz at otf@multi
-\Entry{kom}0{otf-ukmr-h      \+UniKS-UTF16-H         \FONT}%
-\Entry{kom}0{otf-ukmr-v      \+UniKS-UTF16-V         \FONT\w}%
-\Entry{kom}0{otf-ckmr-h      Identity-H              \FONT/AK12}%
-\Entry{kom}0{otf-ckmr-v      Identity-V              \FONT/AK12}%
-\Entry{kog}0{otf-ukgr-h      \+UniKS-UTF16-H         \FONT}%
-\Entry{kog}0{otf-ukgr-v      \+UniKS-UTF16-V         \FONT\w}%
-\Entry{kog}0{otf-ckgr-h      Identity-H              \FONT/AK12}%
-\Entry{kog}0{otf-ckgr-v      Identity-V              \FONT/AK12}%
-\Entry{scm}0{otf-ucmr-h      \+UniGB-UTF16-H         \FONT}%
-\Entry{scm}0{otf-ucmr-v      \+UniGB-UTF16-V         \FONT\w}%
-\Entry{scm}0{otf-ccmr-h      Identity-H              \FONT/AG14}%
-\Entry{scm}0{otf-ccmr-v      Identity-V              \FONT/AG14}%
-\Entry{scg}0{otf-ucgr-h      \+UniGB-UTF16-H         \FONT}%
-\Entry{scg}0{otf-ucgr-v      \+UniGB-UTF16-V         \FONT\w}%
-\Entry{scg}0{otf-ccgr-h      Identity-H              \FONT/AG14}%
-\Entry{scg}0{otf-ccgr-v      Identity-V              \FONT/AG14}%
-\Entry{tcm}0{otf-utmr-h      \+UniCNS-UTF16-H        \FONT}%
-\Entry{tcm}0{otf-utmr-v      \+UniCNS-UTF16-V        \FONT\w}%
-\Entry{tcm}0{otf-ctmr-h      Identity-H              \FONT/AC14}%
-\Entry{tcm}0{otf-ctmr-v      Identity-V              \FONT/AC14}%
-\Entry{tcg}0{otf-utgr-h      \+UniCNS-UTF16-H        \FONT}%
-\Entry{tcg}0{otf-utgr-v      \+UniCNS-UTF16-V        \FONT\w}%
-\Entry{tcg}0{otf-ctgr-h      Identity-H              \FONT/AC14}%
-\Entry{tcg}0{otf-ctgr-v      Identity-V              \FONT/AC14}%
+\Entry{kom}{otf-ukmr-h}    {UniKS-UTF16-H}       {Uni,FWid}%
+\Entry{kom}{otf-ukmr-v}    {UniKS-UTF16-V}       {Uni,FWid,V}%
+\Entry{kom}{otf-ckmr-h}    {Identity-H}          {AK12}%
+\Entry{kom}{otf-ckmr-v}    {Identity-V}          {AK12,V}%
+\Entry{kog}{otf-ukgr-h}    {UniKS-UTF16-H}       {Uni,FWid}%
+\Entry{kog}{otf-ukgr-v}    {UniKS-UTF16-V}       {Uni,FWid,V}%
+\Entry{kog}{otf-ckgr-h}    {Identity-H}          {AK12}%
+\Entry{kog}{otf-ckgr-v}    {Identity-V}          {AK12,V}%
+\Entry{scm}{otf-ucmr-h}    {UniGB-UTF16-H}       {Uni,FWid}%
+\Entry{scm}{otf-ucmr-v}    {UniGB-UTF16-V}       {Uni,FWid,V}%
+\Entry{scm}{otf-ccmr-h}    {Identity-H}          {AG14}%
+\Entry{scm}{otf-ccmr-v}    {Identity-V}          {AG14,V}%
+\Entry{scg}{otf-ucgr-h}    {UniGB-UTF16-H}       {Uni,FWid}%
+\Entry{scg}{otf-ucgr-v}    {UniGB-UTF16-V}       {Uni,FWid,V}%
+\Entry{scg}{otf-ccgr-h}    {Identity-H}          {AG14}%
+\Entry{scg}{otf-ccgr-v}    {Identity-V}          {AG14,V}%
+\Entry{tcm}{otf-utmr-h}    {UniCNS-UTF16-H}      {Uni,FWid}%
+\Entry{tcm}{otf-utmr-v}    {UniCNS-UTF16-V}      {Uni,FWid,V}%
+\Entry{tcm}{otf-ctmr-h}    {Identity-H}          {AC14}%
+\Entry{tcm}{otf-ctmr-v}    {Identity-V}          {AC14,V}%
+\Entry{tcg}{otf-utgr-h}    {UniCNS-UTF16-H}      {Uni,FWid}%
+\Entry{tcg}{otf-utgr-v}    {UniCNS-UTF16-V}      {Uni,FWid,V}%
+\Entry{tcg}{otf-ctgr-h}    {Identity-H}          {AC14}%
+\Entry{tcg}{otf-ctgr-v}    {Identity-V}          {AC14,V}%
 \fi
 }
 \pxcz at mapentry{UPSTD}{%
-\Entry{mnr}0{uprml-h         \UniJIS-UTF16-H         \FONTs\@jpXX}%
-\Entry{mnr}0{uprml-v         \UniJIS-UTF16-V         \FONTs\@w\@jpXX}%
-\Entry{mnr}2{uprml-hq        \@+UniJIS-UCS2-H        \FONT\@fwid}%
-\Entry{gtu}0{upgbm-h         \UniJIS-UTF16-H         \FONTs\@jpXX}%
-\Entry{gtu}0{upgbm-v         \UniJIS-UTF16-V         \FONTs\@w\@jpXX}%
-\Entry{gtu}2{upgbm-hq        \@+UniJIS-UCS2-H        \FONT\@fwid}%
-\Entry{mnr}0{urml            \UniJIS-UTF16-H         \FONTs\@jpXX}%
-\Entry{mnr}0{urmlv           \UniJIS-UTF16-V         \FONTs\@w\@jpXX}%
-\Entry{gtu}0{ugbm            \UniJIS-UTF16-H         \FONTs\@jpXX}%
-\Entry{gtu}0{ugbmv           \UniJIS-UTF16-V         \FONTs\@w\@jpXX}%
+\Entry{mnr}{uprml-h}       {UniJIS-UTF16-H}      {Uni*,Switch}%
+\Entry{mnr}{uprml-v}       {UniJIS-UTF16-V}      {Uni*,Switch,V}%
+\Entry{mnr}{uprml-hq}      {UniJIS-UCS2-H}       {Uni*,FWid}%
+\Entry{gtu}{upgbm-h}       {UniJIS-UTF16-H}      {Uni*,Switch}%
+\Entry{gtu}{upgbm-v}       {UniJIS-UTF16-V}      {Uni*,Switch,V}%
+\Entry{gtu}{upgbm-hq}      {UniJIS-UCS2-H}       {Uni*,FWid}%
+\Entry{mnr}{urml}          {UniJIS-UTF16-H}      {Uni*,Switch}%
+\Entry{mnr}{urmlv}         {UniJIS-UTF16-V}      {Uni*,Switch,V}%
+\Entry{gtu}{ugbm}          {UniJIS-UTF16-H}      {Uni*,Switch}%
+\Entry{gtu}{ugbmv}         {UniJIS-UTF16-V}      {Uni*,Switch,V}%
 %
-\Entry{kom}0{uphysmjm-h      \@+UniKS-UTF16-H        \FONT}%
-\Entry{kom}0{uphysmjm-v      \@+UniKS-UTF16-V        \FONT\@w}%
-\Entry{kog}0{uphygt-h        \@+UniKS-UTF16-H        \FONT}%
-\Entry{kog}0{uphygt-v        \@+UniKS-UTF16-V        \FONT\@w}%
-\Entry{scm}0{upstsl-h        \@+UniGB-UTF16-H        \FONT}%
-\Entry{scm}0{upstsl-v        \@+UniGB-UTF16-V        \FONT\@w}%
-\Entry{scg}0{upstht-h        \@+UniGB-UTF16-H        \FONT}%
-\Entry{scg}0{upstht-v        \@+UniGB-UTF16-V        \FONT\@w}%
-\Entry{tcm}0{upmsl-h         \@+UniCNS-UTF16-H       \FONT}%
-\Entry{tcm}0{upmsl-v         \@+UniCNS-UTF16-V       \FONT\@w}%
-\Entry{tcg}0{upmhm-h         \@+UniCNS-UTF16-H       \FONT}%
-\Entry{tcg}0{upmhm-v         \@+UniCNS-UTF16-V       \FONT\@w}%
+\Entry{kom}{uphysmjm-h}    {UniKS-UTF16-H}       {Uni*}%
+\Entry{kom}{uphysmjm-v}    {UniKS-UTF16-V}       {Uni*,V}%
+\Entry{kog}{uphygt-h}      {UniKS-UTF16-H}       {Uni*}%
+\Entry{kog}{uphygt-v}      {UniKS-UTF16-V}       {Uni*,V}%
+\Entry{scm}{upstsl-h}      {UniGB-UTF16-H}       {Uni*}%
+\Entry{scm}{upstsl-v}      {UniGB-UTF16-V}       {Uni*,V}%
+\Entry{scg}{upstht-h}      {UniGB-UTF16-H}       {Uni*}%
+\Entry{scg}{upstht-v}      {UniGB-UTF16-V}       {Uni*,V}%
+\Entry{tcm}{upmsl-h}       {UniCNS-UTF16-H}      {Uni*}%
+\Entry{tcm}{upmsl-v}       {UniCNS-UTF16-V}      {Uni*,V}%
+\Entry{tcg}{upmhm-h}       {UniCNS-UTF16-H}      {Uni*}%
+\Entry{tcg}{upmhm-v}       {UniCNS-UTF16-V}      {Uni*,V}%
 }
 \pxcz at mapentry{UPOTF}{%
-\Entry{mnl}0{uphminl-h       \@+UniJIS-UTF16-H       \FONTo\@jp90}%
-\Entry{mnl}0{uphminl-v       \@+UniJIS-UTF16-V       \FONTo\@w\@jp90}%
-\Entry{mnl}0{uphminln-h      \@+UniJIS2004-UTF16-H   \FONT\@jp04}%
-\Entry{mnl}0{uphminln-v      \@+UniJIS2004-UTF16-V   \FONT\@w\@jp04}%
-\Entry{mnr}0{uphminr-h       \@+UniJIS-UTF16-H       \FONTo\@jp90}%
-\Entry{mnr}0{uphminr-v       \@+UniJIS-UTF16-V       \FONTo\@w\@jp90}%
-\Entry{mnr}0{uphminrn-h      \@+UniJIS2004-UTF16-H   \FONT\@jp04}%
-\Entry{mnr}0{uphminrn-v      \@+UniJIS2004-UTF16-V   \FONT\@w\@jp04}%
-\Entry{mnb}0{uphminb-h       \@+UniJIS-UTF16-H       \FONTo\@jp90}%
-\Entry{mnb}0{uphminb-v       \@+UniJIS-UTF16-V       \FONTo\@w\@jp90}%
-\Entry{mnb}0{uphminbn-h      \@+UniJIS2004-UTF16-H   \FONT\@jp04}%
-\Entry{mnb}0{uphminbn-v      \@+UniJIS2004-UTF16-V   \FONT\@w\@jp04}%
-\Entry{gtr}0{uphgothr-h      \@+UniJIS-UTF16-H       \FONTo\@jp90}%
-\Entry{gtr}0{uphgothr-v      \@+UniJIS-UTF16-V       \FONTo\@w\@jp90}%
-\Entry{gtr}0{uphgothrn-h     \@+UniJIS2004-UTF16-H   \FONT\@jp04}%
-\Entry{gtr}0{uphgothrn-v     \@+UniJIS2004-UTF16-V   \FONT\@w\@jp04}%
-\Entry{gtb}0{uphgothb-h      \@+UniJIS-UTF16-H       \FONTo\@jp90}%
-\Entry{gtb}0{uphgothb-v      \@+UniJIS-UTF16-V       \FONTo\@w\@jp90}%
-\Entry{gtb}0{uphgothbn-h     \@+UniJIS2004-UTF16-H   \FONT\@jp04}%
-\Entry{gtb}0{uphgothbn-v     \@+UniJIS2004-UTF16-V   \FONT\@w\@jp04}%
-\Entry{gtx}0{uphgotheb-h     \@+UniJIS-UTF16-H       \FONTo\@jp90}%
-\Entry{gtx}0{uphgotheb-v     \@+UniJIS-UTF16-V       \FONTo\@w\@jp90}%
-\Entry{gtx}0{uphgothebn-h    \@+UniJIS2004-UTF16-H   \FONT\@jp04}%
-\Entry{gtx}0{uphgothebn-v    \@+UniJIS2004-UTF16-V   \FONT\@w\@jp04}%
-\Entry{mgr}0{uphmgothr-h     \@+UniJIS-UTF16-H       \FONTo\@jp90}%
-\Entry{mgr}0{uphmgothr-v     \@+UniJIS-UTF16-V       \FONTo\@w\@jp90}%
-\Entry{mgr}0{uphmgothrn-h    \@+UniJIS2004-UTF16-H   \FONT\@jp04}%
-\Entry{mgr}0{uphmgothrn-v    \@+UniJIS2004-UTF16-V   \FONT\@w\@jp04}%
+\Entry{mnl}{uphminl-h}     {UniJIS-UTF16-H}      {Uni*,90}%
+\Entry{mnl}{uphminl-v}     {UniJIS-UTF16-V}      {Uni*,90,V}%
+\Entry{mnl}{uphminln-h}    {UniJIS2004-UTF16-H}  {Uni*,04}%
+\Entry{mnl}{uphminln-v}    {UniJIS2004-UTF16-V}  {Uni*,04,V}%
+\Entry{mnr}{uphminr-h}     {UniJIS-UTF16-H}      {Uni*,90}%
+\Entry{mnr}{uphminr-v}     {UniJIS-UTF16-V}      {Uni*,90,V}%
+\Entry{mnr}{uphminrn-h}    {UniJIS2004-UTF16-H}  {Uni*,04}%
+\Entry{mnr}{uphminrn-v}    {UniJIS2004-UTF16-V}  {Uni*,04,V}%
+\Entry{mnb}{uphminb-h}     {UniJIS-UTF16-H}      {Uni*,90}%
+\Entry{mnb}{uphminb-v}     {UniJIS-UTF16-V}      {Uni*,90,V}%
+\Entry{mnb}{uphminbn-h}    {UniJIS2004-UTF16-H}  {Uni*,04}%
+\Entry{mnb}{uphminbn-v}    {UniJIS2004-UTF16-V}  {Uni*,04,V}%
+\Entry{gtr}{uphgothr-h}    {UniJIS-UTF16-H}      {Uni*,90}%
+\Entry{gtr}{uphgothr-v}    {UniJIS-UTF16-V}      {Uni*,90,V}%
+\Entry{gtr}{uphgothrn-h}   {UniJIS2004-UTF16-H}  {Uni*,04}%
+\Entry{gtr}{uphgothrn-v}   {UniJIS2004-UTF16-V}  {Uni*,04,V}%
+\Entry{gtb}{uphgothb-h}    {UniJIS-UTF16-H}      {Uni*,90}%
+\Entry{gtb}{uphgothb-v}    {UniJIS-UTF16-V}      {Uni*,90,V}%
+\Entry{gtb}{uphgothbn-h}   {UniJIS2004-UTF16-H}  {Uni*,04}%
+\Entry{gtb}{uphgothbn-v}   {UniJIS2004-UTF16-V}  {Uni*,04,V}%
+\Entry{gtx}{uphgotheb-h}   {UniJIS-UTF16-H}      {Uni*,90}%
+\Entry{gtx}{uphgotheb-v}   {UniJIS-UTF16-V}      {Uni*,90,V}%
+\Entry{gtx}{uphgothebn-h}  {UniJIS2004-UTF16-H}  {Uni*,04}%
+\Entry{gtx}{uphgothebn-v}  {UniJIS2004-UTF16-V}  {Uni*,04,V}%
+\Entry{mgr}{uphmgothr-h}   {UniJIS-UTF16-H}      {Uni*,90}%
+\Entry{mgr}{uphmgothr-v}   {UniJIS-UTF16-V}      {Uni*,90,V}%
+\Entry{mgr}{uphmgothrn-h}  {UniJIS2004-UTF16-H}  {Uni*,04}%
+\Entry{mgr}{uphmgothrn-v}  {UniJIS2004-UTF16-V}  {Uni*,04,V}%
 }
 \pxcz at mapentry{PXOTF}{%
 }
@@ -941,7 +1221,7 @@
     % if mnr is replaced but gtr is not then ...
     \expandafter\ifx\csname pxcz at FS/gtr\endcsname\@empty
       {\expandafter\let\csname pxcz at FS/gtr\endcsname\pxcz at x
-        \pxcz at Entry{gtr}1{r-cfjas-r- at PXcjk0@ \pxcz at cmap@uni\space \FONT}}%
+        \pxcz at Entry{gtr}{r-cfjas-r- at PXcjk0@}{unicode}{HWid}}%
   \fi\fi
   \@ifpackagewith{otf}{deluxe}{\pxcz at err@dxotf{otf}}{}%
   \@ifpackagewith{pxotf}{deluxe}{\pxcz at err@dxotf{pxotf}}{}%
@@ -976,6 +1256,9 @@
   \ifx\pxcz at file@preset\relax\else
     \pxcz at do@file at preset
   \fi
+  \ifx t\pxcz at strict@csi
+    \pxcz at inspect@flavor at all
+  \fi
   \ifpxcz at alpha
     \pxcz at check@alldefined{mnl,mnr,mnb}%
     \ifpxcz at ok \renewcommand\rmdefault{cfjar}\fi
@@ -1041,6 +1324,144 @@
   \pxcz at info{Relation font set for \k at encoding/#1}%
 }
 
+%--------------------------------------- strict-CSI mode
+\ifx t\pxcz at strict@csi
+% In this section, the e-TeX extension plus \pdffiledump and
+% \pdffilesize is assumed to be available.
+
+%% variables
+\newcount\pxcz at cntr
+\let\pxcz at insf@file\relax
+\let\pxcz at insf@idx\relax
+\let\pxcz at insf@nfont\relax
+\let\pxcz at kpse@dir\relax
+
+%% constants
+\def\pxcz at insf@@OTTO{"4F54544F }
+\def\pxcz at insf@@IZ{"00010000 }
+\def\pxcz at insf@@ttcf{"74746366 }
+
+%% \pxcz at insf@read at word{<offset>}
+% Reads a 32-bit integer from \pxcz at insf@file at the given offset,
+% and sets the value (or -1 on error) to \pxcz at cntr.
+\@onlypreamble\pxcz at insf@read at word
+\def\pxcz at insf@read at word#1{%
+  \pxcz at cntr=#1\relax
+  \edef\pxcz at tmpa{\pdffiledump offset\pxcz at cntr length1{\pxcz at insf@file}}%
+  \ifnum"0\pxcz at tmpa<"80
+    \advance\pxcz at cntr\@ne
+    \edef\pxcz at tmpb{\pdffiledump offset\pxcz at cntr length3{\pxcz at insf@file}}%
+    \ifnum"1\pxcz at tmpb<"1000000 \pxcz at cntr\m at ne % truncated
+    \else \pxcz at cntr"\pxcz at tmpa\pxcz at tmpb\relax % the value
+    \fi
+  \else \pxcz at cntr\m at ne % overflow
+  \fi}
+
+%% \pxcz at inspect@flavor{<path>}{<index>}
+% Sets the result to \pxcz at cntr.
+% 1=CFF, 0=TTF, <0 if error.
+\@onlypreamble\pxcz at inspect@flavor
+\def\pxcz at inspect@flavor#1#2{%
+  \edef\pxcz at insf@file{#1}%
+  \mathchardef\pxcz at insf@idx=#2\relax
+  \pxcz at insf@read at word{0}% outer tag
+  \ifnum\pxcz at cntr=\pxcz at insf@@ttcf % TTC/OTC
+    \pxcz at insf@read at word{8}% font count
+    \ifnum\pxcz at cntr>"7FFF \pxcz at cntr\m at ne \fi
+    \ifnum\pxcz at cntr>\m at ne
+      \mathchardef\pxcz at insf@nfont\pxcz at cntr
+      \@tempcnta\pxcz at insf@idx \multiply\@tempcnta4
+      \advance\@tempcnta12 \pxcz at insf@read at word{\@tempcnta}% inner tag
+      \@tempcnta\pxcz at cntr
+    \fi
+  \else % not collection
+    \@tempcnta=0 \chardef\pxcz at insf@nfont=1
+  \fi
+  \ifnum\pxcz at cntr>\m at ne % no format error so far
+    \ifnum\pxcz at insf@idx<\pxcz at insf@nfont
+      \pxcz at insf@read at word{\@tempcnta}%
+      \ifnum\pxcz at cntr=\m at ne % ERROR: bad format
+      \else\ifnum\pxcz at cntr=\pxcz at insf@@OTTO \pxcz at cntr\@ne % CFF-flavor
+      \else\ifnum\pxcz at cntr=\pxcz at insf@@IZ \pxcz at cntr\z@ % TTF-flavor
+      \else \pxcz at cntr-\thr@@ % ERROR: unknown tag
+      \fi\fi\fi
+    \else \pxcz at cntr-\tw@ % ERROR: bad index
+    \fi
+  %else ERROR: bad format
+  \fi}
+
+%% \pxcz at kpse@dir at cache
+% to spped up \pxcz at kpsewhich
+\@onlypreamble\pxcz at kpse@dir at cache
+\let\pxcz at kpse@dir at cache\@empty
+
+%% \pxcz at kpsewhich{<filename>}
+% Sets to \pxcz at kpse@dir the directory where the file is found
+% (or \relax if not found).
+\@onlypreamble\pxcz at kpsewhich
+\def\pxcz at kpsewhich#1{%
+  \edef\pxcz at tmpa{#1}\let\pxcz at kpse@dir\relax
+  \let\do\pxcz at kpsewhich@do \pxcz at kpse@dir at cache\relax
+  \ifx\pxcz at kpse@dir\relax
+    \chardef\pxcz at tmpz=\endlinechar \endlinechar\m at ne
+    \openin\@inputcheck="|kpsewhich \pxcz at tmpa"\relax
+    \unless\ifeof\@inputcheck
+      \readline\@inputcheck to\pxcz at tmpb
+      \unless\ifx\pxcz at tmpb\@empty
+        \let\pxcz at kpse@dir\@empty \let\do\relax
+        \expandafter\pxcz at kpsewhich@a\pxcz at tmpb/\pxcz at end
+        \edef\pxcz at kpse@dir at cache{%
+          \pxcz at kpse@dir at cache\do{\pxcz at kpse@dir}}%
+      \fi
+    \fi
+    \endlinechar\pxcz at tmpz
+  \fi}
+\@onlypreamble\pxcz at kpsewhich@a
+\def\pxcz at kpsewhich@a#1/#2\pxcz at end{%
+  \ifx\pxcz at end#2\pxcz at end \expandafter\@gobble
+  \else \expandafter\@firstofone
+  \fi{%
+    \edef\pxcz at kpse@dir{\pxcz at kpse@dir#1/}%
+    \pxcz at kpsewhich@a#2\pxcz at end}}
+\@onlypreamble\pxcz at kpsewhich@do
+\def\pxcz at kpsewhich@do#1{%
+  \ifnum0\pdffilesize{#1\pxcz at tmpa}>\z@
+    \def\pxcz at kpse@dir{#1}%
+    \expandafter\pxcz at kpsewhich@do at a
+  \fi}
+\def\pxcz at kpsewhich@do at a#1\relax{}
+
+%% \pxcz at inspect@flavor at all
+% Sets \[pxcz at OT/<sym>].
+\@onlypreamble\pxcz at inspect@flavor at all
+\def\pxcz at inspect@flavor at all{%
+  \@for\pxcz at tmpa:=\pxcz at sym@list\do{%
+    \edef\pxcz at tmpa{{\pxcz at tmpa}{\@nameuse{pxcz at FS/\pxcz at tmpa}}}%
+    \expandafter\pxcz at inspect@flavor at all@a\pxcz at tmpa}}
+\@onlypreamble\pxcz at inspect@flavor at all@a
+\def\pxcz at inspect@flavor at all@a#1#2{%
+  \def\pxcz at tmpa{#2}%
+  \ifx\pxcz at tmpa\@empty
+  \else\ifx\pxcz at tmpa\pxcz at noembed
+    \@namedef{pxcz at OT/#1}{t}%
+  \else \pxcz at inspect@flavor at all@b#2\pxcz at end{#1}%
+  \fi\fi}
+\@onlypreamble\pxcz at inspect@flavor at all@b
+\def\pxcz at inspect@flavor at all@b#1#2\pxcz at end{%
+  \edef\pxcz at tmpa{\ifx:#1\else:0:\fi#1#2}%
+  \expandafter\pxcz at inspect@flavor at all@c\pxcz at tmpa\pxcz at end}
+\@onlypreamble\pxcz at inspect@flavor at all@c
+\def\pxcz at inspect@flavor at all@c:#1:#2\pxcz at end#3{%
+  \pxcz at kpsewhich{#2}%
+  \unless\ifx\pxcz at kpse@dir\relax
+    \pxcz at inspect@flavor{\pxcz at kpse@dir#2}{#1}%
+%\typeout{#3)\pxcz at kpse@dir#2;#1==>\the\pxcz at cntr}%
+    \ifnum\pxcz at cntr>\z@
+      \@namedef{pxcz at OT/#3}{t}%
+    \fi
+  \fi}
+
+\fi
 %--------------------------------------- dump font map
 % if some dumpmap is enabled...
 \ifnum 0\ifpxcz at dumpmap 1\fi
@@ -1063,8 +1484,12 @@
 \def\pxcz at dump@special at a#1 #2\bxcz at end{%
   \@nameuse{pxcz at dump@special@#1}\@gobble{#2}}
 \@namedef{pxcz at dump@special at pdf:mapline}#1#2{%
-  \pxcz at add@to at dump@text{#2^^J}}
+  \pxcz at add@to at dump@text{\pxcz at rmin#2^^J}}
 
+%% \pxcz at rmin
+\def\pxcz at rmin#1{%
+  \ifx-#1\@percentchar\else#1\fi}
+
 %% \pxcz at dump@spec at to{<file-name>}
 \@onlypreamble\pxcz at dump@spec at to
 \def\pxcz at dump@spec at to#1{%
@@ -1106,8 +1531,7 @@
 %% \pxcz at declare@preset{<name>}{<text>}
 \@onlypreamble\pxcz at declare@preset
 \def\pxcz at declare@preset#1{%
-  \expandafter\pxcz at decl@preset at a\csname pxcz at the@preset@#1\endcsname}
-\def\pxcz at decl@preset at a#1{\@onlypreamble#1\def#1}
+  \pxcz at onlypreamble@csdef{pxcz at the@preset@#1}}
 
 %% \pxcz at declare@preset at alias{<name1>}{<name2>}
 \@onlypreamble\pxcz at declare@preset at alias
@@ -1174,20 +1598,14 @@
   \pxcz at multiweight{ipaexm.ttf}{ipaexm.ttf}{:0:hgrme.ttc}%
   {:0:hgrgm.ttc}{:0:hgrge.ttc}{:0:hgrsgu.ttc}{ipaexg.ttf}{hgrsmp.ttf}}
 \pxcz at declare@preset{moga-mobo}{%
-  \pxcz at enable@switch at realfont
-  \pxcz at multiweight{\pxcz at MI03:mogam.ttc}{\pxcz at MI03:mogam.ttc}%
-  {\pxcz at MI03:mogamb.ttc}{\pxcz at MI02:mogag.ttc}{\pxcz at MI02:mogagb.ttc}%
-  {\pxcz at MI02:mogagb.ttc}{\pxcz at MI02:mogag.ttc}{\pxcz at MI02:mobog.ttc}}
+  \pxcz at multiweight{:0:mogam.ttc}{:0:mogam.ttc}{:0:mogamb.ttc}%
+  {:0:mogag.ttc}{:0:mogagb.ttc}{:0:mogagb.ttc}{:0:mogag.ttc}{:0:mobog.ttc}}
 \pxcz at declare@preset{moga-mobo-ex}{%
-  \pxcz at enable@switch at realfont
-  \pxcz at multiweight{\pxcz at MI14:mogam.ttc}{\pxcz at MI14:mogam.ttc}%
-  {\pxcz at MI14:mogamb.ttc}{\pxcz at MI13:mogag.ttc}{\pxcz at MI13:mogagb.ttc}%
-  {\pxcz at MI13:mogagb.ttc}{\pxcz at MI13:mogag.ttc}{\pxcz at MI13:mobog.ttc}}
+  \pxcz at multiweight{:1:mogam.ttc}{:1:mogam.ttc}{:1:mogamb.ttc}%
+  {:1:mogag.ttc}{:1:mogagb.ttc}{:1:mogagb.ttc}{:1:mogag.ttc}{:1:mobog.ttc}}
 \pxcz at declare@preset{moga-maruberi}{%
-  \pxcz at enable@switch at realfont
-  \pxcz at multiweight{\pxcz at MI03:mogam.ttc}{\pxcz at MI03:mogam.ttc}%
-  {\pxcz at MI03:mogamb.ttc}{\pxcz at MI02:mogag.ttc}{\pxcz at MI02:mogagb.ttc}%
-  {\pxcz at MI02:mogagb.ttc}{\pxcz at MI02:mogag.ttc}{MTLmr3m.ttf}}
+  \pxcz at multiweight{:0:mogam.ttc}{:0:mogam.ttc}{:0:mogamb.ttc}%
+  {:0:mogag.ttc}{:0:mogagb.ttc}{:0:mogagb.ttc}{:0:mogag.ttc}{MTLmr3m.ttf}}
 \pxcz at declare@preset{kozuka-pro}{%
   \usecmapforalphabet
   \pxcz at multiweight{KozMinPro-Light.otf}{KozMinPro-Regular.otf}%
@@ -1243,10 +1661,6 @@
   \pxcz at multiweight{yuminl.ttf}{yumin.ttf}%
    {yumindb.ttf}{:0:YuGothR.ttc}{:0:YuGothB.ttc}%
    {:0:YuGothB.ttc}{:0:YuGothM.ttc}{:0:YuGothM.ttc}}
-\pxcz at declare@preset{yu-win10+}{%
-  \pxcz at multiweight{\pxcz at YW/yuminl.ttf}{\pxcz at YW/yumin.ttf}%
-   {\pxcz at YW/yumindb.ttf}{\pxcz at YW:0:YuGothR.ttc}{\pxcz at YW:0:YuGothB.ttc}%
-   {\pxcz at YW:0:YuGothB.ttc}{\pxcz at YW:0:YuGothM.ttc}{\pxcz at YW:0:YuGothM.ttc}}
 \pxcz at declare@preset{yu-osx}{%
   \usecmapforalphabet
   \pxcz at multiweight{YuMin-Medium.otf}{YuMin-Medium.otf}%
@@ -1254,44 +1668,32 @@
    {YuGo-Bold.otf}{YuGo-Medium.otf}{YuGo-Medium.otf}}
 % Source Han Sans/Serif, "OTC"
 \pxcz at declare@preset{sourcehan-otc}{%
-  \pxcz at multiweight{\pxcz at SH:0:SourceHanSerif-Light.ttc}%
-   {\pxcz at SH:0:SourceHanSerif-Regular.ttc}%
-   {\pxcz at SH:0:SourceHanSerif-Bold.ttc}%
-   {\pxcz at SH:0:SourceHanSans-Regular.ttc}%
-   {\pxcz at SH:0:SourceHanSans-Bold.ttc}%
-   {\pxcz at SH:0:SourceHanSans-Heavy.ttc}%
-   {\pxcz at SH:0:SourceHanSans-Medium.ttc}%
-   {\pxcz at SH:0:SourceHanSans-Medium.ttc}}
+  \pxcz at multiweight{:0:SourceHanSerif-Light.ttc}%
+   {:0:SourceHanSerif-Regular.ttc}{:0:SourceHanSerif-Bold.ttc}%
+   {:0:SourceHanSans-Regular.ttc}{:0:SourceHanSans-Bold.ttc}%
+   {:0:SourceHanSans-Heavy.ttc}{:0:SourceHanSans-Medium.ttc}%
+   {:0:SourceHanSans-Medium.ttc}}
 % Source Han Sans/Serif, "Language-specific OTF"
 \pxcz at declare@preset{sourcehan}{%
-  \pxcz at multiweight{\pxcz at SH/SourceHanSerif-Light.otf}%
-  {\pxcz at SH/SourceHanSerif-Regular.otf}%
-   {\pxcz at SH/SourceHanSerif-Bold.otf}%
-   {\pxcz at SH/SourceHanSans-Regular.otf}%
-   {\pxcz at SH/SourceHanSans-Bold.otf}%
-   {\pxcz at SH/SourceHanSans-Heavy.otf}%
-   {\pxcz at SH/SourceHanSans-Medium.otf}%
-   {\pxcz at SH/SourceHanSans-Medium.otf}}
+  \pxcz at multiweight{SourceHanSerif-Light.otf}%
+   {SourceHanSerif-Regular.otf}{SourceHanSerif-Bold.otf}%
+   {SourceHanSans-Regular.otf}{SourceHanSans-Bold.otf}%
+   {SourceHanSans-Heavy.otf}{SourceHanSans-Medium.otf}%
+   {SourceHanSans-Medium.otf}}
 % Noto Sans/Serif CJK, "OpenType/CFF Collection (OTC)"
 \pxcz at declare@preset{noto-otc}{%
-  \pxcz at multiweight{\pxcz at NC:0:NotoSerifCJK-Light.ttc}%
-   {\pxcz at NC:0:NotoSerifCJK-Regular.ttc}%
-   {\pxcz at NC:0:NotoSerifCJK-Bold.ttc}%
-   {\pxcz at NC:0:NotoSansCJK-Regular.ttc}%
-   {\pxcz at NC:0:NotoSansCJK-Bold.ttc}%
-   {\pxcz at NC:0:NotoSansCJK-Black.ttc}%
-   {\pxcz at NC:0:NotoSansCJK-Medium.ttc}%
-   {\pxcz at NC:0:NotoSansCJK-Medium.ttc}}
+  \pxcz at multiweight{:0:NotoSerifCJK-Light.ttc}%
+   {:0:NotoSerifCJK-Regular.ttc}{:0:NotoSerifCJK-Bold.ttc}%
+   {:0:NotoSansCJK-Regular.ttc}{:0:NotoSansCJK-Bold.ttc}%
+   {:0:NotoSansCJK-Black.ttc}{:0:NotoSansCJK-Medium.ttc}%
+   {:0:NotoSansCJK-Medium.ttc}}
 % Noto Sans/Serif CJK, "Language-specific OpenType/CFF (OTF)"
 \pxcz at declare@preset{noto}{%
-  \pxcz at multiweight{\pxcz at NC/NotoSerifCJKjp-Light.otf}%
-   {\pxcz at NC/NotoSerifCJKjp-Regular.otf}%
-   {\pxcz at NC/NotoSerifCJKjp-Bold.otf}%
-   {\pxcz at NC/NotoSansCJKjp-Regular.otf}%
-   {\pxcz at NC/NotoSansCJKjp-Bold.otf}%
-   {\pxcz at NC/NotoSansCJKjp-Black.otf}%
-   {\pxcz at NC/NotoSansCJKjp-Medium.otf}%
-   {\pxcz at NC/NotoSansCJKjp-Medium.otf}}
+  \pxcz at multiweight{NotoSerifCJKjp-Light.otf}%
+   {NotoSerifCJKjp-Regular.otf}{NotoSerifCJKjp-Bold.otf}%
+   {NotoSansCJKjp-Regular.otf}{NotoSansCJKjp-Bold.otf}%
+   {NotoSansCJKjp-Black.otf}{NotoSansCJKjp-Medium.otf}%
+   {NotoSansCJKjp-Medium.otf}}
 %(obsolete)
 \pxcz at declare@depre at preset{ipa-otf}{%
   \pxcz at uniweight{ipam.otf}{ipag.otf}}
@@ -1322,6 +1724,12 @@
 \pxcz at declare@preset at alias{kozuka}{kozuka-pro}
 \pxcz at declare@preset at alias{hiragino-elcapitan}{hiragino-elcapitan-pro}
 \pxcz at declare@preset at alias{morisawa}{morisawa-pro}
+%(plus-variants)
+\pxcz at declare@preset at alias{sourcehan+}{sourcehan}
+\pxcz at declare@preset at alias{sourcehan-otc+}{sourcehan-otc}
+\pxcz at declare@preset at alias{noto+}{noto}
+\pxcz at declare@preset at alias{noto-otc+}{noto-otc}
+\pxcz at declare@preset at alias{yu-win10+}{yu-win10}
 
 %% ... and invokes the specified one!
 \if\pxcz at main@preset\relax\else
@@ -1328,6 +1736,11 @@
 \pxcz at use@preset{\pxcz at main@preset}
 \fi
 
+%% load pxufont
+\ifnum\pxcz at legacycode=\pxcz at legacycode@replace
+  \RequirePackage{pxufont}[]
+\fi
+
 %--------------------------------------- all done
 \endinput
 %% EOF

Modified: trunk/Master/texmf-dist/tex/platex/pxchfon/pxjafont.sty
===================================================================
--- trunk/Master/texmf-dist/tex/platex/pxchfon/pxjafont.sty	2017-09-09 22:34:23 UTC (rev 45252)
+++ trunk/Master/texmf-dist/tex/platex/pxchfon/pxjafont.sty	2017-09-09 22:34:38 UTC (rev 45253)
@@ -1,6 +1,6 @@
 %%
 %% This is file 'pxjafont.sty'.
-%% 
+%%
 %% Copyright (c) 2017 Takayuki YATO (aka. "ZR")
 %%   GitHub:   https://github.com/zr-tex8r
 %%   Twitter:  @zr_tex8r
@@ -10,14 +10,15 @@
 
 %% package declaration
 \NeedsTeXFormat{pLaTeX2e}
-\ProvidesPackage{pxjafont}[2017/06/29 v1.0b]
+\ProvidesPackage{pxjafont}[2017/09/09 v1.1a]
 %% show warning
 \PackageWarning{pxchfon}
- {The package 'pxjafont' is obsolete and its use is\MessageBreak
+ {!!!!!!!!!!!! IMPORTANT WARNING !!!!!!!!!!!!\MessageBreak
+  The package 'pxjafont' is obsolete and its use is\MessageBreak
   deprecated. please refer to the manual of pxchfon.\MessageBreak
   The warning is issued}
 %% delegate
 \let\pxAliasedPxjafont=t
-\RequirePackageWithOptions{pxchfon}[2017/05/31]
+\RequirePackageWithOptions{pxchfon}[2017/09/09]
 \endinput
 %% EOF



More information about the tex-live-commits mailing list