エスペラントはアルファベット26文字のうち22文字を使う。 残りの4文字(q, w, x, y)は原則として使わず、 字上符という記号をつける。一つは^、もう一つはvである。 ^はc, g, h, j, s に、v は u に付く。
しかし、字上符をつけた活字を表示するのは大変だ。 そこでタイプライターやコンピュータでは、便宜的に字上符をxで表現してきた。
最近、コンピュータ上で字上符付きのフォントが表示できるようになった。 そこで、今まで cx や ux という表現をしてきたページを、 インターネット上で字上符表示できるようにする。 以下、それを実現するスクリプトである。。
ARGF.each {|line|
line.gsub!(/Cx/, 'Ĉ')
line.gsub!(/cx/, 'ĉ')
line.gsub!(/Gx/, 'Ĝ')
line.gsub!(/gx/, 'ĝ')
line.gsub!(/Hx/, 'Ĥ')
line.gsub!(/hx/, 'ĥ')
line.gsub!(/Jx/, 'Ĵ')
line.gsub!(/jx/, 'ĵ')
line.gsub!(/Sx/, 'Ŝ')
line.gsub!(/sx/, 'ŝ')
line.gsub!(/Ux/, 'Ŭ')
line.gsub!(/ux/, 'ŭ')
print line
}
実行結果は次のとおり。実行後は、ブラウザによる表示結果である。
実行前
Cx cx Gx gx Hx hx Jx jx Sx sx Ux ux
実行後
Ĉ ĉ Ĝ ĝ Ĥ ĥ Ĵ ĵ Ŝ ŝ Ŭ ŭ
インターネットではこの表現が多い。u だけは字上符が v なので、~ を使っている。 このときは、^ はエスケープするのがよい。正規表現で ^ が使われるからだ。
u も 他の文字と同じく ^ を使う場合がある。
gsub(/([CcGgHhJjSsUu]\^)/, 'C^'=>"\u0108", 'c^'=>"\u0109", 'G^'=>"\u011c", 'g^'=>"\u011d", 'H^'=>"\u0124", 'h^'=>"\u0125", 'J^'=>"\u0134", 'j^'=>"\u0135", 'S^'=>"\u015c", 's^'=>"\u015d", 'U^'=>"\u016c", 'u^'=>"\u016d")
を使えばよい。
まりんきょ学問所 > Ruby の浮き輪 > cxux 表現から字上符表現へ