複雑なテキスト配置(ふくざつなテキストはいち)では、コンピュータでのテキストデータ処理において複雑なテキスト配置CTL[注釈 1])あるいは複雑なテキスト描画[注釈 2]と呼ばれる技法について解説する。

JanaSanskritSansフォントによるデーヴァナーガリー合字 ddhryaUnicodeでは7つの文字の列 द + ् + ध + ् + र + ् + य をもとに द्ध्र्य を描画しなければならない。
العربية al-arabiyyah (アラビア文字による「アラビア語」) について、描画処理の各段階を示す。1行めは処理前の字の様子である。複雑なテキスト描画を行わないアプリケーションではこのように表示されることになるであろう。2行めは双方向テキスト処理の機構が働いた様子。3行めはグリフ置換によってそれぞれの字が文脈に応じて描画された様子。

これは、入力されたテキストデータを画面や印刷紙面に表示する過程で複雑な変換が必要な用字系 (文字体系) の組版方式のことである。そのような処理を必要とする用字系書記系複雑な用字系[注釈 3]あるいはコンプレックステキスト言語CTL[注釈 4])呼ぶこともある。このような用字系では、保存されたテキストデータは表示される結果に単純に対応していない。以上に挙げたような表現はソフトウェアの国際化の分野で用いられている。

複雑なテキスト配置が必要な書記系の例としては、アラビア文字ブラーフミー系文字の用字系 (デーヴァナーガリータイ文字など) が挙げられる。

解説 編集

複雑なテキスト配置は合字 (リガチャ) の考えかたを一般化したものと言える。ラテン文字などの多くのアルファベットに属する文字体系では、リガチャは通常、審美的な観点から考慮が払われるだけの副次的なものだが、アラビア文字などを適切に組版するために必要となるリガチャと、ラテン文字などの筆記体の組版で必要となるそれとには、本質的な違いはない[注釈 5]。一方、漢字の文字の多くは、複数の構成要素の組み合わせとなっているため合字として表現することもできなくはないが、通常は文字をひとつひとつ符号化している。そのため、組版には技巧的なレイアウト技術を必要としないかわりに多数の活字が必要となる。リガチャを考慮しないやりかたの例としては、ギリシア文字の語末形のシグマ(ς)がある。これは通常の σ に対して、語の終わりの文脈で用いる字形変種である。Unicodeでは両方の変種を別々に U+03C2 および U+03C3 として符号化している。この場合、整列や比較の際にはソフトウェアの側で「δῖος Ἀχιλλεύς」のような文字列を「δῖοσ Ἀχιλλεύσ」と同等とみなして処理しなければならない。Unicode 標準では、ソフトウェアに対して ς と σ を正準等価あるいは互換等価であると扱うように求めてはいない。

コンプレックステキスト言語で解決しなければならない問題としては、つぎのような性質がある。

  • 双方向テキスト。文字が右から左へも、左から右へも描画される。
  • 文脈依存の字形変更 (リガチャ)。文字が位置や前後のほかの文字に応じて字形を変える。たとえばアラビア文字では、文脈に応じて4種の字形をとることがある。
  • 配列。文字を表示する順序が、論理的な順序と同じにならない。たとえばデーヴァナーガリー (左から右へ書く) では、「短い/i/」の書記素を先行する子音の左側 (「前」) に書く。कि ki では、ि -i k- の左側に描画し、弧の部分は上を越えて右側に至るように描画しなければならない。
  • 行や語の分割。

実装 編集

脚注 編集

注釈 編集

  1. ^ : complex text layout
  2. ^ : complex text rendering
  3. ^ : complex script
  4. ^ : complex text language
  5. ^ 実際、歴史を見ると、アラビア文字はもともとナバテア文字の筆記体にすぎなかったものが、4世紀ころから文脈に応じた字形変化が必須となったのである。

関連項目 編集

外部リンク 編集