(57)【要約】【課題】文字列全体をバランスよく描画することを目的とする。【解決手段】描画対象の文字の変形許容量と、文字のフォントサイズと、描画範囲の領域サイズとに基づいて、文字のベースとマークの隙間、マーク及びベースにそれぞれに対する３つの変形量として、少なくとも１つの変形量が他の変形量と異なる３つの変形量を算出する変形量算出手段と、算出された変形量に基づいて、文字を描画する描画手段とを有する。【選択図】図２
2015102643.tif 000002
【特許請求の範囲】
【請求項１】
描画対象の文字の変形許容量と、前記文字のフォントサイズと、描画範囲の領域サイズとに基づいて、前記文字のベースとマークの隙間、前記マーク及び前記ベースにそれぞれに対する３つの変形量として、少なくとも１つの変形量が他の変形量と異なる３つの変形量を算出する変形量算出手段と、
算出された変形量に基づいて、前記文字を描画する描画手段と
を有する描画装置。
【請求項２】
前記変形量算出手段は、前記マーク、前記ベース及び前記隙間それぞれに対して定められた３つの変形許容量で、少なくとも１つの変形許容量の値が他の変形許容量の値と異なる前記３つの変形許容量と、前記フォントサイズと、前記領域サイズとに基づいて、前記３つの変形量を算出する請求項１に記載の描画装置。
【請求項３】
前記マークの変形許容量は、前記マークが描画されないような値を含む請求項２に記載の描画装置。
【請求項４】
前記変形量算出手段は、前記ベース及び前記隙間に対して定められた第１の変形許容量と、前記マークに対して定められた、前記第１の変形許容量と異なる第２の変形許容量と、前記フォントサイズと、前記領域サイズとに基づいて、前記３つの変形量を算出する請求項２又は３に記載の描画装置。
【請求項５】
前記第２の変形許容量は、前記第１の変形許容量に比べて大きい変形を許容する値である請求項４に記載の描画装置。
【請求項６】
前記変形量算出手段は、前記ベースに対して定められた第１の変形許容量と、前記マークに対して定められた、前記第１の変形許容量と異なる第２の変形許容量と、前記隙間に対して定められた、前記第１の変形許容量及び前記第２の変形許容量いずれとも異なる第３の変形許容量と、前記フォントサイズと、前記領域サイズとに基づいて、前記３つの変形量を算出する請求項２又は３に記載の描画装置。
【請求項７】
前記第３の変形許容量は、前記第１の変形許容量及び前記第２の変形許容量に比べて大きい変形を許容する値である請求項６に記載の描画装置。
【請求項８】
前記変形量算出手段は、さらに前記３つの変形許容量それぞれの優先度に基づいて、前記３つの変形量を算出する請求項１乃至７何れか１項に記載の描画装置。
【請求項９】
前記変形量算出手段は、文字列に含まれる複数の文字それぞれの前記変形量を算出し、
前記複数の文字それぞれの前記３つの変形量に基づいて、前記文字列に対する前記３つの変形量を決定する変形量決定手段をさらに有し、
前記描画手段は、決定された変形量に基づいて、前記複数の文字を描画する請求項１乃至８何れか１項に記載の描画装置。
【請求項１０】
前記変形量決定手段は、前記文字列に前記マークと前記ベースに分離可能な文字と分離不可能な文字とが含まれる場合に、前記分離可能な文字のベースと前記分離不可能な文字に対し等しい変形量を決定する請求項９に記載の描画装置。
【請求項１１】
前記変形許容量は、前記領域サイズに応じて定まる値である請求項１乃至１０何れか１項に記載の描画装置。
【請求項１２】
描画装置が実行する描画方法であって、
描画対象の文字の変形許容量と、前記文字のフォントサイズと、描画範囲の領域サイズとに基づいて、前記文字のベースとマークの隙間、前記マーク及び前記ベースにそれぞれに対する３つの変形量として、少なくとも１つの変形量が他の変形量と異なる３つの変形量を算出する変形量算出ステップと、
算出された変形量に基づいて、前記文字を描画する描画ステップと
を含む描画方法。
【請求項１３】
コンピュータを、
描画対象の文字の変形許容量と、前記文字のフォントサイズと、描画範囲の領域サイズとに基づいて、前記文字のベースとマークの隙間、前記マーク及び前記ベースにそれぞれに対する３つの変形量として、少なくとも１つの変形量が他の変形量と異なる３つの変形量を算出する変形量算出手段と、
算出された変形量に基づいて、前記文字の描画を制御する制御手段と
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、描画装置、描画方法及びプログラムに関する。
【背景技術】
【０００２】
従来、指定した範囲に文字列が収まるように描画するために、フォントサイズを縮小する方法が用いられている。例えば、特許文献１には、水平方向及び垂直方向で独立にフォントサイズの縮小率を調整し、指定された範囲に効率よく文字が収まるように描画する方法が開示されている。また、特許文献２には、平仮名と漢字といった文字コード毎に水平方向、垂直方向の縮小率を変更する方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−０４７９４２号公報
【特許文献２】特開２０１０−１６０２１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術のように、フォントサイズを縮小する方法では、ダイアクリティカルマークが上に付く文字等を含んだ文字列を描画する際に、ダイアクリティカルマークを含まない文字の縮小率が小さくなりすぎるという問題があった。ダイアクリティカルマークとは、ラテン文字を用いる言語の表記に用いられ、特定の文字（ベース）の上や下に付されるマークのことである。上に付くダイアクリティカルマークの例として、ドイツ語におけるウムラウト、スウェーデン語等のリングが挙げられる。下に付くダイアクリティカルマークとしては、フランス語等のセディーユが挙げられる。なお、タイ文字語においても、マークとベースに分離できる文字が存在する。ベースの文字が大文字である場合は、ダイアクリティカルマークの位置はさらに上になるため、指定された高さに収めるためにはさらに縮小しなければならない。
また、文字列中にダイアクリティカルマークを含む文字と、ダイアクリティカルマークを含まない文字とが混在する場合がある。この場合に、両文字を等しく縮小した場合には、ダイアクリティカルマークのベースのアルファベット部分と、ダイアクリティカルマークを含まないアルファベット等の文字全体とで大きさが異なってしまう。このため、見た目のバランスが崩れてしまうという問題があった。
【０００５】
本発明はこのような問題点に鑑みなされたもので、文字列全体をバランスよく描画することを目的とする。
【課題を解決するための手段】
【０００６】
そこで、本発明は、描画対象の文字の変形許容量と、前記文字のフォントサイズと、描画範囲の領域サイズとに基づいて、前記文字のベースとマークの隙間、前記マーク及び前記ベースにそれぞれに対する３つの変形量として、少なくとも１つの変形量が他の変形量と異なる３つの変形量を算出する変形量算出手段と、算出された変形量に基づいて、前記文字を描画する描画手段とを有する。
【発明の効果】
【０００７】
本発明によれば、文字列全体をバランスよく描画することができる。
【図面の簡単な説明】
【０００８】
【図１】描画装置を示す図である。
【図２】描画装置を示す図である。
【図３】文字列描画処理を示すフローチャートである。
【図４】文字列の一例を示す図である。
【図５】ＵＰＭ値とベースラインの関係を示す図である。
【図６】グリフ情報の一例を示す図である。
【図７】ベースとマークの説明図である。
【図８】文字のサイズの一例を示す図である。
【図９】ステップ３１６の処理の説明図である。
【図１０】描画された文字列の一例を示す図である。
【図１１】第１の変更例にかかるステップ３１６の処理の説明図である。
【図１２】描画された文字列の一例を示す図である。
【図１３】描画された文字列の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について図面に基づいて説明する。
図１は、本実施形態にかかる描画装置１００を示す図である。描画装置１００は、バス１０１、ＣＰＵ１０２、ＲＯＭ１０３、ＲＡＭ１０４、描画ユニット１０５及び補助記憶装置１０６を有している。ＣＰＵ１０２は、描画装置１００が備える各機能を実行、制御する。ＲＯＭ１０３は、変更を必要としないプログラムや各種パラメータを格納する。ＲＡＭ１０４は、ＳＤＲＡＭ、ＤＲＡＭ等を有し、外部装置などから供給されるプログラムやデータを一時記憶する。
描画ユニット１０５は、プログラムによって描画されたグラフィックスを出力する。補助記憶装置１０６は、各種情報を記憶する。バス１０１は、システムバスであり、ＣＰＵ１０２、ＲＯＭ１０３、ＲＡＭ１０４、描画ユニット１０５及び補助記憶装置１０６を接続する。なお、後述する描画装置１００の機能や処理は、ＣＰＵ１０２がＲＯＭ１０３等に格納されているプログラムを読み出し、このプログラムを実行することにより実現されるものである。
【００１０】
図２は、描画装置１００の機能構成を示す図である。描画装置１００は、文字列取得部２０１と、領域サイズ取得部２０２と、初期フォントサイズ取得部２０３と、メトリクス情報取得部２０４と、グリフ情報取得部２０５とを有している。描画装置１００はまた、はみ出し判定部２０６と、分離部２０７と、個別変形量算出部２０９と、全変形量決定部２１０と、描画部２１１とを有している。
図３は、描画装置１００による文字列描画処理を示すフローチャートである。図４は、文字列描画処理の対象となる文字列の一例を示す図である。図４（ａ）に示す文字列の文字数は、終端を示すヌル文字を含めて５文字である。文字列は、１番目と４番目にＡＳＣＩＩ文字以外の文字を含んでいる。したがって、描画装置１００は、このようなＡＳＣＩＩ文字以外の文字についても扱えるように、ＵｎｉｃｏｄｅやＵｎｉｃｏｄｅで利用可能な文字符号化方式を用いるものとする。Ｕｎｉｃｏｄｅで利用可能な文字符号化方式としては、例えばＵＴＦ−８やＵＴＦ−１６などが挙げられる。図４（ｂ）は、図４（ａ）の文字列のＵｎｉｃｏｄｅを示す図である。
【００１１】
以下、図３を参照しつつ、図４に示す文字列を処理対象とする場合を例に、文字列描画処理について説明する。図３のステップ３０１において、文字列取得部２０１は、描画対象となる文字列を取得する。文字列取得部２０１は、図４（ｂ）に示すようなＵｎｉｃｏｄｅのコードポイントの配列を文字データとして取得する。なお、文字列取得部２０１は、補助記憶装置１０６又は描画装置１００の外部から文字列を取得する。
【００１２】
図３に戻り、ステップ３０１の処理の後、ステップ３０２において、領域サイズ取得部２０２は、領域サイズを取得する。ここで、領域サイズとは、描画範囲のサイズである。描画範囲は、描画対象の文字が描画される範囲である。なお、領域サイズは、例えば補助記憶装置１０６等に予め設定されているものとする。本実施形態においては、領域サイズとして、高さ方向に４０ピクセルの領域が指定されているものとする。
次にステップ３０３において、初期フォントサイズ取得部２０３は、初期フォントサイズを取得する。ここで、初期フォントサイズとは、初期設定されているフォントサイズである。初期フォントサイズは、例えば、補助記憶装置１０６等に予め設定されているものとする。初期フォントサイズは、文字列を描画するときの最大のフォントサイズである。本実施形態においては、初期フォントサイズは３６ピクセルに設定されているものとする。なお、描画対象の文字列が、ステップ３０２において取得した領域サイズの描画範囲をはみ出さない場合には、描画部２１１は、初期フォントサイズで文字列を描画する。
【００１３】
次に、メトリクス情報取得部２０４は、ステップ３０１において取得した文字列に対応するフォントのメトリクス情報を取得する。具体的には、メトリクス情報取得部２０４は、補助記憶装置１０６又は描画装置１００の外部からメトリクス情報を取得する。メトリクス情報は、１ｅｍあたりのユニット数（ＵｎｉｔｓＰｅｒＥｍ）、ベースラインの高さのデータを含んでいる。「ｅｍ」は、文字の高さの基準を１とした相対的な単位である。例えば、ＵｎｉｔｓＰｅｒＥｍ（ＵＰＭ）値が「２０００」に設定されている場合に、３６ピクセルのフォントサイズで描画するためには、グリフデータは３６／２０００倍に縮小されることになる。なお、グリフデータは、ＵＰＭ値の範囲で作成されているとは限らない。
また、ベースラインは、描画範囲における文字の下端の位置である。図５は、ＵＰＭ値とベースラインの関係を示す図である。メトリクス情報において、ベースラインの高さは、描画範囲の下からのユニット数で定義されている。なお、本実施形態においては、図５に示すように、ＵＰＭ値は２０００、ベースラインの位置は４００ユニットに指定されているものとする。
【００１４】
図３に戻り、ステップ３０５において、ＣＰＵ１０２は、ステップ３０１において取得した文字列から１文字ずつ選択する。そして、ＣＰＵ１０２は、選択された各文字に対し、ステップ３０６〜ステップ３１３（ループＡ）の処理を行う。ＣＰＵ１０２は、終端文字を選択すると、ループＡの処理を終了する。図４に示す文字列においては、初めにＵｎｉｃｏｄｅのコードポイント「Ｕ＋００Ｃ５」の文字が選択され、続いて、「Ｕ＋００２Ｆ」、「Ｕ＋００６Ｅ」、「Ｕ＋００Ｃ０」」の文字が選択される。そして、「Ｕ＋００００」が選択されると、ループＡの処理が終了する。
ステップ３０６において、グリフ情報取得部２０５は、ステップ３０５において選択された文字のグリフ情報を取得する。なお、グリフ情報は、例えば補助記憶装置１０６等に格納されているものとする。図４に示す文字列を対象とするループＡにおける１回目のステップ３０６においては、図４に示す文字列の１文字目のＵｎｉｃｏｄｅのコードポイント「Ｕ＋００Ｃ５」の文字のグリフ情報を取得する。
【００１５】
図６は、グリフ情報の一例を示す図である。グリフ情報は、各文字の形状を示す情報である。本実施形態にかかるグリフ情報は、ベースとマークに分離可能な文字については、ベース及びマークそれぞれの形状データの組み合わせとして定義している。図７は、ベースとマークの説明図である。図７（ａ）に示すように、ベースは、アルファベットの部分であり、マークは、ダイアクリティカルマークである。
図７（ａ）に示す文字は、Ｕｎｉｃｏｄｅのコードポイント「Ｕ＋００Ｃ５」の文字であり、アルファベットＡの上にダイアクリティカルマークの１種であるリング符号が添えられた文字である。この文字は、スウェーデン語やデンマーク語などで用いられる。図７（ａ）に示す文字においては、「Ａ」の部分がベース、リング符号がマークである。なお、図７（ｂ）に示すように、アルファベットＡのコードポイントは、「Ｕ＋００４１」であり、図７（ａ）に示す文字とはコードポイントが異なる。なお、描画装置１００は、図７（ｂ）に示す文字のように、マークのない文字については、ベースのみの文字として処理する。
【００１６】
図７（ａ）〜（ｄ）に示すように、文字の中には、ベースが等しく、マークが異なる文字が存在する。さらに、図７（ａ），（ｅ）に示すように、マークが等しく、ベースが異なる文字も存在する。これに対応し、本実施形態にかかるグリフ情報は、データ削減の観点から、ベース及びマークそれぞれの形状のデータを定義し、ベースとマークの形状の組み合わせとして文字を定義している。なお、Ｕｎｉｃｏｄｅでは、マークに対しても、コードポイントが与えられている。
図６に示すグリフ情報は、例えば、図７（ｄ）に示す、コードポイント「Ｕ＋００Ｃ０」の文字として、「Ｕ＋００４１」をベース、「Ｕ＋０３００」をマークとして定義し、マークのオフセット位置を定義している。ここで、オフセット位置は、マークをどの程度平行移動させた位置に配置するかを示す情報である。そして、「Ｕ＋００４１」には、アルファベットのＡのグリフデータが格納されており、「Ｕ＋０３００」に、グレイブ・アクセントのグリフデータが格納されている。すなわち、グリフ情報取得部２０５は、「Ｕ＋００Ｃ０」のデータにおいて定義された情報を参照することにより、「Ｕ＋００Ｃ０」グリフを取得することができる。
【００１７】
グリフ情報取得部２０５は、ベースとマークのそれぞれの形状を示すパスデータと、マークを配置するために平行移動させるオフセット値と、をグリフ情報として取得する。図８は、グリフ情報により定まる各文字のサイズの一例を示す図である。図８（ａ）〜（ｄ）は、それぞれ図４に示す文字列中の１〜４番目の文字のグリフ情報のイメージ図である。
図８（ａ）は、文字列中の１番目の文字を示す図である。１番目の文字のグリフ情報において、ベースの高さは、ベースラインから１５００ユニット、マークの高さは４００ユニット、マークの高さ方向のオフセット値がベースラインから１６００ユニットと定義されているとする。この場合、ベースラインの高さが４００ユニットであることから、ベースの高さは、１９００ユニットとなる。また、グリフ情報において、ベースとマークの間の隙間は、１００ユニットと定められているものとする。なお、隙間のサイズは、文字毎に定義されていてもよく、また他の例としては、文字によらず一律に定義されていてもよい。
図８（ｂ）に示すように、文字列の２番目の文字のグリフ（ベース）の高さは、２２５０ユニットである。図８（ｃ）に示すように、３番目の文字のグリフの高さは、１５００ユニットである。また、図８（ｄ）に示すように、４番目の文字のベースの高さは、２３００ユニット、マークの高さは、３００ユニットである。
【００１８】
図３に戻り、ステップ３０７において、はみ出し判定部２０６は、選択された文字のグリフ情報と、領域サイズと、初期フォントサイズとに基づいて、選択された文字が描画範囲に収まるか否か、すなわちはみ出しの有無を判定する。本実施形態かかるはみ出し判定部２０６は、高さ方向におけるはみ出しの有無を判定する。
例えば、図８（ａ）に示す「Ｕ＋００Ｃ５」のグリフ情報においては、パスデータの高さは、２０００ユニットであり、グリフの高さは、パスデータの高さにベースラインの高さが加算されて２４００ユニットとなる。指定されたフォントサイズのグリフを描画するには、グリフデータを、「フォントサイズ／ＵＰＭ値」倍する必要がある。
【００１９】
フォントの初期フォントサイズが３６ピクセルで指定されているので、「Ｕ＋００Ｃ５」のグリフの高さは、４３．２ピクセルとなる。これは、ステップ３０２において指定された領域サイズの高さ方向の領域サイズ（４０ピクセル）よりも大きい値である。このように、処理対象の文字のグリフの高さが指定された高さ方向の領域サイズを超える場合に、はみ出し判定部２０６は、はみ出しありと判定する。
すなわち、はみ出し判定部２０６は、グリフの高さが（式１）の関係を満たす場合に、はみ出しありと判定する。
（グリフの高さ）×（フォントサイズ）／（ＵＰＭ値）＞（領域サイズ）
…（式１）
なお、本実施形態においては、領域サイズが４０ピクセル、初期フォントサイズが３６ピクセル、ＵＰＭ値が２０００であることから、グリフの高さが２２２２ユニットよりも大きい場合に、はみ出しありと判定される。
なお、視認性の観点から、出力時の解像度をもとに、予め最小初期フォントサイズが設定されていてもよい。ここで、最小初期フォントサイズとは、許容される初期フォントサイズの最小値である。ステップ３０３において得られた初期フォントサイズが最小初期フォントサイズよりも小さい場合には、はみ出し判定部２０６は、初期フォントサイズに替えて、最小初期フォントサイズに基づいて、はみ出し検出処理を行ってもよい。
【００２０】
はみ出し判定部２０６は、はみ出しありと判定した場合には（ステップ３０７でＹｅｓ）、処理をステップ３０８へ進める。はみ出し判定部２０６が、はみ出しなしと判定した場合には（ステップ３０７でＮｏ）、ＣＰＵ１０２は、処理をステップ３０５へ進め、処理対象の文字を１つ進める。ステップ３０８において、分離部２０７は、文字のグリフ情報に基づいて、文字を分離可能か否かの判定を行う。例えば、Ｕｎｉｃｏｄｅのコードポイントが「Ｕ＋００Ｃ５」のグリフ情報は、アルファベット「Ａ」のグリフ情報と、リング符号のグリフ情報を定義している。このため、ベースとマークに分離できることがわかる。
分離部２０７は、分離可能である場合には（ステップ３０８でＹｅｓ）、処理をステップ３０９へ進める。分離部２０７は、分離不可能である場合には（ステップ３０８でＮｏ）、処理をステップ３１３へ進める。ステップ３０９において、分離部２０７は、文字をベースとマークに分離する。次に、ステップ３１０において、変形許容量取得部２０８は、グリフの変形許容量を取得する。なお、変形許容量は、例えば、補助記憶装置１０６等に予め格納されているものとする。変形許容量は、ベース、マーク、ベースとマークの間の隙間それぞれの縮小率を定めた情報である。本実施形態にかかる変形許容量は、ベース及びマークの縮小率として、Ｓ（０＜Ｓ≦１．０）倍を定めている。また、隙間の縮小率として、ｆ×Ｓ（０＜Ｓ≦１．０，０．５≦ｆ≦１．０）倍を定めている。すなわち、隙間に対しては、ベース及びマークに比べて大きい程度の縮小が許容されている。
【００２１】
次に、ステップ３１１において、個別変形量算出部２０９は、領域サイズと、変形許容量と、変形可能な最大領域サイズと、に基づいて、処理対象のグリフの変形量（縮小率）を算出する。前述の通り、本実施形態においては、変形可能な最大領域サイズは、２２２２ユニットであり、はみ出し判定部２０６により算出されている。変形許容量を適用して得られる変形後のグリフの高さＨは、（式２）により算出される。そこで、個別変形量算出部２０９は、グリフの高さが最大領域サイズ（２２２２ユニット）となるようなＳ及びｆを算出する。
（グリフの高さ）
＝（ベース）×Ｓ＋（マーク）×Ｓ＋（隙間）×ｆ×Ｓ      …（式２）
さらに、個別変形量算出部２０９は、ベース、マーク及び隙間の変形量に対して設定されている優先度に基づいて、Ｓ及びｆを算出する。ここで、優先度は、ベース、マーク及び隙間のうちいずれを優先的に変形するかを定める指標値である。本実施形態においては、隙間に対しベース及びマークに比べて高い優先度が設定されているものとする。なお、これは、隙間の変形を優先することにより、ベース及びマークの変形量を小さく抑えることを意味している。
【００２２】
変形許容量において、Ｓが最大となるのは、ｆが最小となる場合、すなわち隙間が０．５×Ｓ倍となる場合である。そこで、個別変形量算出部２０９は、優先度に基づいて、隙間の変形量に寄与するｆを最小値（ｆ＝０．５）として、（式２）によりＳを算出する。さらに、個別変形量算出部２０９は、算出されたＳが変形許容量（０＜Ｓ≦１．０）を超える値となった場合には、Ｓの値を１として、（式２）により、ｆを算出する。ステップ３１１における具体的な処理については、後述する。ステップ３１１の処理は、ベース、マーク及び隙間のうち少なくとも１つの変形量が他の変形量と異なるような３つの変形量を算出する変形量算出処理の一例である。
次に、ステップ３１２において、個別変形量算出部２０９は、算出したベース、マーク及び隙間の変形量（縮小率）を結果テーブルに記録する。ここで、結果テーブルは、ＲＡＭ１０４等に格納されているものとする。
【００２３】
一方、ステップ３１３においては、変形許容量取得部２０８は、ベースとマークに分離できない文字についての、グリフの変形許容量を取得する。変形許容量は、文字（ベース）の縮小率をとして、Ｓ倍を定めている。すなわち、分離不可能な文字の縮小率は、分離可能な文字のベースの縮小率と等しい値である。
次に、ステップ３１４において、個別変形量算出部２０９は、文字（ベース）の変形量（縮小率）を算出する。個別変形量算出部２０９は、グリフの高さが最大領域サイズ（２２２ユニット）となるようなＳを算出する。具体的には、個別変形量算出部２０９は、（式３）において、グリフの高さが最大領域サイズ（２２２２ユニット）となるようなＳを算出する。
（グリフの高さ）＝（ベース）×Ｓ      …（式３）
次に、ステップ３１５において、個別変形量算出部２０９は、算出した変形量（縮小率）を結果テーブルに記録する。
【００２４】
ここで、図４に示す文字列を処理対象とする場合を例に、ループＡの処理を具体的に説明する。なお、各文字のサイズは、図８に示す通りであるものとする。図４に示す文字列の１番目の文字については、上述の通り、ステップ３０７において、はみ出し判定部２０６は、はみ出しありと判定し、ステップ３０９において、分離部２０７は、１番目の文字をベースとマークに分離する。そして、ステップ３１１において、個別変形量算出部２０９は、（式２）において、ｆ＝０．５のときに２２２２ユニットとなるようなＳを算出する。
１番目の文字（Ｕｎｉｃｏｄｅのコードポイントが「Ｕ＋００Ｃ５」）のグリフは、ベースの高さが１９００ユニット、マークの高さが４００ユニット、隙間が１００ユニットである。したがって、Ｓ≒０．９４６、ｆ×Ｓ≒０．４７３が得られる。Ｓ及びｆは、いずれも変形許容量内の値である。したがって、個別変形量算出部２０９は、ステップ３１２において、Ｓ≒０．９４６をベース及びマークの変形量、ｆ×Ｓ≒０．４７３を隙間の変形量として記録テーブルに記録する。
【００２５】
１番目の文字に対するステップ３０５〜ステップ３１２の処理が終了すると、ＣＰＵ１０２は、処理をステップ３０５へ進め、図４に示す文字列の２番目の文字を選択する。図８（ｂ）に示すように、２番目の文字は、スラッシュと呼ばれる文字であり、グリフ（ベース）の高さは、２２５０ユニットであり、２２２２ユニットよりも大きい。
したがって、ステップ３０７において、はみ出し判定部２０６は、はみ出しありと判定する。さらに、ステップ３０８において、分離部２０７は、分離不可と判定し、処理は、ステップ３１３へ進む。ステップ３１４において、個別変形量算出部２０９は、（式３）により、ベースの変形量として、Ｓ≒０．９８８を得る。そして、ステップ３１５において、個別変形量算出部２０９は、変形量を記録テーブルに記録する。
【００２６】
次に、ＣＰＵ１０２は、処理を再びステップ３０５へ進め、図４に示す文字列の３番目の文字を選択する。図８（ｃ）に示すように、３番目の文字は、アルファベットのｎで、Ｕｎｉｃｏｄｅのコードポイントは「Ｕ＋００６Ｅ」である。さらに、グリフの高さは、１５００ユニットで、２２２２ユニット以下である。したがって、はみ出しなしと判定され、ＣＰＵ１０２は、処理をステップ３０５へ進める。すなわち、３番目の文字に対する変形量の算出は行われない。
次に、ＣＰＵ１０２は、ステップ３０５において、図４に示す文字列の４番目の文字を選択する。図８（ｄ）に示すように、４番目の文字は、Ｕｎｉｃｏｄｅのコードポイントが「Ｕ＋００Ｃ０」である。さらに、グリフの高さは、２３００ユニットで、２２２２ユニットよりも大きい。したがって、ステップ３０７において、はみ出し判定部２０６は、はみ出しありと判定する。さらに、分離部２０７は、ステップ３０８において、分離可能と判定し、ステップ３０９において、４番目の文字をベースとマークに分離する。
そして、ステップ３１１において、個別変形量算出部２０９は、ｆ＝０．５として、（式２）により、Ｓ＝１．０１を得る。このＳの値は、Ｓの変形許容量（０＜Ｓ≦１．０）を満たさない。この場合には、個別変形量算出部２０９は、Ｓ＝１として、（式２）によりｆを算出する。これにより、ｆ＝０．７２が得られる。ステップ３１２において、個別変形量算出部２０９は、Ｓ＝１及びｆ＝０．７２から定まるベース及びマークの変形量及び隙間の変形量としてそれぞれ縮小率＝１、縮小率＝０．７２を記録テーブルに記録する。
【００２７】
なお、１番目の文字に対するステップ３１０の処理において、ベース、マーク及び隙間の変形許容量を既に取得しているので、３番目の文字に対するステップ３１０の処理を省略し、既に取得済みの変形許容量を利用することとしてもよい。
次に、ＣＰＵ１０２は、処理をステップ３０５へ進め、図４に示す文字列の５番目の文字を選択する。５番目の文字は、終端を示すヌル文字である。したがって、ＣＰＵ１０２は、ループＡの処理を終了し、処理をステップ３１６へ進める。以上の処理において、文字列を構成する複数の文字それぞれの変形量が算出される。
【００２８】
ステップ３１６において、全変形量決定部２１０は、記録テーブルに記録されている各文字の変形量に基づいて、文字列全体の変形量を決定する（変形量決定処理）。本実施形態にかかる全変形量決定部２１０は、文字列中の分離可能な文字のベースと、分離不可能な文字のベースの変形量を等しい値にする。
図９を参照しつつ、ステップ３１６の処理を説明する。図９（ａ）は、ループＡが終了した時点における記録テーブルの一例である。全変形量決定部２１０は、ベースの縮小率の最小値を選択し、これを、文字列のベースの縮小率として決定する。なお、マークの縮小率は、ベースの縮小率と等しいことから、全変形量決定部２１０は、ベースの縮小率の最小値を、文字列におけるマークの縮小率として決定する。図９（ａ）に示す例においては、１番目の文字のベースの値０．９４６がベースの縮小率の最小値である。したがって、全変形量決定部２１０は、図９（ｂ）に示すように、文字列中のすべての文字のベースの変形量を縮小率＝０．９４６に決定する。全変形量決定部２１０はまた、２、３番目の文字のマークの変形量も縮小率＝０．９４６に決定する。
【００２９】
全変形量決定部２１０はさらに、１番目の文字の隙間の変形量を、１文字目の文字に対して算出された０．４７３（０．９４６×０．５倍）に決定する。一方で、全変形量決定部２１０は、４番目の文字については、新たに決定されたベースの縮小率＝０．９４６と、（式２）とに基づいて、隙間の変形量を決定する。なお、Ｓ＝０．９４６とした場合、ｆは１を超える値となるため、ｆ＝１と決定され、これにより、Ｓ＝０．９４６に決定される。図９（ｂ）は、図９（ａ）に示す記録テーブルに基づいて、ステップ３１６において決定された、文字列中の各文字の変形量の一例を示す図である。
図３に戻り、ステップ３１７において、描画部２１１は、ステップ３１６において決定された変形量（縮小率）を適用した描画を描画ユニットに指示する（描画制御処理）。描画ユニット１０５は、描画部２１１の制御の下、文字列を描画する。以上で、文字列描画処理が終了する。
【００３０】
図１０（ａ）は、初期設定フォントサイズで描画された文字列の一例を示す図である。一方、図１０（ｂ）は、図３等を参照しつつ説明した文字列描画処理において描画された文字列の一例を示す図である。図１０（ａ）に示す例においては、１番目、２番目、４番目の文字が指定された４０ピクセルの高さからはみ出している。これに対し、図１０（ｂ）に示すように、文字列描画処理において描画された文字列においては、各文字は、指定された描画範囲からはみ出すことなく、さらに、文字列全体がバランスよく配置されている。このように、本実施形態にかかる描画装置１００は、文字の高さ方向のサイズをベース及びマークと、隙間とを異なる変形量だけ変形する。これにより、ベースの高さ方向のサイズが小さくなり過ぎるのを防ぎ、さらに文字列に含まれる各文字のバランスを保つことができる。すなわち、本実施形態にかかる描画装置１００は、文字列全体をバランスよく描画することができる。
【００３１】
本実施形態にかかる描画装置１００の第１の変更例としては、ベース、マーク及び隙間の変形許容量は、いずれも異なる値であってもよい。そして、この場合、個別変形量算出部２０９は、ベース、マーク及び隙間に対し、互いに異なる変形量を算出してもよい。例えば、ベースの変形許容量Ｓ（０＜Ｓ≦１．０）に対し、マークの変形許容量をｇ×Ｓ（（０＜Ｓ≦１．０，０．８≦ｇ≦１．０）、隙間の変形許容量をｆＳ（０＜Ｓ≦１．０，０．５≦ｆ≦１．０）としてもよい。さらに、隙間及びマークに対し、ベースに比べて高い優先度が設定されていてもよい。この場合、個別変形量算出部２０９は、（式４）により、Ｓ、ｆ及びｇを算出する。
（グリフの高さ）
＝（ベース）×Ｓ＋（マーク）×ｇ×Ｓ＋（隙間）×ｆ×Ｓ      …（式４）
具体的には、個別変形量算出部２０９は、隙間の変形量に寄与するｆを最小値、ｇを最大値として、（式４）によりＳを算出する。そして、個別変形量算出部２０９は、算出されたＳが変形許容量（０＜Ｓ≦１．０）を超える値となった場合には、Ｓ，ｇの値を１として、（式４）により、ｇを算出する。
【００３２】
図１１（ａ）は、第１の変更例にかかる、ループＡの処理が終了した時点における記録テーブルの一例を示す図である。また、図１１（ｂ）は、図１１（ａ）に示す記録テーブルに基づいて、ステップ３１６において決定された変形例の一例を示す図である。図１１（ａ）に示すように、１番目の文字のベースの縮小率＝０．９７９が最小値である。したがって、全変形量決定部２１０は、図１１（ｂ）に示すように、文字列中のすべての文字のベースの変形量を縮小率＝０．９７９に決定する。
全変形量決定部２１０はさらに、決定したベースの変形量に基づいて、図１１（ｂ）に示すマーク及び隙間の変形量を決定する。図１２は、第１の変更例にかかる文字列描画処理において描画された文字列の一例を示す図である。１番目の文字は、マーク（リング符号）が縦に少し歪んだ状態となり、その分ベース（アルファベットのＡ）が大きいサイズに描画されている。
【００３３】
第２の変更例としては、グリフ毎、マークの種別毎、又はマークとベースの組み合わせ毎に異なる変形許容量が設定されていてもよい。これにより、よりよいバランスで文字列全体を描画することができる。
第３の変更例としては、マークの変形許容量ｆＳは、「０」を含んでもよいこれは、マークが描画されないことを意味する。マークがほとんど意味を持たないような言語においては、このように、描画装置１００は、マークを描画しないこととしてもよい。
【００３４】
第４の変更例としては、分離可能な文字と分離不可能な文字のベースの変形量（縮小率）は異なる値であってもよい。実施形態にかかる全変形量決定部２１０は、文字の配列バランスをよくするために、分離可能な文字と分離不可能な文字のベースの縮小率とを等しい値とした。しかしながら、文字の描画サイズが小さく、文字サイズの違いの絶対値が小さい場合等においては、分離可能な文字と分離不可能な文字のベースの変形量を一致させる必要性は低い。
さらに他の例としては、全変形量決定部２１０は、９：１０等、分離可能な文字と分離不可能な文字の変形量に対して予め設定された比率に基づいて、分離不可能な文字の変形量を決定してもよい。
【００３５】
第５の変更例としては、グリフ情報は、ベースとマークに分離されていないデータであってもよい。この場合には、分離部２０７は、グリフ情報に含まれる、グリフ毎のベースとマークの範囲を指定する情報に基づいて、ベースとマークのパスデータを抽出すればよい。
【００３６】
第６の変更例としては、変形許容量は、描画範囲の領域サイズに基づいて定まる値であってもよい。例えば、描画範囲が小さくなる程、変形許容量の範囲が大きくなってもよい。描画範囲が狭くなった時にはより大きな変形許容量を設定することで、文字列のマークを除いた部分をより大きく描画することが可能となる。図１３は、第５の変更例にかかる変形許容量に対応する描画結果と、文字を単純に縮小した場合の描画結果とを示す図である。図１３の左側に示すように、第５の変更例にかかる変形許容量は、隙間をなくし、ベースとマークが少し重なるような値を定めている。
図１３の２つの描画結果からわかるように、第５の変更例にかかる描画結果の方が、単純に縮小した場合の描画結果に比べて、文字列全体をより大きく描画することができる。したがって、文字の視認性を維持することができる。逆に、描画範囲が広い場合には、変形の度合いを小さくしても、文字の視認性が低下する可能性は低い。
さらに、他の例としては、描画装置１００は、描画範囲が規定のサイズよりも大きい場合には、ベース、マーク及び隙間を独立に変形させる処理を行わないこととしてもよい。
【００３７】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００３８】
以上、上述した各実施形態によれば、文字列全体をバランスよく描画することができる。
【００３９】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００４０】
１００  描画装置、１０２  ＣＰＵ、１０３  ＲＯＭ，１０４  ＲＡＭ、１０５  描画ユニット
【図１】
2015102643.tif 000003
【図２】
2015102643.tif 000004
【図３】
2015102643.tif 000005
【図４】
2015102643.tif 000006
【図５】
2015102643.tif 000007
【図６】
2015102643.tif 000008
【図７】
2015102643.tif 000009
【図８】
2015102643.tif 000010
【図９】
2015102643.tif 000011
【図１０】
2015102643.tif 000012
【図１１】
2015102643.tif 000013
【図１２】
2015102643.tif 000014
【図１３】
2015102643.tif 000015