5 標準化されていない文字と字形の表現
Contents
- « 4 テキスト構造モジュール
- » 6 韻文
- Home | 目次
ユニコードが利用できるにもかかわらず,未だに,テキストを符号化する人は,時折,利用可能な文字として公表されているレパートリーでは十分でないことに気づくことがある.このことは特に,まだ文字コードが存在しないような古典的な言語を扱う場合や,符号化する人が文字や字形の異体字を表示したいという場合にありがちである.この章で定義するモジュールでは,標準規格との互換性を保ちながらそのニーズを満たす仕組みを提供する.
5.1 その道のりは本当に必要なのかTEI: その道のりは本当に必要なのか¶
符号化する人が電子化すべき文書の中でいくつかの図像に出会った時,解決されるべき最初の課題は「これは本当に異なる文字だろうか?」だろう.ある特定の図像が一つの文字であることを決定するためには,用語法とキー概念を参照されたい.
ユニコードのWebページをチェックする.http://www.unicode.org, 特に, "Where is my Character?", のページで,関連する文字コード表をチェックする. あるいは,ユーザは「 The Unicode Standard (Unicode Consortium (2006))の最新の印刷本をチェックすることもできる.ただし,Webサイトは印刷本よりも最新のものを反映しており,なるべくならチェックすべきである.
ユニコードのコード表における(‘glyphs’)という図像は,代表的なものを意味しているだけであり,厳密なものではない.もし,すでに符号化されていたとしても,プロジェクトとしてその文字の例外的な字形を必要とする場合には,このガイドラインの文字への注釈以下を参照されたい.忘れてはならないのは,あなたが電子化した文書は,あなたが使ったのとは別のフォントがインストールされたシステムで表示されるかもしれないということである.もしも,ある文字の例外的な形が重要なら,その場合には,それを文書化しておくべきである.
- その文字がユニコードの承認待ちであるかどうかを確認するために,「新しい文字の提案」のWebページ (http://unicode.org/alloc/Pipeline.html) をチェックする.
- 提案が保留中なのか,あるいは,この文字がユニコード標準に追加されるにふさわしいとみなされるかどうかを決定するために,ユニコードメーリングリスト (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 文字と字形を表現するためのマークアップの構造TEI: 文字と字形を表現するためのマークアップの構造¶
原理的には,XML文書はあらゆる定義済みのユニコード文字を含むことができる. その標準規格では,適切なエンコーディング(デフォルトではUTF-8)を直接用いる方法と,数字を用いて参照する(NCR)間接的な方法とのどちらでも,これらの文字が表示されることが認められている.符号化する人は,適切なエンコーディング宣言を付け加えることで,文書で(あるいはその一部で)表現される文字の範囲を制限することもできる. たとえば,もし,文書が<?xml encoding="iso-8859-1"?>という宣言で始まっているなら,<?xml encoding="iso-8859-1"?> ISO-8859-1の文字セットに含まれないすべてのユニコード文字は数値文字参照(NCR)で表現されなければならない.
この章で定義される外字モジュールは,文書のなかで特殊な文字や字形を表示するためのさらなる方法を提供する.外字モジュールによって,符号化する人は,ユニコードでは包摂されている文字や字形を区別すること,ユニコードに入っていない新たな文字や字形を付け加えること,文書を符号化する際には利用できないユニコード文字を別の手段で表現することが可能となる.
外字モジュールがスキーマに含まれているときには,要素charDeclがクラスmodel.encodingPartに追加されている.そして,要素g がクラスphraseに追加されている.これらの要素とそれらのコンポーネントについてはこのセクションの別の場所で説明する.
ユニコード標準はユニコード文字データベースで定義するすべての文字に関する属性を定義している. その知識は,大抵の場合,テキスト処理システムに組み込まれている. もし要素g によって表示される文字がユニコードにまったく存在しない場合,その属性はまったく利用できない.もし表示される文字が既存のユニコード文字で,しかし,使っている処理システムで認識できる文字セットでは利用できない場合には,同じ方法でその属性にアクセスするのも便利かもしれない.要素char は,ある標準的な方法でそういったアプリケーションによって利用するために属性を蓄積することを可能にしている.
文字に関する属性のリストは,ユニコード文字データベースのものを手本としており,文字の属性を 規定(normative) と 参考(informative) に区別している. さらに,非ユニコードの属性も提供することができる.属性のリストはユニコード標準のバージョンによって異なるため,それらは,これらのガイドラインで定義する属性のリストとは正確には一致しないかもしれない.
要素charと要素glyphは似たような内容を持ち,似たような方法で用いられるが,それらの機能は異なっている.要素char は,どんな理由であれ,上述のように,現在の文書の文字セットでは利用できない文字を定義するために提供されている.要素glyph は,たいていの場合,下の文書に文字がどのように現れているかを示す特別な字形を提供することによって,すでに存在する文字を注記するために用いられるものである.ユニコードのコードポイントは非常に一般的な抽象化文字を参照するものであり,きわめて多くの表現手法によって描かれ得るものである.要素glyphは,符号化する人がすべてのあり得る字形に含まれない特殊な字形(あるいは字形のファミリー)を特定したいケースに向けて提供されている.
これらのうちの4つの要素 (gloss, desc,graphicと remarks) は他のTEIモジュールでも定義されており,それらのここでの用法は,別のところでの用法と違いはない.しかしながら,要素graphic は,ここでは,検討中の文字や字形の画像にリンクするか,あるいは,SVGでの表現を含むためだけに用いられる.いくつかの要素graphicが,たとえば,異なる解像度や異なるフォーマットによるいくつかの画像を提供するために,利用可能である.属性mimeTypeは,要素 graphicがクラスatt.internetMediaのメンバーから得るものだが、画像のフォーマットを特定するのに用いることができる.
<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>
<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 文字の属性TEI: 文字の属性¶
ユニコード標準は「理念的な」文字を記述している.それは,それらが持っているとされる多くの「属性」(あるいは属性と値の組)への参照によって定義されている.たとえば,小文字はgeneral-categoryの属性に関してLIという値を持っているとされる.この標準規格では規定 (normative) 属性(すなわち,ある文字の定義の部分を形成する属性)と,規定ではない,参考 (informative) あるいは付加 (additional) 属性とを区別する.そして,新しい属性を追加することや,特定の属性に現在予約されている値を選択することも(一部の環境では)認めている.そのような変更をする時には, Freytag (2006)に述べられているように,ユニコード標準にすでに存在する文字に関する標準的な参考属性を上書きしないように特に注意をしなければならない.
要素charPropは入力者に文字や字形に関する情報を提供することを認めている.すでユニコード標準で同定されている属性に関連する情報がある場合には,符号化する人は適切なユニコードの属性名を利用することが強く推奨される.
- unicodeName登録されているユニコード基準素性または参考素性の名前を示す.
- localName ユーザが定義した,ある素性の名前を示す.
- value 特性,属性,分析向けの値をひとつ示す.
- 一般的なカテゴリ
- 一般的なカテゴリ(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
- 右から左へ最優先
- 方向づけの一時中断
- 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 文字への注釈TEI: 文字への注釈¶
ある文字への注釈は,特定の側面(よくある例としては,見た目に関して)のみに基づいて区別されることが求められた時に必要となる.たとえば,rの文字の明確に異なる形が認められるマニュスクリプトにおいて,その頁の正確な表現を提供する必要性とはまったく異なった意味合いで,分析を目的としてそれらを区別することは有益かもしれない.デジタル画像,特に翻刻され符号化された版にリンクされたものは,常に上質な視覚的表現をもたらしてくれるだろう(どのようにしてデジタル画像から翻刻テキストにリンクするかということについての情報は 11.1 Digital Facsimilesを参照).しかし,それは,そのような異なった形の分布に基づく議論を助けるのに用いることはできない.ここに記述された文字の注釈はこの問題への一つの解決策を提示する.21
<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>
manusc<g ref="#r2">r</g>ipt are sometimes
written in a funny way.</p>
<!-- in the charDecl -->
<glyph xml:id="Filig">
<glyphName>LATIN UPPER F AND LATIN LOWER I LIGATURE</glyphName>
<graphic url="Filig.png"/>
</glyph>
このマークアップが適切なところにあれば,異なる文字「r」はオリジナルをより「忠実な」形で表示するのと同時に,その分布を分析するためのプログラムを書くこともできる.また,要素gで指示された注釈を簡単に無視して正規化されたバージョンを作り出すこともできる.
<!ENTITY r2 '<g ref="#r2">r</g>' >
sometimes written in a funny way.</p>
しかし,注意しておきたいのは,このテクニックは文書中の文字とその文字についての何らかの注釈との間のリンクを提供するためにマークアップオブジェクトを採用しているという点である.すなわち,このようなマークアップの構造が許可されないところ,特に属性の値では用いることができない.
5.4 新しい文字の追加TEI: 新しい文字の追加¶
テキストの符号化において利用するために追加する文字を作成することは,既存の文字の注釈にとてもよく似ている.同じ要素gが,テキスト中の文字のインスタンスから要素charDecl の中に書かれた文字定義へのリンクを提供するのに用いられる.この文字定義は要素char の形式を採る. 要素g 自身はたいていは空だが,ユニコード標準の個人利用区画(PUA)のコード番号を含むことができる.個人利用区画は文書に新しい文字を私的に追加するというまさにその目的のために用意されている領域である.その個人利用区画の文字の推奨される利用法は以下の節に提示されている.
<charName>LATIN SMALL LETTER Y WITH DOT ABOVE AND
ACUTE</charName>
<charProp>
<localName>entity</localName>
<value>ydotacute</value>
</charProp>
<mapping type="composed">&#x0079;&#x0307;&#x0301;</mapping>
<mapping type="PUA">U+E0A4</mapping>
</char>
<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;#x4EBA;
</mapping>
<mapping type="PUA"> &amp;#xE000;
</mapping>
</char>
この例では,「丸で囲まれた表意文字」は二つのマッピングと二つの属性で定義されている.二つの属性はユニコードで定義された文字部品であり,丸囲み文字であることを表している.それは適切な用語(上述の 5.2.1 文字の属性 を参照)と,「大漢和」と呼ばれるローカルで定義された属性を用いている.二つのマッピングのうち最初のものはこの文字の標準字形が人であることを示しており,二つ目のものはこの文字をローカルで表現するのに用いられている文字が個人利用区画文字のであることを示している.ローカルでの処理を便利にするために,このPUA文字は実際のところ要素g の内容として用いられてもよい.しかし,一般には,要素gは空となるだろう.
- « 5.4 新しい文字の追加
- » 5.6 外字モジュール
- Home | 目次
5.5 個人利用区画でのコード番号の使い方TEI: 個人利用区画でのコード番号の使い方¶
ユニコード標準の開発者はソフトウェア開発者やユーザグループ,あるいは個人のプライベートな利用のためにあるコード空間を確保してきた.この書き方(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 外字モジュールTEI: 外字モジュール¶
↑ Contents« 4 テキスト構造モジュール » 6 韻文