5 標準化されていない文字と字形の表現

Contents

ユニコードが利用できるにもかかわらず,未だに,テキストを符号化する人は,時折,利用可能な文字として公表されているレパートリーでは十分でないことに気づくことがある.このことは特に,まだ文字コードが存在しないような古典的な言語を扱う場合や,符号化する人が文字や字形の異体字を表示したいという場合にありがちである.この章で定義するモジュールでは,標準規格との互換性を保ちながらそのニーズを満たす仕組みを提供する.

5.1 その道のりは本当に必要なのか

符号化する人が電子化すべき文書の中でいくつかの図像に出会った時,解決されるべき最初の課題は「これは本当に異なる文字だろうか?」だろう.ある特定の図像が一つの文字であることを決定するためには,用語法とキー概念を参照されたい.

実際のところ,そういった図像が一つの文字であると決定されるならば,次の問いは「この文字はすでに符号化されているかどうか?」だろう.一つの文字が符号化されているかどうかを決定するためには,符号化する人は次の手順に従うべきである:
  1. ユニコードのWebページをチェックする.http://www.unicode.org, 特に, "Where is my Character?", のページで,関連する文字コード表をチェックする. あるいは,ユーザは「 The Unicode Standard (Unicode Consortium (2006))の最新の印刷本をチェックすることもできる.ただし,Webサイトは印刷本よりも最新のものを反映しており,なるべくならチェックすべきである.

    ユニコードのコード表における(‘glyphs’)という図像は,代表的なものを意味しているだけであり,厳密なものではない.もし,すでに符号化されていたとしても,プロジェクトとしてその文字の例外的な字形を必要とする場合には,このガイドラインの文字への注釈以下を参照されたい.忘れてはならないのは,あなたが電子化した文書は,あなたが使ったのとは別のフォントがインストールされたシステムで表示されるかもしれないということである.もしも,ある文字の例外的な形が重要なら,その場合には,それを文書化しておくべきである.

  2. その文字がユニコードの承認待ちであるかどうかを確認するために,「新しい文字の提案」のWebページ (http://unicode.org/alloc/Pipeline.html) をチェックする.
  3. 提案が保留中なのか,あるいは,この文字がユニコード標準に追加されるにふさわしいとみなされるかどうかを決定するために,ユニコードメーリングリスト (http://www.unicode.org/consortium/distlist.html) に問い合わせる.

現在,ユニコードには10万近い文字が登録されているため,あなたが必要とするものがすでにそこにある可能性は十分にある.しかし,ユニコードでは別な名前で登録されている可能性があるため,見つけ出すのは簡単ではないかもしれない.このような場合,他のサイト,たとえば,文字と言語に基づく検索システムを提供している http://www.eki.ee/letterなどをも参照されたい.しかし,関連する文字であると思われるものの属性のすべてが,探している文字のものと一致するかどうかについても注意されたい.たとえば,あなたの文字が明らかに数字であり,しかし,一番よく似ているものの属性が文字となっていたならば,それはまだユニコードでは定義されていないということかもしれない.

一般に,表示形と位置づけられているユニコードの文字は避けておくのが賢明である.20 しかし,もし,探している文字が(ある言語の正書法というよりはむしろ)記数法として用いられているならば,その場合には,それらが適切な属性となっている限りにおいて,数学記号範囲(すなわち,So:記号,その他, あるいは Sm:記号,数学)から文字を選ぶことはむしろ好ましい.

ある種の文字は事前に作られているかもしれないし,あるいは,基本となる文字とダイアクリティカルマークとの組み合わせで形成されるかもしれない.いずれにしても,一つの符号化された文字が「見つかった」というには十分だろう.

もし,いくつかのユニコード文字が選択し得るならば,なんらかの合意がすでに形成されているのかどうか,周囲の人や実際に取り組んでいる人に相談してみるのがよい.

しかし,もし,適切な形の文字がなさそうなら,次の質問が出てくるだろう.「問題になっている文字はすでに知られている文字の異体字なのか,それともまったく符号化されていない文字なのか?」もしその文字がユニコード標準には収録されていないことを確信したなら,その新しい文字を登録すべく提案するのは有益だろう. ( http://unicode.org/pending/proposals.htmlを参照).

このガイドラインは,ある図像のかたまりが異体字か,あるいは,外字であることが判明したときに,その先へ進むのに役立つだろう.これを決めることは,持っている文書の内容についての知識を必要とするだろう.最初の事例は,文字の「アノテーション」と呼ばれ,次の事例は新しい文字の「追加」と呼ばれる.異体字を表現している図像のかたまりをどのように取り扱うかということについては以下,5.3で議論されるだろう. (5.3 文字への注釈) 新しい文字を表現する際の問題は 5.4 新しい文字の追加で取り扱われるだろう.

これらの要件は多少重複しているが,明確に特化されたマークアップの構造は,以下の 5.2 文字と字形を表現するためのマークアップの構造に説明されるように,これらのそれぞれに関して用意されている. 以下のセクションでは,それらを目の前の問題にいかにして適用するか,という議論に入っていく.すでに存在する文字の「アノテーション」についての議論は5.3 文字への注釈 で,そして,最後に,新しい文字を作成するのは 5.4 新しい文字の追加で議論される.

5.2 文字と字形を表現するためのマークアップの構造

原理的には,XML文書はあらゆる定義済みのユニコード文字を含むことができる. その標準規格では,適切なエンコーディング(デフォルトではUTF-8)を直接用いる方法と,数字を用いて参照する(NCR)間接的な方法とのどちらでも,これらの文字が表示されることが認められている.符号化する人は,適切なエンコーディング宣言を付け加えることで,文書で(あるいはその一部で)表現される文字の範囲を制限することもできる. たとえば,もし,文書が<?xml encoding="iso-8859-1"?>という宣言で始まっているなら,<?xml encoding="iso-8859-1"?> ISO-8859-1の文字セットに含まれないすべてのユニコード文字は数値文字参照(NCR)で表現されなければならない.

この章で定義される外字モジュールは,文書のなかで特殊な文字や字形を表示するためのさらなる方法を提供する.外字モジュールによって,符号化する人は,ユニコードでは包摂されている文字や字形を区別すること,ユニコードに入っていない新たな文字や字形を付け加えること,文書を符号化する際には利用できないユニコード文字を別の手段で表現することが可能となる.

ここで提供するメカニズムは二つの機能で構成されている.:
  • 要素gは新しい文字や字形の代用として機能する.
  • 要素 charglyphは,そういった文字や字形についての情報を提供する.これらの要素はヘッダの中の要素charDeclに蓄積されていく.

外字モジュールがスキーマに含まれているときには,要素charDeclがクラスmodel.encodingPartに追加されている.そして,要素g がクラスphraseに追加されている.これらの要素とそれらのコンポーネントについてはこのセクションの別の場所で説明する.

ユニコード標準はユニコード文字データベースで定義するすべての文字に関する属性を定義している. その知識は,大抵の場合,テキスト処理システムに組み込まれている. もし要素g によって表示される文字がユニコードにまったく存在しない場合,その属性はまったく利用できない.もし表示される文字が既存のユニコード文字で,しかし,使っている処理システムで認識できる文字セットでは利用できない場合には,同じ方法でその属性にアクセスするのも便利かもしれない.要素char は,ある標準的な方法でそういったアプリケーションによって利用するために属性を蓄積することを可能にしている.

文字に関する属性のリストは,ユニコード文字データベースのものを手本としており,文字の属性を 規定(normative)参考(informative) に区別している. さらに,非ユニコードの属性も提供することができる.属性のリストはユニコード標準のバージョンによって異なるため,それらは,これらのガイドラインで定義する属性のリストとは正確には一致しないかもしれない.

これらの要素の利用例は以下の 5.3 文字への注釈5.4 新しい文字の追加 で示されている.外字モジュール自身は以下の 5.6 外字モジュールセクションで正式に定義されている.それは以下のような追加の要素を宣言する:
  • charDecl規格にない文字やグリフに関する情報を示す.
  • g非標準的な文字やグリフを示す.
    ref当該文字やグリフの解説を参照する.
要素charDeclはクラスmodel.encodingPartのメンバーである.したがって,このモジュールがスキーマに含まれているとき,encodingDesc の中でも利用可能となる.要素gはクラスmodel.gLikeの唯一のメンバーである: このクラスはプレーンテクストを含むほとんど全ての要素において,プレーンテクストの代替選択肢として参照されており,したがって,このモジュールがスキーマに含まれているとき,そのような場所に要素gが現れることを認めることになる.
以下の要素も,要素charDeclの中に現れてもよい:
  • desc当該要素,属性,属性値を採用した目的の簡単な解説を示す.
  • char 文字に関する情報を示す.
  • glyphグリフの解説を示す.

要素charと要素glyphは似たような内容を持ち,似たような方法で用いられるが,それらの機能は異なっている.要素char は,どんな理由であれ,上述のように,現在の文書の文字セットでは利用できない文字を定義するために提供されている.要素glyph は,たいていの場合,下の文書に文字がどのように現れているかを示す特別な字形を提供することによって,すでに存在する文字を注記するために用いられるものである.ユニコードのコードポイントは非常に一般的な抽象化文字を参照するものであり,きわめて多くの表現手法によって描かれ得るものである.要素glyphは,符号化する人がすべてのあり得る字形に含まれない特殊な字形(あるいは字形のファミリー)を特定したいケースに向けて提供されている.

ユニコード標準は既存のユニコード文字に注記しようとする場合に厳密に従うべき命名規則を推奨している.そして,それは文字や字形のために新しい名前を作り出す時に一つのモデルとして用いることができる. [注記:しかし,注意すべき点として,この命名規則は東アジアの文字に対して意味があるように適用することが出来ない.これらの文字に関するユニコードの典型的な説明は「CJK統合漢字U+4E00」という形になっている.ここでは,U+4E00は単純に問題となっている文字のユニコードのコードポイントの値である. ユニコードのコードポイントがまったく存在しないケースでは,文字の同定を助けてくれる名前を見つけられるという小さな希望がある.したがって,名前は,たとえば,広く知られた文字字典の参照番号やプロジェクト独自の通し番号などを使うことによって,ローカルな実践にとって意味のあるやり方で構築されるべきである.]. 処理を便利にするために,文字や字形の名前付けに関して,以下の独特な要素が提案されている:
  • charName 当該文字の名前をユニコードに従って示す.
  • glyphName ユニコードに従った文字名で,グリフを示す.
charglyphの中では,以下の要素が利用可能である:
  • gloss 語句の説明や定義を示す.
  • charProp 当該字またはグリフの特性に関する名前や値を示す.
  • desc 当該要素,属性,属性値を採用した目的の簡単な解説を示す.
  • mapping 属性typeで示される,親文字またはグリフと関連する,ひとつ 以上の文字を示す.
  • graphic/ テキスト列中にある図,絵,図表の場所を示す.

これらのうちの4つの要素 (gloss, desc,graphicremarks) は他のTEIモジュールでも定義されており,それらのここでの用法は,別のところでの用法と違いはない.しかしながら,要素graphic は,ここでは,検討中の文字や字形の画像にリンクするか,あるいは,SVGでの表現を含むためだけに用いられる.いくつかの要素graphicが,たとえば,異なる解像度や異なるフォーマットによるいくつかの画像を提供するために,利用可能である.属性mimeTypeは,要素 graphicがクラスatt.internetMediaのメンバーから得るものだが、画像のフォーマットを特定するのに用いることができる.

要素mappingは標準的なTEIの要素equiv に似たものである後者はTEIのコンセプトや要素と他のシステムやオントロジーとの間の対応を表現するために用いられるのに対して,前者は,検討中の文字や字形とどこかで定義された文字や字形との間のなんらかの関係を表現するのに用いられる.それはなんらかのユニコード文字や,あるいは,いくつかの他の要素charや要素glyphにリンクされた要素gを含むことができる.たとえば,もし,非標準の二つの文字の間の関係を表現しようとするならば.関係のタイプは属性typeで示される.それは,まったく同じものの場合にはexactを値として用いることができ,大文字で同じものの場合にはuppercaseを,小文字で同じものの場合にはlowercaseを,標準化された形式に関してはstandardizedを,そして,簡素化された文字に関してはsimplifiedを用いることができる.その他にも,以下の例のように,色々なものがある:
<charDecl>
 <char xml:id="aenl">
  <charName>LATIN LETTER ENLARGED SMALL A</charName>
  <charProp>
   <localName>entity</localName>
   <value>aenl</value>
  </charProp>
  <mapping type="standardized">a</mapping>
 </char>
</charDecl>
要素mappingは,以下の例のように,検討中の文字や字形を個人利用区画にある文字にマッピングする際にも用いることができる.
<charDecl>
 <glyph xml:id="z103">
  <glyphName>LATIN LETTER Z WITH TWO STROKES</glyphName>
  <mapping?type="standardized">Z</mapping>
  <mapping type="PUA">U+E304</mapping>
 </glyph>
</charDecl>

あらゆる文字や字形の属性のより正確な説明は,次のセクションで解説される包括的な要素charPropを用いることで提供される.CharProp(Character Properties)という要素名にもかかわらず,この要素は文字にも字形にも用いることができる.

5.2.1 文字の属性

ユニコード標準は「理念的な」文字を記述している.それは,それらが持っているとされる多くの「属性」(あるいは属性と値の組)への参照によって定義されている.たとえば,小文字はgeneral-categoryの属性に関してLIという値を持っているとされる.この標準規格では規定 (normative) 属性(すなわち,ある文字の定義の部分を形成する属性)と,規定ではない,参考 (informative) あるいは付加 (additional) 属性とを区別する.そして,新しい属性を追加することや,特定の属性に現在予約されている値を選択することも(一部の環境では)認めている.そのような変更をする時には, Freytag (2006)に述べられているように,ユニコード標準にすでに存在する文字に関する標準的な参考属性を上書きしないように特に注意をしなければならない.

要素charPropは入力者に文字や字形に関する情報を提供することを認めている.すでユニコード標準で同定されている属性に関連する情報がある場合には,符号化する人は適切なユニコードの属性名を利用することが強く推奨される.

以下の要素は文字の属性を記録するために用いられる:
  • unicodeName登録されているユニコード基準素性または参考素性の名前を示す.
  • localName ユーザが定義した,ある素性の名前を示す.
  • value 特性,属性,分析向けの値をひとつ示す.
それぞれの属性に関しては,符号化する人は,一つのvalueを伴うunicodeNamelocalNameのどちらかを提供しなければならない.
利便性のために,我々は以下にいくつかの規範的な文字属性とその値の一部をリストしてみよう.完全な情報に関しては,The Unicode Standardの第四章を参照されるか,ユニコード文字データベースのオンライン文書を参照されたい.
一般的なカテゴリ
一般的なカテゴリ(Unicode Standardの第四章第五節に述べられている)は,文字に関するいくつかの主なクラスとサブクラスに割り当てられている.この属性に推奨されている値は以下の通りである:
Lu
文字,大文字(Letter, uppercase)
Ll
文字,小文字(Letter, lowercase)
Lt
文字,タイトル用(Letter, titlecase)
Lm
文字,修飾用(Letter, modifier)
Lo
文字,その他(Letter, other)
Mn
結合文字,幅なし(Mark, nonspacing)
Mc
結合文字,幅あり(Mark, spacing combining)
Me
結合文字,囲み(Mark, enclosing)
Nd
数字,十進数(Number, decimal digit)
Nl
数字,文字(Number, letter)
No
数字,その他(Number, other)
Pc
パンクチュエーション,接続(Punctuation, connector)
Pd
パンクチュエーション,ダッシュ(Punctuation, dash)
Ps
パンクチュエーション,開く括弧(Punctuation, open)
Pe
パンクチュエーション,閉じる括弧(Punctuation, close)
Pi
パンクチュエーション,引用符(Punctuation, initial quote)
Pf
パンクチュエーション,引用符の終わり(Punctuation, final quote)
Po
パンクチュエーション,その他(Punctuation, other)
Sm
記号,数学(Symbol, math)
Sc
記号,通貨(Symbol, currency)
Sk
記号,修飾(Symbol, modifier)
So
記号,その他(Symbol, other)
Zs
分離記号,空白(Separator, space)
Zl
分離記号,行(Separator, line)
Zp
分離記号,段落(Separator, paragraph)
Cc
その他,制御(Other, control)
Cf
その他,書式(Other, format)
Cs
その他,サロゲート(Other, surrogate)
Co
その他,個人利用(Other, private use)
Cn
その他,未割り当て(Other, not assigned)
方向に関する分類
この属性はすべてのUnicode文字に適用される.それは,Unicodeの付属書類9,双方向アルゴリズムにおいてさらに規定されているように,双方向の振る舞いに関するアルゴリズムの適用に関して影響を与える.以下の19の値は現在のところDavis et al (2006)においてこの属性に関して定義されているものである:
L
左から右へ
LRE
左から右へ埋め込み
LRO
左から右へ最優先
R
右から左へ
AL
アラビア語で右から左へ
RLE
右から左へ埋め込み
RLO
右から左へ最優先
PDF
方向づけの一時中断
EN
ヨーロッパの数字
ES
ヨーロッパの数字の区切り記号
ET
ヨーロッパの数字の終了記号
AN
アラビア数字
CS
一般的な数字の区切り記号
NSM
空白でない記号
BN
境界とならない記号
B
段落区切り記号
S
セグメント区切り記号
WS
空白
ON
他の中立的な文字
正規結合クラス
この属性は独立して用いられず,しかし他の文字と結合して用いられる文字のために存在する.たとえば,CJK文字の筆致である.この属性はこれらの文字のためのクラスを記すものであり,それは文字がどのようにして字形として相互に影響しあうかを決定するのに用いられるものである.以下の値はUnicode Standard5.0で定義されている. (UnicodeCharacter Database: Canonical Combining Class Valuesを参照せよ)
0
空白,分割,結合,順序の変化,チベット語の半結合
1
重なりと入れ込み
7
ヌクタ(インド系文字の付加記号)
8
ひらがな/カタカナの発音記号
9
ヴィラマ(インド系文字の付加記号)
10
固定位置クラスの開始
199
固定位置クラスの終了
200
左下に添える
202
下に添える
204
右下に添える
208
左に添える(一つの基底文字を中心に順序が変わる)
210
右に添える
212
左上に添える
214
上に添える
216
右上に添える
218
左下
220
222
右下
224
左(一つの基底文字を中心に順序が変わる)
226
228
左上
230
232
右上
233
二段下
234
二段上
240
下(イオタ下付母音)
文字の分解表記
この属性は分解可能な文字のために用いられている.たとえば,正規の形に加えてある種の字形上の違いを加えるようなものである.そのような文字に関して,ユニコード標準では分解の形式と分解のマッピングの両方を定めている.(すなわち,この文字は別のユニコード文字に対して,分解の形式で特定される方法でマッピングされてもよい)以下のマッピングのタイプはユニコード標準で定義されている.
font
異なるフォントの形(たとえば,ブラックレター形式)
noBreak
空白やハイフンの区切りがないバージョン
initial
開始表示形(アラビア文字)
medial
中間表示形(アラビア文字)
final
終端表示形(アラビア文字)
isolated
独立表示形(アラビア文字)
circle
丸囲み形
super
上付きの形
sub
下付の形
vertical
縦書きレイアウトの表示形
wide
幅広(あるいは全角)互換文字
narrow
狭い(あるいは半角)互換文字
small
小さな派生形 (CNS互換)
square
CJKの四角いフォントの派生形
fraction
分数の形
compat
の他の特定されない互換文字
numeric-value(数値)
この属性はあらゆる種類の数値を表現するあらゆる文字に適用される.その値は十進数表記の所定の値である.
mirrored(鏡像)
鏡像文字の属性は,U+0028,丸括弧の開始のような,テキストの方向とは独立した文字を適切に表現するのに用いられる.それはY(文字は鏡像)かN(文字は鏡像でない)という値を持つ.

ユニコード標準は,ユニコード文字に関する一連の参考(非正規の)属性をも定義している.もし符号化する人がそのような属性を提供することを望むなら,それらは,推奨されるユニコード名を用いて要素unicodeNameでタグ付けして取り込むことができる.しかし,符号化する人は,別のローカルに定義した属性を付加してもよい.その場合には,区別のために要素localNameを用いて名付ける必要がある.もし、あるユニコード名が、ある所定の属性に関して存在するならば、しかしそれは常にローカルに定義された名前に優先されるべきである。ローカルに定義された名前はユニコード標準によって特定されていない属性に関してのみ用いられるべきである。

5.3 文字への注釈

ある文字への注釈は,特定の側面(よくある例としては,見た目に関して)のみに基づいて区別されることが求められた時に必要となる.たとえば,rの文字の明確に異なる形が認められるマニュスクリプトにおいて,その頁の正確な表現を提供する必要性とはまったく異なった意味合いで,分析を目的としてそれらを区別することは有益かもしれない.デジタル画像,特に翻刻され符号化された版にリンクされたものは,常に上質な視覚的表現をもたらしてくれるだろう(どのようにしてデジタル画像から翻刻テキストにリンクするかということについての情報は 11.1 Digital Facsimilesを参照).しかし,それは,そのような異なった形の分布に基づく議論を助けるのに用いることはできない.ここに記述された文字の注釈はこの問題への一つの解決策を提示する.21

関連する文字に関する標準的な表現と派生的な字形を区別したいと思ったとすると,我々は我々が区別したいと思っている文字の形のそれぞれに対して異なる要素glyphを定義する必要があるだろう:
<charDecl>
 <glyph xml:id="r1">
  <glyphName>LATIN SMALL LETTER R WITH ONE FUNNY STROKE</glyphName>
  <charProp>
   <localName>entity</localName>
   <value>r1</value>
  </charProp>
  <graphic url="r1img.png"/>
 </glyph>
 <glyph xml:id="r2">
  <glyphName>LATIN SMALL LETTER R WITH TWO FUNNY STROKES</glyphName>
  <charProp>
   <localName>entity</localName>
   <value>r2</value>
  </charProp>
  <graphic url="r2img.png"/>
 </glyph>
</charDecl>
適切な位置でこれらの定義をしておくことで,テキスト中でこれらの二つの特殊な「r」が出現する箇所では要素gを用いて注釈することができる:
<p>Wo<g ref="#r1">r</g>ds in this
manusc<g ref="#r2">r</g>ipt are sometimes
written in a funny way.</p>
この例に見られるように,要素gから指示される要素glyphは,要素gの内容についての注釈として解釈されるだろう.この仕組みは以下の例のような合字においても用いることができる:
<p> ... <g ref="#Filig">Fi</g>lthy riches...</p>
<!-- in the charDecl -->
<glyph xml:id="Filig">
 <glyphName>LATIN UPPER F AND LATIN LOWER I LIGATURE</glyphName>
 <graphic url="Filig.png"/>
</glyph>
(実際の所,ユニコード標準は合字Fiを表現するために一つの文字を用意している.しかし,符号化する人は,たとえば索引処理などのテキスト処理を簡便にするためにそれを使いたくないことがあるかもしれない.)

このマークアップが適切なところにあれば,異なる文字「r」はオリジナルをより「忠実な」形で表示するのと同時に,その分布を分析するためのプログラムを書くこともできる.また,要素gで指示された注釈を簡単に無視して正規化されたバージョンを作り出すこともできる.

符号化を簡潔にするためには,以下のように内部エンティティを事前に定義することが望ましいかもしれない:
<!ENTITY r1 '<g ref="#r1">r</g>' >
<!ENTITY r2 '<g ref="#r2">r</g>' >
いずれも以下のようにして同じ資料を符号化することができる:
<p>Wo&amp;amp;r1;ds in this manusc&amp;amp;r2;ipt are
sometimes written in a funny way.</p>
同じテクニックは,他の文字や字形を表現するのと同様に,特定の略語記号を表現するのに用いることもできる. たとえば,もし我々が,変わった書き方のrがレシートの略称として用いられていると考えられるなら,これは以下のように表現されるだろう:
<abbr>&amp;r1;</abbr>

しかし,注意しておきたいのは,このテクニックは文書中の文字とその文字についての何らかの注釈との間のリンクを提供するためにマークアップオブジェクトを採用しているという点である.すなわち,このようなマークアップの構造が許可されないところ,特に属性の値では用いることができない.

5.4 新しい文字の追加

テキストの符号化において利用するために追加する文字を作成することは,既存の文字の注釈にとてもよく似ている.同じ要素gが,テキスト中の文字のインスタンスから要素charDecl の中に書かれた文字定義へのリンクを提供するのに用いられる.この文字定義は要素char の形式を採る. 要素g 自身はたいていは空だが,ユニコード標準の個人利用区画(PUA)のコード番号を含むことができる.個人利用区画は文書に新しい文字を私的に追加するというまさにその目的のために用意されている領域である.その個人利用区画の文字の推奨される利用法は以下の節に提示されている.

環境によっては,一連のコード番号としてのみユニコードにおいて符号化されている一つの文字を,単一の文字として提供することが要求されるかもしれない.たとえば,中世のスカンディナヴィアの資料では,点と鋭アクセント記号が上についた小文字のyのようにみえる文字がしばしば登場するので符号化する人はそれを一つのコード番号を持った一つの用意された文字として扱いたいと思う.その転写に際しては,符号化する人はこの文字を&ydotacute;と入力する.そしてそれは,転写が処理されるときには有効なマッピングにしたがって三つの方法で拡張することができる.エンティティ参照は,対応する一連のUnicodeのコード番号か,あるいは,ローカルでの処理専用の,何らかのローカルで定義されたPUA文字(&#xE0A4)に変換されるかもしれない.どちらの選択肢でも,不利な点はある.前者は,その一連の文字列が単一のものとして見なされるという事実を失い,後者は互換性がない.したがって,推奨される表現方法は,この章で定義されるモジュールによって定義された要素gを利用することである:
<g ref="#ydotacute"/>
これは,符号化する人にとっては,参照されている特定の文字や字形に関する有益な情報提供を可能とする:
<char xml:id="ydotacute">
 <charName>LATIN SMALL LETTER Y WITH DOT ABOVE AND
   ACUTE</charName>
 <charProp>
  <localName>entity</localName>
  <value>ydotacute</value>
 </charProp>
 <mapping type="composed">&amp;#x0079;&amp;#x0307;&amp;#x0301;</mapping>
 <mapping type="PUA">U+E0A4</mapping>
</char>
この定義は,作成されている文字と,それを構成するユニコードのコード番号との間のマッピングを指示している.そして,関連する文字についての単一のローカル定義属性(エンティティ)も提供している.それはその文字の,推奨される文字エンティティ名を提供するためである.
特定の環境下では,中国の漢字は丸で囲むことができる.符号化する人は,これをレンダリングの一種として考えるよりはむしろ,きちんと区別された派生文字として丸囲み文字を取り扱いたいと思うかもしれない.ある文字に関しては(数字による文字参照の&#x4EBAによって代表されるような)に関しては,丸囲み字は次のように表現するのができる.
<g ref="#U4EBA-circled"/>
この記述は,以下にある文字の定義を参照することになる.
<char xml:id="U4EBA-circled">
 <charName>CIRCLED IDEOGRAPH</charName>
 <charProp>
  <unicodeName>character-decomposition-mapping</unicodeName>
  <value>circle</value>
 </charProp>
 <charProp>
  <localName>daikanwa</localName>
  <value>36</value>
 </charProp>
 <mapping type="standard"> &amp;amp;#x4EBA;
 </mapping>
 <mapping type="PUA"> &amp;amp;#xE000;
 </mapping>
</char>

この例では,「丸で囲まれた表意文字」は二つのマッピングと二つの属性で定義されている.二つの属性はユニコードで定義された文字部品であり,丸囲み文字であることを表している.それは適切な用語(上述の 5.2.1 文字の属性 を参照)と,「大漢和」と呼ばれるローカルで定義された属性を用いている.二つのマッピングのうち最初のものはこの文字の標準字形がであることを示しており,二つ目のものはこの文字をローカルで表現するのに用いられている文字が個人利用区画文字のであることを示している.ローカルでの処理を便利にするために,このPUA文字は実際のところ要素g の内容として用いられてもよい.しかし,一般には,要素gは空となるだろう.

5.5 個人利用区画でのコード番号の使い方

ユニコード標準の開発者はソフトウェア開発者やユーザグループ,あるいは個人のプライベートな利用のためにあるコード空間を確保してきた.この書き方(Unicode5.0)に関しては,13700コード番号がこのエリアで利用可能である.それはほとんどのニーズに十分だろう.標準自身がこのエリアへのコード番号の割り当てを行わないようにしており,いくつかの非常に基本的なデフォルト属性だけが割り当てられている.(それはこの章で概説した仕組みによって必要であれば上書きしてもよい.)したがって,ユニコード標準で定義されるすべての他のコード番号とは異なる,個人利用区画のコード番号は,容易な交換(blind interchange)を目指す文書では直接に文書の中で用いられるべきではない

上述の二つの例で,我々は,関連する派生文字が個人利用区画の特定のコード番号にうまく割り当てられるだろうということを述べた.このことは,たとえば,ローカルな処理環境でのこのコード番号の箇所で希望の文字を表示する特定のフォントの利用を効率的にするかもしれない.しかし,この割り当てはローカルサイトで正しいというだけなので,そのようなコード番号を含んでいる文書は容易な交換(blind interchange)には不適である.交換のためにそのような文書を用意する処理では,あらゆる個人利用区画のコード番号は適切に用いられた要素g,たとえば g ref="#xxxx"によって置き換えられるべきである.そのようにして,参照された要素char によって提供される記述によって,必要な文字に関係づけるのである. 文書を用意する間に用いられる個人利用区画文字は, 5.4 新しい文字の追加での例に示されたように,要素char の中に記述されてもよく,あるいは,要素gの内容として保持されてもよい.しかし,受け取る側のサイトでそれを表現するのに用いる同じ個人利用区画文字が要求されないということと,このサイトがすでに独自の個人利用区画のコード番号に別の文字を割り当ててしまっていることもあるかもしれないということから,ローカルに定義された個人利用区画の文字を削除しておくのは最良である.そういった文字を扱うためには,受け取るサイトでのローカルな処理環境にさらに変換すること必要とされるだろう,ということは想定しておかねばならない.その場合,異体字は,要素charで提供された情報に基づき,それまで未使用だったコード番号に変換してもよい.

この仕組みはDOMツリーやパースされたXMLの断片が交換される場合にはやや弱い.そのケースはちょっと多いかもしれない.ここで可能な最も良い対応策はローカル文書の文脈のみでPUA文字の出現を扱うことであり,他の文脈での文字の扱い方として要素charを通じて提供される属性を利用することである.

機が熟したなら,一つの文字は標準となるかもしれず,個人利用区画以外のところに特定のコード番号を割り当てられるかもしれない.その仕組みを用いて符号化された文書は,少なくとも,この変更されたコード番号が関連する char要素に記録されたということを保証する.しかし通常は要素char を削除して,新たに符号化された文字を、それを参照する要素gのすべての登場箇所に置き換える方が簡単だろう.

5.6 外字モジュール

本章で紹介したモジュールでは,以下の要素を使うことができる:これら構成要素の選択や組み合わせについては,1.2 TEIスキーマの定義にある.

Contents« 4 テキスト構造モジュール » 6 韻文

注釈
20.
特に,アルファベット表示形,アラビア表示形A,アラビア表示形B,文字様記号,数字に準じるものがそうである.
 
21.
あらゆる種類のテキスト符号化は抽象化でありテキストの解釈であるということには留意するべきである.そして,手稿の見た目を性格に再現するのに役立つものである必要もない.
 


Copyright TEIコンソーシアム 2007 Licensed under the GPL. Copying and redistribution is permitted and encouraged.
Version 1.0.