Ruby 4.0 で,String や Regexp が Unicode 17.0 に対応したという。
ええと,Unicode 17 て何がどうなったんだっけ?
たとえば「サウジアラビア・リアル」と呼ばれる通貨記号(U+20C1)が追加されたのだそうだ。
こういうやつ:
正規表現のプロパティー指定 \p{ } で一般カテゴリー「Sc (Currency Symbol)」に当てはまるかどうか見てみよう。
Ruby 3.4.8 の場合:
$ ruby -e 'p "\u20C1".match?(/\p{Sc}/)'
false
Ruby 4.0.0-preview3 の場合:
$ ruby -e 'p "\u20C1".match?(/\p{Sc}/)'
true
ところで,この記号,どうしてこういう形をしているのか。
これは「リヤル」のアラビア語表記 ريال を図案化したものだ。
アラビア文字のルクア体という書体では,يا の下部にある点々を短い横棒で書く。
これが分かれば,この通貨記号は يال に長い横棒をクロスさせたものだ,ということが分かるだろう。
この長いほうの横棒は ر を直線状に伸ばしたものだが,これがこの位置にあることによって,全体として,¥ や € や ₩(ウォン)のような「二重線がクロスした感じ」を醸し出している。
ええと,Ruby 4.0 の話をしていたはずだが……。
