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が関知するすべての文字プロパティにたいする値タイプの完全なリストです:
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_Type
とDecomposition_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
に対応する。このプロパティの値はY
かN
いずれかのシンボル。未割り当てのコードポイントにたいする値はN
。
mirroring
UnicodeプロパティBidi_Mirroring_Glyph
に対応する。このプロパティの値は、そのグリフ(glyph)がその文字のグリフの鏡像(mirror
image)を表すような文字、定義済みの鏡像グリフがなければnil
。mirrored
プロパティがN
であるようなすべての文字のmirroring
プロパティはnil
。しかしmirrored
プロパティがY
の文字でも、鏡像をもつ適切な文字がないという理由によりmirroring
がnil
の文字もある。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
であり、これはその文字自身を意味する。
この関数は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’となります。