pxchfonのalphabetオプション

pxchfonのalphabetオプション

- 英理 庵 の投稿
返信数: 2
1. pxchfonのドキュメントではalphabetオプションを使うと「の設定を使うと欧文が全て等幅になってしまう」と書かれてます。
しかし、結果のPDFでは、リガチャやカーニングは解除されている様子ですが、等幅になってなくプロポーショナル(iは狭くWは広く)に見えます。
他のパッケージとコンフリクトしているのでしょうか?
(とはいえ、プロポーショナルの方が良いので結果オーライですが、ドキュメントと違っているので何らかの不具合が起きてそうで気になってます。)

2. また、欧文(数字)の直後に和文を置くと文字が重なってしまいます(前の数字の位置に割り込んでくるような感じ)。この修正方法を教えてください。

以下のようなtest.texでPDFを出力しました。
\RequirePackage{plautopatch}
\documentclass[uplatex,dvipdfmx]{jlreq}
\usepackage[deluxe,uplatex,jis2004]{otf}
\usepackage[alphabet,ipaex]{pxchfon}
%\usepackage[ipaex]{pxchfon}
\makeatletter
\newcommand{\my}[1]{\@tfor\ch:=#1\do{\fbox{\ch}}}
\makeatother

\pagestyle{empty}
\begin{document}
\Huge
零壱0123456789弐参

fine flower AWALTAIR

\my{fine flower AWALTAIR}

\gtfamily\sffamily
零壱0123456789弐参

fine AWA flower

\my{fine flower AWALTAIR}
\end{document}

環境はTeXLive2021です。ビューワーはMacOSのプレビューとGoogle ChromeのビルトインPDFViewerです。

添付画像の上は\usepackage[ipaex]{pxchfon}で出力したもの、下は\usepackage[alphabet,ipaex]{pxchfon}です。


添付 out.png
英理 庵 への返信

Re: pxchfonのalphabetオプション

- Z. R. の投稿

1について

pxchfonのマニュアルのalphabetオプションの説明には

※技術的制約のため、半角等幅のフォントしかサポートされないことに注意してほしい。

と書いてあります。これの意味するところは 「半角等幅のフォントしか使えない(使ってはいけない)、もし使った場合の動作は未定義である(異常な出力になりえる)」
ということです。そのあとに「つまり、この設定を使うと欧文が全て等幅になってしまう。」とあるのは「等幅のフォントしか使えないので、当然出力は等幅になる」というぐらいの意味です。

pxchfonの目的は「ユーザが指定したフォントを使うこと」なので、「使えないフォント」が指定された場合はエラーや警告が出るのが望ましい動作なのですが、残念ながら、(“TeXは実体のフォントを扱わない”ため)TeXの側で「指定されたフォントが等幅であるか」は検査できません。このため、未定義(異常)の出力をしてしまうことが避けられないのです。

ところで、IPAexフォントには「欧文の字形を半角に切り替える」機能を持っています。実はpxchfonの仕様は「そういうフォントについては自動的に(可能な限り)字形を半角に切り替える」となっています。ただし、IPAexフォントのような“AJ1でないフォント”について「字形の切り替え」を有効にするには、unicodeオプションを指定する必要があります。

\usepackage[alphabet,ipaex,unicode]{pxchfon}

2について

「文字が重なってしまう」というのは要するに「使えないフォントを指定したので異常な出力になった」ということです。正常な出力を得たいのであれば、「等幅のフォントを指定する」あるいは「字形を等幅に切り替えられるようにde>unicodeを指定する」ことが必要です。

要するに

ipaexプリセットを使うのであれば、unicodeを指定すれば正常になります。(ただし「等幅になってしまう」。)

\usepackage[alphabet,ipaex,unicode]{pxchfon}

「確かに位置は異常であるが現にプロポーショナルの字形が出力できているんだから、この結果を利用できないのか」という疑問はもっともです。しかし実はこの状態では「TeXの把握している文字位置が実態と乖離している」というヤヤコシイ事態になっています。TeXは「実態の幅」はそもそも知らないので自動で「位置を正しくする」ことは不可能ですが、たとえ\hspace\makeboxなどを駆使して手動で調整しようとしても、「乖離」のせいで色々と(La)TeXの理屈に合わない動作が発生してしまうので、「異常な出力を利用する」というのは厄介です。

Z. R. への返信

Re: pxchfonのalphabetオプション

- 英理 庵 の投稿
ありがとうございました。
ドキュメントの意味がよくわかりました(私が読み込めていなかっただけでした)

理解できた結果、alphabetオプションを使う場面が限定されそうです。

2の質問については、「"弐参"が数字の場所に侵入している」と思い込んでいたが、そうではなく、半角幅で0〜9の位置を確保していたのに、半角幅より広いグリフを使ったため"数字"が弐参の場所にはみ出した、と考えた方が仕組みを理解できそうです。(結果は異常な出力で変わりないのですが)