Skip to content

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

@h-kitagawa

Description

@h-kitagawa

#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 に格納しています.同じ仕組みを流用することを考えると,「文字ごとに格納されるパラメータ」を増やすことへの抵抗がなくなってきました.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions