楔形文字のラテン文字表現のことをTransliteration、翻字といいます。 たとえばギルガメシュの名前を𒀭𒄑𒂅𒈦のかわりにdGIŠ.GIM2.MAŠと書くようなやつです。ここではd、GIŠ、GIM2、MAŠが4つの楔形文字それぞれを示しています。
でもこれ、ちゃんと書こうと思うとけっこうめんどくさいですよね。Šとかḫとかアクセントつきの文字が出てくるし、上付き文字や下付き文字もあるし。アッカド語の翻字だとdGIŠ.GIM2.MAŠ ša2 naq-ba i-mu-ru iš-di ma-a-tiみたいな感じでシュメログラムは立体、アッカドグラムは斜体で表示したりしたいし……。
そういうわけで、翻字の変換プログラムをつくってかんたんに入力できるようにしています。例えばこんな感じのやつです。
# 翻字変換くん(仮)
# 使い方
inputの欄に{d}LUGAL.MES2
と入力すると、ResultのところにdLUGAL.MES2と出てきます。これは実際に動作するサンプルです。入力欄を書き換えてみてください。
入力欄の下のラジオボタンは変換動作をきりかえるやつです。
# Sumerian/Akkadian
Akkadianにすると、大文字は立体に、小文字は斜体に表示します。htmlでは大文字を<em>
タグで包んでcssでスタイルをあてて表現しています。
# a a₂ a₃ / a á à
2番目と3番目の文字をアクセントで表記するか添字で表記するかを選択できます。
# unicode sub/superscript / <sub></sub><sup></sup>
上付き文字、下付き文字をユニコードの文字で表現するか、htmlの<sup>
<sub>
で表現するかの選択です。ユニコードだけで表現できるとついったーとかタグを使えない環境に書き込むのに便利ですよね。ただし上付き文字をユニコードで表現できるのはdとかkiとかの一部の文字だけで、gišとかはどちらを選択しても<sup>
タグでの表現になります。
# 特殊文字
c
はšに、j
はŋに置き換えられます。ETCSLとかCDLIではこういう翻字をしてますよね。そのほかにもいろいろ定義しています。
変換表はこんな感じ。
ascii | unicode |
---|---|
c | š |
sz | š |
s, | ṣ |
t, | ṭ |
t_ | ṯ |
j | ŋ |
g~ | g̃ |
h | ḫ |
h, | ḥ |
a^ | â |
a^ | â |
i^ | î |
u^ | û |
o^ | ô |
e^ | ê |
a~ | ā |
i~ | ī |
u~ | ū |
o~ | ō |
' | ʿ |
` | ʾ |
とりあえず便利ツールの伝統に則って仮の名前をつけてみたわけですが、 ここに載せてるのはありあわせでつくったやつなので今度ちゃんとUIをとりつくろっていい感じにしたいですね。
# CSSについて
出力されるhtmlでは<span>
タグにsumero-transliteral
とかakkado-transliteral
とかのクラスをつけています。このクラスを使ってこのブログでは下記のようなCSSでスタイルをあてて表示しています。フォントのMarkazi Text (opens new window) はEB Garamond (opens new window)はどちらもグーグルのWEBフォントを使って表示しています。
このCSSは記事の執筆当時のもので、現在のものとは変わっている場合があります。
翻字に使われる文字がなるべくきれいに表示できるフォントを選んでいますが、g̃(gのうえに波線)の文字だけはMarkazi Textでは正しく表示できないので、変えるかもしれません。
.sumero-transliteral
font-size: 130%
font-family 'Markazi Text', serif
.akkado-transliteral
font-family 'EB Garamond'
font-style italic
font-size 120%
em
font-family 'Markazi Text', serif
font-size 130%
font-style normal
sup
font-family 'Markazi Text', serif
font-size 80%
font-style normal
# @uyum/markdown-it-translit
このブログはVuepress (opens new window)をベースに作っていて、VuepressではマークダウンからHTMLへの変換にMarkdown-it (opens new window)を使っています。
そういうわけで、この変換はmarkdown-itのプラグインとして実装しています。npm (opens new window)にも公開しています。