“Text to Math Converter” に Unicode の業の深さを見る

no extension

『数学ガール』シリーズでおなじみ結城浩さんが面白いツール(サービス)を公開されている。

早速試してみる。

Text to Math Converter

変換結果の “𝐸 = 𝑚𝑐²” は Twitter や Mastodon の tweet や toot としてそのままコピペできる。

ホンマに「どうなってるんだ?」と20秒くらい考えてしまったが,そうか Unicode 文字で表現してるのか,と気がついた(気づくのが遅い)。 試しに拙作の gnkf でダンプしてみる。

$ echo 𝐸 = 𝑚𝑐² | gnkf dump -u
0x0001d438, 0x0020, 0x003d, 0x0020, 0x0001d45a, 0x0001d450, 0x00b2, 0x000a

おー,なるほど。

イタリックの英字は「数学用英数字記号(Mathematical Alphanumeric Symbols: U+1D400U+1D7FF)」として定義されているらしい1。 あくまで数学記号なので,通常の文章で装飾文字として使うなってあるね。 たしかにホモグラフ攻撃とかに使えそうだもんな(笑)

上付き文字の U+00B2 は ISO/IEC 8859-1 (通称 Latin-1) で定義されているものと同じである2

ISO/IEC 8859-1 - Wikipedia

この表を見ると上付き文字の数字は 1〜3 しかないな。 0 や 4 以降はどうなってるかというと “Superscripts and Subscripts ” (U+2070U+209F) で定義されているらしい。

つまり x^4 → 𝑥⁴ は

$ echo 𝑥⁴ | gnkf dump -u
0x0001d465, 0x2074, 0x000a

と展開されているわけだ。

これらを踏まえて “Text to Math Converter” では利用可能な文字3

Text to Math Converter
Text to Math Converter

としているようだ(a e o x の下付き文字 U+2090U+2093 がない理由は不明 ← 単純に抜けてたそうです。現在は入力可)。 これ以外の文字は変換されずにそのまま出力されるみたい。 たとえば |a_m - a_n| < d → |𝑎ₘ - 𝑎ₙ| < 𝑑 とかいった感じ。

しかし,まぁ,元日早々から Unicode の業の深さを垣間見てしまった感じである。 でも “Text to Math Converter” 自体は面白いので,これからお世話になるかもしれない。 もちろん,このブログでは今までどおり MathJax で $E = mc^2$ → $E = mc^2$ と表記するので,本年もよろしくおねがいします。

ブックマーク

参考図書

photo
[改訂第8版]LaTeX2ε美文書作成入門
奥村晴彦 (著), 黒木裕介 (著)
技術評論社 2020-11-14
大型本
4297117126 (ASIN), 9784297117122 (EAN), 4297117126 (ISBN)
評価     

2020年末に第8版が出てたのに気付かなかったよ。可能なら紙の本も買って常に側に置いておくのが吉。版元には PDF 版もある。

reviewed by Spiegel on 2021-09-05 (powered by PA-APIv5)


  1. 数学用英数字記号の詳細については公式の “Mathematical Alphanumeric Symbols ” を参照のこと。 ↩︎

  2. というか Unicode の U+00FF までは ISO/IEC 8859-1 と同じである。 ↩︎

  3. 利用可能な文字や記号は随時追加されている。 ↩︎