summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-09-09 22:34:38 +0000
committerKarl Berry <karl@freefriends.org>2017-09-09 22:34:38 +0000
commitb2e300e48927b11a837f7f49663f5da307bdaac3 (patch)
treebd5ca18c116fd8caa87ce969bfae0554e85c29df /Master
parent75c347aa5d28ca016031edd7a09f4979f99dc5fc (diff)
pxchfon (9sep17)
git-svn-id: svn://tug.org/texlive/trunk@45253 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/platex/pxchfon/README-ja.md15
-rw-r--r--Master/texmf-dist/doc/platex/pxchfon/README.md15
-rw-r--r--Master/texmf-dist/doc/platex/pxchfon/pxchfon.pdfbin259409 -> 283660 bytes
-rw-r--r--Master/texmf-dist/doc/platex/pxchfon/pxchfon.tex394
-rw-r--r--Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty1245
-rw-r--r--Master/texmf-dist/tex/platex/pxchfon/pxjafont.sty9
6 files changed, 1139 insertions, 539 deletions
diff --git a/Master/texmf-dist/doc/platex/pxchfon/README-ja.md b/Master/texmf-dist/doc/platex/pxchfon/README-ja.md
index 780b2c18600..704193c9687 100644
--- a/Master/texmf-dist/doc/platex/pxchfon/README-ja.md
+++ b/Master/texmf-dist/doc/platex/pxchfon/README-ja.md
@@ -62,21 +62,30 @@ MITライセンスの下で配布される。
更新履歴
--------
+ * Version 1.1a ‹2017/09/09›
+ - オプション `unicode(*)-fwid` を追加。
+ - (試験的)“legacycode”関連オプションを追加。
+ * Version 1.1 ‹2017/07/05›
+ - マップ行生成のロジックを大幅に改修した。
+ - オプション `(no)strictcsi` を追加。
+ - (暫定的) プリセット `sourcehan(-otc)+`、`noto(-otc)+` を追加。
+ * Version 1.0c ‹2017/07/04›
+ - バグ修正。
* Version 1.0b ‹2017/06/29›
- バグ修正。
* Version 1.0a ‹2017/06/19›
- ドライバオプションを新設した。
- '(no)dumpmap'、'(no)dumpmaptl' オプションを新設した。
- オプション 'prefer2004jis' の別名として 'jis2004' を追加した。
- - (試験的) プリセット `yu-win10+` を追加。
+ - (暫定的) プリセット `yu-win10+` を追加。
- バグ修正。
* Version 1.0 ‹2017/05/31›
- 非推奨のプリセットに対してエラーを出す。
- pxjafont パッケージを非推奨とする。
- `directunicode*` については OTF パッケージの読込を不要とした。
- - (試験的) オプション `unicode*` を追加。
+ - オプション `unicode(*)` を追加。
※新しい dvipdfmx の「OpenType 属性指定」機能を利用したもの。
- - (試験的) プリセット `sourcehan(-otc)`、`noto(-otc)` を追加。
+ - プリセット `sourcehan(-otc)`、`noto(-otc)` を追加。
* Version 0.9 ‹2017/04/08›
- オプション `directunicode*` を追加。
- 非推奨のプリセットに対して警告を出す。
diff --git a/Master/texmf-dist/doc/platex/pxchfon/README.md b/Master/texmf-dist/doc/platex/pxchfon/README.md
index 37b43a21472..ea3fc150565 100644
--- a/Master/texmf-dist/doc/platex/pxchfon/README.md
+++ b/Master/texmf-dist/doc/platex/pxchfon/README.md
@@ -38,19 +38,28 @@ This package is distributed under the MIT License.
Revision History
----------------
+ * Version 1.1a ‹2017/09/09›
+ - Options `unicode(*)-fwid`.
+ - (experimental) Some“legacycode”-related options.
+ * Version 1.1 ‹2017/07/05›
+ - Revise the logic of generating map lines.
+ - Option `(no)strictcsi`.
+ - (transitional) Presets `sourcehan(-otc)+` and `noto(-otc)+`.
+ * Version 1.0c ‹2017/07/04›
+ - Bug fix.
* Version 1.0b ‹2017/06/29›
- Bug fix.
* Version 1.0a ‹2017/06/19›
- Driver options.
- Options `dumpmap` and `dumpmaptl`.
- Alias `jis2004` for the option `prefer2004jis`.
- - (experimental) Preset `yu-win10+`.
+ - (transitional) Preset `yu-win10+`.
* Version 1.0 ‹2017/05/31›
- The long-deprecated presets are now abolished.
- The package pxjafont is deprecated.
- Now `directunicode*` does not need japanese-otf.
- - (experimental) Option `unicode*`.
- - (experimental) Presets `sourcehan(-otc)` and `noto(-otc)`.
+ - Option `unicode*`.
+ - Presets `sourcehan(-otc)` and `noto(-otc)`.
* Version 0.9 ‹2017/04/08›
- Option `directunicode*`.
* Version 0.8 ‹2017/01/13›
diff --git a/Master/texmf-dist/doc/platex/pxchfon/pxchfon.pdf b/Master/texmf-dist/doc/platex/pxchfon/pxchfon.pdf
index c358a7b7f75..cc0e51fd4bf 100644
--- a/Master/texmf-dist/doc/platex/pxchfon/pxchfon.pdf
+++ b/Master/texmf-dist/doc/platex/pxchfon/pxchfon.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/platex/pxchfon/pxchfon.tex b/Master/texmf-dist/doc/platex/pxchfon/pxchfon.tex
index 8a0bad4ca41..0daf5979717 100644
--- a/Master/texmf-dist/doc/platex/pxchfon/pxchfon.tex
+++ b/Master/texmf-dist/doc/platex/pxchfon/pxchfon.tex
@@ -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,27 +33,28 @@
{\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フォントの使用等)をパッケージオプション一つで
行う機能を追加した。
%===========================================================
\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 @@ dvipdfmx 専用である。
オプションは次のものが用意されている。
\begin{itemize}
-\item ドライバオプション\Means
+\item \textbf{ドライバオプション}\Means
|dvipdfmx|、|dvips|、|dviout|、|xdvi| および |nodvidriver|%
\footnote{ドライバ依存動作を明示的に無効化するための指定。}
が指定できる。
@@ -81,11 +82,11 @@ dvipdfmx 専用である。
ドライバオプションの既定値は |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,44 +96,42 @@ dvipdfmx 専用である。
欧文フォントは変更しない。
インストール時に欧文用の設定をしていない場合は必ずこれを
指定する必要がある。
- プリセット指定オプション使用の場合はこちらが既定で有効になる。
+ \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
|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 @@ dvipdfmx 専用である。
排他である。
\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 @@ dvipdfmx 専用である。
(|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 @@ dvipdfmx 専用である。
\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 @@ dvipdfmx 専用である。
欧文フォントについては実現方法が少し異なる
(\ref{sec:Mechanism-Alph}節を参照)。
-\Pkg{OTF}パッケージを |deluxe| オプション付きで用いている
+\Pkg{japanese-otf}パッケージを |deluxe| オプション付きで用いている
場合\textgt{以外}、すなわち明朝・ゴシックとも単ウェイトの場合、
以下の命令を用いる。
@@ -272,7 +300,7 @@ dvipdfmx 専用である。
\end{verbatim}
\end{quote}
-\Pkg{OTF}パッケージを |deluxe| 付きで用いている場合は、
+\Pkg{japanese-otf}パッケージを |deluxe| 付きで用いている場合は、
明朝・ゴシックともに3ウェイトを使う。
この時は、各ウェイト毎にフォント指定ができる。
またこの場合、丸ゴシック(|\mgfamily|)が使用可能になるが、
@@ -428,13 +456,18 @@ dvipdfmx 専用である。
%-------------------
\subsection{多ウェイト用の設定}
-\Pkg{OTF}パッケージの |deluxe| オプション使用時に有効になる。
+\Pkg{japanese-otf}パッケージの |deluxe| オプション使用時に有効になる。
明朝3ウェイト、ゴシック3ウェイト、丸ゴシック1ウェイトを設定する。
\begin{itemize}
\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 @@ dvipdfmx 専用である。
\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 @@ dvipdfmx 専用である。
\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}
-\Note 種々の事情のため、上記の4つの“Source Han系”のプリセットでは
-現状の実装では日本語用の設定のために
-繁体中国語等の日本語以外のフォントも利用している。
-従って、言語別OTF版のフォントファイルを利用する場合は、
-原則的に全てのCJK言語の版を用意する必要がある。
+\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}
-\begin{itemize}
-\item |yu-win10+|\Means
- |yu-win10| で引用符“\,”‘\,’の出力が不正になることに
- 対処したもの。
\end{itemize}
%-------------------
@@ -764,7 +818,7 @@ dvipdfmx 専用である。
\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 @@ kanji-config-updmap用のマップファイルの読込が指示される。
%===========================================================
+\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 @@ OT1 として扱われるが、実際には OT1 の一部のグリフしか持
({\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 @@ r-cfjas-x-@PXcjk0@ msgothic.ttc FontIndex=0
\section{中国語・韓国語フォントへの対応}
\label{sec:Non-Japanese}
-0.7c版で\Pkg{OTF}パッケージ(|multi| オプション指定)および
+0.7c版で\Pkg{japanese-otf}パッケージ(|multi| オプション指定)および
{\upTeX}標準の中国語・韓国語フォントについてのサポートを始めた。
以下の命令で、実フォントの置換指定ができる。
@@ -1009,7 +1177,7 @@ r-cfjas-x-@PXcjk0@ msgothic.ttc FontIndex=0
\item |directunicode(*)| 指定は中国語・韓国語のフォントに対しても
有効である。
効果の範囲は日本語の場合と同様で、
-|directunicode| では「\Pkg{OTF}パッケージのUnicode入力命令」
+|directunicode| では「\Pkg{japanese-otf}パッケージのUnicode入力命令」
(|\UTFK|、|\UTFM|、等)が対象となり、
|directunicode*| ではこれに加えて{\upTeX}標準のフォントも
対象になる。
diff --git a/Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty b/Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty
index 824b7a6b649..d9c84cc6704 100644
--- a/Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty
+++ b/Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty
@@ -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@pkgname{pxchfon}
%% preparations
@@ -23,20 +23,65 @@
%% variables
\newif\ifpxcz@ok
\newif\ifpxcz@utf
+\let\pxcz@pre\relax
+\let\pxcz@post\relax
+
+%% unique tokens
+\def\pxcz@end{\pxcz@end@}
+\def\pxcz@mt{\pxcz@mt@}
+
+%% \pxcz@csletcs{<cs1>}{<cs2>}
+\def\pxcz@csletcs#1#2{%
+ \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname}
+
+%% \pxcz@cond\ifXXX...\fi{<true>}{<false>}
+\@gobbletwo\if\if \def\pxcz@cond#1\fi{%
+ #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
+
+%% \pxcz@onlypreamble@csdef{<csname>}
+\def\pxcz@onlypreamble@csdef#1{%
+ \expandafter\pxcz@onlypreamble@def\csname#1\endcsname}
+%% \pxcz@onlypreamble@def\CS
+\def\pxcz@onlypreamble@def#1{%
+ \@onlypreamble#1\def#1}
+
+%% \pxcz@csuse@or{<csname>}{<default>}
+\def\pxcz@csuse@or#1#2{%
+ \expandafter\ifx\csname#1\endcsname\relax \expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo
+ \fi{#2}{\csname#1\endcsname}}
+
+%% \pxcz@lower\CS
+\def\pxcz@lower#1{%
+ \expandafter\pxcz@lower@a#1\pxcz@end#1}
+\def\pxcz@lower@a#1\pxcz@end#2{%
+ \lowercase{\def#2{#1}}}
+
+%% \pxcz@split{<at>}{<target>}
+\def\pxcz@split#1#2{%
+ \edef\pxcz@tmpx{{#1}{#2}}%
+ \expandafter\pxcz@split@a\pxcz@tmpx}
+\def\pxcz@split@a#1#2{%
+ \def\pxcz@tmpx##1#1##2\pxcz@end{\pxcz@split@b{##1}{##2}}%
+ \pxcz@tmpx#2\pxcz@mt#1\pxcz@end}
+\def\pxcz@split@b#1#2{%
+ \let\pxcz@pre\relax \let\pxcz@post\relax
+ \ifx\pxcz@end#2\pxcz@end\else
+ \pxcz@split@c#2\pxcz@end{#1}%
+ \fi}
+\def\pxcz@split@c#1\pxcz@mt#2\pxcz@end#3{%
+ \def\pxcz@pre{#3}\def\pxcz@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@error{Package 'pxjafont' is of incompatible version}%
- {You must use version 0.5 of pxjafont.}%
- \DeclareOption{noalphabet}{}\ProcessOptions
- \let\pxjf@main@preset\relax % make pxjafont bombout
- \endinput\fi}{}
+ \PackageError\pxcz@pkgname
+ {FATAL: Old 'pxjafont' is loaded}{\@ehc}
+ \expandafter\@@end\fi}{}
%% \ifpxcz@uptex
\newif\ifpxcz@uptex \pxcz@uptexfalse
@@ -63,6 +108,7 @@
\newif\ifpxcz@everypage
\newif\ifpxcz@oneweight
\newif\ifpxcz@uniquify
+\newif\ifpxcz@fullwidth
\let\pxcz@directunicode\relax
\let\pxcz@main@preset\relax
\let\pxcz@file@preset\relax
@@ -71,6 +117,12 @@
\newif\ifpxcz@rel
\newif\ifpxcz@dumpmap
\newif\ifpxcz@dumpmap@tl
+\newif\ifpxcz@switch@font \pxcz@switch@fonttrue
+\newif\ifpxcz@switch@font@xwid
+\newif\ifpxcz@switch@font@xjis
+\let\pxcz@strict@csi\relax
+\newif\ifpxcz@directunicode@default
+\let\pxcz@legacycode\relax
%% process options
% drivers
@@ -107,7 +159,6 @@
\chardef\pxcz@directunicode@otf=1
\chardef\pxcz@directunicode@all=2
\chardef\pxcz@directunicode@full=3
-\let\pxcz@directunicode\pxcz@directunicode@none
\DeclareOption{directunicode*}{\let\pxcz@directunicode\pxcz@directunicode@all}
\DeclareOption{directunicode}{\let\pxcz@directunicode\pxcz@directunicode@otf}
\DeclareOption{nodirectunicode}{\let\pxcz@directunicode\pxcz@directunicode@none}
@@ -117,6 +168,21 @@
% (no)dumpmaptl
\DeclareOption{dumpmaptl}{\pxcz@dumpmap@tltrue}
\DeclareOption{nodumpmaptl}{\pxcz@dumpmap@tlfalse}
+% (no)switchfont
+\DeclareOption{switchfont}{\pxcz@switch@fonttrue}
+\DeclareOption{noswitchfont}{\pxcz@switch@fontfalse}
+% (no)strictcsi
+\DeclareOption{strictcsi}{\let\pxcz@strict@csi=t}
+\DeclareOption{nostrictcsi}{\let\pxcz@strict@csi=f}
+% XXXXX-legacycode
+\chardef\pxcz@legacycode@apply=0
+\chardef\pxcz@legacycode@ignore=1
+\chardef\pxcz@legacycode@suppress=2
+\chardef\pxcz@legacycode@replace=3
+\DeclareOption{apply-legacycode}{\let\pxcz@legacycode\pxcz@legacycode@apply}
+\DeclareOption{ignore-legacycode}{\let\pxcz@legacycode\pxcz@legacycode@ignore}
+\DeclareOption{suppress-legacycode}{\let\pxcz@legacycode\pxcz@legacycode@suppress}
+\DeclareOption{replace-legacycode}{\let\pxcz@legacycode\pxcz@legacycode@replace}
% preset spec options
\def\pxcz@all@main@preset{%
noembed,%
@@ -138,18 +204,25 @@
\@for\pxcz@x:=\pxcz@all@main@preset\do{%
\expandafter\pxcz@do\expandafter{\pxcz@x}}
% others
-\def\pxcz@opt@@unicode{unicode}
-\def\pxcz@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@POPT/unicode}{%
+ \let\pxcz@directunicode\pxcz@directunicode@full}
+\@namedef{pxcz@POPT/unicode*}{%
+ \pxcz@uniquifytrue
+ \let\pxcz@directunicode\pxcz@directunicode@full}
+\@namedef{pxcz@POPT/unicode-fwid}{%
+ \pxcz@fullwidthtrue
+ \let\pxcz@directunicode\pxcz@directunicode@full}
+\@namedef{pxcz@POPT/unicode*-fwid}{%
+ \pxcz@fullwidthtrue \pxcz@uniquifytrue
+ \let\pxcz@directunicode\pxcz@directunicode@full}
\DeclareOption*{%
- \ifx\CurrentOption\pxcz@opt@@unicode
- \let\pxcz@directunicode\pxcz@directunicode@full
- \else\ifx\CurrentOption\pxcz@opt@@unicodeS
- \pxcz@uniquifytrue
- \let\pxcz@directunicode\pxcz@directunicode@full
- \else
+ \pxcz@csuse@or{pxcz@POPT/\CurrentOption}{%
\pxcz@parse@opt\CurrentOption
- \ifpxcz@ok\else \@unknownoptionerror \fi
- \fi\fi}
+ \ifpxcz@ok\else \@unknownoptionerror \fi}}
\@onlypreamble\pxcz@parse@opt
\def\pxcz@parse@opt#1{%
\expandafter\pxcz@parse@opt@a#1\@nnil}
@@ -167,14 +240,22 @@
\fi\fi \pxcz@tmpa}
\@onlypreamble\pxcz@parse@opt@c
\def\pxcz@parse@opt@c#1#2\@nnil{%
+ \pxcz@oktrue
\edef\pxcz@file@preset{#2}}
% dispatch
\ProcessOptions*
+
%% 'everypage' needs 'atbegshi' package
\ifpxcz@everypage
\RequirePackage{atbegshi}
\fi
+%% apply default value for \pxcz@directunicode
+\ifx\pxcz@directunicode\relax
+ \let\pxcz@directunicode\pxcz@directunicode@none
+ \pxcz@directunicode@defaulttrue
+\fi
+
%% set 'pxcz@alpha'
\@tempswafalse
\if\pxcz@main@preset\relax
@@ -213,35 +294,108 @@
\else \pxcz@alphafontfalse
\fi\fi
+%% apply default for \pxcz@strict@csi
+\ifx\pxcz@strict@csi\relax
+ % 'dumpmap(tl)' changes the 'strictcsi' default to true.
+ \let\pxcz@strict@csi=f
+ \ifpxcz@dumpmap \let\pxcz@strict@csi=t \fi
+ \ifpxcz@dumpmap@tl \let\pxcz@strict@csi=t \fi
+\fi
+\if t\pxcz@strict@csi
+ % 'strictcsi' requires some pdfTeX feature.
+ \ifx\pdffiledump\@undefined
+ \PackageWarning\pxcz@pkgname
+ {The option 'strictcsi' cannot be used, because\MessageBreak
+ the engine does not support '\string\pdffiledump'}
+ \let\pxcz@strict@csi=f
+ \fi
+\fi
+
+%% apply 'switch@font'
+\ifpxcz@switch@font
+ \pxcz@switch@font@xjistrue
+\else
+ \let\pxcz@switch@font@xwidtrue\pxcz@switch@font@xwidfalse
+ \let\pxcz@switch@font@xjistrue\pxcz@switch@font@xjisfalse
+\fi
+
%--------------------------------------- preset-triggered setup
-%% \pxcz@if@main@preset{<name>}{<code>}
-\@onlypreamble\pxcz@if@main@preset
-\def\pxcz@if@main@preset#1{%
- \edef\pxcz@tmpa{#1}%
- \ifx\pxcz@main@preset\pxcz@tmpa \expandafter\@firstofone
- \else \expandafter\@gobble
- \fi}
-%% setup
-\def\pxcz@preset@setup@sourcehan{%
- \ifnum\pxcz@directunicode=\pxcz@directunicode@all \else
+%% \pxcz@apply@opt@unicode
+% Forces the 'unicode' setup (unless a directunicode option was given).
+\@onlypreamble\pxcz@apply@opt@unicode
+\def\pxcz@apply@opt@unicode{%
+ \ifpxcz@directunicode@default % default -> unicode+
+ \pxcz@warn@unicode % NOTE: will change to unicode in future
+ \let\pxcz@directunicode\pxcz@directunicode@full
+ \pxcz@switch@font@xwidtrue \pxcz@uniquifyfalse
+ \else\ifnum\pxcz@directunicode=\pxcz@directunicode@full
+ \ifpxcz@uniquify % unicode* -> unicode+
+ \pxcz@switch@font@xwidtrue \pxcz@uniquifyfalse
+ \fi % unicode -> (unchanged)
+ \else \pxcz@uniquifyfalse % otherwise, enable switch-font
+ \fi\fi}
+%% \pxcz@apply@opt@unicodeP
+% Forces the 'unicode+' setup, which is a 'unicode' with switch-font
+% enabled on the width features.
+\@onlypreamble\pxcz@apply@opt@unicodeP
+\def\pxcz@apply@opt@unicodeP{%
+ \pxcz@uniquifyfalse
+ \pxcz@switch@font@xwidtrue % 'unicode+'
+ \ifnum\pxcz@directunicode=\pxcz@directunicode@full\else
+ \pxcz@warn@unicode
\let\pxcz@directunicode\pxcz@directunicode@full
- \pxcz@uniquifyfalse
\fi}
-\pxcz@if@main@preset{sourcehan}{%
- \pxcz@preset@setup@sourcehan}
-\pxcz@if@main@preset{sourcehan-otc}{%
- \pxcz@preset@setup@sourcehan}
-\pxcz@if@main@preset{noto}{%
- \pxcz@preset@setup@sourcehan}
-\pxcz@if@main@preset{noto-otc}{%
- \pxcz@preset@setup@sourcehan}
-\pxcz@if@main@preset{yu-win10+}{%
- \let\pxcz@directunicode\pxcz@directunicode@full
- \pxcz@uniquifyfalse}
+%% \pxcz@warn@unicode
+\@onlypreamble\pxcz@warn@unicode
+\def\pxcz@warn@unicode{%
+ \PackageWarningNoLine\pxcz@pkgname
+ {The option 'unicode(*)' is enforced, because the\MessageBreak
+ preset '\pxcz@main@preset' is selected.}}
+
+%% the setup
+\def\pxcz@do#1{%
+ \edef\pxcz@tmpa{#1}%
+ \pxcz@cond\ifx\pxcz@main@preset\pxcz@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@do{sourcehan}{\pxcz@apply@opt@unicode}
+\pxcz@do{sourcehan-otc}{\pxcz@apply@opt@unicode}
+\pxcz@do{noto}{\pxcz@apply@opt@unicode}
+\pxcz@do{noto-otc}{\pxcz@apply@opt@unicode}
+\pxcz@do{sourcehan+}{\pxcz@apply@opt@unicodeP}
+\pxcz@do{sourcehan-otc+}{\pxcz@apply@opt@unicodeP}
+\pxcz@do{noto+}{\pxcz@apply@opt@unicodeP}
+\pxcz@do{noto-otc+}{\pxcz@apply@opt@unicodeP}
+\pxcz@do{yu-win10+}{\pxcz@apply@opt@unicodeP}
+
+%% apply default for \pxcz@legacycode
+\ifx\pxcz@legacycode\relax
+ \ifnum\pxcz@directunicode=\pxcz@directunicode@full
+ \let\pxcz@legacycode\pxcz@legacycode@replace
+ \else \let\pxcz@legacycode\pxcz@legacycode@apply
+ \fi
+\fi
+
+%% 'replace-lecacycode' requires the 'pxufont' package
+\ifnum\pxcz@legacycode=\pxcz@legacycode@replace
+ \IfFileExists{pxufont.sty}{}{%else
+ \PackageError\pxcz@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@legacycode\pxcz@legacycode@suppress}%
+\fi
%--------------------------------------- user interface
+%% \pxcz@sym@list
+\def\pxcz@sym@list{%
+ mnl,mnr,mnb,gtr,gtb,gtx,gtu,mgr,kom,kog,scm,scg,tcm,tcg}
+
%%<*> \setminchofont/\setgothicfont/etc.
\newcommand*\setminchofont{\pxcz@setfont{mnl,mnr,mnb}}
\newcommand*\setgothicfont{\pxcz@setfont{gtr,gtb,gtx,gtu}}
@@ -261,16 +415,24 @@
\newcommand*\settchinesegothicfont{\pxcz@setfont{tcg}}
\@onlypreamble\pxcz@setfont
\def\pxcz@setfont#1{\@ifnextchar[%]
- {\pxcz@setfont@a{#1}}{\pxcz@setfont@a{#1}[]}}
+ {\pxcz@setfont@a{#1}}{\pxcz@setfont@a{#1}[0]}}
\@onlypreamble\pxcz@setfont@a
\def\pxcz@setfont@a#1[#2]#3{%
- \@for\pxcz@x:={#1}\do{%
- \ifx @#2@\@namedef{pxcz@FS/\pxcz@x}{#3}%
- \else\@namedef{pxcz@FS/\pxcz@x}{:#2:#3}\fi}}
-\@for\pxcz@x:={%
- mnl,mnr,mnb,gtr,gtb,gtx,gtu,mgr,%
- kom,kog,scm,scg,tcm,tcg%
-}\do{\@namedef{pxcz@FS/\pxcz@x}{}}
+ \edef\pxcz@tmpa{#3}\pxcz@lower\pxcz@tmpa
+ \pxcz@split{?:}{?\pxcz@tmpa}%
+ \ifx\pxcz@pre\relax
+ \pxcz@split{tc?}{\pxcz@tmpa?}%
+ \ifx\pxcz@pre\relax \pxcz@setfont@b{#1}{#3}%
+ \else \pxcz@setfont@b{#1}{:#2:#3}%
+ \fi
+ \else \pxcz@setfont@b{#1}{#3}%
+ \fi}
+\@onlypreamble\pxcz@setfont@b
+\def\pxcz@setfont@b#1#2{%
+ \@for\pxcz@tmpx:=#1\do{%
+ \@namedef{pxcz@FS/\pxcz@tmpx}{#2}}}
+\@for\pxcz@x:=\pxcz@sym@list\do{%
+ \@namedef{pxcz@FS/\pxcz@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@noembed{*}
+%% \pxcz@kill@mapping
+\def\pxcz@kill@mapping{!}
+
%% \pxcz@cmap@directuni
% CMap symbol for "direct unicode".
\def\pxcz@cmap@directuni{unicode}
@@ -306,9 +471,9 @@
\def\pxcz@cmap@hwuni{UniJIS-UCS2-HW-H}
%%<*> \usecmapforalphabet/\nousecmapforalphabet
-\def\usecmapforalphabet{%
+\newcommand*\usecmapforalphabet{%
\global\let\pxcz@cmap@uni\pxcz@cmap@hwuni}
-\def\nousecmapforalphabet{%
+\newcommand*\nousecmapforalphabet{%
\global\let\pxcz@cmap@uni\pxcz@cmap@directuni}
\ifpxcz@cmap@alpha \usecmapforalphabet
\else \nousecmapforalphabet \fi
@@ -318,8 +483,7 @@
\def\pxcz@tmpb{#2}%
\@for\pxcz@tmpa:=#1\do{%
\expandafter\let\csname pxcz@NEF/\pxcz@tmpa\endcsname\pxcz@tmpb
- }%
-}
+ }}
\pxcz@do{mnl,mnr,mnb}{Ryumin-Light}
\pxcz@do{gtr,gtb,gtx,gtu,mgr}{GothicBBB-Medium}
\pxcz@do{kom}{HYSMyeongJo-Medium}
@@ -366,155 +530,280 @@
\@ifstar{\pxcz@set@pfx@jis\pxcz@pfx@jis@star}%
{\pxcz@set@pfx@jis}}
\def\pxcz@set@pfx@jis#1{%
- \edef\pxcz@pfx@jis{\ifpxcz@mmivjis#1\fi}}
+ \edef\pxcz@pfx@jis{#1}}
\setnewglyphcmapprefix{\pxcz@pfx@jis@dflt}
-%% \pxcz@pfx@unijis
-\edef\pxcz@pfx@unijis{UniJIS\ifpxcz@mmivjis 2004\fi}
+%% variables
+\let\pxcz@sym\relax
+\let\pxcz@cmap\relax
+\let\pxcz@font\relax
+\let\pxcz@csi\relax
+\newif\ifpxcz@ext
+\let\pxcz@lopts\relax
+\let\pxcz@mopts\relax
+\let\pxcz@font@tribe\relax
+
+%% \pxcz@@jpXX
+\edef\pxcz@@jpXX{%
+ \ifpxcz@mmivjis jp04\else jp90\fi}
+%% \pxcz@add@lopt
+\@onlypreamble\pxcz@add@lopt
+\def\pxcz@add@lopt#1{%
+ \edef\pxcz@lopts{%
+ \ifx\pxcz@lopts\@empty\else \pxcz@lopts:\fi#1}}
+%% \pxcz@uniquify@lopts
+\@onlypreamble\pxcz@uniquify@lopts
+\def\pxcz@uniquify@lopts#1#2{%
+ \pxcz@oktrue
+ \def\pxcz@tmpb{jp90}\ifx\pxcz@tmpb\pxcz@lopts\pxcz@okfalse\fi
+ \def\pxcz@tmpb{jp04}\ifx\pxcz@tmpb\pxcz@lopts\pxcz@okfalse\fi
+ \ifx\@empty\pxcz@lopts\if t#1\pxcz@okfalse\fi\fi
+ \ifpxcz@ok
+ \edef\pxcz@lopts{#2}%
+ \fi}
-%% \pxcz@enable@switch@realfont
-\def\pxcz@enable@switch@realfont{%
- \let\pxcz@switch@realfont\pxcz@do@switch@realfont
-}
-\let\pxcz@switch@realfont\relax
-
-%% \pxcz@do@switch@realfont
-\@onlypreamble\pxcz@do@switch@realfont
-\def\pxcz@do@switch@realfont{%
- \edef\pxcz@reset@mmivjis{%
- \ifpxcz@mmivjis \noexpand\pxcz@mmivjistrue
- \else \noexpand\pxcz@mmivjisfalse \fi}%
- \let\pxcz@empty\relax
- \pxcz@mmivjistrue \edef\FONT{\FONTs}%
- \pxcz@mmivjisfalse \edef\FONTo{\FONTs}%
- \pxcz@reset@mmivjis \edef\FONTs{\FONTs}%
- \let\pxcz@empty\@empty}
-
-%% \pxcz@MI
-% NB: not \edef
-\def\pxcz@MI#1#2:{\ifpxcz@mmivjis:#1:\else:#2:\fi}
-
-%% \pxcz@SH
-% NB: not \edef
-\def\pxcz@SH#1{%
- \ifx#1/\expandafter\pxcz@SH@otf@dif
- \else \expandafter\pxcz@SH@otc@dif
+%% \pxcz@is@jis@cmap
+\@onlypreamble\pxcz@is@jis@cmap
+\def\pxcz@is@jis@cmap{%
+ \pxcz@okfalse
+ \expandafter\pxcz@is@jis@cmap@a\pxcz@cmap\pxcz@end}
+\@onlypreamble\pxcz@is@jis@cmap@a
+\def\pxcz@is@jis@cmap@a#1#2\pxcz@end{%
+ \ifx\pxcz@mt#2\pxcz@mt \pxcz@oktrue \fi}
+
+%% \pxcz@force@mmiv@cmap
+\@onlypreamble\pxcz@force@mmiv@cmap
+\def\pxcz@force@mmiv@cmap{%
+ \pxcz@is@jis@cmap \ifpxcz@ok
+ \edef\pxcz@cmap{\pxcz@pfx@jis\pxcz@cmap}%
+ \else
+ \pxcz@split{UniJIS-}\pxcz@cmap
+ \ifx\pxcz@pre\relax\else
+ \edef\pxcz@cmap{UniJIS2004-\pxcz@post}%
+ \fi
\fi}
-\def\pxcz@SH@otc@dif#1:{%
- :\the\pxcz@entry@type:}
-\def\pxcz@SH@otf@dif#1-{%
- #1\ifcase\pxcz@entry@type\or K\or SC\fi-}
-
-%% \pxcz@NC
-% NB: not \edef
-\def\pxcz@NC#1{%
- \ifx#1/\expandafter\pxcz@NC@otf@dif
- \else \expandafter\pxcz@NC@otc@dif
+
+%% \pxcz@inspect@font@tribe
+\@onlypreamble\pxcz@inspect@font@tribe
+\def\pxcz@inspect@font@tribe{%
+ \let\pxcz@font@tribe\@empty
+ \ifx\pxcz@font\@empty
+ \else\ifx\pxcz@font\pxcz@noembed
+ \else
+ \pxcz@inspect@font@tribe@a{?SourceHanSerif-}{.otf?}{sourcehan}%
+ \pxcz@inspect@font@tribe@a{?SourceHanSans-}{.otf?}{sourcehan}%
+ \pxcz@inspect@font@tribe@a{?:0:SourceHanSerif-}{.ttc?}{sourcehanC}%
+ \pxcz@inspect@font@tribe@a{?:0:SourceHanSans-}{.ttc?}{sourcehanC}%
+ \pxcz@inspect@font@tribe@a{?NotoSerifCJKjp-}{.otf?}{noto}%
+ \pxcz@inspect@font@tribe@a{?NotoSansCJKjp-}{.otf?}{noto}%
+ \pxcz@inspect@font@tribe@a{?:0:NotoSerifCJK-}{.ttc?}{notoC}%
+ \pxcz@inspect@font@tribe@a{?:0:NotoSansCJK-}{.ttc?}{notoC}%
+ \pxcz@inspect@font@tribe@a{?yumin}{.ttf?}{yumin}%
+ \pxcz@inspect@font@tribe@a{?YUMIN}{.TTF?}{yuminU}%
+ \pxcz@inspect@font@tribe@a{:YuGoth}{.ttc?}{yugoth}%
+ \pxcz@inspect@font@tribe@a{:YUGOTH}{.TTC?}{yugoth}%
+ \pxcz@inspect@font@tribe@a{:moga}{.ttc?}{mogamobo}%
+ \pxcz@inspect@font@tribe@a{:mobo}{.ttc?}{mogamobo}%
+ \fi\fi
+ \ifx\pxcz@font@tribe\@empty\else
+ \PackageInfo\pxcz@pkgname
+ {Font tribe is '\pxcz@font@tribe':\MessageBreak
+ \@spaces\pxcz@font\@gobble}%
\fi}
-\def\pxcz@NC@otc@dif#1:{%
- :\the\pxcz@entry@type:}
-\def\pxcz@NC@otf@dif#1jp{%
- #1\ifcase\pxcz@entry@type jp\or kr\or sc\fi}
-
-%% \pxcz@YW
-\def\pxcz@YW#1{%
- \ifx#1/\expandafter\pxcz@YW@mc@dif
- \else \expandafter\pxcz@YW@gt@dif
+\@onlypreamble\pxcz@inspect@font@tribe@a
+\def\pxcz@inspect@font@tribe@a#1#2#3{%
+ \pxcz@split{#1}{?\pxcz@font}%
+ \ifx\pxcz@pre\relax\else
+ \pxcz@split{#2}{\pxcz@font?}%
+ \ifx\pxcz@pre\relax\else
+ \def\pxcz@font@tribe{#3}%
+ \fi
\fi}
-\def\pxcz@YW@gt@dif#1:{%
- \ifnum\pxcz@entry@type=\tw@ :1:\else:0:\fi}
-\def\pxcz@YW@mc@dif#1.ttf{%
- \ifnum\pxcz@entry@type=\tw@ \@nameuse{pxcz@YWG/#1}\else#1.ttf\fi}
-\@namedef{pxcz@YWG/yuminl}{:1:YuGothL.ttc}
-\@namedef{pxcz@YWG/yumin}{:1:YuGothR.ttc}
-\@namedef{pxcz@YWG/yumindb}{:1:YuGothM.ttc}
-
-%% primary macros
-\let\pxcz@unidirect\@empty
-\let\pxcz@unidirectX\@empty
-\let\pxcz@unidirect@wopt\@empty
-\let\pxcz@unidirectX@wopt\@empty
-\let\pxcz@unidirectX@lopt\@gobble
-\ifnum\pxcz@directunicode<\pxcz@directunicode@otf\else
-\def\pxcz@unidirect#1-#2-#3{\pxcz@cmap@directuni}
-\def\pxcz@unidirect@wopt{ -w 1}
-\fi
-\ifnum\pxcz@directunicode<\pxcz@directunicode@all\else
-\let\pxcz@unidirectX\pxcz@unidirect
-\let\pxcz@unidirectX@wopt\pxcz@unidirect@wopt
-\fi
-\ifnum\pxcz@directunicode<\pxcz@directunicode@full\else
-\def\pxcz@unidirectX@lopt#1{ -l #1}
-\fi
-%% secondary macros
-\def\pxcz@entry@UniJIS{\@+\pxcz@pfx@unijis}%
-\def\pxcz@entry@@hwid{\@l{hwid}}%
-\def\pxcz@entry@@fwid{\@l{fwid}}%
-\def\pxcz@entry@@jp#1#2{\@l{jp#1#2}}%
-\ifpxcz@mmivjis
-\def\pxcz@entry@@jpXX{\@l{jp04}}
-\else
-\def\pxcz@entry@@jpXX{\@l{jp90}}
+
+%% \pxcz@switch@font@for{<feature>}
+% Modifies \pxcz@font, assuming \pxcz@font@tribe is properly set.
+\@onlypreamble\pxcz@switch@font@for
+\def\pxcz@switch@font@for#1{%
+ \pxcz@csletcs{pxcz@tmpb}{pxcz@switch@font@@\pxcz@font@tribe @#1}%
+ \ifx\pxcz@tmpb\relax\else
+%\typeout{#1:\pxcz@font-->\expandafter\pxcz@tmpb\pxcz@font}%
+ \edef\pxcz@font{\expandafter\pxcz@tmpb\pxcz@font}%
+ \fi}
+% entries
+\ifpxcz@switch@font@xwid
+ \def\pxcz@switch@font@@sourcehanC@fwid#1:0:{:2:}
+ \def\pxcz@switch@font@@sourcehanC@hwid#1:0:{:1:}
+ \def\pxcz@switch@font@@sourcehan@fwid#1-{#1SC-}
+ \def\pxcz@switch@font@@sourcehan@hwid#1-{#1K-}
+ \def\pxcz@switch@font@@notoC@fwid#1:0:{:2:}
+ \def\pxcz@switch@font@@notoC@hwid#1:0:{:1:}
+ \def\pxcz@switch@font@@noto@fwid#1jp{#1sc}
+ \def\pxcz@switch@font@@noto@hwid#1jp{#1kr}
+ \def\pxcz@switch@font@@yugoth@fwid#1:0:{:1:}
+ \def\pxcz@switch@font@@yumin@fwid#1.ttf{%
+ \@nameuse{pxcz@SFYM/#1.ttf}}
+ \def\pxcz@switch@font@@yuminU@fwid#1.TTF{%
+ \@nameuse{pxcz@SFYM/#1.TTF}}
+ \def\pxcz@do#1{\@namedef{pxcz@SFYM/#1}}
+ \pxcz@do{yuminl.ttf}{:1:YuGothL.ttc}
+ \pxcz@do{yumin.ttf}{:1:YuGothR.ttc}
+ \pxcz@do{yumindb.ttf}{:1:YuGothM.ttc}
+ \pxcz@do{YUMINL.TTF}{:1:YUGOTHL.TTC}
+ \pxcz@do{YUMIN.TTF}{:1:YUGOTHR.TTC}
+ \pxcz@do{YUMINDB.TTF}{:1:YUGOTHM.TTC}
\fi
-\ifpxcz@uniquify
-\let\pxcz@entry@@hwid\pxcz@entry@@jpXX
-\let\pxcz@entry@@fwid\pxcz@entry@@jpXX
+\ifpxcz@switch@font@xjis
+ \@namedef{pxcz@switch@font@@mogamobo@jp90}#1.ttc{%
+ \pxcz@csuse@or{pxcz@SFMG/#1.ttc}{#1.ttc}}
+ \def\pxcz@do#1#2#3{\@namedef{pxcz@SFMG/:#1:#3}{:#2:#3}}
+ \pxcz@do{0}{3}{mogam.ttc}
+ \pxcz@do{1}{4}{mogam.ttc}
+ \pxcz@do{0}{3}{mogamb.ttc}
+ \pxcz@do{1}{4}{mogamb.ttc}
+ \pxcz@do{0}{2}{mogag.ttc}
+ \pxcz@do{1}{3}{mogag.ttc}
+ \pxcz@do{0}{2}{mogagb.ttc}
+ \pxcz@do{1}{3}{mogagb.ttc}
+ \pxcz@do{0}{2}{mobog.ttc}
+ \pxcz@do{1}{3}{mobog.ttc}
+ \pxcz@do{0}{2}{mobogb.ttc}
+ \pxcz@do{1}{3}{mobogb.ttc}
\fi
+%% \pxcz@declare@entry@modifier{<name>}
+\@onlypreamble\pxcz@declare@entry@modifier
+\def\pxcz@declare@entry@modifier#1{%
+ \pxcz@onlypreamble@csdef{pxcz@MEM/#1}}
+%% entry modifiers
+% Uni: Changes cmap to 'unicode' if directunicode.
+\pxcz@declare@entry@modifier{Uni}{%
+ \ifnum\pxcz@directunicode<\pxcz@directunicode@otf\else
+ \ifx\pxcz@font\pxcz@noembed\else
+ \let\pxcz@cmap\pxcz@cmap@directuni
+ \fi
+ \fi}
+% Uni*: Changes cmap to 'unicode' if directunicode*.
+\pxcz@declare@entry@modifier{Uni*}{%
+ \ifnum\pxcz@directunicode<\pxcz@directunicode@all\else
+ \ifx\pxcz@font\pxcz@noembed\else
+ \let\pxcz@cmap\pxcz@cmap@directuni
+ \fi
+ \fi}
+% Switch
+\pxcz@declare@entry@modifier{Switch}{%
+ \ifpxcz@mmivjis
+ \pxcz@force@mmiv@cmap
+ \else
+ \pxcz@switch@font@for{jp90}%
+ \fi
+ \pxcz@add@lopt{\pxcz@@jpXX}}
+% 04
+\pxcz@declare@entry@modifier{04}{%
+ \pxcz@add@lopt{jp04}}
+% 90
+\pxcz@declare@entry@modifier{90}{%
+ \pxcz@switch@font@for{jp90}%
+ \pxcz@add@lopt{jp90}}
+% HWid
+\pxcz@declare@entry@modifier{HWid}{%
+ \ifx\pxcz@font\pxcz@noembed
+ \let\pxcz@cmap\pxcz@cmap@hwuni
+ \else
+ \let\pxcz@cmap\pxcz@cmap@uni
+ \pxcz@switch@font@for{hwid}%
+ \fi
+ \pxcz@add@lopt{hwid}%
+ \def\pxcz@tmpa{mgr}\ifx\pxcz@sym\pxcz@tmpa
+ \let\pxcz@font\@empty
+ \fi}
+% FWid
+\pxcz@declare@entry@modifier{FWid}{%
+ \pxcz@switch@font@for{fwid}%
+ \pxcz@add@lopt{fwid}}
+% AJ16/AK12/AG14/AC14
+\pxcz@declare@entry@modifier{AJ16}{\def\pxcz@csi{AJ16}}
+\pxcz@declare@entry@modifier{AK12}{\def\pxcz@csi{AK12}\pxcz@exttrue}
+\pxcz@declare@entry@modifier{AG14}{\def\pxcz@csi{AG14}\pxcz@exttrue}
+\pxcz@declare@entry@modifier{AC14}{\def\pxcz@csi{AC14}\pxcz@exttrue}
+% V: Adds '-w 1' if cmap is 'unicode'.
+\pxcz@declare@entry@modifier{V}{%
+ \ifx\pxcz@cmap\pxcz@cmap@directuni
+ \edef\pxcz@mopts{ -w 1\pxcz@mopts}%
+ \fi}
+% Fin: final step
+\pxcz@declare@entry@modifier{Fin}{%
+ \ifx\pxcz@csi\relax\else
+ \expandafter\ifx\csname pxcz@OT/\pxcz@sym\endcsname\relax
+ \edef\pxcz@mopts{/\pxcz@csi}%
+ \else % omit CSI part for CFF fonts
+ \let\pxcz@mopts\@empty
+ \fi
+ \fi}
+
%% \pxcz@spec
\let\pxcz@spec\@empty
%% \pxcz@addtospec{<id>}
\@onlypreamble\pxcz@addtospec
\def\pxcz@addtospec#1{%
- \bgroup \let\Entry\pxcz@Entry
- \let\ \space \let\*\pxcz@pfx@jis
- \let\UniJIS\pxcz@entry@UniJIS
- \let\@hwid\pxcz@entry@@hwid \let\@fwid\pxcz@entry@@fwid
- \let\@jp\pxcz@entry@@jp \let\@jpXX\pxcz@entry@@jpXX
- \@nameuse{pxcz@ME/#1}\egroup}
+ \begingroup
+ \let\Entry\pxcz@Entry
+ \@nameuse{pxcz@ME/#1}%
+ \endgroup}
+%% \Entry{<sym>}{<tfm>}{<cmap>}{<modify>,...}
\@onlypreamble\pxcz@Entry
-\def\pxcz@Entry#1{%
- \def\pxcz@entry@sym{#1}%
- \expandafter\let\expandafter\FONT\csname pxcz@FS/#1\endcsname
- \let\FONTo\FONT \let\FONTs\FONT
- \ifx\FONT\pxcz@noembed
- \let\UniCMap\pxcz@cmap@hwuni
- \let\+\@empty \let\w\@empty \def\@+{}\let\@w\@empty
- \let\@l\@gobble
- \edef\FONT{!\@nameuse{pxcz@NEF/#1}}%
- \let\FONTo\FONT \let\FONTs\FONT
- \else\ifx\FONT\@empty\else
- \let\UniCMap\pxcz@cmap@uni
- \let\+\pxcz@unidirect \let\w\pxcz@unidirect@wopt
- \def\@+{\pxcz@unidirectX}\let\@w\pxcz@unidirectX@wopt
- \let\@l\pxcz@unidirectX@lopt
- \pxcz@switch@realfont
- \fi\fi
- \ifx\FONT\@empty \expandafter\@gobbletwo
- \else \expandafter\pxcz@entry@a \fi}
-\@onlypreamble\pxcz@entry@a
-\def\pxcz@entry@a#1#2{%
- \chardef\pxcz@entry@type=#1\relax
- \ifnum\pxcz@entry@type=\@ne\ifx\pxcz@cmap@uni\pxcz@cmap@hwuni
- \let\@l\@gobble
- \fi\fi
- \pxcz@check@entry \ifpxcz@ok
- \xdef\pxcz@spec{%
- \pxcz@spec\noexpand\special{\pxcz@mapline{#2}}}%
- \fi}
-
-%% \pxcz@check@entry
-\@onlypreamble\pxcz@check@entry
-\def\pxcz@sym@@mgr{mgr}
-\def\pxcz@check@entry{%
- \pxcz@oktrue
- \ifnum\pxcz@entry@type=\@ne
- \ifx\pxcz@entry@sym\pxcz@sym@@mgr
- \expandafter\ifx\csname pxcz@FS/gtr\endcsname\relax\else
- \pxcz@okfalse \fi
+\def\pxcz@Entry#1#2#3#4{%
+ \def\pxcz@sym{#1}\def\pxcz@cmap{#3}%
+ \let\pxcz@csi\relax \let\pxcz@mopts\@empty \let\pxcz@lopts\@empty
+ \pxcz@extfalse
+ \edef\pxcz@font{\@nameuse{pxcz@FS/\pxcz@sym}}%
+ \pxcz@inspect@font@tribe
+ % apply modifiers
+ \@for\pxcz@tmpx:=#4,Fin\do{%
+ \ifx\pxcz@font\@empty\else
+ \@nameuse{pxcz@MEM/\pxcz@tmpx}%
+ \fi}%
+ % resolve no-embed font spec
+ \ifx\pxcz@font\pxcz@noembed
+ \edef\pxcz@font{!\@nameuse{pxcz@NEF/\pxcz@sym}}%
+ \fi
+ % apply layout options when using 'unicode'
+ \ifnum\pxcz@directunicode<\pxcz@directunicode@full\else
+ \ifx\pxcz@cmap\pxcz@cmap@directuni
+ \ifpxcz@uniquify
+ \pxcz@uniquify@lopts{t}{\pxcz@@jpXX}%
+ \ifpxcz@fullwidth
+ \pxcz@add@lopt{fwid}%
+ \fi
+ \else
+ \ifpxcz@fullwidth
+ \pxcz@split{wid}\pxcz@lopts\ifx\pxcz@pre\relax
+ \pxcz@add@lopt{fwid}%
+ \fi
+ \fi
+ \fi
+ \ifx\pxcz@lopts\@empty\else
+ \edef\pxcz@mopts{\pxcz@mopts\space -l \pxcz@lopts}%
+ \fi
\fi
- \fi}
+ \fi
+ % suppress legacy-code mappings unless 'apply-legacycode'
+ \ifx\pxcz@cmap\pxcz@cmap@directuni\else \ifpxcz@ext\else
+ \ifnum\pxcz@legacycode=\pxcz@legacycode@apply % no-op
+ \else\ifnum\pxcz@legacycode=\pxcz@legacycode@ignore
+ \let\pxcz@font\@empty % skip
+ \else\ifx\pxcz@font\@empty\else
+ \let\pxcz@font\pxcz@kill@mapping % kill
+ \fi\fi\fi
+ \fi\fi
+ % output it
+ \ifx\pxcz@font\pxcz@kill@mapping
+ \xdef\pxcz@spec{\pxcz@spec\noexpand\special{%
+ \pxcz@mapline{-#2}}}%
+ \else\ifx\pxcz@font\@empty\else
+ \xdef\pxcz@spec{\pxcz@spec\noexpand\special{%
+ \pxcz@mapline{#2 \pxcz@cmap\space\pxcz@font\pxcz@mopts}}}%
+ \fi\fi}
%% \pxcz@do@file@preset
\@onlypreamble\pxcz@do@file@preset
@@ -542,202 +831,193 @@
%--------------------------------------- map entry definitions
%% \pxcz@mapentry{<id>}{<text>}
+\@onlypreamble\pxcz@mapentry
\def\pxcz@mapentry#1{%
- \expandafter\pxcz@mapentry@a\csname pxcz@ME/#1\endcsname}
-\def\pxcz@mapentry@a#1{\@onlypreamble#1\def#1}
+ \pxcz@onlypreamble@csdef{pxcz@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@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@mapentry{ALPHA}{%
-\Entry{mnl}1{r-cfjar-l-@PXcjk0@ \UniCMap\ \FONT\@hwid}%
-\Entry{mnr}1{r-cfjar-r-@PXcjk0@ \UniCMap\ \FONT\@hwid}%
-\Entry{mnb}1{r-cfjar-b-@PXcjk0@ \UniCMap\ \FONT\@hwid}%
-\Entry{gtr}1{r-cfjas-r-@PXcjk0@ \UniCMap\ \FONT\@hwid}%
-\Entry{gtb}1{r-cfjas-b-@PXcjk0@ \UniCMap\ \FONT\@hwid}%
-\Entry{gtx}1{r-cfjas-x-@PXcjk0@ \UniCMap\ \FONT\@hwid}%
-\Entry{mgr}1{r-cfjas-r-@PXcjk0@ \UniCMap\ \FONT\@hwid}%
+\Entry{mnl}{r-cfjar-l-@PXcjk0@}{unicode} {HWid}%
+\Entry{mnr}{r-cfjar-r-@PXcjk0@}{unicode} {HWid}%
+\Entry{mnb}{r-cfjar-b-@PXcjk0@}{unicode} {HWid}%
+\Entry{gtr}{r-cfjas-r-@PXcjk0@}{unicode} {HWid}%
+\Entry{gtb}{r-cfjas-b-@PXcjk0@}{unicode} {HWid}%
+\Entry{gtx}{r-cfjas-x-@PXcjk0@}{unicode} {HWid}%
+\Entry{mgr}{r-cfjas-r-@PXcjk0@}{unicode} {HWid}%
}
\pxcz@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@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@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@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@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@mapentry{PXOTF}{%
}
@@ -941,7 +1221,7 @@
% if mnr is replaced but gtr is not then ...
\expandafter\ifx\csname pxcz@FS/gtr\endcsname\@empty
{\expandafter\let\csname pxcz@FS/gtr\endcsname\pxcz@x
- \pxcz@Entry{gtr}1{r-cfjas-r-@PXcjk0@ \pxcz@cmap@uni\space \FONT}}%
+ \pxcz@Entry{gtr}{r-cfjas-r-@PXcjk0@}{unicode}{HWid}}%
\fi\fi
\@ifpackagewith{otf}{deluxe}{\pxcz@err@dxotf{otf}}{}%
\@ifpackagewith{pxotf}{deluxe}{\pxcz@err@dxotf{pxotf}}{}%
@@ -976,6 +1256,9 @@
\ifx\pxcz@file@preset\relax\else
\pxcz@do@file@preset
\fi
+ \ifx t\pxcz@strict@csi
+ \pxcz@inspect@flavor@all
+ \fi
\ifpxcz@alpha
\pxcz@check@alldefined{mnl,mnr,mnb}%
\ifpxcz@ok \renewcommand\rmdefault{cfjar}\fi
@@ -1041,6 +1324,144 @@
\pxcz@info{Relation font set for \k@encoding/#1}%
}
+%--------------------------------------- strict-CSI mode
+\ifx t\pxcz@strict@csi
+% In this section, the e-TeX extension plus \pdffiledump and
+% \pdffilesize is assumed to be available.
+
+%% variables
+\newcount\pxcz@cntr
+\let\pxcz@insf@file\relax
+\let\pxcz@insf@idx\relax
+\let\pxcz@insf@nfont\relax
+\let\pxcz@kpse@dir\relax
+
+%% constants
+\def\pxcz@insf@@OTTO{"4F54544F }
+\def\pxcz@insf@@IZ{"00010000 }
+\def\pxcz@insf@@ttcf{"74746366 }
+
+%% \pxcz@insf@read@word{<offset>}
+% Reads a 32-bit integer from \pxcz@insf@file at the given offset,
+% and sets the value (or -1 on error) to \pxcz@cntr.
+\@onlypreamble\pxcz@insf@read@word
+\def\pxcz@insf@read@word#1{%
+ \pxcz@cntr=#1\relax
+ \edef\pxcz@tmpa{\pdffiledump offset\pxcz@cntr length1{\pxcz@insf@file}}%
+ \ifnum"0\pxcz@tmpa<"80
+ \advance\pxcz@cntr\@ne
+ \edef\pxcz@tmpb{\pdffiledump offset\pxcz@cntr length3{\pxcz@insf@file}}%
+ \ifnum"1\pxcz@tmpb<"1000000 \pxcz@cntr\m@ne % truncated
+ \else \pxcz@cntr"\pxcz@tmpa\pxcz@tmpb\relax % the value
+ \fi
+ \else \pxcz@cntr\m@ne % overflow
+ \fi}
+
+%% \pxcz@inspect@flavor{<path>}{<index>}
+% Sets the result to \pxcz@cntr.
+% 1=CFF, 0=TTF, <0 if error.
+\@onlypreamble\pxcz@inspect@flavor
+\def\pxcz@inspect@flavor#1#2{%
+ \edef\pxcz@insf@file{#1}%
+ \mathchardef\pxcz@insf@idx=#2\relax
+ \pxcz@insf@read@word{0}% outer tag
+ \ifnum\pxcz@cntr=\pxcz@insf@@ttcf % TTC/OTC
+ \pxcz@insf@read@word{8}% font count
+ \ifnum\pxcz@cntr>"7FFF \pxcz@cntr\m@ne \fi
+ \ifnum\pxcz@cntr>\m@ne
+ \mathchardef\pxcz@insf@nfont\pxcz@cntr
+ \@tempcnta\pxcz@insf@idx \multiply\@tempcnta4
+ \advance\@tempcnta12 \pxcz@insf@read@word{\@tempcnta}% inner tag
+ \@tempcnta\pxcz@cntr
+ \fi
+ \else % not collection
+ \@tempcnta=0 \chardef\pxcz@insf@nfont=1
+ \fi
+ \ifnum\pxcz@cntr>\m@ne % no format error so far
+ \ifnum\pxcz@insf@idx<\pxcz@insf@nfont
+ \pxcz@insf@read@word{\@tempcnta}%
+ \ifnum\pxcz@cntr=\m@ne % ERROR: bad format
+ \else\ifnum\pxcz@cntr=\pxcz@insf@@OTTO \pxcz@cntr\@ne % CFF-flavor
+ \else\ifnum\pxcz@cntr=\pxcz@insf@@IZ \pxcz@cntr\z@ % TTF-flavor
+ \else \pxcz@cntr-\thr@@ % ERROR: unknown tag
+ \fi\fi\fi
+ \else \pxcz@cntr-\tw@ % ERROR: bad index
+ \fi
+ %else ERROR: bad format
+ \fi}
+
+%% \pxcz@kpse@dir@cache
+% to spped up \pxcz@kpsewhich
+\@onlypreamble\pxcz@kpse@dir@cache
+\let\pxcz@kpse@dir@cache\@empty
+
+%% \pxcz@kpsewhich{<filename>}
+% Sets to \pxcz@kpse@dir the directory where the file is found
+% (or \relax if not found).
+\@onlypreamble\pxcz@kpsewhich
+\def\pxcz@kpsewhich#1{%
+ \edef\pxcz@tmpa{#1}\let\pxcz@kpse@dir\relax
+ \let\do\pxcz@kpsewhich@do \pxcz@kpse@dir@cache\relax
+ \ifx\pxcz@kpse@dir\relax
+ \chardef\pxcz@tmpz=\endlinechar \endlinechar\m@ne
+ \openin\@inputcheck="|kpsewhich \pxcz@tmpa"\relax
+ \unless\ifeof\@inputcheck
+ \readline\@inputcheck to\pxcz@tmpb
+ \unless\ifx\pxcz@tmpb\@empty
+ \let\pxcz@kpse@dir\@empty \let\do\relax
+ \expandafter\pxcz@kpsewhich@a\pxcz@tmpb/\pxcz@end
+ \edef\pxcz@kpse@dir@cache{%
+ \pxcz@kpse@dir@cache\do{\pxcz@kpse@dir}}%
+ \fi
+ \fi
+ \endlinechar\pxcz@tmpz
+ \fi}
+\@onlypreamble\pxcz@kpsewhich@a
+\def\pxcz@kpsewhich@a#1/#2\pxcz@end{%
+ \ifx\pxcz@end#2\pxcz@end \expandafter\@gobble
+ \else \expandafter\@firstofone
+ \fi{%
+ \edef\pxcz@kpse@dir{\pxcz@kpse@dir#1/}%
+ \pxcz@kpsewhich@a#2\pxcz@end}}
+\@onlypreamble\pxcz@kpsewhich@do
+\def\pxcz@kpsewhich@do#1{%
+ \ifnum0\pdffilesize{#1\pxcz@tmpa}>\z@
+ \def\pxcz@kpse@dir{#1}%
+ \expandafter\pxcz@kpsewhich@do@a
+ \fi}
+\def\pxcz@kpsewhich@do@a#1\relax{}
+
+%% \pxcz@inspect@flavor@all
+% Sets \[pxcz@OT/<sym>].
+\@onlypreamble\pxcz@inspect@flavor@all
+\def\pxcz@inspect@flavor@all{%
+ \@for\pxcz@tmpa:=\pxcz@sym@list\do{%
+ \edef\pxcz@tmpa{{\pxcz@tmpa}{\@nameuse{pxcz@FS/\pxcz@tmpa}}}%
+ \expandafter\pxcz@inspect@flavor@all@a\pxcz@tmpa}}
+\@onlypreamble\pxcz@inspect@flavor@all@a
+\def\pxcz@inspect@flavor@all@a#1#2{%
+ \def\pxcz@tmpa{#2}%
+ \ifx\pxcz@tmpa\@empty
+ \else\ifx\pxcz@tmpa\pxcz@noembed
+ \@namedef{pxcz@OT/#1}{t}%
+ \else \pxcz@inspect@flavor@all@b#2\pxcz@end{#1}%
+ \fi\fi}
+\@onlypreamble\pxcz@inspect@flavor@all@b
+\def\pxcz@inspect@flavor@all@b#1#2\pxcz@end{%
+ \edef\pxcz@tmpa{\ifx:#1\else:0:\fi#1#2}%
+ \expandafter\pxcz@inspect@flavor@all@c\pxcz@tmpa\pxcz@end}
+\@onlypreamble\pxcz@inspect@flavor@all@c
+\def\pxcz@inspect@flavor@all@c:#1:#2\pxcz@end#3{%
+ \pxcz@kpsewhich{#2}%
+ \unless\ifx\pxcz@kpse@dir\relax
+ \pxcz@inspect@flavor{\pxcz@kpse@dir#2}{#1}%
+%\typeout{#3)\pxcz@kpse@dir#2;#1==>\the\pxcz@cntr}%
+ \ifnum\pxcz@cntr>\z@
+ \@namedef{pxcz@OT/#3}{t}%
+ \fi
+ \fi}
+
+\fi
%--------------------------------------- dump font map
% if some dumpmap is enabled...
\ifnum 0\ifpxcz@dumpmap 1\fi
@@ -1063,7 +1484,11 @@
\def\pxcz@dump@special@a#1 #2\bxcz@end{%
\@nameuse{pxcz@dump@special@#1}\@gobble{#2}}
\@namedef{pxcz@dump@special@pdf:mapline}#1#2{%
- \pxcz@add@to@dump@text{#2^^J}}
+ \pxcz@add@to@dump@text{\pxcz@rmin#2^^J}}
+
+%% \pxcz@rmin
+\def\pxcz@rmin#1{%
+ \ifx-#1\@percentchar\else#1\fi}
%% \pxcz@dump@spec@to{<file-name>}
\@onlypreamble\pxcz@dump@spec@to
@@ -1106,8 +1531,7 @@
%% \pxcz@declare@preset{<name>}{<text>}
\@onlypreamble\pxcz@declare@preset
\def\pxcz@declare@preset#1{%
- \expandafter\pxcz@decl@preset@a\csname pxcz@the@preset@#1\endcsname}
-\def\pxcz@decl@preset@a#1{\@onlypreamble#1\def#1}
+ \pxcz@onlypreamble@csdef{pxcz@the@preset@#1}}
%% \pxcz@declare@preset@alias{<name1>}{<name2>}
\@onlypreamble\pxcz@declare@preset@alias
@@ -1174,20 +1598,14 @@
\pxcz@multiweight{ipaexm.ttf}{ipaexm.ttf}{:0:hgrme.ttc}%
{:0:hgrgm.ttc}{:0:hgrge.ttc}{:0:hgrsgu.ttc}{ipaexg.ttf}{hgrsmp.ttf}}
\pxcz@declare@preset{moga-mobo}{%
- \pxcz@enable@switch@realfont
- \pxcz@multiweight{\pxcz@MI03:mogam.ttc}{\pxcz@MI03:mogam.ttc}%
- {\pxcz@MI03:mogamb.ttc}{\pxcz@MI02:mogag.ttc}{\pxcz@MI02:mogagb.ttc}%
- {\pxcz@MI02:mogagb.ttc}{\pxcz@MI02:mogag.ttc}{\pxcz@MI02:mobog.ttc}}
+ \pxcz@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@declare@preset{moga-mobo-ex}{%
- \pxcz@enable@switch@realfont
- \pxcz@multiweight{\pxcz@MI14:mogam.ttc}{\pxcz@MI14:mogam.ttc}%
- {\pxcz@MI14:mogamb.ttc}{\pxcz@MI13:mogag.ttc}{\pxcz@MI13:mogagb.ttc}%
- {\pxcz@MI13:mogagb.ttc}{\pxcz@MI13:mogag.ttc}{\pxcz@MI13:mobog.ttc}}
+ \pxcz@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@declare@preset{moga-maruberi}{%
- \pxcz@enable@switch@realfont
- \pxcz@multiweight{\pxcz@MI03:mogam.ttc}{\pxcz@MI03:mogam.ttc}%
- {\pxcz@MI03:mogamb.ttc}{\pxcz@MI02:mogag.ttc}{\pxcz@MI02:mogagb.ttc}%
- {\pxcz@MI02:mogagb.ttc}{\pxcz@MI02:mogag.ttc}{MTLmr3m.ttf}}
+ \pxcz@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@declare@preset{kozuka-pro}{%
\usecmapforalphabet
\pxcz@multiweight{KozMinPro-Light.otf}{KozMinPro-Regular.otf}%
@@ -1243,10 +1661,6 @@
\pxcz@multiweight{yuminl.ttf}{yumin.ttf}%
{yumindb.ttf}{:0:YuGothR.ttc}{:0:YuGothB.ttc}%
{:0:YuGothB.ttc}{:0:YuGothM.ttc}{:0:YuGothM.ttc}}
-\pxcz@declare@preset{yu-win10+}{%
- \pxcz@multiweight{\pxcz@YW/yuminl.ttf}{\pxcz@YW/yumin.ttf}%
- {\pxcz@YW/yumindb.ttf}{\pxcz@YW:0:YuGothR.ttc}{\pxcz@YW:0:YuGothB.ttc}%
- {\pxcz@YW:0:YuGothB.ttc}{\pxcz@YW:0:YuGothM.ttc}{\pxcz@YW:0:YuGothM.ttc}}
\pxcz@declare@preset{yu-osx}{%
\usecmapforalphabet
\pxcz@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@declare@preset{sourcehan-otc}{%
- \pxcz@multiweight{\pxcz@SH:0:SourceHanSerif-Light.ttc}%
- {\pxcz@SH:0:SourceHanSerif-Regular.ttc}%
- {\pxcz@SH:0:SourceHanSerif-Bold.ttc}%
- {\pxcz@SH:0:SourceHanSans-Regular.ttc}%
- {\pxcz@SH:0:SourceHanSans-Bold.ttc}%
- {\pxcz@SH:0:SourceHanSans-Heavy.ttc}%
- {\pxcz@SH:0:SourceHanSans-Medium.ttc}%
- {\pxcz@SH:0:SourceHanSans-Medium.ttc}}
+ \pxcz@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@declare@preset{sourcehan}{%
- \pxcz@multiweight{\pxcz@SH/SourceHanSerif-Light.otf}%
- {\pxcz@SH/SourceHanSerif-Regular.otf}%
- {\pxcz@SH/SourceHanSerif-Bold.otf}%
- {\pxcz@SH/SourceHanSans-Regular.otf}%
- {\pxcz@SH/SourceHanSans-Bold.otf}%
- {\pxcz@SH/SourceHanSans-Heavy.otf}%
- {\pxcz@SH/SourceHanSans-Medium.otf}%
- {\pxcz@SH/SourceHanSans-Medium.otf}}
+ \pxcz@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@declare@preset{noto-otc}{%
- \pxcz@multiweight{\pxcz@NC:0:NotoSerifCJK-Light.ttc}%
- {\pxcz@NC:0:NotoSerifCJK-Regular.ttc}%
- {\pxcz@NC:0:NotoSerifCJK-Bold.ttc}%
- {\pxcz@NC:0:NotoSansCJK-Regular.ttc}%
- {\pxcz@NC:0:NotoSansCJK-Bold.ttc}%
- {\pxcz@NC:0:NotoSansCJK-Black.ttc}%
- {\pxcz@NC:0:NotoSansCJK-Medium.ttc}%
- {\pxcz@NC:0:NotoSansCJK-Medium.ttc}}
+ \pxcz@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@declare@preset{noto}{%
- \pxcz@multiweight{\pxcz@NC/NotoSerifCJKjp-Light.otf}%
- {\pxcz@NC/NotoSerifCJKjp-Regular.otf}%
- {\pxcz@NC/NotoSerifCJKjp-Bold.otf}%
- {\pxcz@NC/NotoSansCJKjp-Regular.otf}%
- {\pxcz@NC/NotoSansCJKjp-Bold.otf}%
- {\pxcz@NC/NotoSansCJKjp-Black.otf}%
- {\pxcz@NC/NotoSansCJKjp-Medium.otf}%
- {\pxcz@NC/NotoSansCJKjp-Medium.otf}}
+ \pxcz@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@declare@depre@preset{ipa-otf}{%
\pxcz@uniweight{ipam.otf}{ipag.otf}}
@@ -1322,12 +1724,23 @@
\pxcz@declare@preset@alias{kozuka}{kozuka-pro}
\pxcz@declare@preset@alias{hiragino-elcapitan}{hiragino-elcapitan-pro}
\pxcz@declare@preset@alias{morisawa}{morisawa-pro}
+%(plus-variants)
+\pxcz@declare@preset@alias{sourcehan+}{sourcehan}
+\pxcz@declare@preset@alias{sourcehan-otc+}{sourcehan-otc}
+\pxcz@declare@preset@alias{noto+}{noto}
+\pxcz@declare@preset@alias{noto-otc+}{noto-otc}
+\pxcz@declare@preset@alias{yu-win10+}{yu-win10}
%% ... and invokes the specified one!
\if\pxcz@main@preset\relax\else
\pxcz@use@preset{\pxcz@main@preset}
\fi
+%% load pxufont
+\ifnum\pxcz@legacycode=\pxcz@legacycode@replace
+ \RequirePackage{pxufont}[]
+\fi
+
%--------------------------------------- all done
\endinput
%% EOF
diff --git a/Master/texmf-dist/tex/platex/pxchfon/pxjafont.sty b/Master/texmf-dist/tex/platex/pxchfon/pxjafont.sty
index aabce1780dc..9a79347b094 100644
--- a/Master/texmf-dist/tex/platex/pxchfon/pxjafont.sty
+++ b/Master/texmf-dist/tex/platex/pxchfon/pxjafont.sty
@@ -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