(57)【要約】【課題】文字サイズ計算の省メモリ化を図る。【解決手段】文字サイズ取得装置１００において、フレームバッファ９３２は、画面に表示する画像を保存するためのバッファである。文字描画部１２１は、フレームバッファ９３２に保存される画像に文字を描画する描画処理を実行する。文字サイズ取得部１０１の文字データ不可視化部１１２は、文字の縦幅を０に設定する。文字サイズ取得部１０１は、文字データ不可視化部１１２の設定に従って描画処理を文字描画部１２１に実行させることで文字を非表示にし、その描画処理の結果から文字の横幅を取得する。文字サイズ取得部１０１の文字サイズ累積部１２２は、文字サイズ取得部１０１で取得した文字の縦幅を累積して、文字列の横幅を算出する。【選択図】図２
2015118429.tif 000002
【特許請求の範囲】
【請求項１】
画面に表示する画像を保存するフレームバッファと、
前記フレームバッファに保存される画像に文字を描画する描画処理を実行する文字描画部と、
文字が非表示になる形式で描画処理を前記文字描画部に実行させ、その描画処理の結果から文字の縦幅及び横幅の少なくともいずれかを取得する文字サイズ取得部と
を備えることを特徴とする文字サイズ取得装置。
【請求項２】
前記文字サイズ取得部は、文字の縦幅を０に設定する文字データ不可視化部を有し、前記文字データ不可視化部の設定に従って描画処理を前記文字描画部に実行させることで文字を非表示にし、その描画処理の結果から文字の横幅を取得することを特徴とする請求項１の文字サイズ取得装置。
【請求項３】
前記文字サイズ取得部は、文字の横幅を０に設定する文字データ不可視化部を有し、前記文字データ不可視化部の設定に従って描画処理を前記文字描画部に実行させることで文字を非表示にし、その描画処理の結果から文字の縦幅を取得することを特徴とする請求項１の文字サイズ取得装置。
【請求項４】
前記文字サイズ取得部は、前記フレームバッファに保存される画像の一部に非表示の領域を設定する文字データ不可視化部を有し、前記文字データ不可視化部により設定された領域に対して描画処理を前記文字描画部に実行させることで文字を非表示にし、その描画処理の結果から文字の縦幅及び横幅を取得することを特徴とする請求項１の文字サイズ取得装置。
【請求項５】
前記文字サイズ取得部は、文字の色を透明に設定する文字データ不可視化部を有し、前記文字データ不可視化部の設定に従って描画処理を前記文字描画部に実行させることで文字を非表示にし、その描画処理の結果から文字の縦幅及び横幅を取得することを特徴とする請求項１の文字サイズ取得装置。
【請求項６】
前記文字サイズ取得部は、取得した文字の縦幅及び横幅の少なくともいずれかを累積して、文字列の縦幅及び横幅の少なくともいずれかを算出する文字サイズ累積部を有することを特徴とする請求項１から５のいずれかの文字サイズ取得装置。
【請求項７】
画面に表示する画像を保存するフレームバッファを備えるコンピュータを用いる文字サイズ取得方法であって、
文字描画部が、前記フレームバッファに保存される画像に文字を描画する描画処理を実行し、
文字サイズ取得部が、文字が非表示になる形式で描画処理を前記文字描画部に実行させ、その描画処理の結果から文字の縦幅及び横幅の少なくともいずれかを取得することを特徴とする文字サイズ取得方法。
【請求項８】
画面に表示する画像を保存するフレームバッファを備えるコンピュータに、
前記フレームバッファに保存される画像に文字を描画する描画処理を実行する文字描画手順と、
文字が非表示になる形式で描画処理を前記文字描画手順に実行させ、その描画処理の結果から文字の縦幅及び横幅の少なくともいずれかを取得する文字サイズ取得手順と
を実行させることを特徴とする文字サイズ取得プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字サイズ取得装置及び文字サイズ取得方法及び文字サイズ取得プログラムに関するものである。
【背景技術】
【０００２】
従来の文字列描画方法では、一度描画すべき文字列の画像を生成し、その画像を一時記憶部に保持し、その文字列の画像から文字列に外接する四角形の各点の位置を得ることにより、文字サイズ計算（即ち、文字列の幅の計算）を行っていた（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−５３３５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の文字列描画方法で文字サイズ計算を行うためには、文字列を描画し、その文字列の画像を生成する必要があるため、フレームバッファとは別の一時記憶部を用いなければならないという課題があった。
【０００５】
本発明は、例えば、文字サイズ計算の省メモリ化を目的とする。
【課題を解決するための手段】
【０００６】
本発明の一の態様に係る文字サイズ取得装置は、
画面に表示する画像を保存するフレームバッファと、
前記フレームバッファに保存される画像に文字を描画する描画処理を実行する文字描画部と、
文字が非表示になる形式で描画処理を前記文字描画部に実行させ、その描画処理の結果から文字の縦幅及び横幅の少なくともいずれかを取得する文字サイズ取得部とを備える。
【発明の効果】
【０００７】
本発明では、フレームバッファに保存される画像に、文字が非表示になる形式で文字を描画し、その結果から文字サイズを取得するため、文字サイズ計算の省メモリ化が可能となる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１〜４に係る文字サイズ取得装置のハードウェア構成の一例を示すブロック図。
【図２】実施の形態１〜４に係る文字サイズ取得装置のシステム構成の一例を示すブロック図。
【図３】実施の形態１に係る文字サイズ取得装置の動作の一例を示すフローチャート。
【図４】実施の形態１に係る文字サイズ取得装置による描画処理の結果の一例を示す図。
【図５】実施の形態２に係る文字サイズ取得装置による描画処理の結果の一例を示す図。
【図６】実施の形態２に係る文字サイズ取得装置の動作の一例を示すフローチャート。
【図７】実施の形態３に係る文字サイズ取得装置の動作の一例を示すフローチャート。
【図８】実施の形態３に係る文字サイズ取得装置による描画処理の結果の一例を示す図。
【図９】実施の形態４に係る文字サイズ取得装置による描画処理の結果の一例を示す図。
【図１０】実施の形態４に係る文字サイズ取得装置の動作の一例を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態について、図を用いて説明する。
【００１０】
実施の形態１．
図１は、本実施の形態に係る文字サイズ取得装置１００のハードウェア構成の一例を示すブロック図である。
【００１１】
図１において、文字サイズ取得装置１００は、コンピュータであり、出力装置９１０、入力装置９２０、外部メモリ９３０、ＣＰＵ９４０（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）、メモリ９５０、描画専用プロセッサ９６０といったハードウェアを備える。ハードウェアは、文字サイズ取得装置１００の各部（本実施の形態の説明において「〜部」として説明するもの）によって利用される。
【００１２】
出力装置９１０は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）等の表示装置、プリンタ、通信モジュール（通信回路等）である。出力装置９１０は、各部（「〜部」）によってデータ、情報、信号の出力のために利用される。
【００１３】
入力装置９２０は、例えば、キーボード、マウス、タッチパネル、通信モジュール（通信回路等）である。入力装置９２０は、各部（「〜部」）によってデータ、情報、信号の入力のために利用される。
【００１４】
外部メモリ９３０及びメモリ９５０は、例えば、ＲＡＭ（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）、フラッシュメモリである。外部メモリ９３０及びメモリ９５０には、プログラム、ファイル等が記憶される。プログラムには、各部（「〜部」）の処理（機能）を実行するプログラムが含まれる。ファイルには、各部（「〜部」）によって演算、加工、読み取り、書き込み、利用、入力、出力等が行われるデータ、情報、信号（値）等が含まれる。
【００１５】
ＣＰＵ９４０及び描画専用プロセッサ９６０は、バス等を介して他のハードウェアデバイスと接続され、それらのハードウェアデバイスを制御する。ＣＰＵ９４０は、前述したプログラムを実行することにより、演算、加工、読み取り、書き込み、利用、入力、出力等を行う。描画専用プロセッサ９６０は、前述したプログラムを実行することにより、特に文字の描画を行う。
【００１６】
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ソフトウェアのみ、ハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせで実現される。ソフトウェアは、プログラムとして、外部メモリ９３０及びメモリ９５０に記憶される。プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。或いは、プログラムは、本発明の実施の形態の説明で述べる「〜部」の処理をコンピュータに実行させるものである。
【００１７】
図２は、文字サイズ取得装置１００のシステム構成の一例を示すブロック図である。
【００１８】
図２において、文字サイズ取得装置１００は、画面制御装置１１０、描画装置１２０を備える。
【００１９】
画面制御装置１１０は、画面データ構築部１１１、文字データ不可視化部１１２を備える。また、画面制御装置１１０は、図１のＣＰＵ９４０、メモリ９５０、入力装置９２０、出力装置９１０等のハードウェアを備える。画面データ構築部１１１、文字データ不可視化部１１２は、ＣＰＵ９４０で動作する。
【００２０】
描画装置１２０は、文字描画部１２１、文字サイズ累積部１２２を備える。また、描画装置１２０は、図１の描画専用プロセッサ９６０を備える。文字描画部１２１、文字サイズ累積部１２２は、描画専用プロセッサ９６０で動作する。そのため、文字描画部１２１、文字サイズ累積部１２２は、ＣＰＵ９４０で動作する画面制御装置１１０の各部とは独立して動作する。
【００２１】
図２に示すように、図１の外部メモリ９３０は、フォントデータ９３１、フレームバッファ９３２等を有する。
【００２２】
なお、画面データ構築部１１１、文字データ不可視化部１１２、文字描画部１２１、文字サイズ累積部１２２は、ハードウェアで実現してもよいし、コンピュータに所定のプログラムを実行させることによって実現してもよい。
【００２３】
文字サイズ累積部１２２は、描画装置１２０に備えられる代わりに、画面制御装置１１０に備えられてもよい。その場合、文字サイズ累積部１２２は、描画専用プロセッサ９６０で動作する代わりに、ＣＰＵ９４０で動作する。
【００２４】
本実施の形態において、フレームバッファ９３２は、画面に表示する画像を保存するためのバッファである。文字サイズ取得部１０１は、画面データ構築部１１１、文字データ不可視化部１１２、文字サイズ累積部１２２を有する。
【００２５】
文字描画部１２１は、フレームバッファ９３２に保存される画像に文字を描画する描画処理を実行する。文字サイズ取得部１０１は、文字が非表示になる形式で描画処理を文字描画部１２１に実行させ、その描画処理の結果から文字の横幅を取得する。このため、文字サイズ計算を行う際に、フレームバッファ９３２とは別の一時記憶部を用いなくて済む。よって、本実施の形態によれば、文字サイズ計算の省メモリ化が可能となる。
【００２６】
文字サイズ取得部１０１の文字データ不可視化部１１２は、文字の縦幅を０に設定する。文字サイズ取得部１０１は、文字データ不可視化部１１２の設定に従って描画処理を文字描画部１２１に実行させることで文字を非表示にし、その描画処理の結果から文字の横幅を取得する。このため、文字の横幅を取得するために、文字描画部１２１で通常の描画処理とは異なる処理を実行しなくて済む。よって、本実施の形態によれば、文字サイズ計算の効率化が可能となる。
【００２７】
文字サイズ取得部１０１の文字サイズ累積部１２２は、文字サイズ取得部１０１で取得した文字の縦幅を累積して、文字列の横幅を算出する。よって、本実施の形態によれば、文字列全体の横幅を取得することが可能となる。
【００２８】
以下、本実施の形態に係る文字サイズ取得装置１００の動作（本実施の形態に係る文字サイズ取得方法、本実施の形態に係る文字サイズ取得プログラムの処理手順）について説明する。
【００２９】
画面データ構築部１１１は、ユーザによる操作又は通信の入力により画面データを構築する。
【００３０】
画面データは、描画グラフィックス情報、描画文字情報等のデータによって構成される。描画文字情報は、フォント番号、文字コード列、変換行列等によって構成される。フォント番号は、使用するフォントを一意に決定する番号である。フォント番号は、フォントを指定する情報の一例である。フォントを指定する情報は、フォント番号に限らず、例えばフォント名等の使用するフォントを特定できるものであればよい。文字コード列は、描画する文字をフォントデータ９３１から探すための情報である。文字コード列は、文字を指定する情報の一例である。文字を指定する情報は、文字コード列に限らず、例えばグリフインデックス等の描画する文字を特定できる情報であればよい。変換行列は、フォント座標系からフレームバッファ座標系への変換を行うための行列であり、回転変換は考慮しないものとする。
【００３１】
画面データ構築部１１１では、例えば画面内の文字に対して、左揃え、中央揃え、右揃え等の文字揃え指定を行うことができるものとする。文字揃え指定は、描画文字情報の変換行列を変更することで実現する。例えば、変換行列が２×３の場合、変換行列を、
【数１】
2015118429.tif 000003
と表現すると、要素ｃ，ｆがそれぞれ水平方向の移動量、垂直方向の移動量となるため、横書きの場合はｃを、縦書きの場合はｆを変更することにより、文字揃えを実現することができる。
【００３２】
画面データ構築部１１１では、画面データ内に描画文字情報を含む場合、文字データ不可視化部１１２に描画文字情報を渡す。通常の文字描画の場合は、文字データ不可視化部１１２は必要ないが、文字サイズを取得する特殊な場合に文字データ不可視化部１１２が必要となる。文字データ不可視化部１１２は、描画文字情報の変換行列の縦スケール値を０にする。即ち、文字データ不可視化部１１２は、前述した２×３の変換行列を、
【数２】
2015118429.tif 000004
と設定する。ここで、ｃ及びｆの値は書き換えてもよいが、ａの要素は書き換えないものとする。文字データ不可視化部１１２は、この書き換え後の描画文字情報を文字描画部１２１に渡す。
【００３３】
文字描画部１２１は、描画文字情報の文字コード列を参照し、１文字ずつ描画を行う。
【００３４】
まず、文字描画部１２１は、文字コードを用いて外部メモリ９３０のフォントデータ９３１から指定されたフォントの該当する文字の文字データを取得する。文字データは、グリフ、文字送り幅等によって構成される。
【００３５】
次に、文字描画部１２１は、取得したグリフに描画文字情報の変換行列を掛けてフレームバッファ９３２に文字を描画する。ここで、変換行列は縦スケール値が０であるため、フォント座標上の点ｘ１，ｙ１は、
【数３】
2015118429.tif 000005
となり、ｙ座標の値が固定となるため、図４（図中、便宜上「ＡＢＣ」を示しているが、実際には存在しないものとする）のように実際にはフレームバッファに文字は描かれない。文字描画部１２１は、この文字の描画後に、文字送り幅に描画文字情報の変換行列のスケール部分のみをかけ、フレームバッファ９３２上の文字サイズを変換したものを文字サイズ累積部１２２に渡す。文字送り幅の横幅、縦幅をそれぞれｘ２，ｙ２とすると、この変換は、
ａ×ｘ２＝ａｘ２
０×ｙ２＝０
となり、フレームバッファ９３２上での文字サイズは、横幅においては正確に算出できる。
【００３６】
なお、フレームバッファ９３２上での文字サイズの算出方法としては、上記方法に限らず、例えば文字のバウンディングボックスの最小値、最大値にそれぞれ変換行列を掛けてその差分を取る方法等、フレームバッファ９３２上での文字サイズを算出できる方法であれば任意の方法を用いることができる。
【００３７】
文字サイズ累積部１２２では、文字描画部１２１より受け取ったフレームバッファ９３２上での文字サイズの縦幅と横幅をそれぞれ累積する。このときの動作としては、文字描画開始位置を原点として累積するものと、フレームバッファ座標系での文字描画開始位置にそのまま累積するものが考えられる。後者の場合、文字サイズ累積部１２２が文字描画開始位置を記憶する機能を持ち、最終的な累積結果と文字描画開始位置との差分により累積値が算出できるものとする。
【００３８】
文字描画部１２１及び文字サイズ累積部１２２は、上記処理を描画文字情報の文字コード列の全ての文字で実施する。なお、上記処理としては、１文字ずつ実施する方法に限らず、例えば全ての文字に対して一挙に変換をかけて描画をする方法等、文字を描画することによりフレームバッファ９３２上の文字のサイズが算出できる方法であれば任意の方法を用いることができる。
【００３９】
画面データ構築部１１１は、文字サイズ累積部１２２に累積されている累積値を参照することで文字サイズを取得し、これを利用して文字揃えのための文字の描画開始位置を算出し、描画文字情報の変換行列に反映し、画面データを描画装置１２０に渡す。
【００４０】
文字描画部１２１は、画面データ構築部１１１から得た画面データのうち描画文字情報のみを上述の処理を行い、実際に文字をフレームバッファ９３２に描画する。
【００４１】
図３は、文字サイズ取得装置１００の動作の一例を示すフローチャートである。
【００４２】
まず、Ｓ１１において、文字データ不可視化部１１２は、画面データ構築部１１１から画面データ内の描画文字情報のみを受け取る。
【００４３】
次に、Ｓ１２において、文字データ不可視化部１１２は、描画文字情報の変換行列の縦スケールを０にする。
【００４４】
次に、Ｓ１３において、文字描画部１２１は、文字データ不可視化部１１２から描画文字情報を受け取る。文字描画部１２１は、描画文字情報内の文字コード列から１文字分の文字コードを取り出し、その文字コードを基に指定されたフォントデータ９３１から該当する文字データを取得する。
【００４５】
次に、Ｓ１４において、文字描画部１２１は、文字データ内のグリフに描画文字情報の変換行列を掛けて、フレームバッファ座標系における文字の位置を計算する。
【００４６】
次に、Ｓ１５において、文字描画部１２１は、フレームバッファ９３２に文字を描画する。ただし、Ｓ１４により、文字の縦スケールが０になるため、図４のようになり、実際にはフレームバッファ９３２に文字は描画されない。
【００４７】
次に、Ｓ１６において、文字描画部１２１は、文字データ内の文字送り幅に描画文字情報の変換行列におけるスケール値を掛け合わせることにより、フレームバッファ９３２上での文字サイズを計算する。
【００４８】
次に、Ｓ１７において、文字サイズ累積部１２２は、文字描画部１２１で算出された文字サイズを受け取り、文字サイズの累積値に加算する。
【００４９】
次に、Ｓ１８において、文字描画部１２１は、描画文字情報の文字コード列にある全ての文字に対して描画が完了したかを判断する。完了していない場合は、Ｓ１３の処理に戻り、次の文字コードを処理する。完了している場合は、Ｓ１９において、画面データ構築部１１１は、文字サイズ累積部１２２に累積されている文字サイズを参照することにより、文字サイズを取得する。
【００５０】
以上のように、本実施の形態では、文字データ不可視化部１１２により、描画文字情報の変換行列の縦スケールを０にすることにより、フレームバッファ９３２に文字を描画せずに文字サイズを取得することができる。例えば、フレームバッファ９３２に既に背景等が描かれている状況においても、文字を描画しないため、フレームバッファ９３２に影響を及ぼすことなく、文字サイズの横幅を取得することが可能となる。これにより、文字サイズ取得用の一時バッファを持つ必要がないため、使用するメモリ容量を省くことができる。また、ＣＰＵ９４０とは異なる描画専用プロセッサ９６０で動作する描画装置１２０に文字サイズを計算させることにより、ＣＰＵ９４０で文字サイズを計算する必要がなくなり、その間ＣＰＵ９４０に別の処理を割り当てることができる。さらに、フレームバッファ９３２への描画時のピクセルの塗りつぶしが発生しないため、その分高速になる。
【００５１】
実施の形態２．
本実施の形態について、主に実施の形態１との差異を説明する。
【００５２】
本実施の形態では、文字サイズ取得部１０１の文字データ不可視化部１１２が、実施の形態１のように文字の縦幅を０に設定する代わりに、文字の横幅を０に設定する。文字サイズ取得部１０１は、文字データ不可視化部１１２の設定に従って描画処理を文字描画部１２１に実行させることで文字を非表示にし、その描画処理の結果から文字の縦幅（実施の形態１では「横幅」）を取得する。このため、文字の縦幅を取得するために、文字描画部１２１で通常の描画処理とは異なる処理を実行しなくて済む。よって、本実施の形態によれば、文字サイズ計算の効率化が可能となる。
【００５３】
以下、本実施の形態に係る文字サイズ取得装置１００の動作（本実施の形態に係る文字サイズ取得方法、本実施の形態に係る文字サイズ取得プログラムの処理手順）について説明する。
【００５４】
実施の形態１に係る文字サイズ取得装置１００は、文字の変換行列の縦スケールを０にすることにより、文字の横幅を計算するものであるが、本実施の形態に係る文字サイズ取得装置１００は、変換行列の横スケールを０にすることにより、縦書きの場合の文字の縦幅を計算する。
【００５５】
図６は、文字サイズ取得装置１００の動作の一例を示すフローチャートである。
【００５６】
Ｓ２１の処理は、図３に示した実施の形態１のＳ１１の処理と同じである。
【００５７】
Ｓ２２において、文字データ不可視化部１１２は、描画文字情報の変換行列の横スケールを０にする。即ち、文字データ不可視化部１１２は、前述した２×３の変換行列を、
【数４】
2015118429.tif 000006
と設定する。
【００５８】
Ｓ２３の処理は、図３に示した実施の形態１のＳ１３の処理と同じである。
【００５９】
Ｓ２４において、文字描画部１２１は、文字データ内のグリフに描画文字情報の変換行列を掛けて、フレームバッファ座標系における文字の位置を計算する。このとき、フォント座標上の点ｘ１，ｙ１は、
【数５】
2015118429.tif 000007
となり、ｘ座標の値が固定となる。その結果、Ｓ２５において、文字描画部１２１がフレームバッファ９３２に文字を描画する際には、図５（図中、便宜上「ＡＢＣ」を示しているが、実際には存在しないものとする）のように、実際にはフレームバッファ９３２に文字は描かれない。
【００６０】
また、Ｓ２６においても、文字描画部１２１が、文字データ内の文字送り幅に描画文字情報の変換行列におけるスケール値を掛け合わせると、文字送り幅の横幅ｘ２、縦幅ｙ２は、
０×ｘ２＝０
ｅ×ｙ２＝ｅｙ２
となり、フレームバッファ９３２上での文字サイズが、縦幅においては正確に算出できる。
【００６１】
Ｓ２７〜Ｓ２９の処理は、図３に示した実施の形態１のＳ１７〜Ｓ１９の処理と同じである。
【００６２】
以上のように、本実施の形態では、文字データ不可視化部１１２により、描画文字情報の変換行列の横スケールを０にすることにより、フレームバッファ９３２に文字を描画せずに文字サイズを取得することができる。例えば、フレームバッファ９３２に既に背景等が描かれている状況においても、文字を描画しないため、フレームバッファ９３２に影響を及ぼすことなく、文字サイズの縦幅を取得することが可能となる。これにより、文字サイズ取得用の一時バッファを持つ必要がないため、使用するメモリ容量を省くことができる。また、ＣＰＵ９４０とは異なる描画専用プロセッサ９６０で動作する描画装置１２０に文字サイズを計算させることにより、ＣＰＵ９４０で文字サイズを計算する必要がなくなり、その間ＣＰＵ９４０に別の処理を割り当てることができる。さらに、フレームバッファ９３２への描画時のピクセルの塗りつぶしが発生しないため、その分高速になる。
【００６３】
実施の形態３．
本実施の形態について、主に実施の形態１及び実施の形態２との差異を説明する。
【００６４】
本実施の形態では、文字サイズ取得部１０１の文字データ不可視化部１１２が、実施の形態１のように文字の縦幅を０に設定したり、実施の形態２のように文字の横幅を０に設定したりする代わりに、フレームバッファ９３２に保存される画像の一部に非表示の領域を設定する。文字サイズ取得部１０１は、文字データ不可視化部１１２の設定に従って描画処理を文字描画部１２１に実行させることで文字を非表示にし、その描画処理の結果から文字の縦幅及び横幅（実施の形態１では「横幅」、実施の形態２では「縦幅」）を取得する。このように、本実施の形態では、文字の縦幅及び横幅の両方を効率的に取得することが可能となる。
【００６５】
以下、本実施の形態に係る文字サイズ取得装置１００の動作（本実施の形態に係る文字サイズ取得方法、本実施の形態に係る文字サイズ取得プログラムの処理手順）について説明する。
【００６６】
実施の形態１及び実施の形態２に係る文字サイズ取得装置１００は、変換行列の書き換えにより文字データを不可視に変換するものであるが、本実施の形態に係る文字サイズ取得装置１００は、描画装置１２０で図８に示すようなシザー領域９３３が指定可能な場合に、設定されたシザー領域９３３の外（即ち、非表示の領域）に文字を描画する。シザー領域９３３とは、描画が有効な領域のことで、この領域外へ文字を描画しても実際には文字が描画されない。
【００６７】
図７は、文字サイズ取得装置１００の動作の一例を示すフローチャートである。
【００６８】
Ｓ３１の処理は、図３に示した実施の形態１のＳ１１の処理と同じである。
【００６９】
Ｓ３２において、文字データ不可視化部１１２は、描画文字情報のシザー領域９３３の外に文字の描画領域を設定する。ここで、シザー領域９３３と被らないように文字描画領域を設定する方法に限らず、例えばある固定のシザー領域９３３を設定してその領域外に文字を移動させる等、文字の描画領域とシザー領域９３３が被らないような設定ができれば任意の方法を用いることができる。
【００７０】
その結果、Ｓ３４において、文字描画部１２１が文字データ内のグリフに描画文字情報の変換行列を掛けると、文字の描画領域がシザー領域９３３の外となる。そして、Ｓ３５において、文字描画部１２１がフレームバッファ９３２に文字を描画する際には、図８（図中のハッチングは「ＡＢＣ」が実際には存在しないことを示しているものとする）のように、文字は描画の対象とならず、フレームバッファ９３２に文字は描かれない。
【００７１】
一方、Ｓ３６においては、文字描画部１２１が、文字データ内の文字送り幅に描画文字情報の変換行列におけるスケール値を掛け合わせると、文字送り幅の横幅ｘ２、縦幅ｙ２は、
ａ×ｘ２＝ａｘ２
ｅ×ｙ２＝ｅｙ２
となり、フレームバッファ９３２上での文字サイズが正確に算出できる。
【００７２】
Ｓ３３，Ｓ３７〜Ｓ３９の処理は、図３に示した実施の形態１のＳ１３，Ｓ１７〜Ｓ１９の処理と同じである。
【００７３】
以上のように、本実施の形態では、文字データ不可視化部１１２により、描画文字情報のシザー領域９３３の外を文字の描画領域に設定することにより、フレームバッファ９３２に文字を描画せずに文字サイズを取得することができる。例えば、フレームバッファ９３２に既に背景等が描かれている状況においても、文字を描画しないため、フレームバッファ９３２に影響を及ぼすことなく、文字サイズの縦幅、横幅を共に取得することが可能となる。これにより、文字サイズ取得用の一時バッファを持つ必要がないため、使用するメモリ容量を省くことができる。また、ＣＰＵ９４０とは異なる描画専用プロセッサ９６０で動作する描画装置１２０に文字サイズを計算させることにより、ＣＰＵ９４０で文字サイズを計算する必要がなくなり、その間ＣＰＵ９４０に別の処理を割り当てることができる。さらに、フレームバッファ９３２への描画時のピクセルの塗りつぶしが発生しないため、その分高速になる。
【００７４】
実施の形態４．
本実施の形態について、主に実施の形態１及び実施の形態２との差異を説明する。
【００７５】
本実施の形態では、文字サイズ取得部１０１の文字データ不可視化部１１２が、実施の形態１のように文字の縦幅を０に設定したり、実施の形態２のように文字の横幅を０に設定したりする代わりに、文字の色を透明に設定する。文字サイズ取得部１０１は、文字データ不可視化部１１２の設定に従って描画処理を文字描画部１２１に実行させることで文字を非表示にし、その描画処理の結果から文字の縦幅及び横幅（実施の形態１では「横幅」、実施の形態２では「縦幅」）を取得する。このように、本実施の形態では、文字の縦幅及び横幅の両方を効率的に取得することが可能となる。また、実施の形態３のように、フレームバッファ９３２に保存される画像に非表示の領域を設定する必要もない。
【００７６】
以下、本実施の形態に係る文字サイズ取得装置１００の動作（本実施の形態に係る文字サイズ取得方法、本実施の形態に係る文字サイズ取得プログラムの処理手順）について説明する。
【００７７】
実施の形態１及び実施の形態２に係る文字サイズ取得装置１００は、変換行列の書き換えにより文字データを不可視に変換するものであるが、本実施の形態に係る文字サイズ取得装置１００は、描画装置１２０でアルファブレンドが可能な場合に、文字色のアルファ値を０にして文字を描画する。アルファブレンドとは、２枚の画像をアルファ値により合成することで、アルファ値は０〜１の値を取り、アルファ値が１のときは完全な不透明、アルファ値が０のときは完全な透明となる。
【００７８】
図１０は、文字サイズ取得装置１００の動作の一例を示すフローチャートである。
【００７９】
Ｓ４１の処理は、図３に示した実施の形態１のＳ１１の処理と同じである。
【００８０】
Ｓ４２において、文字データ不可視化部１１２は、描画文字情報の文字色のアルファ値を０に設定する。
【００８１】
その結果、Ｓ４５において、文字描画部１２１がフレームバッファ９３２に文字を描画する際には、図９（図中のハッチングは「ＡＢＣ」が透明であることを示しているものとする）のように、文字は透明で描画される。
【００８２】
一方、Ｓ４６においては、文字描画部１２１が、文字データ内の文字送り幅に描画文字情報の変換行列におけるスケール値を掛け合わせると、文字送り幅の横幅ｘ２、縦幅ｙ２は、
ａ×ｘ２＝ａｘ２
ｅ×ｙ２＝ｅｙ２
となり、フレームバッファ９３２上での文字サイズが正確に算出できる。
【００８３】
Ｓ４３，Ｓ４４，Ｓ４７〜Ｓ４９の処理は、図３に示した実施の形態１のＳ１３，Ｓ１４，Ｓ１７〜Ｓ１９の処理と同じである（ただし、Ｓ４４で用いられる変換行列の縦スケールは０にはなっていない）。
【００８４】
以上のように、本実施の形態では、文字データ不可視化部１１２により、描画文字情報の文字色のアルファ値を０にすることにより、フレームバッファ９３２に文字を描画せずに文字サイズを取得することができる。例えば、フレームバッファ９３２に既に背景等が描かれている状況においても、文字を透明で描画するため、フレームバッファ９３２に影響を及ぼすことなく、文字サイズの縦幅、横幅を共に取得することが可能となる。これにより、文字サイズ取得用の一時バッファを持つ必要がないため、使用するメモリ容量を省くことができる。また、ＣＰＵ９４０とは異なる描画専用プロセッサ９６０で動作する描画装置１２０に文字サイズを計算させることにより、ＣＰＵ９４０で文字サイズを計算する必要がなくなり、その間ＣＰＵ９４０に別の処理を割り当てることができる。
【００８５】
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、２つ以上を組み合わせて実施しても構わない。或いは、これらの実施の形態のうち、１つを部分的に実施しても構わない。或いは、これらの実施の形態のうち、２つ以上を部分的に組み合わせて実施しても構わない。例えば、これらの実施の形態の説明において「〜部」として説明するもののうち、いずれか１つのみを採用してもよいし、いずれか２つ以上の任意の組み合わせを採用してもよい。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【００８６】
１００  文字サイズ取得装置、１０１  文字サイズ取得部、１１０  画面制御装置、１１１  画面データ構築部、１１２  文字データ不可視化部、１２０  描画装置、１２１  文字描画部、１２２  文字サイズ累積部、９１０  出力装置、９２０  入力装置、９３０  外部メモリ、９３１  フォントデータ、９３２  フレームバッファ、９３３  シザー領域、９４０  ＣＰＵ、９５０  メモリ、９６０  描画専用プロセッサ。
【図１】
2015118429.tif 000008
【図２】
2015118429.tif 000009
【図３】
2015118429.tif 000010
【図４】
2015118429.tif 000011
【図５】
2015118429.tif 000012
【図６】
2015118429.tif 000013
【図７】
2015118429.tif 000014
【図８】
2015118429.tif 000015
【図９】
2015118429.tif 000016
【図１０】
2015118429.tif 000017