ブログ

6.<ヒンディー語の文字結合のしくみ4>

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

前回に引き続き、どのような仕組みでヒンディー語の⽂字が結合するのかを⾒ていきましょう。

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

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

■フォントファイルに収録されている情報について■
フォントファイルには「GPOS」と呼ばれる⽂字位置調整情報が含まれています。
「GPOS」は「Glyph positioning data」の略です。ここでは、「グリフ位置調整情報」と呼びます。「グリフ位置調整情報」は、画⾯上に⽂字を表⽰するときの位置を⽰したものです。
ここではわかりやすいようにビットマップで説明します。
たとえば、 blog-hindi_07blog-hindi_08 の2⽂字が⼊⼒された場合に、 blog-hindi_09 を表⽰する例を取り上げます。20171023blog01⽂字にはそれぞれ幅があります。
単に並べて表⽰した場合、このようになります。20171023blog02blog-hindi_09 のように結合⽂字を表⽰させるためには、2⽂字⽬を重ねて表⽰する必要があります。
網掛けのところが重ねて表⽰している部分です。20171023blog032⽂字⽬をどの位置に重ねるかは、2つの⽂字の形によって異なります。
下の図は、 blog-hindi_03blog-hindi_08 の2⽂字が⼊⼒された場合に、 blog-hindi_10 を表⽰する例です。
blog-hindi_09 の時と、2⽂字⽬の重なる位置が違っているのがわかると思います。20171023blog041⽂字⽬に対する、2⽂字⽬の表⽰位置を指定するための情報が「グリフ位置調整情報」です。
簡単に「グリフ位置調整情報」の中⾝を説明します。
下に⽰す表が「グリフ位置調整情報」⼀例です。ここでは「グリフ位置調整情報」の⼀部のみを紹介しています。「グリフ位置調整情報」のデータ数は、フォントにより⼤きく異なります。データ数が多いほど、きれいに重なる⽂字が多いことになりますが、フォントの容量が⼤きくなるデメリットもあります。
次に、表<GPOS データ例>をどのように使うかを説明します。
⼊⼒された単語中に、表の縦軸と横軸が連続する並びがあった場合、2⽂字⽬の表⽰位置を調整します。交点の数値分、表⽰位置を戻して、1⽂字⽬と重ねて表⽰します。交点の数値は、⾼さ24dot のヒンディー語フォントを使って⽂字を重ねる場合の値です。

<GPOS データ例>20171023blog05

 

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

例1)ヒンディー語の「こんばんは」20171023blog06① ヒンディー語の単語を⾳節で区切る
4⾳節に区切ることができます。20171023blog07② 変形しやすいように⽂字を並べ替える
4⾳節とも並べ替え前と後で⽂字の順番は変わりません。20171023blog08③ フォントファイルに収録されている情報に基づいて⽂字を変形する
4⾳節⽬の先頭⽂字が変形しました。20171023blog09④ フォントファイルに収録されている情報に基づいて記号の位置を調整する20171023blog10(a)1⾳節⽬
1 ⽂字⽬と2⽂字⽬:<GPOS データ例>の縦軸に blog-hindi_07 が、横軸に blog-hindi_08 があるので、
2⽂字⽬の始点を交点の数字である8dot 分ずらして重ねて表⽰する。
(b)2⾳節⽬
1⽂字しかないので重ねない。
(c)3⾳節⽬
1⽂字⽬と2⽂字⽬:<GPOS データ例>の縦軸に blog-hindi_11 が、横軸に blog-hindi_12 があるので、
2⽂字⽬の始点を交点の数字である4dot 分ずらして重ねて表⽰する。
(d)4⾳節⽬
1⽂字⽬と2⽂字⽬:<GPOS データ例>の縦軸に blog-hindi_13 がないので blog-hindi_14 は重ねない。
2⽂字⽬と3⽂字⽬:<GPOS データ例>の横軸に blog-hindi_15 がないので blog-hindi_15 は重ねない。
重ねて表⽰する⽂字をまとめてみるとこのようになります。20171023blog11これで、単語中のすべての結合⽂字ができました。
blog-hindi_16blog-hindi_17 の間には半⾓スペースが⼊りますが、それ以外の⽂字は隙間なく並べて表⽰します。

 

例2)ヒンディー語の「冬」20171023blog12① ヒンディー語の単語を⾳節で区切る
2⾳節に区切ることができます。20171023blog13② 変形しやすいように⽂字を並べ替える
2⾳節⽬の⽂字の順番が⼊れ替わっています。20171023blog14③ フォントファイルに収録されている情報に基づいて⽂字を変形する
2⾳節⽬の最後の3⽂字が変形しました。20171023blog15④ フォントファイルに収録されている情報に基づいて記号の位置を調整する20171023blog16・1⾳節⽬
1⽂字しかないので重ねない。
・2⾳節⽬
1 ⽂字⽬と2⽂字⽬:<GPOS データ例>の縦軸に blog-hindi_02 が、横軸に blog-hindi_18 があるので、
2⽂字⽬の始点を交点の数字である7dot 分ずらして重ねて表⽰する。
重ねて表⽰する⽂字をまとめてみるとこのようになります。20171023blog17これで、単語中のすべての結合⽂字ができました。
⽂字は隙間なく並べて表⽰します。
ここまで4回に渡ってヒンディー語の⽂字結合のしくみについて説明してきました。
3.<ヒンディー語の⽂字結合のしくみ1>
4.<ヒンディー語の⽂字結合のしくみ2>
5.<ヒンディー語の⽂字結合のしくみ3>
6.<ヒンディー語の⽂字結合のしくみ4>

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

カルチスタッフ

関連記事

カルチ発行書籍

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