誰でも文字を追加できる実験的な文字コード Scatcode を作りました。こちらがデモサイトです。
デモサイトでできること
- サイト下部の "Available characters" の表から文字を選んで、上部のテキストボックスにコピペできます。いずれも Unicode には (現時点で) 収録されていない、以下の文字種に対応しています。
- Sitelen Pona: 人工言語トキポナの文字。
- Tengwar (テングワール): J・R・R・トールキンの創作した架空文字。
- Liparxe (リパーシェ): 架空言語リパライン語などの文字。
- Old Hylian (古ハイラル文字): ゼルダの伝説 時のオカリナに登場する文字。
- Futurama Alien Alphabet: アニメ フューチュラマに登場する文字。
- Daedric: ゲーム The Elder Scrolls に登場する文字。
- Proto-Sinaitic (原シナイ文字): 古代エジプトで使われていた文字の1つ。世界中のほとんどのアルファベットの祖先とも言われる。
- Linear Elamite (エラム線文字): 古代のエラム帝国で使われていた文字。
- テキストボックスの内容をコピーして、他のテキストエディタに貼り付けることができます。他のテキストエディタ上では文字化けしますが、デモサイトのテキストボックスに貼り付けなおせば、きちんと表示されます。
- テキストボックス上で文字を選択すると、下部の表に「文字の構成」と「どのようにエンコードされているか」が表示されます。
仕組み
- Scatcode では各文字が「ドメイン」に所属します。例えば Sitelen Pona のドメインは sitelenpona.gimite.net です。
- Scatcode では Unicode のタグ文字と呼ばれる特殊な文字を埋め込むことで、文字列のドメインを切り替えることができます。
- Scatcode のドメインは、そのドメインの /scatcode.json (例) によって定義されます。 /scatcode.json には、そのドメインの文字に対応した Web フォントなどが書かれています。
- この仕組みにより、 (その気になれば、ではありますが) ドメインとフォントを用意することで、誰でも文字を追加できます。
- デモサイト (で使われている React コンポーネント
<ScatcodeText>,<ScatcodeTextArea>) は文字列中のタグ文字からドメイン名を取り出し、そのドメインの /scatcode.json を読み込み、そこに記述された Web フォントを読み込み、以降の文字列にそのフォントを適用することで、 Scatcode の文字列を表示します。 - 詳細は Github を見てください。