楔形文字のラテン文字表現のことをTransliteration、翻字といいます。 たとえばギルガメシュの名前を𒀭𒄑𒂅𒈦のかわりにGIŠ.GIM₂.MAŠと書くようなやつです。ここではGIŠGIM₂MAŠが4つの楔形文字それぞれを示しています。

でもこれ、ちゃんと書こうと思うとけっこうめんどくさいですよね。Šとかとかアクセントつきの文字が出てくるし、上付き文字や下付き文字もあるし。アッカド語の翻字だとGIŠ.GIM₂.MAŠ ša₂ naq-ba i-mu-ru iš-di ma-a-tiみたいな感じでシュメログラムは立体、アッカドグラムは斜体で表示したりしたいし……。


そういうわけで、翻字の変換プログラムをつくってかんたんに入力できるようにしています。例えばこんな感じのやつです。

#翻字変換くん(仮)

result
ᵈLUGAL.MÉS
<span class="sumero-transliteral">ᵈLUGAL.MÉS</span>

#使い方

inputの欄に{d}LUGAL.MES2と入力すると、ResultのところにᵈLUGAL.MES₂と出てきます。これは実際に動作するサンプルです。入力欄を書き換えてみてください。

入力欄の下のラジオボタンは変換動作をきりかえるやつです。

#Sumerian/Akkadian

Akkadianにすると、大文字は立体に、小文字は斜体に表示します。htmlでは大文字を<em>タグで包んでcssでスタイルをあてて表現しています。

#a a₂ a₃ / a á à

2番目と3番目の文字をアクセントで表記するか添字で表記するかを選択できます。

#unicode sub/superscript / <sub></sub><sup></sup>

上付き文字、下付き文字をユニコードの文字で表現するか、htmlの<sup> <sub>で表現するかの選択です。ユニコードだけで表現できるとついったーとかタグを使えない環境に書き込むのに便利ですよね。ただし上付き文字をユニコードで表現できるのはとかᵏⁱとかの一部の文字だけで、gišとかはどちらを選択しても<sup>タグでの表現になります。

#特殊文字

cšに、jŋに置き換えられます。ETCSLとかCDLIではこういう翻字をしてますよね。そのほかにもいろいろ定義しています。

変換表はこんな感じ。

asciiunicode
cš
szš
s,
t,
t_
jŋ
g~
h
h,
a^â
a^â
i^î
u^û
o^ô
e^ê
a~ā
i~ī
u~ū
o~ō
'ʿ
`ʾ

とりあえず便利ツールの伝統に則って仮の名前をつけてみたわけですが、 ここに載せてるのはありあわせでつくったやつなので今度ちゃんとUIをとりつくろっていい感じにしたいですね。

#CSSについて

出力されるhtmlでは<span>タグにsumero-transliteralとかakkado-transliteralとかのクラスをつけています。このクラスを使ってこのブログでは下記のようなCSSでスタイルをあてて表示しています。フォントのMarkazi TextEB GaramondはどちらもグーグルのWEBフォントを使って表示しています。

このCSSは記事の執筆当時のもので、現在のものとは変わっている場合があります。

翻字に使われる文字がなるべくきれいに表示できるフォントを選んでいますが、g̃(gのうえに波線)の文字だけはMarkazi Textでは正しく表示できないので、変えるかもしれません。

css
.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をベースに作っていて、VuepressではマークダウンからHTMLへの変換にMarkdown-itを使っています。

そういうわけで、この変換はmarkdown-itのプラグインとして実装しています。npmにも公開しています。