Open h-kitagawa opened 4 months ago
まだコードは何も書いていませんが,思いついたことを.
\hskip
,JFM グルー,\kanjiskip
, \xkanjiskip
などがある.しかし,dvi では空白は参照点の移動で表現されるため,「原因」の情報が消えてしまう.
→b. のみでもうまくいかないとりあえず頭の中での案です.
- tfm に 32 番の文字があっても,それが pdf で使われる実フォントの空白文字に対応するとは限らない (eg. OT1, T1).
「The TeX Live Guide」の 2023 年の変更点のところに以下のような記述がありました。
with
\pdfinterwordspaceon
, if the current font’s encoding has a/space
character at slot 32, it is used; otherwise, the/space
from the (new) default fontpdftexspace
is used. That default font can be overridden with the new primitive\pdfspacefont
. This same new procedure is used for\pdffakespace
.
TL2023 以降ではフォントの文字コード 32 が /space
ではないときは pdftexspace
フォントが使われるようです。
TL2022 までは常に dummy-space
というフォントが使われていたよう。
- 「空白」の要因としては通常の欧文単語間空白以外にも,明示的な
\hskip
,JFM グルー,\kanjiskip
,\xkanjiskip
などがある.しかし,dvi では空白は参照点の移動で表現されるため,「原因」の情報が消えてしまう.
pdftex の場合は `,
\ ,
\hskip,
\kern,
\hboxいずれでも「一定の空白」が入るときは空白文字が入るようです。 「一定の空白」は
\fontdimen2\font-\fontdimen4\fontより少し大きい程度のようです。 それから、
\ \ \ ` のように複数空白を入れても空白文字は一つだけのようです。
また、フォントが変更されるところには空白文字が入らないようです。
\pdfcompresslevel=0
\pdfinterwordspaceon
%\font\f=ptmr at 10pt\f
\immediate\write16{\the\fontdimen2\font-\the\fontdimen4\font=\the\dimexpr\fontdimen2\font-\fontdimen4\font\relax}%
abc def
%abc\ def
%abc\hskip2.23ptdef
%abc\kern2.23ptdef
%abc\hbox to2.23pt{}def
%abc\ \ \ def
%abc {\it def} ghi
%abc $d, e, f$ ghi
\bye
これらの挙動のすべてが意図したものなのか、実装上の都合かまでは分かりませんが、欧文 TFM に限れば dvipdfmx 側だけでもできそうな気はします。 ただの和文 JFM のことを考えるとどのみち ptex 側での対応も必要になりそう。 (あと xelatex で xeCJK パッケージで和文みたいなときに和文フォントと欧文フォント区別がないのでパッケージ側で対応しないといけなくなりそう)
- マーカーをどうするかは悩み中.dvi の opcode は増やしたくはない.\special か,putn 命令に「文字コードとして変」な値を与えたものにするか?
dvipdfmx 以外の dviware への影響を最小限にするなら \special
ですかね?
Slack での ZR さんの発言が元ですが,ここで考えたほうがいいと思ったので立てます. LaTeX project の[Report on the LaTeX Tagged PDF workshop, TUG 2023](Report on the LaTeX Tagged PDF workshop, TUG 2023) には,次のような記述があります(太字は北川による):
太字で強調した部分は,pdfTeX でいうところの
\pdfinterwordspaceon
だそうです.この流れが続けば「LaTeX(の全機能)がまともにサポートするのは pdfTeX or LuaTeX のみ」ということになりかねません[^1]. なんとか {u,n}pTeX/XeTeX + dvipdfmx で
\pdfinterwordspaceon
と同様の機能を実現できないものでしょうか.[^1]: 以前からも pdfTeX/LuaTeX の方を向いているな,という印象がありましたが.2018-05-03 の Joseph Wright さんのメール とか.