UAX #27

Unicode

[1] Unicode (ユニコード) は、世界中の様々な文字記号を含む符号化文字集合と、 その運用のための正規化照合順序等の規定によって構成される文字コード規格です。

[20] Unicode計算機関係の企業によって構成される標準化団体 Unicode Consortium による The Unicode Standard において規定されています。

[44] 団体や同団体による関連仕様については、 Unicode Consortium を参照。

仕様書

[35] 中心となる仕様書The Unicode Standard です。 かつては書籍として販売されていましたが、現在では無料で PDF を入手できます。 The Unicode Standard

[36] 周辺仕様群は UTS / UTR として HTML で出版されています。文字の特性その他のデータは UCD としてテキストファイルで配布されています。

[27] 仕様書ではないですが、 Unicode® Technical Notes というシリーズもあります。

Unicode と ISO/IEC 10646

[21] ISO/IEC による国際標準である ISO/IEC 10646 が規定する UCS は、符号化文字集合としては実質的に Unicode と同じです。 (「実質的」にというのは、理論上は UCS の方が Unicode より多くの文字符号化できる余地があるからです。) ISO/IEC JTC1/SC2/WG2Unicode ConsortiumUTC は共同で標準化作業を行っています。

[15] 標準化団体同士の協力関係だけでなく、中心メンバーも重複しているようです。
[81] ISO/IEC国家を基本単位とする国際的な標準化団体で各国代表が審議に参加し、 Unicode Consortium企業コンソーシアムIT業界の主要企業 (主に米国企業) で構成されるという違いがあります。

[23] 当初は ISO/IEC 10646The Unicode Standard は実質同じものを規定するだけで別の仕様でしたが、 現在では ISO/IEC 10646 が一部の規定で The Unicode Standard を参照していたり、 UNICODE という名前の文字集成を定義していたりします。 改正のたびに ISO/IEC 10646 から The Unicode Standard への依存性が強まっています。

[82] 世界各地の多くの文字符号化が完了して各国の関心は低下しており、 ISO/IEC 側の影響力も実務能力も下がっていて、 Unicode 側の決定を追認するだけの傀儡に近づいています。

[24] Unicode の方は The Unicode Standard に各文字について詳細な解説が含まれるだけでなく、 UAX, UCD などとして実装のために必要な情報を大量に公開し、 自由に利用できるとしています。 その内容のほとんどは Unicode 独自のものであり、 ISO/IEC 10646 には含まれていません。 ISO/IEC 10646文字例示字形を示す程度のことしかしていません。 ISO/IEC 10646 単体で実用レベルまで実装するのは不可能です。

[25] 最近の IETFW3C の仕様は、大抵は ISO/IEC 10646 ではなく The Unicode Standard を参照しています。 現在でも ISO/IEC 10646 を参照する必要があるのは、 政府機関のシステム要件など政治的なしがらみがある場合くらいのものです。 Unicodeの版, ISO/IEC 10646の版

[14] The Unicode StandardISO/IEC 10646 の改訂には時間差があります。 どちらのどの版がおおよそどの版までとは言えますが、厳密な対応関係は無いようです。 The Unicode Standard の改正は毎年のように機動的に行われていますが、 ISO/IEC の審議には時間がかかります。 世間のニーズに敏感に反応できるのは Unicode の方だけです。

[83] 例えば元号合字の追加は令和改元直後に The Unicode Standard が改正されましたが、 ISO/IEC ではタイムリーに行えたのは追加を委員会で承認するところまでで、 実際の改正までかなり時間がかかっています。 元号合字

[30] 仕様書構成としての関係性は The Unicode Standard も参照。

対応国内規格

[22] Unicode そのものに対応する JIS はありませんが、 ISO/IEC 10646 に対応する JIS として JIS X 0221 があります。ただし数年に一度しか更新されないため、 基本的に古い内容です。 The Unicode Standard より更新が遅い ISO/IEC 10646 を更に年単位で遅れて翻訳したものです。

[39] 文字コードに限らず情報系分野全般に言えることですが、 JIS には影響力が無いだけでなく内容が古いので、参考にもなりません。 人によっては最新の英語の仕様より少し古くても日本語で読みたいと思うかもしれませんが、 新版で変更されたり修正されたりしている古い規定が含まれていることも多いので、 JIS の存在はむしろ有害です。

[31] JIS X 0221ISO/IEC 10646 に含まれる事項を翻訳しただけなので、 ISO/IEC 10646 が単独実装不能なのと同様、 JIS X 0221 も単独実装不能です。 Unicode を知りたいなら、 日本語だからといって JIS X 0221 を読んでも意味がありません。

[32] JIS 以外の各国規格もありますが、事情は同様です (ISO 改正への追随頻度は国によって違います)。 ISO/IEC 10646

ISO/IEC 10646 のせいでおかしくなった Unicode

[65]DIS 10646 を支持する人は Unicode と統合されて ISO 10646 がおかしくなったような言い方をしますが、 ISO 10646 との統合で Unicode が劣化した部分もあります。

鏡像文字名前 書字方向依存グリフ

Unicode の版

[26] Unicodeの版は厄介な問題です。 Unicodeの版

符号化方式

[37] 文字コードに関する参照処理モデルに従えば、任意の文字コードUnicode符号化方式の一種とみなすことができます。また、 Encoding Standard文字符号化Unicode符号化または復号するアルゴリズムとして定義しています。

[38] そのような広義の Unicode符号化方式ではなく、専ら Unicode (または ISO/IEC 10646) の符号化文字集合符号化を目的とした符号化方式も数多く存在します。

ここに示したものの他に、それぞれのバリエーションも色々あります。

[40] しかしながら、過去のしがらみが無い場合には、専ら UTF-8 を用いるのが好ましいと現在では考えられるようになってきています。

[47] 符号化方式に関連して、次の概念があります。

符号点

[41] Unicode には、 U+0000-U+10FFFF符号点 (符号位置) があります。

U+Unicode 符号位置16進数表記を表す記号です。

[42] しかしそのすべてに文字が割り当てられているわけではありません。 大部分にはまだ文字が割り当てられていません (将来の改訂で文字が割り当てられる可能性があります)。

[43] また次のような特別な符号点もあります。

[33] Unicode の特別な符号点

Unicode / UCS の部分集合

[45] 次の部分集合が定義されています。

文字集合

[46] Unicode には色々な文字が収録されています。

[57] Unicode は世界中の文字を収録しているとよくいわれますが、 含まれないものも多いです。 外字

字形

代表字形

独自割当

[66] 相互運用性の問題は個々にいろいろありますが、 文字の割当のレベルでもいろいろあります。

[67] Unicode 符号化文字集合相互運用性

[68] 初期 Unicode では O-zone [ U+A000, U+DFFF ] が未使用のまま空いていたので、 都合よく使えそうな領域として狙われていたのですね。

[69] 00162 | ⿰亻庚 | WS2021v5.0, https://hc.jsecs.org/irg/ws2021/app/?id=00162

This character is also needed as the personal name character in ROK, which is included in one modern internal system in ROK as U+A0100.

[70] >>69 「one modern internal system in ROK」というのが何かわからないが (名前を出していないのは非公開だから?)、 GB 18030 以外にも空き領域を勝手に使っているシステムが動いてるということか。 同じサイトでこの文言で検索するといくつか出てくるが、他の例は U+Fhhhh

[77] ⿰壬奐: zi.tools, https://zi.tools/zi/%E2%BF%B0%E5%A3%AC%E5%A5%90?secondary=character_set&set=K%E6%B3%95%E9%99%A2

[78] >>77 に示された

Character code system used by the Supreme Court of South Korea (as of 2023-02-01) 韓國最高法院漢字系統用字

は A0000 - A02DA, F0000 - F34BD の文字を示しています。 Unicode符号位置だとすると後者は PUA ですが、前者は勝手割当でしょうか?

[80] そしてその >>78 に含まれる文字の1つ、 A0100 >>79 がまさに >>69 ですね。

[71] GJKV 全部勝手に使ってて草、T もそういうのやってるんか?

レンダリング

[50] 文字のレンダリング参照。

Unicodeアルゴリズム

[59] Unicodeアルゴリズム (algorithm) は、 Unicode文字が関わる指定された結果を達成するために使う処理の論理的記述です。 要求される結果の正確な論理的記述を実現しつつ、 その論理的記述の段階を正確になぞることなく自由に実装できるようにするべく、 意図的に緩い定義となっておる、 とされます。 >>48 D17

[60] 名前付き (named) Unicodeアルゴリズム (algorithm) は、 The Unicode Standard や他の Unicode Consoritum が出版した規格で規定され、 参照しやすいように明示的な名前が与えられた Unicodeアルゴリズムです。 >>48 D18

[61] The Unicode Standard では、 名前付きUnicodeアルゴリズムtitlecase で呼んでいます。 >>48 D18

[62] 外部から名前付きUnicodeアルゴリズムを参照するときは、 Bidirectional AlgorithmUnicode Bidirectional Algorithm のように、 頭に「Unicode 」と付けてわかりやすくしても構いません。 >>48

[63] 頭字語の略称で呼ばれるものもあります。 >>48

[64] 名前付きUnicodeアルゴリズム

上位層プロトコル

[28] Unicode のいくつかの挙動は、 上位層プロトコルの規定に委ねられています。 Unicode にとっての上位層プロトコルとは、 Unicode文字列を扱うプロトコルデータ形式 (マーク付け言語スタイル言語)、 アプリケーションなどを指しています。

[34] 上位層プロトコル (higher-level protocol) は、 Unicode文字の解釈に関して The Unicode Standard適用範囲を超えて拡張する任意の合意です。 >>48 D16

[49] かかる合意は、 データ中で形式的に広告する必要はなく、 文脈により暗示されるものであっても構いません。 >>48 D16

[58] Unicodeアルゴリズムは、 適合する上位層プロトコルに認められる範囲を制限することがあります。 >>48 D16

[29] 上位層プロトコルへの委任

メモ

[52] かつては

When the world wants to talk, it speaks Unicode.

標語としていました。 Unicode ConsortiumWebサイトにも掲載されていました >>53 が、21世紀に入る前に削除されたようです。

[11] 私は (名無しさん 2004-03-30 05:45:12 +00:00)

[12]

The number of characters used for human communication desn't seem to be rising much, and there's plenty of space left in the current specification. IIRC Unicode still uses less than 200,000 of the million-odd possible code points.

Famous last words. From my handy dead-tree copy of Unicode 2.0, page 2-4, under the "Full Encoding heading":

There are over 18,000 unassigned code positions that are available for future allocation. This number far exceeds anticipated character encoding requirements for all world characters and symbols.

Cough, cough. It is nearly a universal truth that things tend to expand to fill the available space (and/or time). Why do you (apparently) think that Unicode is exempt?

I suppose you could argue that Unicode adds alphabets. But do you think Unicode still hasn't reached the 20% mark?

They add more than "alphabets", and that's part of the problem. Again quoting Unicode 2.0 (page 1-3 this time):

Graphologies unrelated to text, such as musical and dance notations, are outside the scope of the Unicode Standard.

Yeah, right. What did the Unicode Consortium add in 3.1? -- musical notation. So, as I said, I will not (anymore) be surprised when the Unicode Consortium adds (literally) chicken scratching, probably shortly after they add (if they haven't already) dance notation (human and otherwise), every possible organic chemistry carbon ring symbol, Feynman diagrams, CAD/CAM symbols, traffic sign symbols, trademarks, logos, etc. ad nauseum. N.B. no smiley. [that reminds me; they'll probably add all of the smiley variants too (if they haven't already)]

I was once a Unicode fan -- the above quotations from earlier Unicode Standards and "The Ten Unicode Design Principles" that were also in the earlier standards were sound principles. Unfortunately the Unicode Consortium appears to have abandoned many of those principles.

Re: UTF-8 versions (was: Re: RFC 2047 and gatewaying), Bruce Lilly, 2003年1月 (ietf-822 投稿)。

(名無しさん [sage])

[13] mid:3E219D4B.9060608@Sonietta.blilly.com

[16] Unicode 5.0 には、どうも文字列適合性に関する規定がないみたいです。 適合性の章 (3章) の中には、 D13 (非推奨文字の定義) に「非推奨の文字は使うべきではない」と書かれていたりして、 定義の中に適合性に関する規定とも読み取れるものが紛れ込んではいるのですが・・・。 3章は基本的には処理Unicode に対する適合性を規定するだけで、 文字列に関する適合性には触れていないみたいです。

[17] http://www.unicode.org/errata/ 見ると前のバージョンでは正常だった例示字形があとのバージョンでエンバグしたってのがめっちゃいっぱいあるんだけど、なんでそんなことすんのか理解に苦しむなー。 同じフォントで印刷しろよー。

[18] Unicode Terminology: English - Japanese ( ( 版)) http://www.unicode.org/terminology/term_en_ja.html

[19] Unicode Utilities: UnicodeSet ( ( 版)) http://unicode.org/cldr/utility/list-unicodeset.jsp?a=%5B%3AtoNFKC%3D%2F%5C%25%2F%3A%5D&g=

[51] The Unicode Archives () http://unicode.org/pipermail/unicode/

[54] Unicode 10.0.0 () http://www.unicode.org/versions/Unicode10.0.0/

[55] Unicode Mail List Archives () http://unicode.org/mail-arch/

[56] draft-faltstrom-unicode11-00 - IDNA2008 and Unicode 11.0.0 () https://tools.ietf.org/html/draft-faltstrom-unicode11-00

[72] Xユーザーのryo-aさん: 「@Zwegabin これに関しては「世の中に存在するグリフを全部収録してやる」というUnicodeの思想が強い気もします。実際にガラケーで使用されていた実績があるので収録に繋がったのかなと。 (じゃあKPS 9566の"金正恩"はなんで収録されとらんのだというと難しいところですが……)」 / X, , https://twitter.com/geo_vitya/status/1788256386591367357

[73] >>72 そんな「Unicodeの思想」なんてなくない? 少なくても「グリフを全部収録」は目指してないよね。 Unicode が符号化してるのは「文字」だけだから。

[74] 将軍様専用文字の反例もそうだし、絵文字の中でも EMOJI COMPATIBILITY SYMBOL たちはどこかに消えてなくなってしまったのだから、 「文字を全部収録」はやっぱり目指してないんじゃないの?

[75] 熱心な人が Unicode 界隈にたまたまいる分野は収録されるけどそれ以外は放置プレイされがちな印象があるなあ

[76] 有名な古代文字は符号化されてるのにマイナーな地方文字は提案されても証拠不十分で放置だったりするしなあ。 提案されててもそんな感じだから、誰かが持ち込まないものはどれだけ「存在」してても相手にもしてもらえないし。 「思想」はないでしょ。