Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[nptex] 符号位置 256 以上の欧文文字トークンのノード化 #153

Open
h-kitagawa opened this issue Nov 6, 2022 · 1 comment

Comments

@h-kitagawa
Copy link
Member

#150 関連ですが,issue を分割します.npTeX では「Unicode 1 文字 1 トークン」ですが,その一方で欧文フォントは 8-bit のままでしょうから,両者をどう折り合いをつけようか,という話です.

とりあえず今考えていることを述べます:

  1. ^^xy は U+00xy と解釈して 1 トークンを作る.^^^^xyzw, ^^^^^^xyzwuv も同様.
  2. catcode=11, 12 の欧文文字トークン t からノードを作ろうとする過程で,\nptexnoderecipe の内容を見る.
    • \nptexnoderecipe <char_code>={<token list>}
    • t の文字コードが 0xpq のとき,\nptexnoderecipe"pq の値が空でないならば,t からノードは作られず,\nptexnoderecipe"pq の値が入力に追加される.
  3. プリミティブ \char"pq は符号位置 0xpq の文字ノードを作る.
    • 欧文文字ノードか和文文字ノードかは \cjkxcode"pq の値に依存する.←[TODO] catcode に依存させるか?
    • \kchar は常に和文文字ノードを作る.
    • \achar は常に欧文文字ノードを作る.
  4. \Uchar, \Ucharcat は文字トークンに展開される.
  5. [TODO] \chardef で定義されたトークンはどちらの扱いにすべきか?
  6. [TODO] \accent によってアクセントがつく文字に対して \nptexnoderecipe が定まっていた場合はどうするか?
    • \accent<char_code><optional assignments><character> とアクセントとそれがつく文字の間に(フォント切り替えなどの)代入が許容されるので,\nptexnoderecipe の内容を見るというのもありか.
  7. [非現実的?] そもそも \nptexnoderecipe なる仕組みを考えだしたのは,アクティブ文字 (catcode=13) がコントロールワードで使えないから.catcode=13 をコントロールワードで使えるか否かで「分割」できないか?
    • その場合,is_cjk(_x) は流用できるか?

e-TeX では 256 番以上の追加レジスタを eqtb テーブルでなく sparse tree に格納しています.同じ仕組みを流用することを考えると,「文字ごとに格納されるパラメータ」を増やすことへの抵抗がなくなってきました.

@t-tk
Copy link
Collaborator

t-tk commented Nov 26, 2022

昔、構想したという妄想レベルでの話ですが、欧文を8bit前提とせずに Omega の ofm を使った組版を upTeX の欧文のところに入れられないだろうか、と考えたことがあります。
*.ofm のフォント情報で組版できれば、例えばキリル文字で T2A でカバーできないところまで含んだフォントを作ったりできないか、とか、多少なりとも存在するであろう Omega の資産を使えないだろうか、とか。

入出力とフォントのエンコーディングの結びつきをどうしたらいいか、とか、実用的価値とか、どの位難しいか、とかまだ何も検討していません。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants