[7] [DFN[[[Unicode Character Database]]]] は、 [[Unicode]] の[[文字]]に関するデータを集めた[[データベース]]です。
[[Unicode]] の仕様の一部を構成する[[規定]]のデータと、それ以外の[[参考]]のデータが共に含まれています。
[[UCD]] は [[Unicode Consortium]] により管理、配布されていて、 [[Unicode]] 本体と連動して改訂されています。
[8] 現代の[[言語]]や[[プロトコル]]の多くは、利用可能な[[文字]]の定義や[[正規化]]・[[照合順序]]などの[[アルゴリズム]]で利用するデータとして、
直接的または間接的に [[UCD]] のデータを参照しています。最近の多くの [[OS]] や[[プログラミング言語]]の実行環境には
[[UCD]] やそこから派生したデータが含まれています。
* 仕様書
[REFS[
-[4] [CITE@en-us[UAX #44: Unicode Character Database]]
( ([TIME[2013-09-27 22:15:15 +09:00]] 版))
-[5] [CITE@en-us[Unicode Character Database]]
( ([TIME[2013-06-04 18:08:12 +09:00]] 版))
-[6] [CITE[Index of /Public/UCD/latest/ucd]]
( ([TIME[2013-10-30 14:15:11 +09:00]] 版))
]REFS]
* ファイル
[9] [[UCD]] のデータは[[テキストファイル]]として提供されています。その書式はファイルにより異なり、
>>4 で説明されています。
[FIG[
[FIGCAPTION[
[10] [[UCD]] の主なファイル
]FIGCAPTION]
- [[UnicodeData.txt]]
- [[NamesList.txt]]
- [[CaseFolding.txt]]
- [[PropList.txt]]
]FIG]
* 特性
[11] [[Unicode Standard]] および [[Unicode Character Database]] では、[[文字]]に関するデータを[[文字]] ([[符号位置]])
の[DFN[[RUBYB[[[特性]]]@en[property]]]]と呼んでいます。[[特性]]にはそれぞれ [CODE@en[[[General_Category]]]]
や [CODE@en[[[Age]]]] のような名前がついています。
[12] [[文字]]と[[特性]]のデータは >>9 の各ファイルに含まれています。どのように記述されているかはそれぞれの[[特性]]により異なり、
>>4 などに説明があります。最終的な定義であるような[[特性]]もあれば、他の[[特性]]の組み合わせや[[演算]]により導かれる二次的な[[特性]]もあります。
* Unicode の版
[13] [[UCD]] は [[Unicode]] が改版される度に併せて改訂されています。特に小改訂は [[UCD]]
の更新が主目的であることもあります。
[14] [[Unicode]] の版によって値が変化する(可能性のある)[[特性]]もあれば、
不変であることが保証されている[[特性]]もあります。[[特性]]自体も改版により増えたり、減ったりしています。
[15] >>8 の通り、多くの言語やプロトコルには何らかの形で [[UCD]] のデータや [[Unicode]]
の[[演算]]の実装が含まれています。それぞれが対応している [[Unicode]] の版に違いがあると、
正しくない結果が得られる可能性もあります。
* UCD のライセンス
[1] [CITE@en-us[Unicode Terms of Use]] ([TIME[2011-02-17 08:57:14 +09:00]] 版)
[2] [CITE@en[Various Licenses and Comments about Them - GNU Project - Free Software Foundation (FSF)]] ([TIME[2011-04-04 23:42:47 +09:00]] 版)
[3] >>2 によればこのライセンスは [[GPL]] と互換性があります。
* メモ
[16] [[符号化文字集合]]の実装のためには、[[仕様書]]本文だけでなく、含まれている各[[文字]]の詳細な情報が必要になります。
旧来の[[符号化文字集合]]は比較的小規模で性質の似た[[文字]]のみを含んでいたこともあり、
そのような情報をほとんど提供してきませんでした。 [[UCD]]
のような形で[[機械可読]]な実装用の情報を提供する[[符号化文字集合]]は他に無く、
これが [[Unicode]] の成功の要因の1つと言えるかもしれません。
([[ISO/IEC 10646]] も単独では十分な実装が困難でしょう。)