Next: Character Sets, Previous: Character Codes, Up: Non-ASCII Characters [Contents][Index]
文字プロパティ(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_Classはcanonical-combining-classとなります。しかし簡単に使用できるように名前を短くすることもあります。
UCDによりいくつかのコードポイントは未割り当て(unassigned)のまま残されており、それらに対応する文字はありません。Unicode標準は、そのようなコードポイントのプロパティにたいしてデフォルト値を定義しています。それらについては以下の各プロパティごとに注記することにします。
以下はEmacsが関知するすべての文字プロパティにたいする値タイプの完全なリストです:
nameUnicodeプロパティNameに対応する。値はラテン大文字のAからZ、数字、スペース、ハイフン‘-’の文字から構成される文字列。未割り当てのコードポイントにたいする値はnil。
general-categoryUnicodeプロパティGeneral_Categoryに対応する。値はその文字の分類をアルファベット2文字に略したものを名前としてもつようなシンボル。未割り当てのコードポイントにたいする値はCn。
canonical-combining-classUnicodeプロパティCanonical_Combining_Classに対応する。値は整数。未割り当てのコードポイントにたいする値は0。
bidi-classUnicodeプロパティBidi_Classに対応する。値はその文字のUnicode方向タイプ(directional
type)が名前であるようなシンボル。Emacsは表示のために双方向テキストを並び替える際にこのプロパティを使用する(Bidirectional Displayを参照)。未割り当てのコードポイントにたいする値はそのコードポイントが属するコードブロックに依存する。未割り当てのコードポイントのほとんどはL(強い左方向)だが、AL
( Arabic letter: アラビア文字)やR (強い右方向)を受け取るコースポイントもいくつかある。
decompositionUnicodeプロパティのDecomposition_TypeとDecomposition_Valueに対応する。値は、最初の要素がsmallのような互換性のあるフォーマットタグ(compatibility
formatting
tag)であるかもしれないリストである16。他の要素は、その文字の互換性のある分割シーケンス(compatibility
decomposition sequence)を与える文字です。未割り当てのコードポイントにたいする値は、その文字自身。
decimal-digit-valueNumeric_Typeが‘Decimal’であるような文字UnicodeプロパティNumeric_Valueに対応する。値は整数。未割り当てのコードポイントにたいする値は、NaN(“not-a-number”:
数字ではない)を意味するnil。
digit-valueNumeric_Typeが‘Digit’であるような文字の、UnicodeプロパティNumeric_Valueに対応する。値は整数。このような文字には、互換性のある添字や上付き数字が含まれ、値は対応する数字である。未割り当てのコードポイントにたいする値は、NaNを意味するnilである。
numeric-valueNumeric_Typeが‘Numeric’であるような文字の、UnicodeプロパティNumeric_Valueに対応する。このプロパティの値は数字。このプロパティをもつ文字の例には分数、添字、上付き数字、ローマ数字、通貨分数(訳注:
原文は“currency
numerators”でベンガル語の分数値用の歴史的な記号を指すと思われる)、丸数字が含まれる。たとえば、文字U+2155(VULGAR
FRACTION ONE FIFTH:
(訳注)スラッシュで分子と分母を区切った表記による5分の1のこと)にたいするこのプロパティの値は0.2。未割り当てのコードポイントにたいする値は、NaNを意味するnil。
mirroredUnicodeプロパティBidi_Mirroredに対応する。このプロパティの値はYかNいずれかのシンボル。未割り当てのコードポイントにたいする値はN。
mirroringUnicodeプロパティBidi_Mirroring_Glyphに対応する。このプロパティの値は、そのグリフ(glyph)がその文字のグリフの鏡像(mirror
image)を表すような文字、定義済みの鏡像グリフがなければnil。mirroredプロパティがNであるようなすべての文字のmirroringプロパティはnil。しかしmirroredプロパティがYの文字でも、鏡像をもつ適切な文字がないという理由によりmirroringがnilの文字もある。Emacsは適切な際は鏡像を表示するためにこのプロパティを使用する(Bidirectional Displayを参照)。未割り当てのコードポイントにたいする値はnil。
old-nameUnicodeプロパティUnicode_1_Nameに対応する。値は文字列。未割り当てのコードポイント、およびこのプロパティにたいする値をもたない文字では、値はnilである。
iso-10646-commentUnicodeプロパティISO_Commentに対応する。値は文字列。未割り当てのコードポイントの値は空文字列。
uppercaseUnicodeプロパティSimple_Uppercase_Mappingに対応する。このプロパティの値は単一の文字。未割り当てのコードポイントの値はnilであり、これはその文字自身を意味する。
lowercaseUnicodeプロパティSimple_Lowercase_Mappingに対応する。このプロパティの値は単一の文字。未割り当てのコードポイントの値はnilであり、これはその文字自身を意味する。
titlecaseUnicodeプロパティSimple_Titlecase_Mappingに対応する。タイトルケース(title
case)とは単語の最初の文字を大文字にする必要がある際に使用される文字の特別な形式のこと。このプロパティの値は単一の文字。未割り当てのコードポイントにたいする値はnilであり、これはその文字自身を意味する。
この関数は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
この関数はプロパティpropのvalueの説明文字列(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
この関数は文字charのプロパティpropnameの値としてvalueを格納する。
この変数の値は、それぞれの文字にたいしてそのUnicodeプロパティGeneral_Categoryをシンボルとして指定する文字テーブル(Char-Tablesを参照)。
この変数の値は、それぞれの文字がシンボルを指定するような文字テーブル。シンボルの名前はUnicodeコードスペースからスクリプト固有ブロックへのUnicode標準分類にしたがうような、その文字が属するスクリプト。この文字テーブルは余分のスロットを1つもち、値はすべてのスクリプトシンボルのリスト。
この変数の値は、それぞれの文字がスクリーン上で占めるであろう幅を列単位で指定する文字テーブル。
この変数の値は、それぞれの文字にたいしてそれがプリント可能かどうかを指定する文字テーブル。すなわち(aref printable-chars
char)を評価した結果がtならプリント可、nilなら不可。
Unicode仕様ではこれらのタグ名を‘<..>’カッコ内に記述しますが、Emacsでのタグ名にはカッコは含まれません。Unicodeでの‘<small>’指定は、Emacsでは‘small’となります。