texjporg / tex-jp-build

Minimum source repository to build Japanese TeX processing tools
23 stars 6 forks source link

ptex-base.ch: add new primitives \ifjfont and \iftfont #97

Closed aminophen closed 4 years ago

aminophen commented 4 years ago

https://github.com/texjporg/jsclasses/issues/53#issuecomment-581934655 参照。網羅的ではないかもしれませんがテストケース:

%#!ptex
\show\ifjfont
\show\iftfont
\edef\XXX{\ifjfont\relax T \else F \fi}\show\XXX % ! Missing font identifier. => F
\edef\XXX{\iftfont\relax T \else F \fi}\show\XXX % ! Missing font identifier. => F
\edef\XXX{\ifjfont\font T \else F \fi}\show\XXX  % => F
\edef\XXX{\iftfont\font T \else F \fi}\show\XXX  % => F
\edef\XXX{\ifjfont\jfont T \else F \fi}\show\XXX % => T
\edef\XXX{\iftfont\jfont T \else F \fi}\show\XXX % => F
\edef\XXX{\ifjfont\tfont T \else F \fi}\show\XXX % => F
\edef\XXX{\iftfont\tfont T \else F \fi}\show\XXX % => T
\edef\XXX{\ifjfont\textfont0 T \else F \fi}\show\XXX % => F
\edef\XXX{\iftfont\textfont0 T \else F \fi}\show\XXX % => F
\edef\XXX{\ifjfont\tenrm T \else F \fi}\show\XXX   % => F
\edef\XXX{\iftfont\tenrm T \else F \fi}\show\XXX   % => F
\edef\XXX{\ifjfont\tenmin T \else F \fi}\show\XXX  % => T
\edef\XXX{\iftfont\tenmin T \else F \fi}\show\XXX  % => F
\edef\XXX{\ifjfont\tentmin T \else F \fi}\show\XXX % => F
\edef\XXX{\iftfont\tentmin T \else F \fi}\show\XXX % => T
\ifx\currentiftype\undefined\else
\ifjfont\jfont \showthe\currentiftype \fi  % => 31
\iftfont\tfont \showthe\currentiftype \fi  % => 32
\fi
\end
aminophen commented 4 years ago

元の bm パッケージの issue は別の方法が提案されたので不要になりました。一方で,ptex-ng には(いつのまにか)採用されたようです。さてどうしよう…。

h-kitagawa commented 4 years ago

pTeX 系列だと,

> \tenrm=select font cmr10.
> \tenmin=select font min10.
> \tentmin=select font tmin10.

と,\meaning しても欧文フォント・和文フォントのどちらかすぐにはわからないので,\ifjfont の有用性が全くないわけではないですね(しかし,どこまで有用なのかはまだ考えていません).

% ちなみに,LuaTeX-ja だと

> \tenrm=select font cmr10.
> \tenmin=\protected macro:
->\ltj@curjfnt 51\relax .
> \tentmin=\protected macro:
->\ltj@curtfnt 57\relax .

% と \meaning の結果だけで区別できます.

aminophen commented 4 years ago

e-pTeX 190709 で \iffontchar が拡張されたので, ~それをうまく使えば「ある fontdef トークンが和文フォントかどうか」は判定できそうです。~ (例:「\iffontchar\somefont57505 が真かどうか」)

すると,\ifjfont と \iftfont は「和文横組か和文縦組かの判定に使える」程度ですかねえ。

[edit] ptex-manual の更新見ました。そうか \iffontchar は欧文フォントでは Bad character code のせいで使えないのか…。

aminophen commented 4 years ago

正直 e-TeX の \currentiftype とかみたいに「何に使えるのかよくわからない」代物もあるので,あって迷惑でなければ仲間に入れていただければと思います。

aminophen commented 4 years ago

和文フォントの組方向判定がどこかで必要になる機会が出てくるかもしれませんから,今のうちに入れてしまいましょう.

ありがとうございます。ChangeLog も付けて r53681 でコミットしました。プリミティブ追加ですが,昨年の #93 で p3.8.2 → p3.8.3 へ上げていたため,TeX Live 2019 と 2020 の正式版どうしは区別可能とみなし,今回バージョン番号は p3.8.3 のままにしました。

norbusan commented 4 years ago

@aminophen 早起きです(笑)

aminophen commented 4 years ago

雪が多くて会社に行けるかどうか不安だったので早起きしました😅