ブログ

6.<ベンガル語の⽂字結合のしくみ4>

こんにちは、カルチスタッフです。

前回に引き続き、どのような仕組みでベンガル語の⽂字が結合するのかを⾒ていきましょう。
⼿順は次の4つです。

(1)ベンガル語の単語を⾳節で区切る
(2)変形しやすいように⽂字を並べ替える
(3)フォントファイルに収録されている情報に基づいて⽂字を変形する
(4)フォントファイルに収録されている情報に基づいて記号の位置を調整する

今回は、最後の項⽬です。
(4)フォントファイルに収録されている情報に基づいて記号の位置を調整する
について説明したいと思います。

■フォントファイルに収録されている情報について■

フォントファイルには「GPOS」と呼ばれる⽂字位置調整情報が含まれています。
「GPOS」は「Glyph positioning data」の略です。ここでは、「グリフ位置調整情報」と呼びます。「グリフ位置調整情報」は、画⾯上に⽂字を表⽰するときの位置を⽰したものです。

ここではわかりやすいようにビットマップで説明します。
たとえば、blog-Bengali_11blog-Bengali_12の2⽂字が⼊⼒された場合に、blog-Bengali_13を表⽰する例を取り上げます。20190924blog01⽂字にはそれぞれ幅があります。
単に並べて表⽰した場合、このようになります。20190924blog02

blog-Bengali_13のように結合⽂字を表⽰させるためには、2⽂字⽬を重ねて表⽰する必要があります。網掛けのところが重ねて表⽰している部分です。20190924blog032⽂字⽬をどの位置に重ねるかは、2つの⽂字の形によって異なります。
下の図は、blog-Bengali_14blog-Bengali_12の2⽂字が⼊⼒された場合に、blog-Bengali_15を表⽰する例です。
の時と、2⽂字⽬の重なる位置が違っているのがわかると思います。20190924blog041⽂字⽬に対する、2⽂字⽬の表⽰位置を指定するための情報が「グリフ位置調整情報」です。

簡単に「グリフ位置調整情報」の中⾝を説明します。
下に⽰す表が「グリフ位置調整情報」⼀例です。ここでは「グリフ位置調整情報」の⼀部のみを紹介しています。「グリフ位置調整情報」のデータ数は、フォントにより⼤きく異なります。データ数が多いほど、きれいに重なる⽂字が多いことになりますが、フォントの容量が⼤きくなるデメリットもあります。

次に、表<GPOS データ例>をどのように使うかを説明します。
⼊⼒された単語中に、表の縦軸と横軸が連続する並びがあった場合、2⽂字⽬の表⽰位置を調整します。交点の数値分、表⽰位置を戻して、1⽂字⽬と重ねて表⽰します。

交点の数値は、⾼さ16dot のベンガル語フォントを使って⽂字を重ねる場合の値です。

<GPOS データ例>20190924blog05

■記号の位置を調整してみよう■

例1)ベンガル語の「こんばんは」blog-Bengali_001konbanwa

①ベンガル語の単語を⾳節で区切る

4⾳節に区切ることができます。20190924blog06

②変形しやすいように⽂字を並べ替える

4⾳節のみ並べ替えが起こります。
ベースの直後にハラントがある場合は、ハラントは最後の⼦⾳字の直後の位置に移動します。20190924blog07

③フォントファイルに収録されている情報に基づいて⽂字を変形する

1 ⾳節⽬と、4 ⾳節⽬で置き換えがおこります。20190924blog08

④フォントファイルに収録されている情報に基づいて記号の位置を調整する
20190924blog09(a)1⾳節⽬
1⽂字しかないので重ねない。
(b)2⾳節⽬
1⽂字しかないので重ねない。
(c)3⾳節⽬
1⽂字しかないので重ねない。
(d)4⾳節⽬
1・2⽂字⽬:<GPOS データ例>の縦軸にblog-Bengali_16があるが、横軸にblog-Bengali_17がないのでblog-Bengali_17は重ねない。
2・3⽂字⽬:<GPOS データ例>の縦軸にblog-Bengali_17がないのでblog-Bengali_18は重ねない。

この単語中には重ねて表⽰する⽂字はありませんでした。
⽂字をまとめてみるとこのようになります。20190924blog10これで、単語中のすべての結合⽂字ができました。
blog-Bengali_19blog-Bengali_20の間には半⾓スペースが⼊りますが、それ以外の⽂字は隙間なく並べて表⽰します。

例2)ベンガル語の「⼊場」blog-Bengali_002nyuujou

①ベンガル語の単語を⾳節で区切る

2 ⾳節に区切ることができます。
20190924blog11

②変形しやすいように⽂字を並べ替える

2 ⾳節⽬のみ並べ替えが起こります。
20190924blog12

③フォントファイルに収録されている情報に基づいて⽂字を変形する

2 ⾳節⽬のみ⽂字の変形がおこります。20190924blog13

④フォントファイルに収録されている情報に基づいて記号の位置を調整する
20190924blog14・1⾳節⽬
1⽂字しかないので重ねない。
・2⾳節⽬
1・2⽂字⽬:<GPOS データ例>の縦軸にblog-Bengali_07が、横軸にblog-Bengali_06があるので、2⽂字⽬の始点を交点の数字である3dot 分ずらして重ねて表⽰する。
2・3⽂字⽬:<GPOS データ例>の縦軸にblog-Bengali_06が、横軸にblog-Bengali_21があるので、2⽂字⽬の始点を交点の数字である5dot 分ずらして重ねて表⽰する。

重ねて表⽰する⽂字をまとめてみるとこのようになります。20190924blog15これで、単語中のすべての結合⽂字ができました。
⽂字は隙間なく並べて表⽰します。

ここまで4回に渡ってベンガル語の⽂字結合のしくみについて説明してきました。

3.<ベンガル語の⽂字結合のしくみ1>
4.<ベンガル語の⽂字結合のしくみ2>
5.<ベンガル語の⽂字結合のしくみ3>
6.<ベンガル語の⽂字結合のしくみ4>

カルチが提供するベンガル語レイアウトエンジン作成ガイドは今まで説明した内容をベースに、より詳しい説明を加えたドキュメントです。
⽂字の種類や組み合わせ⽅などをわかりやすく表にしているので、ベンガル語の知識がなくてもベンガル語表⽰プログラムを作成することができます。

ベンガル語フォントについてご質問・ご相談などございましたら、お気軽にお問い合わせください。

カルチスタッフ

関連記事

カルチ発行書籍

  1. KEISコードブック_表紙
    2016年1月15日にKEISコードブックを発売しました。
ページ上部へ戻る