Unicode、XML、XSLと多言語組版
2004年1月23日
アンテナハウス株式会社
小林 徳滋
たいていのメーカは自社製品の販売地域を言語とは関係なく広げたいと考えているが、そのためには商品説明書などの印刷物の現地化が必須である。製品を海外に販売するための現地化は、これまでは販売する国で行ってきた。
しかし、特にデジタル部品化による製品ライフサイクルの短縮化、物流における航空運送、インターネットの急速な普及などによる世界経済の一元化に伴い、開発国で出来上がってから販売する国に持ち込んでローカライズするというやり方ではもう間に合わなくなってきている。今後は、製品の開発の進捗に歩調を合わせて、多言語の説明書を同時進行で作ることが重要になるだろう。
また、インターネットに繋げたドキュメント・サーバを使えば、全世界の数十種類の言語のマニュアルの翻訳と制作を効率的に管理して、同時進行で進めることも簡単になってきた。これらは全世界の対象に一箇所で行われる。この結果、制作・印刷会社の競争もグローバル競争にならざるを得ない。
多言語の説明書を同時進行で作成するのにXMLとXSL-FOによる自動組版技術が有効である。特に、XSL-FOは国際化を念頭において設計された仕様になっている。
アンテナハウスはXSL-FO組版エンジンを全世界で販売している。XSL-FOを使って日本語や英語、西欧の言語のほか、中国語、韓国語、アラビア語、ヘブライ語、タイ語までを含む多言語を組版してPDFを作成できる。世界のグローバル企業やローカライズを担当する会社から高い評価を頂いている。既にHPを初めとする欧米の会社では数十カ国のマニュアルを同時に作成してCD-ROMに入れて製品に同梱して出荷し始めている。
多言語組版を行うには、様々な新しい知識、経験が必要となる。組版ソフトが自動的に行ってくれる部分もあるが、データを作成したり、組版ソフトを使用する上で新たに学ばねばならないことも多い。こうした中でいくつかのポイントを次にまとめた。
多言語をコンピュータで扱うためには、まずその前提として、多言語を表記する文字を同時に扱うことがでシフトJISのような国単位で、地域ローカルな文字コード標準では、多言語混在の文書を簡単に扱うことはできない。多言語編集、特に多言語混在の文書を編集、組版しようとしたらUnicodeが必須である。
Unicodeは1991年10月に初版発行後、急速に拡張され。2003年4月には第4版が発行されている。
Unicodeの仕様は単に符号化文字集合を定義するだけではなく、テキスト処理のための各種の基準を定義している。①文字毎に書き進める方向を規定した文字データベース、②禁則文字など文字の改行特性を規定す仕様などである。Unicodeの仕様とこれらの技術レポートは全世界の言語を取り扱うための基準になる。MicrosoftのWindows2000/XPは内部処理がUnicode準拠になっていて、多言語処理機能が飛躍的に強化されている。アプリケーション・ソフトウエアには内部的にUnicodeでデータを処理しているものとローカル文字コードで処理しているものがある。多言語の処理を行おうとしたら、内部的にUnicode処理をしているアプリケーション・ソフトウエアを選択する必要がある。コンピュータによるDTPの歴史はMacintoshから始まった。現在でも、ドキュメントの制作や印刷業界ではMacintoshを使っている人が多い。しかし、多言語の表示・印刷・PDF作成ということになると、現時点ではWindows2000/XPの方が進んでいる。
アプリケーション・ソフトウエアがUnicodeを扱えるといっても、それだけでは多言語処理ができるとは言えない。日本語や中国語(繁体字)では同一文章を横書きと縦書きができる。横書きと縦書きでは句読点や括弧類は同じ文字コードを異なるグリフで表示・印刷する必要がある。縦書き、横書きでは自動的にグリフの入れ替えを行わねばならない。同様に、アラビア語では、同じ文字が単独の時、単語の開始位置に表れる時、中間、終了位置に表れる時でグリフが変化する。アラビア語を正しく扱うソフトウエアは文字の位置によるグリフの入れ替えを実現しなければならない。タイ語、クメール語、ラオ語などの東南アジア大陸部の文字は子音字を中心に母音記号を上下、左右に配置する音節文字である。これらの言語の文字コードは、Unicodeでは子音字、母音記号、声調記号の記号レベルで規定されている。そこで、アプリケーションは複数の文字コード・ポイントのシーケンスをまとめて子音字の上下左右に配置して表示したり印刷する必要がある。
多言語組版のもう一つの推進要素はPDF技術だろう。多言語の説明書を組版することができても、それを紙に印刷して持ち歩かなければならないということでは、全地球をリアルタイムでカバーする電子化時代には間に合わない。紙を電子化した媒体であるPDFができたことによって、多言語の組版結果をインターネット経由でどこにでも送信したり、CD-ROMなどの電子媒体で流通させることができるようになった。国境を越えてPDFを流通させたり、多言語組版をして、アラビア語やタイ語を含む文書のPDFを作成する場合は、アウトラインの埋め込みを許可されたフォントを指定し、PDF生成時にフォントのアウトラインを埋め込む必要がある。
主要な言語用にアウトライン埋め込みの許可されたフォントがある。欧米の言語、スラブ系言語、日本語、中国語(繁体字、簡体字)、韓国語、アラビア語、ヘブライ語、タイ語等についてはTrueTypeまたはOpenType(TrueTypeフォーマット)のフォントを無償で揃えることができる。
もちろん、デザインを重視した場合、このようなフォントのみでは不足であるが、技術説明書、製品のサービス説明書などの用途では十分実用的である。
多言語の文書のコンテンツを表現するのにはXMLが最適である。XMLは、UTF-8、UTF-16というUnicodeベースの符号化方式を標準として採用している。従って文字コード変換をすることなくUnicodeテキストを扱える。MicrosoftWordのようなワープロを使えば、通常のビジネス文書レベルでの多言語文書作成と印刷、PDF化は簡単にできる。しかし、膨大な量の製品マニュアルを作成したり、作成した文書をいろいろな形に加工したり、あるいはプロフェッショナルな品質をもつ印刷物を作成するためには、他のアプリケーションとデータを交換したり、他のアプリケーションと組み合わせて使う必要がある。このような時、情報をXMLで表現しておくことで、アプリケーション間の連携が容易に実現できる。
XMLでは文書ファイルを分割して作成したり、あるいは、画像ファイルは外部ファイルとして置くことができる。この仕組みを使って、文書作成時にいろいろな言語の文書で異なる部分は別ファイルとして作成、共通の部分は一つとし、画像はすべての言語で共通にするというような構成として、組版時にパーツ文書を組み立てて最終形にするような方法が取れる。
ひとつのバージョンで最も多くの言語を編集できるワープロソフトはMicrosoft Wordである。Microsoft Word2003ではXML Schemaで定義したユーザスキーマによるXML文書編集が可能になり、またユーザスキーマを使わない文書についてもWordMLというXML形式で保存ができるようになった。
また、2003年の秋にリリースされたOpenOffice1.1/StarOffice7でも多言語の編集機能が強化され、アラビア語やタイ語の編集ができるようになった。OpenOfficeの保存形式もXML形式である。
XSL-FOは紙のような用紙サイズの概念をもつメディアの上にXMLを組版するための仕様である。XSL-FOの仕様は、最初から、Unicodeと国際化を配慮した仕様になっている。XSL-FOの仕様では規定されていない日本語組版機能についても、独自拡張などの方法で機能強化できる。
XSLでは、行の進行方向、文字の進行方向等の既定値は欧文の横書きであるが、それ以外の進行方向も自在に指定できる。
文章の段落に複数の言語が混在する、多言語混植の組版には、様々な難しい問題がある。日本語組版において日本語の中にラテン文字による欧文を混植する場合、和文と欧文の間には一定の空白を空けるのが一般的である。CSS3にはこの動作が規定されているがXSL仕様にはこの機能がない。アンテナハウスはXSL拡張仕様で和欧文間の空白量を定義し、XSL Formatterは和欧文間の空白量の自動調整ができる。
日本語や英語のような左から右に記述する文章の中にアラビア語やヘブライ語のような右から左に記述する文字が混在することをBIDI(双方向性)という。
進行方向の異なる文字が入れ子になっていると、文字の進行方向に関して曖昧さが生まれることがある。これを処理するため、UnicodeはBIDIアルゴリズムを定義している。UnicodeのBIDIは、文字の特性に基づく暗黙の部分と、埋め込み、オーバライドを明示的に制御する部分がある。
XSLでは、Unicodeの方向整形コードまたは、fo:bidi-overrideを使って処理を指定する。
文字列を組版する上で最も重要な問題は改行位置の決定方法である。言語には①
英語や西欧の言語、アラビア語、韓国語(ハングル)、現代インド文字のように単語を分かち書きするもの、②日本語、中国語(簡体字)、中国語(繁体字)
のように分かち書きしないが任意の音節文字間で改行できるもの、③タイ語、クメール語、ラオ語のように分かち書きせず単語の区切りで改行するものがある。
英語のような言語では、改行位置は原則として単語間の空白、または、センテンスの区切りの空白の位置となる。日本語や中国語の漢字やかなの文章は原則としてどの文字間でも改行できる。タイ語、クメール語やラオ語のような言語を組版する際、改行位置を決定するためにはある種の辞書を用意する必要がある。
多言語組版エンジンは、3種類の改行決定方法を実装し、言語によって使い分けできなければならない。
日本語の改行位置の決定には禁則というルールがある。欧米の言語のルールは簡単と考えられがちであるが、日本語とは異なる難しい問題がある。特に、記号類とラテン文字の間での改行は難しい。このルールも時代に応じて変化している。例えば、英語のスタイルガイドとして有名なシカゴ・マニュアルは昨年第15版が出版されたが内容は大幅な改訂が行われている。典型的な例はURLの表記法や改行方法が盛り込まれたことだろう。
単語を分かち書きする言語では改行位置が単語の区切りになるため、長い単語が行末にかかって次の行に送られると、その行は文字数が少なくなる。このようなことから単語の組み合わせによって行の長さが大幅に変動してしまう。そこで単語を行末で分割することで行の長さを平均化するハイフネーション機能が必要である。XSLではハイフネーション機能の動作をオン/オフしたり、ハイフネーションの連続をコントロールするためのプロパティを定義しており、XSL Formatterではこれらの機能をつかってハイフネーションの頻度を調整できる。
XSL-FOでジャスティフィケーションを指定された場合、これを実現するには言語別処理が必要である。例えば、ジャスティフィケーションの際、英語ではワード・スペーシングが多少変化しても良いが、ハイフネーションを使って単語間の空白量ができるだけ変動しないようにするのが良い。
アラビア語では、ワード・スペーシングが変化しないように組むのが普通である。このためアラビア語の両端揃えでは、文字間にカシダというグリフを挿入して単語の長さを伸ばすことで両端揃えを実現している。
日本語や中国語は文字と文字の間の空き量を調整してジャスティフィケーションを行う。しかし、行の中に欧文が混在したときは欧文の部分はラテン文字の組版ルールに従う。
タイ語は改行位置が単語の区切りになるため行の長さが、変動しやすい。しかし、サンスクリットに由来する単語を除いてハイフネーションはしないのが普通である。このため、タイ語にジャスティフィケーションを指定すると非常に見づらい組版結果になりがちである。このようなジャスティフィケーションの処理は組版エンジンが行うものであり組版エンジンの優劣が表れやすい。
日本語の組版には禁則処理、約物の詰めなどの独自のルールが沢山あり、日本独自の組版規則を実装しなければ、日本語組版エンジンとしては実用にならない。
現在、これらはXSLの仕様では規定されていないが、アンテナハウスではXSLの仕様を独自に拡張して、XSL Formatterに実装している。
世界の言語を自由に組み合わせて多言語の出版物を作るのは高度な知識と経験の蓄積が必要である。こういった知識を共有してお互いにレベルを上げていきたいと考えて、昨年より「多言語組版研究会」を行っている。研究会を通じて、日本を多言語の出版物のセンターとすることで、経済の活性化、国際社会に貢献したいと考えている。
(印刷ジャーナル1月25日号寄稿原稿)
編集履歴
- ページのレイアウト修正