Unicode標準では、各Unicode文字とコードポイントにさまざまなプロパティが割り当てられています。[ 1 ] [ 2 ]
これらのプロパティは、改行、スクリプトの方向(右から左)、制御の適用など、処理における文字(コードポイント)の処理に使用できます。文字が割り当てられていないコードポイントや、「<文字ではない>」などのラベルが付いたコードポイントに対しても、いくつかの「文字プロパティ」が定義されています。文字プロパティについては、標準付属書第44号に記載されています。[ 2 ]
プロパティには、規範的、情報的、貢献的、暫定的といった効力レベルがあります。仕様を簡潔にするために、同じプロパティを持つコードポイントの連続範囲を指定することで、文字プロパティを割り当てることができます。[ 3 ]
プロパティは次の順序で表示されます: [ 4 ]
[コード];[名前];[gc];[cc];[bc];[分解];[nv-dec];[nv-dig];[nv-num];[bm];[エイリアス];;[大文字];[小文字];[タイトルケース]
alias= 修正された名前。廃止されました。現在は別のデータベースで管理されていますが、Unicode 1.0 の名前については引き続き使用されます。bc= bidi (双方向) カテゴリ [L、R など]bm= 双方向ミラーリング [N または Y]cc= 結合クラス [発音記号の位置]decompositionタイプまたは<マッピング> = 文字 + 発音記号、合字 XY、上付き文字 X、フォント X、頭文字 X、中間文字 X、末尾文字 X、孤立文字 X、垂直文字 X など。gc= 一般的なカテゴリ [文字、記号、数字、句読点、大文字小文字の区別など]nv= 数値型と値(数字の場合)。数値型が「decimal」の場合は、3つのスロットすべてが使用されます。「digit」の場合は、最初のスロットはnullになります(この機能は廃止されました)。「numeric」の場合は、最初の2つはnullになり、最後のスロットのみが使用されます。aliasとの間のプロパティupper caseは廃止され、すべての Unicode 文字に対して null になりました。
Unicode 文字には一意の名前(na) が割り当てられます。[ 1 ]名前は、大文字の A~Z、数字の 0~9、ハイフン、マイナス、スペースで構成されます。スペースまたはハイフンで始まる名前、スペースまたはハイフンで終わる名前、スペースまたはハイフンの繰り返し、ハイフンの後のスペースは許可されません。名前は Unicode 内で一意であることが保証されており、コード ポイントとその文字を識別するために使用できます。数万ある表意文字は、「cjk 統一表意文字- hhhh」というパターンで命名されます。たとえば、U+4E00一CJK UNIFIED IDEOGRAPH-4E00です。書式設定文字にも名前があります。U +00A0 NO-BREAK SPACE。
以下の Unicode カテゴリには、名前の値が割り当てられていません: コントロール (一般カテゴリ: Cc)、プライベート使用 (Co)、サロゲート (Cs)、非文字 (Cn)、予約済み (Cn)。これらは、非公式に「コード ポイント ラベル」と呼ばれる汎用または特定のメタ名で参照できます: <control>、<control-0088>、<reserved>、<noncharacter- hhhh >、<private-use- hhhh >、または <surrogate>。これらのラベルには「<」と「">」が含まれているため、名前には表示されず、混乱を防ぎます。
Unicode 2.0では、多くの名前が変更されました。それ以降、「名前は決して変更されない」というルールが適用され、エイリアス名の厳密な(規範的な)使用も含まれるようになりました。使用されなくなったUnicode 1.0の名前は、下位互換性を確保するために、Aliasプロパティに移動されました。
例えば、U+0264 ɤ LATIN SMALL LETTER RAMS HORN は、 Unicode 1.0 では「LATIN SMALL LETTER BABY GAMMA」という名前です。
Unicode 2.0 以降、コードポイントの公開名は変更されません。そのため、文字名が誤って綴られている場合、または文字名が完全に間違っているか、重大な誤解を招く場合は、文字に正式な文字名エイリアスが割り当てられ、アプリケーションは実際の誤った文字名の代わりにこのエイリアスを使用できます。[ 1 ]たとえば、U+FE18 ︘ PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET には、実際の文字名で「bracket」が「brakcet」[ sic ]と誤って綴られていることを軽減するために、文字名エイリアス「PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET 」が割り当てられています。 U+A015 ꀕ YI SYLLABLE WU は、文字名とは異なり固定の音節値を持たないため、「YI SYLLABLE ITERATION MARK」という別名を持っています。
文字名エイリアス(不完全な文字名を修正したもの)に加えて、一部の文字には代替名または略語であるエイリアスが割り当てられています。Unicode規格では、5種類の文字名エイリアスが定義されています。
すべての正式な文字名エイリアスは、許可された文字名の規則に従い、文字名エイリアスと文字名ネームスペースの両方で一意であることが保証されています(このため、ISO 6429 の名前「BELL」はU+0007 <control-0007>のエイリアスとして定義されていません)。U+1F514 は「BELL」という名前ですが、U+0007 は「ALERT」という別名を持っています。[ 1 ]
Unicode 17.0 の時点で、39 の正式な文字名エイリアスが、欠陥のある文字名の修正として定義されています。[ 5 ]
これらの規範的な名称とは別に、 Unicodeコード表には非公式な名称が表示される場合があります。これらは文字に対して一般的に使用される別の名称であり、同じ文字制限はありません。これらの非公式な名称は一意性が保証されておらず、規格の後の改訂版で変更または削除される可能性があります。
各コードポイントには、一般カテゴリの値が割り当てられます。これは、未割り当てのコードポイントや「文字ではない」と定義されているコードポイントにも定義されている文字プロパティの1つです。
文字には、句読点であることを示す個別のプロパティがあります。これらのプロパティはすべて、はい/いいえの値を持ちます。ダッシュ、引用符、文末、文末句読点です。句読点プロパティは、テキストを区切ったり構造化したりするために使用される文字を指し、これらの文字は役割に基づいて異なるタイプに分類されます。Unicode は、これらの句読点文字に特定のカテゴリを割り当てます。
ホワイトスペースは、タイポグラフィ効果を表すためによく使われる概念です。基本的には、レンダリングされたテキストに間隔効果をもたらす目に見えない文字を指します。これには、スペース、タブ、改行などの書式設定コントロールが含まれます。Unicodeでは、このような文字にはプロパティが設定されていますWSpace=yes。バージョン17.0では、25種類のホワイトスペース文字があります。
Unicodeでは、Caseの値は規範的な値です。これは、大文字と小文字を持つ文字体系に関係します。大文字と小文字の区別がある文字体系は、アドラム文字、アルメニア文字、ベリア・エルフェ文字、チェロキー文字、コプト文字、キリル文字、デゼレト文字、ガライ文字、グラゴル文字、ギリシャ文字、クツリ文字、ムヘドルリ文字、グルジア文字、ラテン文字、メデファイドリン文字、古ハンガリー文字、オセージ文字、ヴィトクチ文字、ワラン・シティ文字です。
言語によって格変化のルールは異なります。
トルコ語では、U+0069 i LATIN SMALL LETTER Iは、U+0049 I LATIN CAPITAL LETTER Iではなく、 U+0130 İ LATIN CAPITAL LETTER I WITH DOT ABOVE に対応します。同様に、U+0049 I LATIN CAPITAL LETTER Iは、 U+0069 i LATIN SMALL LETTER Iではなく、U+0131 ı LATIN SMALL LETTER DOTLESS Iに対応します。
Nawdmでは、文字Ĥは小文字のɦに対応し、通常のケースマッピングであるĤĥとꞪɦには対応しません。
ギリシャ語では、文字シグマは単語内の位置によって小文字の形が異なります。U +03A3 Σギリシャ語大文字シグマは、単語の先頭または中間にある場合はU+03C3 σギリシャ語小文字シグマに変換され、単語の末尾にある場合はU+03C2 ςギリシャ語小文字末尾シグマに変換されます。
リトアニア語では、小文字の i と j のドットは、アクセント記号が後に続く場合でも保持されます。例えば、小文字の Í は i̇́ となります。[ 19 ]
U+1E9E ẞラテン大文字シャープ Sが存在するにもかかわらず、U+00DF ßラテン小文字シャープ Sは「SS」に対応します。
Unicodeは31種類のタイトルケース文字をエンコードします。
Unicodeは、Unicode文字データベース(UAX #44)において、いくつかの一般的な文字特性を定義しています。その中でも特に重要なものには、以下のようなものがあります。
よく使われるコードの例:
10 ~ 199 = さまざまな固定位置クラス
基本文字に付加される記号:
ベースとなる文字に付かない記号:
双方向の書き込みに関連する文字プロパティは 6 つあります。Bidi_Class 、 Bidi_Control 、 Bidi_Mirrored 、 Bidi_Mirroring_Glyph 、 Bidi_Paired_Bracket 、 Bidi_Paired_Bracket_Typeです。
Unicode の主要な機能の 1 つは、右から左 (R-to-L) と左から右 (L-to-R) の双方向 ( Bidi ) テキスト表示のサポートです。Unicode双方向アルゴリズムUAX9 [ 23 ]は、スクリプトの方向を変更してテキストを表示するプロセスを説明しています。たとえば、英語のテキストにヘブライ語の引用を含めることができます。Bidi_Character_Type は、方向性のある書き方における文字の動作を示します。方向を上書きするために、Unicode は特別な書式制御文字( Bidi-Control文字) を定義しています。これらの文字は方向を強制することができ、定義上、双方向の書き方にのみ影響します。
各コードポイントにはBidi_Classというプロパティがあります。これは、アルゴリズムによって解釈される双方向テキストにおけるその動作を定義します。
通常の状況では、アルゴリズムはこの文字プロパティによってテキストの方向を判断できます。英語のテキストにヘブライ語の引用が含まれている場合など、より複雑な双方向の状況を制御するために、Unicode に追加のオプションが追加されます。 12 文字がこのプロパティを持っていますBidi_Control=Yes。表に示されているように、ALM、FSI、LRE、LRI、LRM、LRO、PDF、PDI、RLE、RLI、RLM、RLO です。 これらは目に見えない書式設定制御文字であり、アルゴリズムによってのみ使用され、双方向書式設定以外では効果がありません。[ 23 ]名前とは裏腹に、これらは書式設定文字であり、制御文字ではなく、Unicode 定義では一般カテゴリOther、書式 (Cf)に属します。
基本的に、このアルゴリズムは、特殊な双方向制御による上書きを考慮しつつ、同じ強い方向タイプ(右から左、または左から右)を持つ文字のシーケンスを決定します。数値文字列(弱いタイプ)は、中立文字と同様に、強い環境に応じて方向が割り当てられます。最後に、文字は文字列の方向に従って表示されます。
双方向テキストにおけるグリフの鏡像を決定するには、2つの文字プロパティが関係します。1つ目は、Bidi_Mirrored=Yes右から左に書かれたグリフを鏡像にする必要があることを示します。2つ目は、鏡像化された文字を指すプロパティですBidi_Mirroring_Glyph=U+hhhh。例えば、括弧( , )はこのように鏡像化されます。アラビア語などの筆記体の整形や、方向を持つグリフの鏡像化は、このアルゴリズムには含まれていません。
文字は数値型に分類されます。[ 1 ]分数、下付き文字、上付き文字、ローマ数字、通貨の分子、丸で囲まれた数字、スクリプト固有の数字などの文字は数値型です。これらの文字には、ゼロや負の数を含む小数、または一般的な分数のいずれかの数値があります。ほとんどの文字のように、そのような値がない場合、数値型は「なし」になります。
数値を持つ文字は、10 進数 (De)、数字 (Di)、数値 (Nu、つまりその他すべて) の 3 つのグループに分けられます。「10 進数」とは、文字が単純な 10 進数であることを意味します。連続したエンコード範囲 0 ~ 9 に含まれる文字のみが数値型 Decimal になります。上付き文字などの他の数字は数値型 Digit になります。分数やローマ数字などのすべての数値文字は最終的に「数値」型になります。意図された効果は、単純なパーサーが、上付き数字や分数などに気を取られることなく、これらの 10 進数値を使用できることです。会計で使用されるものを含め、数値を表す 83 の CJK 漢字は数値型になります。
一方、数値を第二の意味として持つ可能性のある文字は、引き続き「数値型なし」とマークされ、数値を持ちません。例えば、ラテン文字は「II.A.1.b」のように段落番号付けに使用できますが、「I」、「A」、「b」の文字は数値型(なし)ではなく、数値を持ちません。
16進数文字とは、16進数値が0123456789ABCDEF(16文字、10進数値0~15)の系列に属する文字のことです。文字がこのような系列に属する場合、文字プロパティHex_DigitはYesに設定されます。
44文字はHex_Digitとしてマークされています。基本ラテン文字ブロック内の文字はASCII_Hex_Digitとしてもマークされています。
Unicodeには16進数値を表す専用文字がありません。そのため、通常の文字を使用する場合、それが16進数値なのか、そもそも数値自体が意図されているのかを判断することはできません。これは、例えば16進数値の前に0xを付加したり、文脈によって判断したりするなど、より上位のレベルで判断する必要があります。Unicodeの唯一の特徴は、ある数値の並びが16進数値であるか否かを識別できる点です。
ブロックとは、一意の名前が付けられた連続したコードポイントの範囲です。ブロックは、最初と最後のコードポイントによって識別されます。ブロックは重なり合わず、また平面をまたいで広がることもありません。各ブロック内のコードポイントの数は、16の倍数でなければなりません。ブロックには、予約済み、未割り当てなどのコードポイントを含めることができます。割り当てられている各文字には、Unicodeバージョン17.0時点で割り当てられている346個の名前のうち、1つの「ブロック名」値が割り当てられます。既存のブロック外にある未割り当てのコードポイントには、デフォルト値「No_block」が割り当てられます。
割り当てられた各文字は、その「Script」プロパティに単一の値を持つことができ、どのスクリプトに属するかを示します。[ 24 ]値は、ISO 15924 で使用可能な Aaaa-Zzzz の範囲の 4 文字コードで、これは表記体系にマッピングされます。スクリプトの背景と使用法を説明する場合を除き、Unicode はスクリプトと、そのスクリプトを使用する言語との関連付けを使用しません。したがって、「ヘブライ語」はヘブライ語ではなく、ヘブライ文字を指します。
「共通」を表す特殊コード Zyyy は、複数のスクリプトで使用される文字に単一の値を割り当てます。文字と特定の特殊目的コード ポイントを組み合わせるために使用されるコード Zinh「継承スクリプト」は、文字が組み合わせる文字からスクリプトの識別情報を「継承」することを示します。(Unicode では以前、この目的でプライベートコード Qaai を使用していました。)コード Zzzz「不明」は、記号や書式設定文字など、スクリプトに属さないすべての文字(つまりデフォルト値)に使用されます。全体として、単一のスクリプトの文字は、ラテン文字のように、複数のブロックに分散することができます。また、その逆もあります。複数のスクリプトが単一のブロックに存在することもあります。たとえば、ブロックLetterlike Symbolsには、ラテン文字、ギリシャ文字、共通スクリプトの文字が含まれています。
Unicodeでは、Scriptが""(空白)の場合、その文字はスクリプトに属していないとみなされます。これは記号にも当てはまります。なぜなら、既存のISOスクリプトコードである「Zmth」(数式表記)、「Zsym」(記号)、および「Zsye」(記号、絵文字バリアント)はUnicodeでは使用されていないからです。また、コントロール、代替文字、プライベート使用コードポイントなど、活字文字ではないコードポイントについても、Scriptプロパティは空白になります。
ISO 15924 に特定のスクリプトエイリアス名がある場合は、文字名で使用されます: U+0041 A LATIN CAPITAL LETTER A、およびU+05D0 א HEBREW LETTER ALEF。
分解、分解タイプ、正規結合クラス、構成除外など。
Age は、コード ポイントが最初に指定された標準のバージョンです。バージョン番号は「major.minor」という形式で短縮されますが、より詳細なバージョン番号も使用されます。バージョン 4.0.0 と 4.0.1 はどちらも Age として 4.0 と表記されます。リリースを考慮すると、Age は 1.1、2.0、2.1、3.0、3.1、3.2、4.0、4.1、5.0、5.1、5.2、6.0、6.1、6.2、6.3、7.0、8.0、9.0、10.0、11.0、12.0、12.1、13.0、14.0、15.0、15.1、16.0、17.0 の範囲になります。[ 25 ]年齢の長い値は V で始まり、ドットの代わりにアンダースコアを使用します。たとえば、V1_1 です。[ 2 ]年齢の値が特に割り当てられていないコードポイントの値は「NA」で、長い形式は「未割り当て」です。
文字が定義されると、削除または再割り当てされることはありません。[ 26 ]ただし、文字は非推奨になる場合があり、これは「使用が強く推奨されない」ことを意味します。[ 27 ] Unicode バージョン17.0の時点で、次の 15 文字が非推奨になっています。[ 28 ]
Unicode規格では、境界に関連する以下の特性が規定されています。
Unicodeでは、コードポイントにエイリアス名を割り当てることができます。これらの名前はすべての名前(通常の名前を含む)の中で一意であるため、識別子として使用できます。エイリアスを追加する理由は5つ考えられます。
文字がエンコードされると、移動または削除されません。