0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ruby 4.0 で Unicode 17.0 に対応した

Posted at

Ruby 4.0 で,String や Regexp が Unicode 17.0 に対応したという。
ええと,Unicode 17 て何がどうなったんだっけ?

たとえば「サウジアラビア・リアル」と呼ばれる通貨記号(U+20C1)が追加されたのだそうだ。
こういうやつ:

Saudi_Riyal_Symbol.png

正規表現のプロパティー指定 \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 の話をしていたはずだが……。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?