Unicodeの三角形ってどうなってるんだっけ? と思ったので一覧を作成してみました。
Emacsでは C-x 8 RET triangle などと入力すれば(使っている補完インタフェースにもよりますが)色々出てくるわけですが、それだと4方向分が一緒くたになっているので分かりづらいのです。なので、方向を除いたベースとなる名前が一行にまとまるように表を作ってみました。
(let ((triangle-types ;; 次の条件を満たすUNICODE文字を列挙する。 ;; - 名前にTRIANGLEが含まれてる ;; - 名前に{LEFT|UP|RIGHT|DOWN}-POINTINGが含まれている ;; 結果はalist ((三角形名 . ((方向名 . コード)...))...) の形にする。 (cl-loop with triangle-types = nil for name being the hash-keys of (ucs-names) using (hash-values code) ;; ←これ書きづらいんだけど何とかならないの? when (and (string-match-p "TRIANGLE" name) (string-match "\\`\\(.*\\)\\(LEFT\\|UP\\|RIGHT\\|DOWN\\)\\(-POINTING .*\\)\\'" name)) do (let ((base-name (concat (match-string 1 name) "*" ;; 方向の部分は * に置き換える。 (match-string 3 name))) (dir (match-string 2 name))) (setf (alist-get dir (alist-get base-name triangle-types nil nil #'equal) nil nil #'eql) code)) finally return triangle-types))) ;; 表の形に文字列化する。 (let ((dir-names '("LEFT" "UP" "RIGHT" "DOWN"))) (concat "|NAME|" (mapconcat #'identity dir-names "|") "|\n" "|-\n" (cl-loop for (name . dirs) in (nreverse triangle-types) concat (concat "|" name "|" (cl-loop for dir in dir-names for code = (alist-get dir dirs nil nil #'equal) concat (if code (format "%X %c" code code) "-") concat "|") "\n")))))
(例によってこの文書はorg-modeで書かれているので、コードブロックを評価すれば自動的に↓が文書中に挿入されるわけです ( :exports both :results raw replace value
を指定) )
NAME | LEFT | UP | RIGHT | DOWN |
---|---|---|---|---|
BLACK *-POINTING DOUBLE TRIANGLE | 23EA ⏪ | 23EB ⏫ | 23E9 ⏩ | 23EC ⏬ |
BLACK *-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR | 23EE ⏮ | - | 23ED ⏭ | - |
BLACK *-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR | - | - | 23EF ⏯ | - |
BLACK MEDIUM *-POINTING TRIANGLE | 23F4 ⏴ | 23F6 ⏶ | 23F5 ⏵ | 23F7 ⏷ |
BLACK *-POINTING TRIANGLE | 25C0 ◀ | 25B2 ▲ | 25B6 ▶ | 25BC ▼ |
WHITE *-POINTING TRIANGLE | 25C1 ◁ | 25B3 △ | 25B7 ▷ | 25BD ▽ |
BLACK *-POINTING SMALL TRIANGLE | 25C2 ◂ | 25B4 ▴ | 25B8 ▸ | 25BE ▾ |
WHITE *-POINTING SMALL TRIANGLE | 25C3 ◃ | 25B5 ▵ | 25B9 ▹ | 25BF ▿ |
WHITE *-POINTING TRIANGLE WITH DOT | - | 25EC ◬ | - | - |
*-POINTING TRIANGLE WITH LEFT HALF BLACK | - | 25ED ◭ | - | 29E8 ⧨ |
*-POINTING TRIANGLE WITH RIGHT HALF BLACK | - | 25EE ◮ | - | 29E9 ⧩ |
HEAVY WHITE *-POINTING TRIANGLE | - | - | - | 26DB ⛛ |
BLACK MEDIUM *-POINTING TRIANGLE CENTRED | 2BC7 ⯇ | 2BC5 ⯅ | 2BC8 ⯈ | 2BC6 ⯆ |
*-POINTING RED TRIANGLE | - | 1F53A 🔺 | - | 1F53B 🔻 |
*-POINTING SMALL RED TRIANGLE | - | 1F53C 🔼 | - | 1F53D 🔽 |
BLACK *-POINTING ISOSCELES RIGHT TRIANGLE | 1F780 🞀 | 1F781 🞁 | 1F782 🞂 | 1F783 🞃 |
シンプルな一つの三角形で4方向揃っているものに限定すると次の7種類になります。
NAME | LEFT | UP | RIGHT | DOWN |
---|---|---|---|---|
BLACK MEDIUM *-POINTING TRIANGLE | 23F4 ⏴ | 23F6 ⏶ | 23F5 ⏵ | 23F7 ⏷ |
BLACK *-POINTING TRIANGLE | 25C0 ◀ | 25B2 ▲ | 25B6 ▶ | 25BC ▼ |
WHITE *-POINTING TRIANGLE | 25C1 ◁ | 25B3 △ | 25B7 ▷ | 25BD ▽ |
BLACK *-POINTING SMALL TRIANGLE | 25C2 ◂ | 25B4 ▴ | 25B8 ▸ | 25BE ▾ |
WHITE *-POINTING SMALL TRIANGLE | 25C3 ◃ | 25B5 ▵ | 25B9 ▹ | 25BF ▿ |
BLACK MEDIUM *-POINTING TRIANGLE CENTRED | 2BC7 ⯇ | 2BC5 ⯅ | 2BC8 ⯈ | 2BC6 ⯆ |
BLACK *-POINTING ISOSCELES RIGHT TRIANGLE | 1F780 🞀 | 1F781 🞁 | 1F782 🞂 | 1F783 🞃 |
基本は「BLACK *-POINTING TRIANGLE▲」と「WHITE *-POINTING TRIANGLE△」ですね。これらはJIS X 0213にも入っています(JIS X 0208の段階では上下のみ)。私の使っている環境ではstring-width関数やchar-width関数は2を返します(設定によるかもしれません)。文書中に書くのは普通はこれですが、箇条書きの先頭(bullet)に使うには大きすぎて使いづらいです。
「BLACK MEDIUM *-POINTING TRIANGLE⏶」は少し特殊で、どうも(再生ボタン等の)メディアUIで使うことを意図しているみたい?
「BLACK *-POINTING SMALL TRIANGLE▴」と「WHITE *-POINTING SMALL TRIANGLE▵」は単純に小さいというだけ?
「BLACK MEDIUM *-POINTING TRIANGLE CENTRED⯅」は「BLACK MEDIUM *-POINTING TRIANGLE」と何が違うのか。単に中くらいのが欲しいならコレ?
「BLACK *-POINTING ISOSCELES RIGHT TRIANGLE🞁」は直角二等辺三角形です。最近はこれをorg-modeの見出しのマークとして使っています。開閉で見た目を変化させているので、閉じているときは🞂で開いているときは🞃にしています。
基本的なものだけでもこれだけあるわけですが、イマイチ使い分けがよく分かりません。子どもの頃漢字成り立ち辞典というのを持っていましたが、Unicode成り立ち辞典が欲しい。
他にも探せば三角形っぽいものは沢山あるみたいです。「BLACK * POINTING POINTER►」や「WHITE * POINTING POINTER▻」なんかは比較的上に挙げたものと同列に扱えそうです(2方向だけですが)。一方で三角形の形をした文字というのも多数あって、典型的なのはデルタΔですが、ここまでくるとどこまで「三角形」と呼ぶのかを考える必要があるでしょう。
それで、なんでこんなことをいきなり調べ始めたかというと、私のEmacsではこの辺りの記号が正しく表示できておらず、普段使っているフォントをFontForgeでいじって字形を調整している最中だからです。