名前付き文字列

名前 (文字コード)

[10] Unicode および近年の公的文字コード規格は、文字ラテン文字その他による名前 (name) を割り当てています。 文字名前は、文字を一意に特定するもので、複数の符号化文字集合に属する文字同士の等価性は、 文字名前が一致するか否かに拠るとされています。

[59] 例えば「A」の名前LATIN CAPITAL LETTER A です。

仕様書

[11] 文字名前について横断的に定義した仕様は存在しませんが、事実上唯一現存する符号化文字集合である Unicode における名前の定義 (>>9) が最も規範的なものと考えられますし、 最も詳細に説明もされています。次節に示すように、 各種符号化文字集合規格にもそれぞれの定義が含まれています。

意味

[30] Unicode において文字の名前 (character name) とは、文字Name 特性 (略称 na) の値のこと >>9 をいい、次のように定義されています。

[31] ハングル字母
符号位置から機械的に決定される、音節の組み合わせを表す名前です。 必要な情報は Jamo.txt に書かれています >>77
[32] 漢字 (CJK ideographs)
CJK UNIFIED IDEOGRAPH- または CJK COMPATIBILITY IDEOGRAPH- の後に16進数4桁または6桁の符号位置を続けた名前です。
Tangut ideographs, Khitan Small Script ideographs, Nushu ideographs
規則的に決められた名前です >>77
[34] 制御文字私用域サロゲート非文字、予約の符号位置
空文字列です。
[33] その他
UnicodeData.txt に書かれている名前です >>77

[35] 名前空文字列であることを「名前がない」ともいいます >>9

[51] 名前は、その文字の一般的な用法や形状を表しています。 しかし、名前はその文字の用法やグリフを制限することを意図したものではないと解されています。

[53] 例えば複数の用法を持つ文字では、その一部が名前に使われていたりします。 また、 bidi により鏡像化する文字なのに LEFTRIGHT名前に含まれていて、名前と表示が真逆になる文字すらあります。

[52] また、名前はあくまで符号化文字集合における文字の識別を目的としたもので、 その文脈を離れて一般的な文字の正式な名称を定めるものではないというのが通常の理解です。

構文

[20] Unicode文字名前は次の正規表現による擬似コードの条件すべてに一致する文字列とされています >>9

  • [16] /^[A-Z0-9\u0020-]+$/
  • [17] not /^[0-9]/ and not /\u0020[0-9]/
  • [18] not /^-/ and not /-$/ and not /--/
  • [19] not /^\u0020/ and not /\u0020$/ and not /\u0020\u0020/

[21] U+0020- が連続しているケースや、 - の有無によって別の文字を表すケースもあります。

[46] 長さの上下限はないようです。現時点で最短の名前は2文字です。略号を除けば4文字が最短かもしれません。

名前の比較

[117] 文字の名前比較の方法は UAX #44 で規定されています。 >>79

[119] 正規表現\p\N で使われます。

安定性

[15] Unicode文字名前文字名別名 (>>25)、 名前付き文字列名前 (>>26) は変更されることはなく、 また互いに異なる値である >>9 とされています。

[24] ただし過去には何度か変更されています。

[25] 文字の名前が割り当てられた後に誤りが発覚した場合、 文字名別名 (character name alias) が割り当てられます。 文字名別名文字の名前と同じ名前空間を共有していています。 >>9

[63] 名前付き文字列 (>>26) については削除された例 (>>61) があります。

図形文字の名前

[138] すべてのUnicode文字 (サロゲート符号点, 非文字, 未割当符号点, 私用文字, 制御文字を除く。) には名前が割当てられています。

[137] SPNBSP のように、図形文字であっても特殊な文字に対しては、 制御文字の場合 (>>45) のように略号が定められています。

[139] Unicode文字の名前ISO/IEC 10646文字の名前と一致しています。 ただし ISO/IEC 10646文字の名前は後に () と注釈が付いていることがあります。

[140] Unicode の現在の文字の名前Unicode 1.1 以来のものです。 Unicode 1.0文字の名前は多くが違っていました。 対応表は UCD に現在も収録されています。

[141] 概ね20世紀末 (平成時代初期頃) の ISO文字コード規格は ISO/IEC 10646 と共通の文字の名前を使っていました。 それ以前も似たような名前や説明を与えていましたが、 完全に体系化されたものにはなっていませんでした。

[142] 各国の国内規格もおおむね同様の状況ですが、 名前が各国語に翻訳されていたり、漢字のように名前がなかったりしました。 ISO/IEC 10646 にも仏語文字の名前があります。 (>>12 参照)

[143] 国際規格でも国内規格でもない Unicode 以前の文字コード (企業の独自符号など) には、たとえ仕様書のようなものがあったとしても、 文字の名前のようなものはないことが多いです。 ただ Unicode の時代になってからは変換表という形で Unicode文字の名前との対応関係が確立された場合が多いです。

[144] 国内規格Unicode にない文字に独自の名前を定めていることがあります。

[145] 公的な標準化団体の仕様以外で独自の文字の名前を定めている例もいくつかあります。

[146] 主要な文字の名前の定義:

怪しい名前

[64] Unicode に統一されつつあった時代の文字コード関連仕様は、 Unicode符号位置名前との関係を記述していますが、 たまに怪しいケースがありました。 (Unicode にない (または当時はなかった) 文字に独自の名前を割り当てている場合もありましたが、 それは除きます。)

[67] 代替名称 重複符号化

[69] JIS X 0213:2000Unicode にない文字に独自の名前を与えていました。 JIS X 0213:2004Unicode の名前に改正されました。 括弧付きUCS

[70] JIS X 4051:2004JIS X 0213:2000 の名前を使っていました。

[112] ARIB STD-B62JIS X 0213:2004代替名称を使っています。


[114] 文字の名前は変更しないことになっているので、 後に誤りとわかってもそのままになっていることがあります。

[115] 蘇州号碼はおかしな名前になっています。

[113] 合成用ハングル字母のうち4つは文字の名前が誤りとわかり、 ISO/IEC 10646:2003 Amd.5 で文字の名前の後に括弧書きの注釈を加える形で訂正されました。 KS X 1026-1 (8.2)


[132] 関連(しない): 怪しい日本語

名前付き文字列

[26] 文字の連続に対しても名前が割り当てられることがあり、 名前付き文字列 (named character sequence) と呼ばれています。 名前付き文字列文字の名前と名前空間を共有しています。 >>9

[136] Unicode / ISO/IEC 10646 の他には JIS X 0213 がいくつか規定しています。 JIS X 0213 のほとんどの名前付き文字列Unicode のものと等しいですが、 2つは違う名前です。 JIS X 0213

制御文字の名前

[29] UnicodeC0C1DELETE制御文字名前を与えていませんが、 別名としてそれらの符号位置制御文字名前を与えています >>9

[45] 制御文字やそれに近い特殊な文字にはラテン文字数字2~4文字の略号が定義されていることがありますが、 これも別名となっているようです。ただし LS0, LS1 のように含まれていないものもあるようです。

[48] ISO/IEC 6429 / JIS X 0211制御文字でないものも含め制御機能に対して同様の名前を定義しています。

[49] ISO/IEC 2022 / JIS X 0202エスケープシーケンスの一部に対して同様の名前を定義しています。

[128] 001.pdf, , https://itscj.ipsj.or.jp/ir/001.pdf#page=2

[129] >>128 この時代は TC10 のように下付き文字が使われていました。

[130] G0 のように符号要素数字下付きでした。

[131] null, , https://www.unicode.org/L2/L2011/11281-control-aliases.txt

符号位置ラベル

[36] 名前のない符号位置に関しても便宜上符号位置ラベル (code point label) が用意されています。 符号位置ラベル小文字ハイフン16進数で表されます。名前でないことを明確にするために <> で括っても良い >>9 とされており、 Unicode Character Database ではそのように表記されています。

[58] 名前符号位置ラベルで、 U+0000-U+10FFFF のすべての符号位置を表せます。

[37] 符号位置ラベルは4-6桁の符号位置を使って次のように表されます >>9

[57] 予約は、当然ながら文字が割り当てられれば使われない名前となります。 それ以外はおそらく今後変更されることはないと思われますが、それが保証されているのかはわかりません。

モード

[91] ISO/IEC 2022ISO/IEC 6429 は、 制御機能によって生じる状態のそれぞれにも、 文字の名前と同じような形式の名前が与えられています。

名前と言語

[12] ISO/IEC英語仏語の仕様書が存在するため、文字名称についても英語仏語の2種類が存在しています。

[96] ただし、 ISO/IEC 10646仏語版は本段落執筆時点で20年近く出版されておらず、 今後も再開の可能性はほとんどなさそうです。 ISO/IEC 10646

[13] Unicode英語名前を採用しており、ISO/IEC 10646英語名前と一致するとされています >>9

[100] 近年 Unicode仏語版の符号表も公開しています。 そちらでは仏語文字の名前が使われています。 >>98 仏語文字の名前規定の一部ではないとされています。 >>97 仏語文字の名前は公式な UCD に含まれていませんが、 符号表の元になったと思しきデータファイルが非公式に公開されています >>101, >>99 仏語版については The Unicode Standard

[14] JIS英語文字の名前の他に日本語通用名称を定義していますが、 前者が規定であるのに対し、後者は参考とされています。 日本語通用名称に特に命名規則は無いようで、文字の名前と直接の関係はありません。

[8] JIS C 0456:2005 (IEC 61286:2001 の翻訳規格ISO-IR 181 に相当) は附属書 CJIS X 0221 との対応が載っていますが、そこで UCS 側の文字名前まで日本語訳されています。

[102] 中華民国91年版の CNS 14649-1 (中華民国ISO/IEC 10646)文字の名前台湾漢語に翻訳していました。

[111] KS X 1026-1ISO/IEC 10646ハングル英語文字の名前韓国語の名前を併記しています。 KS X 1026-1

[104] CNS 14649:2017 は翻訳を諦めたようで、 オリジナルの英語の名前のままになっています。 (本文中では英語名に括弧付きで漢語名が付されていることもあります。)

[159] I.S. 434符号化文字集合左側ASCII右側が独自ですが、 規格票英語アイルランド語対訳形式で、 すべての図形文字SPACEDELETE文字の名前がそれぞれの言語で示されています。 SPACEDELETE には略号もあり、 DELETEアイルランド語では略しても DEL にはなりませんが、どちらも SP, DEL となっています。

[54] その他各国の規格では、規定または参考として自国の公用語の名前を挙げていることがあります。

[110] KS X 1001韓国語の名前を与えています。

[116] TCVN 6909越南語の名前を与えています。 TCVN 8271越南語の名前と英語文字の名前の両方を示しています。

[56] 実用上は Unicode が用いる英語の名前だけ考慮すれば十分です。 例えば正規表現文字の名前を与える場合、 Unicode名前が使われています。

一覧

[44] 文字の名前の一覧は Unicode Character DatabaseNamesList.txt に含まれています。

[47] CJK COMPATIBILITY IDEOGRAPHS は含まれていますが、 CJK UNIFIED IDEOGRAPHSHANGUL SYLLABLES は含まれていません。

[28] 文字名別名 (>>29制御文字名前>>45 の略号を含む。) の一覧は Unicode Character DatabaseNameAliases.txt http://www.unicode.org/Public/UCD/latest/ucd/NameAliases.txt に含まれています。

[27] 名前付き文字列の一覧は Unicode Character DatabaseNamedSequences.txt http://www.unicode.org/Public/UCD/latest/ucd/NamedSequences.txt に含まれています。

[135] 名前付き文字列の追加履歴も注釈として書かれていますが、 「このうちいくつかはその前からあった」のような書き方も混じっていて、 完全な履歴を負うには古いUnicodeの版のファイルを調べる必要があります。

[61] NamedSequencesProv.txt には、「まだ完全に承認されていない」 名前付き文字列の定義が含まれています >>62。更に、 以前定義 (承認) されていてその後削除された名前付き文字列が注釈として含まれています。

[134] 予備登録から本登録に至るまでの間に定義が改められることがあります。 例えば >>133 には現在本登録された名前付き文字列の古い定義を見ることが出来ます。

NamesList.txt

[73] NamesList.txt >>72 には文字の名前の情報が含まれています。

[74] その他符号表に含まれている、関係する他の文字の情報なども含まれています。 NamesList.html に構文の説明があります。 >>75

[106] このファイルは符号表 >>105 PDF の生成に使う元データとされます。

[107] このファイル >>76 の冒頭には次のように書かれています。

	This file is semi-automatically derived from UnicodeData.txt and
	a set of manually created annotations using a script to select
	or suppress information from the data file. The rules used
	for this process are aimed at readability for the human reader,
	at the expense of some details; therefore, this file should not
	be parsed for machine-readable information.

すなわち、 UnicodeData.txt とその他から自動生成されたもので、 機械可読情報の抽出のため構文解析するべきものではないというのです。

[108] ところが実際にはこのファイルは構文が定義されている >>75 (のでそれに従い利用できるよう整備されている) のですし、このファイルを使う応用も少なくないようです。

[109] そしてこのファイルには UnicodeData.txt にない情報も入っていて、 それが UCD の他のファイルには入っていないらしいのです。 (おそらくこのファイル生成用の元データファイルは非公開なのでしょう。)

鏡像文字

[4] 括弧のように左横書き右横書き字形が変わる文字は、 左横書き用の名前がついています。 書字方向依存グリフ

回転

[81] 元の字形回転、反転させた字形のとき、それを表す文字の名前がつけられることがあります。

[83] 次のような命名となっています >>82

[89] reversed に似て少し違う概念に鏡像化があります。

文脈

[93] Unicode符号点符号化済文字の記述 (参照) に使われます。 符号点

[71] 仕様書の参照以外にもプロトコル要素として使われることがあります。

[65] 文字の名前を使う場面

正規表現

[120] Unicode正規表現 \N, \p{name} >>118, \p{Named_Sequence}

[122] UTS #18: Unicode Regular Expressions ( ( 版)) http://www.unicode.org/reports/tr18/#Individually_Named_Characters

[123] charnames - search.cpan.org ( ( 版)) http://search.cpan.org/dist/perl/lib/charnames.pm

[124] perlunicode - Unicode support in Perl - Perldoc Browser, https://perldoc.perl.org/perlunicode#Comparison-of-%5CN%7B...%7D-and-%5Cp%7Bname%3D...%7D

[121] perlunicode - Unicode support in Perl - Perldoc Browser, https://perldoc.perl.org/perlunicode#Wildcards-in-Property-Values

[125] UTS #18: Unicode Regular Expressions, , https://unicode.org/reports/tr18/#optional_properties

歴史

[90] Standard ECMA-6 7-Bit coded Character Set, 6th Edition - December 1991, Reprinted in electronic form in August 1997, , http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-006.pdf#page=12

5.3 Names

This ECMA Standard assigns a unique name to each character. In addition, it specifies an acronym for each control character and for the characters SPACE and DELETE, and a graphic symbol for each graphic character. By convention, only capital letters, space and hyphen are used for writing the names of the characters. For acronyms only capital letters and digits are used. It is intended that the acronyms and this convention be retained in all translations of the text.

The names chosen to denote graphic characters are intended to reflect their customary meaning. However, this ECMA Standard does not define and does not restrict the meanings of graphic characters. Neither does it specify a particular style or font design for the graphic characters when imaged.

[5]

5.3 文字の名前
この規格は、各文字に一つの名前を割り当てる。 さらに、制御文字並びに SPACE (スペース) 及び DELETE (削除) について、その文字略号 (頭字語) を定義する。ここでは、文字名前は、 英大文字SPACE 及びハイフンだけで表現する。略号は、 英大文字及び数字を用いる。規格本体の各国語への翻訳でも、 略号及びこの記法は、保たれなければならない。 JIS X 0202:1998

[6]

4.3 名前
この規格では、規定するすべての文字に対して名前を割り当てる。 さらに、文字 SPACE (スペース) 及び文字 DELETE (抹消) に対する略号を規定する。 文字名前表記には、ラテン大文字 (AZ)、スペース及びハイフンだけを使用する。 略号には、ラテン大文字だけを使用する。

図形文字を示すために付けられた名前は、 文字の慣習的な意味を反映するようにしている。しかし、 この規格は、図形文字の意味を定義しないし、制限もしない。

参考 JIS X 0211 (符号化文字集合制御機能) で規定する制御機能略号には、 ラテン大文字及び数字だけを使用している。 JIS X 0201:1997

[66] JIS X 0208:1997

5.3 名前 この規格では, 規定するすべての文字に対して名前を割り当てる。さらに, 文字 SPACE( ペース) 及び文字 DELETE (抹消) に対する略号を規定する。文字名前表記には、ラテン大文字 (AZ), スペース及びハイフンだけを使用する。略号には, ラテン大文字だけを使用する。図形文字を示す ために付けられた名前は, 文字の慣習的な意味を反映するようにしている。ただし, 漢字の名前は, CJK UNIFIED IDEOGRAPH-XXXX と表す。ここで, XXXX は, JIS X 022116進表記2オクテット符号化 表現とする。

備考 この規格の漢字の区点位置の解釈 (6.6 参照) は, JIS X 0221 のそれと必ずしも同一ではない。

参考 JIS X 0211 で規定される制御機能略号には, ラテン大文字及び数字だけを使用している。

この規格は, 図形文字の意味及び用途を定義しないし, 制限もしない。

附属書6

e) CJK 文字の名前 (本体5.3参照)。ただし, 先頭の CJK UNIFIED IDEOGRAPH- は省略して示した。

[68] JIS X 0213:2000

5.3 名前 この規格では, 規定するすべての文字に対して名前を割り当てる。さらに, 文字 SPACE( ペース) 及び文字 DELETE (抹消) に対する略号を規定する。文字の名前表記には、ラテン大文字 (AZ), スペース及びハイフンだけを使用する。略号には, ラテン大文字だけを使用する。図形文字を示す ために付けられた名前は, 文字の慣習的な意味を反映するようにしている。ただし, 漢字の名前は, CJK UNIFIED IDEOGRAPH-XXXX 又は CJK COMPATIBILITY IDEOGRAPH-XXXX と表す。

備考1. XXXX は, JIS X 022116進表記2オクテット符号化表現とする。ただし, この規格には, JIS X 0221 に含まれていない文字も含まれている。これらの文字の名前及び2オクテット符号 化表現は, [NAME] 及び (XXXX) と括弧でくくって表し, 参考とする。

2. この規格における文字の解釈は, JIS X 0221 のそれと必ずしも同一ではない。この規格は, 図形文字の意味及び用途を定義しないし, 制限もしない。

[1]

文字の名前
この規格群は、すべての文字に意的な名前を付ける。 命名の基準は、次のいずれかとする。
  • a) 文字の慣例的な意味を示す。
  • b) 対応する図形記号の形を表す。
  • c) 中国、日本及び韓国 (CJK) 統合漢字については、 27. に示す規則に従う。

a) 及び b) の場合に、文字の名前を構成するために用いる指針を附属書 K (参考) に示す。 (JIS X 0221‐1:2001 6.4)

[3]

この規格群で規定する図形文字は、その名前で一意に識別する。名前が異なっていても、図形文字を可視化した図形記号が常に異なるわけではない。類似の図形記号をもつ図形文字の霊としては、 LATIN CAPITAL LETTER AGREEK CAPITAL LETTER ALPHA 及び CYRILLIC CAPITAL LETTER A がある。 (JIS X 0221‐1:2001 17. より)

[55] ISO/IEC 2022 (図形文字集合の一意な符号化参照):

このような文字は、二つの集合を定義する仕様又は ISO符号化文字集合の国際登録簿で同じ名前をもつ場合、 同じ文字とみなされる。

[92] ISO/IEC 6937:2001非spacing文字についてのみ、 ISO/IEC 10646 とは別系統の名前を与えていました。 非spacing文字

[157] ページ) - n2466-Resolutions.pdf, , https://www.unicode.org/irg/sc2/n2466-Resolutions.pdf#page=2

メモ

[2] >>1 で、 CJK 統合漢字や CJK 互換漢字の名前のどの辺が意的な名前なのでしょう。

[7] >>6 JIS X 0201 自体で定義されている文字が使われているのだと仮定すると、 スペースSPACEハイフンHYPHEN-MINUS に対応します。

[94] mashabowさんはTwitterを使っています 「Unicodeでは制御文字はcharacter nameなしなので、ASCIIの制御文字Bell (0x07) に対応するU+0007は文字名無しだった。で、ベルの絵文字U+1F514にそのままBELLって名前をつけちゃった。→ASCIIの文字名も使っていたPerlさん困惑」 / Twitter (, ) https://twitter.com/mashabow/status/206062205161050112

[95] perl5180delta - what is new for perl v5.18.0 - Perldoc Browser () https://perldoc.perl.org/perl5180delta#%5CN%7BBELL%7D-now-refers-to-U+1F514-instead-of-U+0007

[126] 00000001.PDF - 070.pdf, , https://itscj.ipsj.or.jp/ir/070.pdf

[127] >>126 これは ISO 6937 ベースの文字集合であるにも関わらず、 名前は ISO 6937 方式ではなく RA (ISOREG) 方式に従った、 と書かれています。 ISO-IR94集合については一応緩やかな基準を持って RA 側で一貫した名前を与えていたようですが、 それは他の ISO 国際標準とすら統一されていなかったのです。 というのが ISO/IEC 10646 以前の状況でした。

[158] BabelStone : BabelPad 16.x.x.x Release Notes, https://babelstone.co.uk/Software/BabelPad_16.html

Corrected the historic names for U+B77C (HANGUL SYLLABLE RA) through U+B9C7 (HANGUL SYLLABLE RIH) which used HANGUL SYLLABLE L- instead of HANGUL SYLLABLE R- for Unicode versions 2.0.14 through 2.1.8 inclusively.