Next: , Previous: , Up: Non-ASCII Characters   [Contents][Index]


32.6 文字のプロパティ

文字プロパティ(character propertyとは、その文字の振る舞いとテキストが処理や表示される間にどのように処理されるべきかを指定する名前つきの文字属性です。したがって文字プロパティはその文字の意味を指定するための重要な一部です。

全体としてEmacsは自身の文字プロパティ実装においてはUnicode標準にしたがいます。特にEmacsはUnicode Character Property Modelをサポートしており、Emacs文字プロパティデータベースはUnicode文字データベース(UCD: Unicode Character Database)から派生したものです。Unicode文字プロパティとその意味についての詳細な説明はCharacter Properties chapter of the Unicode Standardを参照してください。このセクションでは、あなたがすでにUnicode標準の該当する章に親しんでいて、その知識をEmacs Lispプログラムに適用したいものと仮定します。

Emacsでは各プロパティは名前をもつシンボルであり、そのシンボルは利用可能な値セットをもち、値の型はプロパティに依存します。ある文字が特定のプロパティをもたなければ、その値はnilになります。一般的なルールとしてEmacsでの文字プロパティ名は対応するUnicodeプロパティ名を小文字にして、文字‘_’をダッシュ文字‘-’で置き換えることにより生成されます。たとえばCanonical_Combining_Classcanonical-combining-classとなります。しかし簡単に使用できるように名前を短くすることもあります。

UCDによりいくつかのコードポイントは未割り当て(unassigned)のまま残されており、それらに対応する文字はありません。Unicode標準は、そのようなコードポイントのプロパティにたいしてデフォルト値を定義しています。それらについては以下の各プロパティごとに注記することにします。

以下はEmacsが関知するすべての文字プロパティにたいする値タイプの完全なリストです:

name

UnicodeプロパティNameに対応する。値はラテン大文字のAからZ、数字、スペース、ハイフン‘-’の文字から構成される文字列。未割り当てのコードポイントにたいする値はnil

general-category

UnicodeプロパティGeneral_Categoryに対応する。値はその文字の分類をアルファベット2文字に略したものを名前としてもつようなシンボル。未割り当てのコードポイントにたいする値はCn

canonical-combining-class

UnicodeプロパティCanonical_Combining_Classに対応する。値は整数。未割り当てのコードポイントにたいする値は0。

bidi-class

UnicodeプロパティBidi_Classに対応する。値はその文字のUnicode方向タイプ(directional type)が名前であるようなシンボル。Emacsは表示のために双方向テキストを並び替える際にこのプロパティを使用する(Bidirectional Displayを参照)。未割り当てのコードポイントにたいする値はそのコードポイントが属するコードブロックに依存する。未割り当てのコードポイントのほとんどはL(強い左方向)だが、AL ( Arabic letter: アラビア文字)やR (強い右方向)を受け取るコースポイントもいくつかある。

decomposition

UnicodeプロパティのDecomposition_TypeDecomposition_Valueに対応する。値は、最初の要素がsmallのような互換性のあるフォーマットタグ(compatibility formatting tag)であるかもしれないリストである16。他の要素は、その文字の互換性のある分割シーケンス(compatibility decomposition sequence)を与える文字です。未割り当てのコードポイントにたいする値は、その文字自身。

decimal-digit-value

Numeric_Typeが‘Decimal’であるような文字UnicodeプロパティNumeric_Valueに対応する。値は整数。未割り当てのコードポイントにたいする値は、NaN(“not-a-number”: 数字ではない)を意味するnil

digit-value

Numeric_Typeが‘Digit’であるような文字の、UnicodeプロパティNumeric_Valueに対応する。値は整数。このような文字には、互換性のある添字や上付き数字が含まれ、値は対応する数字である。未割り当てのコードポイントにたいする値は、NaNを意味するnilである。

numeric-value

Numeric_Typeが‘Numeric’であるような文字の、UnicodeプロパティNumeric_Valueに対応する。このプロパティの値は数字。このプロパティをもつ文字の例には分数、添字、上付き数字、ローマ数字、通貨分数(訳注: 原文は“currency numerators”でベンガル語の分数値用の歴史的な記号を指すと思われる)、丸数字が含まれる。たとえば、文字U+2155(VULGAR FRACTION ONE FIFTH: (訳注)スラッシュで分子と分母を区切った表記による5分の1のこと)にたいするこのプロパティの値は0.2。未割り当てのコードポイントにたいする値は、NaNを意味するnil

mirrored

UnicodeプロパティBidi_Mirroredに対応する。このプロパティの値はYNいずれかのシンボル。未割り当てのコードポイントにたいする値はN

mirroring

UnicodeプロパティBidi_Mirroring_Glyphに対応する。このプロパティの値は、そのグリフ(glyph)がその文字のグリフの鏡像(mirror image)を表すような文字、定義済みの鏡像グリフがなければnilmirroredプロパティがNであるようなすべての文字のmirroringプロパティはnil。しかしmirroredプロパティがYの文字でも、鏡像をもつ適切な文字がないという理由によりmirroringnilの文字もある。Emacsは適切な際は鏡像を表示するためにこのプロパティを使用する(Bidirectional Displayを参照)。未割り当てのコードポイントにたいする値はnil

old-name

UnicodeプロパティUnicode_1_Nameに対応する。値は文字列。未割り当てのコードポイント、およびこのプロパティにたいする値をもたない文字では、値はnilである。

iso-10646-comment

UnicodeプロパティISO_Commentに対応する。値は文字列。未割り当てのコードポイントの値は空文字列。

uppercase

UnicodeプロパティSimple_Uppercase_Mappingに対応する。このプロパティの値は単一の文字。未割り当てのコードポイントの値はnilであり、これはその文字自身を意味する。

lowercase

UnicodeプロパティSimple_Lowercase_Mappingに対応する。このプロパティの値は単一の文字。未割り当てのコードポイントの値はnilであり、これはその文字自身を意味する。

titlecase

UnicodeプロパティSimple_Titlecase_Mappingに対応する。タイトルケース(title case)とは単語の最初の文字を大文字にする必要がある際に使用される文字の特別な形式のこと。このプロパティの値は単一の文字。未割り当てのコードポイントにたいする値はnilであり、これはその文字自身を意味する。

Function: get-char-code-property char propname

この関数はcharのプロパティpropnameの値をリターンする。

(get-char-code-property ?\s 'general-category)
     ⇒ Zs
(get-char-code-property ?1 'general-category)
     ⇒ Nd
;; subscript 4
(get-char-code-property ?\u2084 'digit-value)
     ⇒ 4
;; one fifth
(get-char-code-property ?\u2155 'numeric-value)
     ⇒ 0.2
;; Roman IV
(get-char-code-property ?\u2163 'numeric-value)
     ⇒ 4
Function: char-code-property-description prop value

この関数はプロパティpropvalueの説明文字列(description string)、valueが説明をもたなければnilをリターンする。

(char-code-property-description 'general-category 'Zs)
     ⇒ "Separator, Space"
(char-code-property-description 'general-category 'Nd)
     ⇒ "Number, Decimal Digit"
(char-code-property-description 'numeric-value '1/5)
     ⇒ nil
Function: put-char-code-property char propname value

この関数は文字charのプロパティpropnameの値としてvalueを格納する。

Variable: unicode-category-table

この変数の値は、それぞれの文字にたいしてそのUnicodeプロパティGeneral_Categoryをシンボルとして指定する文字テーブル(Char-Tablesを参照)。

Variable: char-script-table

この変数の値は、それぞれの文字がシンボルを指定するような文字テーブル。シンボルの名前はUnicodeコードスペースからスクリプト固有ブロックへのUnicode標準分類にしたがうような、その文字が属するスクリプト。この文字テーブルは余分のスロットを1つもち、値はすべてのスクリプトシンボルのリスト。

Variable: char-width-table

この変数の値は、それぞれの文字がスクリーン上で占めるであろう幅を列単位で指定する文字テーブル。

Variable: printable-chars

この変数の値は、それぞれの文字にたいしてそれがプリント可能かどうかを指定する文字テーブル。すなわち(aref printable-chars char)を評価した結果がtならプリント可、nilなら不可。


Footnotes

(16)

Unicode仕様ではこれらのタグ名を‘<..>’カッコ内に記述しますが、Emacsでのタグ名にはカッコは含まれません。Unicodeでの‘<small>’指定は、Emacsでは‘small’となります。