SGML文書処理系におけるフォント資源情報交換方式

A Scheme of Font Resource Information Interchange for SGML Document Environments


石川 直太

Naota ISHIKAWA 慶応義塾湘南藤沢 <naota@mag.keio.ac.jp>

檜山 正幸

Masayuki HIYAMA 檜山オフィス <hiyama@hmo.iijnet.or.jp>

小町 祐史

Yushi KOMACHI 松下電送 <komachi@y-adagio.com>

概要

1. まえがき

2. これまでの提案とその問題点

3. 記法宣言した実体集合とそれに対する公式公開識別子による方式

4. 具体例

5. むすび

文献


Abstract

A scheme of open information interchange of specific character sets and their glyph shape representation for SGML-conformant document environments is proposed with a modelling of its implementation and operation. The scheme employs an entity set with notation declaration and its formal public identifier. In order to assign locally a code point to a specific character, a short reference is introduced.

1. まえがき

文書を送り手と受け手との間で交換する際に, 両者間で外字を特定する必要性が常に伴う。漢字については, 政策や規格の枠組みを越えてそれを利用する時, この問題がクローズアップされ易い。漢字以外にも特定集団の文字使用の希望に応えようとすると, 特に小人数の集団(例えば, 沖縄古代文字の研究者の集団)[1]については, 同様の問題が世界中のどこにでも発生し得る。

送り手と受け手との間の文字の特定だけでなく, 特定した文字を可視化(レンダリング)するためのデータの両者間での共有も必要であり, 特殊な文字についてはフォント情報交換が要求される場合が多い。これらの要求は, あらかじめ事前調整を施した2者間だけでなく, なるべくオープンな環境で充足されることが望まれる。

文書情報の交換のためには, これまで幾つかの文書記述言語, 文書体系などが標準化されてきたが, Webの急速な普及により, SGML[2]またはそのサブセット(HTML[3], XML[4])が多くの環境での主流と考えられるようになっている。そこでここではSGMLに適合した文書処理環境を前提とし, その環境でフォント情報をも含む外字情報の交換を, システム非依存に行うための方式を提案し, 実装と運用に関するモデルに言及する。

2. これまでの提案とその問題点

まえがきに示した環境でその要求の一部を満たすための方式として, SDATA(specific character data)実体の利用[5],[6]が報告されている。そこでは, SDATA実体は次のように宣言される。

      <!ENTITY moji1 SDATA "符号化したグリフ形状表現データ">
文書インスタンス中で&moji1;によってこの実体の参照を行うと, システム依存の解釈が行われ, "符号化したグリフ形状表現データ"をサポートするアプリケーションによってレンダリングが行われる。

この提案に対する問題点は, 次のように整理される。

(1) 実体宣言の置換テキストをSDATAと宣言することは, ローカルシステム固有な意味をもつ文字データであることを示唆する。SGML-awareな処理系であっても, SDATAに関する処理の枠組はない。

(2) フォーマッタやレンダラなどのアプリケーションは, パーザの後の処理系であり, グリフ形状表現データは, パーザを通ってレンダリングシステムに与えられなければならない。しかしSDATA実体は, パーザにかける前に(例えば人手で)変更することが想定され, SDATAによってグリフ形状表現データを扱うことは必ずしも適切ではない。

SDATA実体参照がパーザで展開されたとき, 通常の文字データ(つまりSGML文字からなる文字列)と区別できることは明示的には保証されていない。(実装では, 何らかの方法で区別できるようにしていることが多い。)

3. 記法宣言した実体集合とそれに対する公式公開識別子による方式

ここでは, 記法宣言した実体集合を用意し, それに対する公式公開識別子を付けることを提案する。標準化された符号化文字集合の要素でない文字にも符号ポイントをローカルに与えるためには, 短縮参照を使う。

準備すべき公開リソースと対応する公式公開識別子を次に示す。ここで[]内は, そのリソースのテキストクラス(public text class)であり, (1)と(5)は, 符号ポイントを与る場合だけに必要となる。

4. 具体例

議論を簡潔にするため, 2文字だけから成る外字集合{okinawa1, okinawa2}を扱う具体例によって, ここに提案する記述方式を示す。

(1) 追加デリミタ文字

空いている符号(番号)を, nnn, mmm(10進数)として, SGML宣言に次を付け加える。

        DELIM GENERAL  SGMLREF
              SHORTREF SGMLREF
                 "&nnn;" -- for okinawa1 --
                 "&mmm;"  -- for okinawa2 --
これによってパーザは, 符号がnnn, mmmである文字の出現を常にチェックし, 短縮参照マップを引いて置換する。

(2) グリフ形状表現フォーマット

MetaFont[8]使うことにして, 例えば次の識別子を使う。

        "-//Dr. Knuth//NOTATION Meta Font//EN"
この識別子を文書内で使う記法名に結び付けるために, 次の記法宣言を行う。
        <!NOTATION MetaFont PUBLIC
        "-//Dr. Knuth//NOTATION Meta Font//EN">
記法宣言が入った実体は、ELEMENTSクラスの実体であることに注意されたい。

記法宣言が入った実体の識別子も定義するとして,

        "-//CJK DOCP//ELEMENTS
         Meta Font notation declaration//EN"
とする。MetaFontフォーマット(METAFONT NOTATION)自体の所有者(責任者)は Dr. Knuthであるが, それにMetaFontという名前を付けて宣言した責任者をCJK DOCP(日中韓文書処理会議)としている。

(3) 各文字のグリフ形状表現データ

それぞれを

        "-//CJK DOCP//NONSGML Okinawa Moji 1 in MF//JA"
        "-//CJK DOCP//NONSGML Okinawa Moji 2 in MF//JA"
とする。MetaFontデータはSGMLデータではないのでNONSGMLであり, 自然言語識別はNONSGMLデータでは特に意味をもたないが, ここではJAとする。個々のグリフ形状表現データはCJK DOCPによって管理されるとしているので, 所有者はCJK DOCPである。

(4) 実体集合

実体参照を全て含んだ実体集合の公開識別子とその内容を次に示す。

        "-//CJK DOCP//ENTITIES
         Okinawa Moji Set MetaFont version//JA"

        <!ENTITY okinawa1 PUBLIC
            "-//CJK DOCP//NONSGML Okinawa Moji 1 in MF//JA"
            NDATA MetaFont >
        <!ENTITY okinawa2 PUBLIC
            "-//CJK DOCP//NONSGML Okinawa Moji 2 in MF//JA"
            NDATA MetaFont >

(5) 短縮参照集合

(1)と(4)とを対応付ける短縮参照集合の識別子とその内容を次に示す。

        "-//CJK DOCP//SHORTREF Okinawa Moji Gaiji map//JA"

        <!SHORTREF okinawamap
            "&nnn;" okinawa1
            "&mmm;" okinawa2
        >

(6) 標準カタログ

これらの公開識別子とシステム識別子の対応表であり, このカタログが公開名をローカルファイルやURLにマップする。ユーザが環境に合わせて書き換えて使用する。

(7) 利用法

文書インスタンスでは, 例えば次のようにする。

<!DOCTYPE SomeType SYSTEM "sometype.dtd" [

<!ENTITY % MetaFontDecl PUBLIC
        "-//CJK DOCP//ELEMENTS Meta Font notation declaration//EN"
        -- Meta Font の記法宣言 -- >
%MetaFontDecl;
<!ENTITY % OkinawaMojiSetMFVer PUBLIC
        "-//CJK DOCP//ENTITIES
         Okinawa Moji Set MetaFont version//JA"
        -- 沖縄古代文字集合の実体集合; MetaFont版 -- >
%OkinawaMojiSetMFVer;
<!ENTITY % OkinawaMojiShortRef PUBLIC
        "-//CJK DOCP//SHORTREF
         Okinawa Moji Gaiji map//JA"
        -- 空いている符号ポイントで沖縄文字を表現 -->
%OkinawaMojiShortRef;
]>

5. むすび

この方法はSGML-conformantであり, パーザを経由しても本質的な情報は確実にアプリケーションに渡る。つまり, 当事者の暗黙の合意ではなく, 公式公開識別子を用いてリソースと処理環境を交換できる。

外字に割り当てた恣意的な符号は, パーザで展開されてしまうので, 一時的に決めたノンポータブル情報がアプリケーションを悩ますこともない。WWWサーバにグリフ形状表現データ(例えばMetaFontファイル群)を載せて, 公開識別子をURLにマップするカタログを使えば, インターネットワイドでフォント資源情報[7]の共有(グローバルフォントサーバ)も可能である。

今後の課題として, MetaFontやISO/IEC 9541等に基づくフォント資源の実装と, ISO/IEC 9070に基づく所有者識別子の導入とを検討し, グローバルフォントサーバのプロトタイプを試作することによって本方式による情報交換の利便性を実証することが残されている。

本件に関してレビューいただいた, メーリングリストCOMTECの皆様に感謝する。

文献

[1] C. C. Hsieh and S. Lin: A survey of full-text data bases and related techniques for Chinese ancient documents in Academia Sinica, 8th CJK/DOCP (日中韓文書処理会議), Fairbanks, CJK-DOCP/95-33, 1995-09.
[2] ISO 8879, Standard Generalized Markup Language (SGML), 1986-10.
[3] ISO/IEC JTC1/SC18/WG8 N1902, CD text for ISO-HTML, Hypertext Markup Language, 1997-04.
[4] Extensible Markup Language (XML), W3C working draft, http://www.w3.org/pub/WWW/TR/WD-xml-lang-970331.html, 1997-03.
[5] 今郷, 奥井: SGMLのエンティティ機構を利用した漢字表現方法, 情処全大 5S-07, 1996-09.
[6] Y. Okui, et al.: Multilingual document interchange using SDATA entity, BUCS, and others, SGML Asia Pacific '96, Sydney, 1996-09.
[7] ISO/IEC 9541, Font Information Interchange, 1991-09.
[8} D. E. Knuth: The METAFONT book, Addison-Wesley, 1986 (鷺谷訳: METAFONTブック, アスキー, 1994).