説明

描画装置、描画方法、及び描画プログラム

【課題】少ない処理コストで、かつジャギーの少ない文字画像を描画することができる描画装置、描画方法、及び描画プログラムを提供する。
【解決手段】実施の形態において、第1セグメント設定部は、アウトラインデータにおける直線セグメントを設定する。第2セグメント設定部は、アウトラインデータにおける曲線セグメントを設定する。第1ステンシル生成部は、直線セグメントのステンシルデータを生成する。第2ステンシル生成部は、画像内の複数の領域毎に透明度が割り当てられた基本テクスチャを取得し、曲線セグメントに対して、基本テクスチャの一部を曲線セグメントの形状に応じて貼り付けた後、曲線セグメントのステンシルデータを生成する。描画部は、直線セグメントのステンシルデータと、曲線セグメントのステンシルデータとから、アウトラインデータに対応する文字画像を描画する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、描画装置、描画方法、及び描画プログラムに関する。
【背景技術】
【0002】
グラフィックス・プロセッシング・ユニット(GPU)を用いて、文字のアウトラインデータから文字画像を描画する描画装置がある。このような描画装置では、アンチエイリアシングを行なってジャギーを目立たなくすることにより、画質の劣化を抑えた文字画像を描画している。
【0003】
しかしながら、従来の描画装置では、アンチエイリアシングを行なう際に、微分等の高度な計算処理を行なうため、処理コストが高いという課題がある。そのため、少ない処理コストで、かつジャギーの少ない文字画像を描画することができる描画装置が望まれている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−106705号公報
【特許文献2】特開2007−241878号公報
【特許文献3】特開2007−304871号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
発明が解決しようとする課題は、少ない処理コストで、かつジャギーの少ない文字画像を描画することができる描画装置、描画方法、及び描画プログラムを提供することである。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明の実施形態に係る描画装置は、第1セグメント設定部と、第2セグメント設定部と、第1ステンシル生成部と、第2ステンシル生成部と、描画部とを備える。
【0007】
第1セグメント設定部は、入力されたアウトラインデータを解析し、前記アウトラインデータにおける直線部分を描画するための直線セグメントを設定する。第2セグメント設定部は、前記アウトラインデータを解析し、前記アウトラインデータにおける曲線部分を描画するための曲線セグメントを設定する。第1ステンシル生成部は、前記直線セグメントのステンシルデータを生成する。第2ステンシル生成部は、画像内の複数の領域毎に透明度が割り当てられた基本テクスチャを取得し、前記曲線セグメントに対して、前記基本テクスチャの一部を前記曲線セグメントの形状に応じて貼り付けた後、前記曲線セグメントのステンシルデータを生成する。描画部は、前記直線セグメントのステンシルデータと、前記曲線セグメントのステンシルデータとから、前記アウトラインデータに対応する文字画像を描画する。
【図面の簡単な説明】
【0008】
【図1】第1の実施形態に係る描画装置1を表すブロック図。
【図2】アウトラインデータの一例図。
【図3】第1の実施形態における基本テクスチャの一例図。
【図4】描画装置1の処理を表すフローチャート。
【図5】第1セグメント設定部121が生成する多角形を表す一例図。
【図6】直線セグメントの説明図。
【図7】曲線セグメントの説明図。
【図8】ステンシルデータの一例図。
【図9】ステンシルデータの一例図。
【図10】曲線と曲線との連結部分の描画結果を表す一例図。
【図11】第2の実施形態における描画装置2を表すブロック図。
【図12】第2の実施形態における基本テクスチャの一例図。
【図13】内接セグメントを表す一例図。
【図14】外接セグメントを表す一例図。
【図15】第3ステンシル生成部231の処理の説明図。
【図16】第4ステンシル生成部232の処理の説明図。
【図17】描画装置2の処理を表すフローチャート。
【図18】曲線と直線との連結部分の描画結果を表す一例図。
【図19】第2の実施形態の変形例1における基本テクスチャの一例図。
【図20】内接セグメントを表す一例図。
【図21】外接セグメントを表す一例図。
【図22】第3ステンシル生成部231の処理の説明図。
【図23】第4ステンシル生成部232の処理の説明図。
【図24】凹曲線と凸曲線との連結部分の描画結果を表す一例図。
【図25】第2の実施形態の変形例2における基本テクスチャの一例図。
【図26】第3ステンシル生成部231の処理の説明図。
【図27】第4ステンシル生成部232の処理の説明図。
【発明を実施するための形態】
【0009】
(第1の実施形態)
第1の実施の形態に係る描画装置1は、例えば、電子番組表(EPG)を表示するTVやレコーダ等に用いられ得る。描画装置1は、ベクトル形式の文字のデータ(アウトラインデータ)から、対応する文字画像を描画するものである。
【0010】
描画装置1は、取得したアウトラインデータを解析し、対応する文字画像を描画するものである。描画装置1は、取得したアウトラインデータを、少なくとも直線セグメントか曲線セグメントかのいずれか1つを含む領域を設定する。直線セグメントとは、アウトラインデータにおける直線部分を描画するための領域である。曲線セグメントとは、アウトラインデータにおける曲線部分を描画するための領域である。
【0011】
描画装置1は、予め用意された、曲線部分におけるエッジ近傍のアルファ値α(透明度)を規定したテクスチャ(以下、基本テクスチャ)を曲線セグメントに貼り付けた後、曲線セグメントを描画する。これにより、ジャギーの少ない文字画像を描画することができる。
【0012】
図1は、描画装置1を表すブロック図である。描画装置1は、取得部11と、セグメント設定部12と、ステンシル生成部13と、描画部14と、提示部15と、テキスト格納部51と、アウトライン格納部52と、テクスチャ格納部53と、ステンシル記憶部61と、画像記憶部62とを備える。セグメント設定部12は、第1セグメント設定部121と、第2セグメント設定部122とを含む。ステンシル生成部13は、第1ステンシル生成部131と、第2ステンシル生成部132とを含む。
【0013】
入力装置5は、例えば、リモコン、マウス、キーボード、タッチパネル等である。入力装置5は、例えば、EPGを表示させるよう描画装置1に指示を与えるものであってよい。描画装置1は当該指示を受け、動作を開始する。
【0014】
テキスト格納部51は、複数の文字(テキストデータ)を格納している。例えば、テキスト格納部51は、EPGに含まれる各番組のタイトル、出演者、開始時刻、終了時刻、番組内容等のテキストデータを格納している。なお、テキスト格納部51は、受信部(不図示)が受信した放送波から番組情報を取得し、テキストデータを定期的に更新してもよい。
【0015】
アウトライン格納部52は、各文字の輪郭の形状を表すアウトラインデータを格納している。図2は、「6」のアウトラインデータの一例図である。アウトラインデータは、複数の頂点と、各頂点どうしを結ぶ直線及び曲線(ベジエ曲線)により定められるデータである。図2では、直線の始点と終点、及び曲線の始点と終点を黒丸(●)で表し、曲線の制御点を白丸(○)で表している。制御点とは、これに隣接する2点間を結ぶ直線よりも、曲線が制御点側に突出していることを示している。
【0016】
アウトライン格納部52は、少なくとも、テキスト格納部51に格納されているテキストデータに対応するアウトラインデータを格納していることが望ましい。
【0017】
テクスチャ格納部53は、後述する第2ステンシル生成部132が用いる基本テクスチャを格納している。図3は、本実施形態における基本テクスチャを表す一例図である。図3に示すように、本実施形態の基本テクスチャは、長方形(例えば、正方形)の一辺の頂点Aを始点に持ち、頂点Bを終点に持ち、当該一辺の対辺の中点Cを制御点に持つベジエ曲線で囲まれた領域のアルファ値αの変化を定めた画像である。
【0018】
図3の基本テクスチャにおいて、黒色の領域は不透過(α=1)であることを表し、白色の領域は全透過(α=0)であることを表す。また、図3において縦縞の線で示す、凹領域(三角形ABC内の凹状の領域)と凸領域(三角形ABC内の凸状の領域)との境界領域(曲線のエッジ近傍)では、アルファ値αが連続的に変化している。
【0019】
例えば、図3(a)の凹型基本テクスチャにおける境界領域では、凸領域(白色)から凹領域(黒色)に向かって、アルファ値αが0から1へと連続的に変化している。図3(b)の凸型基本テクスチャにおける境界領域では、凸領域(黒色)から凹領域(白色)に向かって、アルファ値αが1から0へと連続的に変化している。
【0020】
取得部11は、処理対象となる一又は複数のテキストデータをテキスト格納部51から取得し、当該テキストデータの各文字に対応するアウトラインデータを各々アウトライン格納部52から取得する。各文字のアウトラインデータは、当該文字のエッジを代表する多数の点の集合であって、直線または曲線の始点および終点の位置データを含む。曲線の場合にはさらに制御点の位置データを含む。
【0021】
第1セグメント設定部121は、アウトラインデータを解析し、直線セグメントを設定する。詳細は後述する。第1セグメント設定部121は、直線セグメントを第1ステンシル生成部131に供給する。
【0022】
第2セグメント設定部122は、アウトラインデータを解析し、曲線セグメントを設定する。詳細は後述する。第2セグメント設定部122は、曲線セグメントを第2ステンシル生成部132に供給する。
【0023】
第1ステンシル生成部131は、直線セグメントのステンシルデータを生成する。このとき、第1ステンシル生成部131は、直線セグメントの内側にある点(画素)のステンシル値をビット反転することにより、直線セグメントのステンシルデータを生成する。ステンシル値とは、最終的にその点を描画するか否かを示す値である(0か1かのフラグであっても構わない)。第1ステンシル生成部131は、生成したステンシルデータをステンシル記憶部61に書き込む。
【0024】
第2ステンシル生成部132は、曲線セグメントのステンシルデータを生成する。このとき、第2ステンシル生成部132は、テクスチャ格納部53に格納されている基本テクスチャから、始点Aと制御点Cと終点Bとで囲まれた三角形領域(図3において、灰色の線で囲まれた領域)を切り出し、曲線セグメントの形状に合わせて貼り付ける。
【0025】
そして、第2ステンシル生成部132は、曲線セグメントの内側にある点(画素)の中で、アルファ値αが0でない領域の点(画素)のステンシル値をビット反転することにより、曲線セグメントのステンシルデータを生成する。第2ステンシル生成部132は、生成したステンシルデータをステンシル記憶部61に書き込む。
【0026】
なお、ステンシル記憶部61に書き込まれたステンシル値は、毎フレーム0に初期化される。
【0027】
描画部14は、アウトラインデータ全体を覆う四角形ポリゴン(バウンディングボックス)を生成する。そして、この四角形ポリゴンの内側に位置する各画素について、ステンシル記憶部61に記憶されている同じ位置の画素のステンシル値を調べ、そのステンシル値が0でない場合に限り、画像記憶部62にRGB値を書き込む。これにより、文字画像が画像記憶部62に書き込まれる。
【0028】
すなわち、画像記憶部62の各点にはRGBα形式の画素値(カラー値)が保持されている。Rは赤成分、Gは緑成分、Bは青成分表す。αはアルファ値を表す。各画素のR、G、Bの値は、毎フレーム、0に初期化される。また、各画素のアルファ値αは、毎フレーム、1に初期化される。
【0029】
提示部15は、画像記憶部62から文字画像を読み出して提示する。提示部15は、例えば、表示ディスプレイや、プリンタ等であってよい。
【0030】
取得部11と、セグメント設定部12とは、中央演算処理装置(CPU)及びCPUが用いるメモリにより実現されてよい。ステンシル生成部13は、グラフィックス・プロセッシング・ユニット(GPU)及びGPUが用いるメモリにより実現されてよい。テキスト格納部51と、アウトライン格納部52と、テクスチャ格納部53と、ステンシル記憶部61と、画像記憶部62とは、CPUやGPUが用いるメモリ(RAMやVRAM等)、又は補助記憶装置により実現されてよい。
【0031】
以上、描画装置1の構成について説明した。
【0032】
図4は、描画装置1の処理を表すフローチャートである。
【0033】
ステップS101にて、取得部11は、処理対象となる一又は複数のテキストデータをテキスト格納部51から取得し、当該テキストデータに対応するアウトラインデータをアウトライン格納部52から取得する(S101)。取得部11は、取得したアウトラインデータを、第1セグメント設定部121と、第2セグメント設定部122とに供給する。
【0034】
ステップS102にて、第1セグメント設定部121は、供給されたアウトラインデータを解析し、直線セグメントを設定する(S102)。第1セグメント設定部121は、アウトラインデータの輪郭線において、直線の始点と終点、凹曲線の始点と制御点と終点、及び凸曲線の始点と終点とを結び多角形を生成する。このとき、第1セグメント設定部121は、凹曲線に対しては、始点と制御点と終点と、の3点を結ぶ。凸曲線に対しては、始点と終点と、の2点を直接結ぶ。
【0035】
ここで、凹曲線とは、アウトラインの輪郭の内側から外側に向かって凹状になっている曲線をいう。凸曲線とは、アウトラインの輪郭の内側から外側に向かって凸状になっている曲線をいう。
【0036】
図2に示す「6」のアウトラインデータには、外周の輪郭線と、内周の輪郭線とが含まれている。この場合、第1セグメント設定部121は、図5に示すように、外周の多角形(図5(a))と、内周の多角形(図5(b))とを各々生成する。
【0037】
第1セグメント設定部121は、生成した多角形に含まれる各頂点のうち、任意の一点(以下、ピボット)を選択する。そして、ピボットと、各辺の両端の頂点とを結び、複数の三角形(三角形群)を生成する。図5の場合、第1セグメント設定部121は、例えば、頂点P1を外周の多角形でのピボットに選択し、頂点P2を内周の多角形でのピボットに選択してよい。
【0038】
図6は、直線セグメントの説明図である。図5(a)に示す外周の多角形からは、図6(a)に示す三角形群が生成される。図5(b)に示す内周の多角形からは、図6(b)に示す三角形群が生成される。直線セグメントとは、図6(a)に示す三角形群と、図6(b)に示す三角形群とを合わせたものである(図6(c))。第1セグメント設定部121は、直線セグメントを第1ステンシル生成部131に供給する。ステップS102の手法は、特許文献2記載の手法と同様であってよい。
【0039】
ステップS103にて、第2セグメント設定部122は、アウトラインデータを解析し、曲線セグメントを設定する(S103)。図7は、曲線セグメントの説明図である。曲線セグメントは、凹曲線輪郭(図7(a))と、凸曲線輪郭(図7(b))とを含む。凹曲線輪郭とは、曲線の凹領域が図形の内側にあるものをいい、凸曲線輪郭とは、曲線の凸領域が図形の内側にあるものをいう。
【0040】
第2セグメント設定部122は、凹曲線の始点と終点とを結び、凹曲線輪郭を生成し、凸曲線の始点と制御点と終点とを結び、凸曲線輪郭を生成する。曲線セグメントとは凹曲線輪郭と、凸曲線輪郭とを合わせたものである(図7(c))。第2セグメント設定部122は、曲線セグメントを第2ステンシル生成部132に供給する。ステップS103の手法は、特許文献2記載の手法と同様であってよい。
【0041】
ステップS104にて、第1ステンシル生成部131は、直線セグメントの内側にある点(画素)のステンシル値をビット反転することにより、直線セグメントのステンシルデータを生成し、ステンシル記憶部61に書き込む(S104)。ステップS104の手法は、特許文献2記載の手法と同様であってよい。
【0042】
ステップS105にて、第2ステンシル生成部132は、曲線セグメントのステンシルデータを生成し、ステンシル記憶部61に書き込む(S105)。
【0043】
第2ステンシル生成部132は、図2に示す基本テクスチャを曲線セグメントに貼り付け、アルファ値が0でない点(画素)だけをステンシル記憶部61に書き込む。この際、それらの画素のステンシル値をビット反転する。すなわち、凹曲線を表す三角形においては、凹領域に属する画素のステンシル値をビット反転し、凸曲線を表す三角形においては、凸領域に属する画素のステンシル値をビット反転する。
【0044】
例えば、既に第1ステンシル生成部131によって直線セグメントが描画され、ステンシル記憶部61に、図8に示すようなステンシルデータが記憶されている場合、第2ステンシル生成部132が、図7(c)に示す曲線セグメントを描画すると、図9下のようなステンシルデータに更新される。図8及び図9では、ステンシル値が0である点を白色で、ステンシル値が0でない点を黒色で示している。
【0045】
第2ステンシル生成部132は、曲線セグメントの各三角形領域の各点について、基本テクスチャに設定されているアルファ値αと、画像記憶部62に記憶されているアルファ値αを比較する。そして、基本テクスチャに設定されているアルファ値αのほうが小さければ、その点のアルファ値αを画像記憶部62に書き込む。
【0046】
ステップS106にて、描画部14は、ステンシル記憶部61から、ステンシルデータにおける各点(画素)のステンシル値を読み出し、アウトラインデータ全体を覆う四角形ポリゴン(バウンディングボックス)を生成する(S106)。そして、この四角形ポリゴンの内側に位置する各画素について、ステンシル記憶部61に記憶されている同じ位置の画素のステンシル値を調べ、そのステンシル値が0でない場合に限り、画像記憶部62にRGB値を書き込む。
【0047】
ステップS107にて、提示部15は、画像記憶部62から読み出した文字画像を提示する(S107)。これで、描画装置1の処理が終了する。
【0048】
以上、描画装置1の処理について説明した。
【0049】
特許文献1〜3で開示されている技術では、三角形内部の各画素において、ベジエ曲線の陰関数を計算し、その値の符号(正負)に基づいて、各画素が凹領域に属するか、あるいは凸領域に属するかを判定している。
【0050】
また、式1を用いて、三角形内部の各画素から曲線エッジまでの符号付き距離を計算し、その距離の大きさに応じて線形に変化するように、各画素に対してアルファ値を割り当てて、文字の色(前景色)と背景色を混合することにより、曲線のアンチエイリアシングを実現していた。
【0051】
本実施形態では、図2に示す基本テクスチャから、灰色の線で示した三角形領域を切り出して、曲線セグメントを構成する各三角形の形状に合わせて貼り付けることにより、少ない処理コストで、かつジャギーの少ない文字画像を描画することができる。
【0052】
(第2の実施形態)
図10は、上述の実施形態による曲線と曲線との連結部分の描画結果を表す一例図である。図10に示すように、第1の実施形態に係る描画装置1による描画結果には、曲線と曲線との連結部(図10において丸で囲まれた部分)が滑らかに繋がらず、不連続になる場合がある。例えば、描画された文字画像の曲線にドット抜けが生じる場合がある。
【0053】
これは、上述の曲線セグメントを複数連結させた場合、連結部近傍において半透過の色を表現するための画素が足りないことが原因である。
【0054】
第2の実施形態では、曲線と曲線との連結部分に内接する三角形及び外接する三角形を新たに生成して連結部近傍の半透過の色を表現するための点(画素)を補う。そのために、当該連結部分におけるアルファ値αの変化を表現したテクスチャを基本テクスチャとする。
【0055】
図11は、本実施形態における描画装置2を表すブロック図である。描画装置2は、描画装置1に対して、セグメント設定部22の処理とステンシル生成部23の処理とが異なる。セグメント設定部22は、セグメント設定部12に対して、第3セグメント設定部221と、第4セグメント設定部222とをさらに含む。ステンシル生成部23は、ステンシル生成部13に対して、第3ステンシル生成部231と、第4ステンシル生成部232とをさらに備える。
【0056】
また、テクスチャ格納部53が記憶している基本テクスチャが、描画装置1の場合と異なる。図12は、本実施形態における基本テクスチャを表す一例図である。図12に示すように、本実施形態の基本テクスチャは長方形(例えば、正方形)PQRSの一辺PQの中点Aを始点に持ち、当該一辺PQに交わる他の一辺QRの中点Bを終点に持ち、長方形PQRSの中心点Cを制御点に持つベジエ曲線ABで囲まれた領域のアルファ値αの変化を定めた画像である。テクスチャ格納部53は、図12の基本テクスチャを記憶している。
【0057】
なお、本実施形態における基本テクスチャについても、不透過(α=1)の領域から全透過(α=0)の領域の境界では、アルファ値αは連続的に変化している。
【0058】
第3セグメント設定部221は、アウトラインデータを解析し、内接セグメントを設定する。図13は、内接セグメントを表す一例図である。図13(a)は凹曲線の内接セグメントであり、図13(b)は凸曲線の内接セグメントである。第3セグメント設定部221は、アウトラインデータにおける曲線と曲線との連結部分に内接する三角形群(図13における三角形E、F、G)を生成する。
【0059】
第4セグメント設定部222は、アウトラインデータを解析し、外接セグメントを設定する。図14は、外接セグメントを表す一例図である。図14(a)は凹曲線の外接セグメントであり、図14(b)は凸曲線の内接セグメントである。第4セグメント設定部222は、アウトラインデータにおける曲線と曲線との連結部分に外接する三角形群(図14における三角形H、I、J)を生成する。
【0060】
第3ステンシル生成部231は、生成された内接セグメントに対応するステンシルデータを生成する。図15は、第3ステンシル生成部231の処理の説明図である。図15(a)は凹曲線に対するステンシルデータであり、図15(b)は凸曲線に対するステンシルデータである。第3ステンシル生成部231は、図12に示す基本テクスチャから三角形領域を切り出し、生成された内接セグメントに貼り付ける。
【0061】
すなわち、第3ステンシル生成部231は、図12に示す基本テクスチャから三角形領域(三角形K、L、M)を切り出し、生成された内接セグメント(K、L、M)に貼り付けることにより、内接セグメントに対応するステンシルデータを生成する。
【0062】
第3ステンシル生成部231は、基本テクスチャから切り出した領域を貼り付けたのち、アルファ値αが0でない点(画素)をステンシル記憶部61に書き込む。この際、それらの点(画素)のステンシル値をビット反転する。
【0063】
第3ステンシル生成部231は、内接セグメントの各三角形の各画素について、基本テクスチャによって設定されたアルファ値αと、画像記憶部62に記憶されているアルファ値αを比較する。そして、基本テクスチャによって設定されたアルファ値αのほうが小さければ、その画素のアルファ値αを画像記憶部62に書き込む。
【0064】
第4ステンシル生成部232は、生成された外接セグメントに対応するステンシルデータを生成する。図16は、第4ステンシル生成部232の処理の説明図である。図16(a)は凹曲線に対するステンシルデータであり、図16(b)は凸曲線に対するステンシルデータである。
【0065】
第4ステンシル生成部232は、図12に示す基本テクスチャから三角形領域を切り出し、生成された外接セグメントに貼り付ける。
【0066】
すなわち、第4ステンシル生成部232は、図12に示す基本テクスチャから三角形領域(三角形S、T、U)を切り出し、生成された外接セグメント(S、T、U)に貼り付けることにより、外接セグメントに対応するステンシルデータを生成する。
【0067】
第4ステンシル生成部232は、基本テクスチャで設定されたアルファ値αを用いて、文字の色(前景色)と背景色のRGB値を混合することにより、連結部近傍に対し半透過の色を補う。
【0068】
以上、描画装置2の構成について説明した。
【0069】
図17は、描画装置2の処理を表すフローチャートである。描画装置2の処理は、図4に示す描画装置1の処理に対して、さらに、ステップS201と、ステップS202と、ステップS203と、ステップS204とを含む。
【0070】
ステップS201にて、第3セグメント設定部221は、アウトラインデータを解析し、内接セグメントを生成する(S201)。
【0071】
ステップS202にて、第4セグメント設定部222は、アウトラインデータを解析し、外接セグメントを生成する(S202)。
【0072】
ステップS203にて、第3ステンシル生成部231は、生成された内接セグメントに対応するステンシルデータを生成する(S203)。
【0073】
ステップS204にて、第4ステンシル生成部232は、生成された外接セグメントに対応するステンシルデータを生成する(S204)。
【0074】
本実施形態では、曲線と曲線との連結部分に内接および外接する三角形群を新たに描画し、その三角形群に対して、基本テクスチャに記憶しておいた連結部近傍のアルファ値αを貼り付けることにより、曲線と曲線との連結部が、連続的に滑らかにつながるようになる。
【0075】

(変形例1)
図18は、上述の実施形態による曲線と直線との連結部分の描画結果を表す一例図である。図18に示すように、上述の実施形態による描画結果には、曲線と直線との連結部(図18において丸で囲まれた部分)が滑らかに繋がらず、不連続になる場合がある。例えば、文字画像の曲線と直線との結合部分にドット抜けが生じる場合がある。
【0076】
変形例1では、曲線と直線との連結部分に内接する三角形及び外接する三角形を新たに生成し、連結部近傍の半透過の色を表現するための点(画素)を補う。そのため、当該連結部分におけるアルファ値αの変化を表現したテクスチャを基本テクスチャとする。
【0077】
図19は、変形例1における基本テクスチャを表す一例図である。図19に示すように、
変形例1の基本テクスチャは長方形(例えば、正方形)PQRSの、(1)一辺PQ上の点Dと、点Dを通り、辺PQの垂線上の点Aとを直線DA、(2)当該一辺PQに交わる辺QR上の点Eと、点Eを通り、辺QRの垂線上の点Bとを結ぶ直線EB、(3)点Aを始点に持ち、点Bを終点に持ち、直線DAと直線EBとの交点Cを制御点に持つベジエ曲線AB、を連結した図形におけるアルファ値αの変化を定めた画像である。変形例1のテクスチャ格納部53は、図19の基本テクスチャを記憶している。
【0078】
図20は、内接セグメントを表す一例図である。図20(a)は凹曲線の内接セグメントであり、図20(b)は凸曲線の内接セグメントである。第3セグメント設定部221は、アウトラインデータを解析し、図13に示した曲線と曲線との連結部分に内接する三角形群(図13における三角形E、F、G)に加え、直線と曲線との連結部分に内接する三角形群(図20における三角形E’、G’)を設定する。
【0079】
図21は、外接セグメントを表す一例図である。図21(a)は凹曲線の外接セグメントであり、図20(b)は凸曲線の外接セグメントである。第4セグメント設定部222は、アウトラインデータを解析し、図14に示した曲線と曲線との連結部分に外接する三角形群(図14における三角形H、I、J)に加え、直線と曲線との連結部分に外接する三角形群(図21における三角形H’、I’)を設定する。
【0080】
第3ステンシル生成部231は、生成された内接セグメントに対応するステンシルデータを生成する。図22は、第3ステンシル生成部231の処理の説明図である。図22(a)は凹曲線に対するステンシルデータであり、図22(b)は凸曲線に対するステンシルデータである。第3ステンシル生成部231は、図19に示す基本テクスチャから三角形領域を切り出し、生成された内接セグメントに貼り付ける。
【0081】
すなわち、第3ステンシル生成部231は、図19に示す基本テクスチャから三角形領域(三角形K、L、M、V、W、V’、W’)を切り出し、生成された内接セグメント(E、F、G、E’、G’)に貼り付けることにより、内接セグメントに対応するステンシルデータを生成する。以後は、本実施形態と同様である。
【0082】
第4ステンシル生成部232は、生成された内接セグメントに対応するステンシルデータを生成する。図23は、第4ステンシル生成部232の処理の説明図である。図23(a)は凹曲線に対するステンシルデータであり、図23(b)は凸曲線に対するステンシルデータである。第4ステンシル生成部232は、図19に示す基本テクスチャから三角形領域を切り出し、生成された外接セグメントに貼り付ける。
【0083】
すなわち、第4ステンシル生成部232は、図19に示す基本テクスチャから三角形領域(三角形S、T、U、S’、Q’、U’、T’)を切り出し、生成された外接セグメント(H、I、J、H’、I’)に貼り付けることにより、外接セグメントに対応するステンシルデータを生成する。以後は、本実施形態と同様である。
【0084】
変形例1では、曲線と曲線との連結部分に内接する三角形および外接する三角形に加え、直線と曲線の連結部分に内接および外接する三角形群を新たに描画し、その三角形群に対して、基本テクスチャに記憶しておいた連結部近傍のアルファ値αを貼り付けることにより、曲線と直線との連結部が、連続的に滑らかにつながるようになる。
【0085】

(変形例2)
図24は、上述の実施形態による凹曲線と凸曲線との連結部分の描画結果を表す一例図である。図24に示すように、上述の実施形態による描画結果には、凹曲線と凸曲線との連結部(図24において丸で囲まれた部分)が滑らかに繋がらず、不連続になる場合がある。例えば、文字画像の曲線と直線との結合部分にドット抜けが生じる場合がある。
【0086】
変形例2では、凹曲線と凸曲線との連結部分近傍におけるアルファ値の変化を表現可能なテクスチャを基本テクスチャとする。
【0087】
図25は、変形例2における基本テクスチャを表す一例図である。図25に示すように、
変形例2の基本テクスチャは長方形(例えば、正方形)PQRSの、(1)一辺PQ上の点Dと、点Dを通り、辺PQの垂線上の点Aとを結ぶ直線DA、(2)当該一辺PQの対辺RS上の点Eと、点Eを通り、辺RSの垂線上の点Gとを結ぶ直線EG、(3)点Aを始点に持ち、長方形PQRSの中心Bを終点に持ち、点Bを通る直線DAの垂線と直線DAとの交点Cを制御点に持つベジエ曲線ABと、(4)点Gを始点に持ち、点Bを終点に持ち、点Bを通る直線EFの垂線と直線EGとの交点Fを制御点に持つベジエ曲線GBと、を連結した図形におけるアルファ値αの変化を定めた画像である。変形例2のテクスチャ格納部53は、図25の基本テクスチャを記憶している。なお、変形例2における基本テクスチャは、1つであってよい。
【0088】
第3ステンシル生成部231は、図25に示した基本テクスチャから、図26に示すような三角形領域C1、D1、F1、G1、I1を切り出して、生成された内接セグメントに貼り付けることにより、内接セグメントに対応するステンシルデータを生成する。以後は、本実施形態と同様である。
【0089】
第3ステンシル生成部232は、図25に示した基本テクスチャから、図27に示すような三角形領域B2、D2、E2、H2、J2を切り出して、生成された外接セグメントに貼り付けるにより、外接セグメントに対応するステンシルデータを生成する。以後は、本実施形態と同様である。
【0090】
本変形例では、凹曲線と凸曲線との連結部分におけるアルファ値αが定められた基本テクスチャを、連結部部分に内接する三角形および外接する三角形に貼り付けることにより、凹曲線と凸曲線との連結部分が、滑らかに繋がるようになる。
【0091】
上述した実施の形態により、少ない処理コストで、かつジャギーの少ない文字画像を描画することができる。
【0092】
これまで、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0093】
なお、上述した実施の形態における記憶媒体としては、磁気ディスク、フレキシブルディスク、ハードディスク、光ディスク(CD−ROM、CD−R、DVD等)、光磁気ディスク(MO等)、半導体メモリ等、プログラムを記憶でき、かつコンピュータまたは組み込みシステムが読みとり可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。
【0094】
また、記憶媒体からコンピュータや組み込みシステムにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーションシステム)や、データベース管理ソフト、ネットワーク等のMW(ミドルウェア)等が上述した実施の形態を実現するための各処理の一部を実行してもよい。
【符号の説明】
【0095】
1、2 描画装置
5 入力装置
11 取得部
12、22 セグメント設定部
13、23 ステンシル生成部
14 描画部
15 提示部
51 テキスト格納部
52 アウトライン格納部
53 テクスチャ格納部
61 ステンシル記憶部
62 画像記憶部
121 第1セグメント設定部
122 第2セグメント設定部
131 第1ステンシル生成部
132 第2ステンシル生成部
221 第3セグメント設定部
222 第4セグメント設定部
231 第3ステンシル生成部
232 第4ステンシル生成部

【特許請求の範囲】
【請求項1】
入力されたアウトラインデータを解析し、前記アウトラインデータにおける直線部分を描画するための直線セグメントを設定する第1セグメント設定部と、
前記アウトラインデータを解析し、前記アウトラインデータにおける曲線部分を描画するための曲線セグメントを設定する第2セグメント設定部と、
前記直線セグメントのステンシルデータを生成する第1ステンシル生成部と、
画像内の複数の領域毎に透明度が割り当てられた基本テクスチャを取得し、前記曲線セグメントに対して、前記基本テクスチャの一部を前記曲線セグメントの形状に応じて貼り付けた後、前記曲線セグメントのステンシルデータを生成する第2ステンシル生成部と、
前記直線セグメントのステンシルデータと、前記曲線セグメントのステンシルデータとから、前記アウトラインデータに対応する文字画像を描画する描画部と
を備える、描画装置。
【請求項2】
前記基本テクスチャは、
全透過の領域から不透過の領域にかけて、前記透明度が連続的に変化する、請求項1記載の描画装置。
【請求項3】
前記基本テクスチャは、長方形の一辺における一方の頂点Aを始点に持ち、他方の頂点Bを終点に持ち、前記一辺の対辺の中点Cを制御点に持つベジエ曲線で囲まれた領域の前記透明度を定めた画像である、請求項2記載の描画装置。
【請求項4】
前記基本テクスチャを格納するテクスチャ格納部をさらに備え、
前記基本テクスチャは、長方形の一辺の中点Aを始点に持ち、前記一辺に交わる他の一辺の中点Bを終点に持ち、前記長方形の中心点Cを制御点に持つベジエ曲線で囲まれた領域の前記透明度を定めた画像である、請求項2記載の描画装置。
【請求項5】
前記基本テクスチャを格納するテクスチャ格納部をさらに備え、
前記基本テクスチャは、長方形の、(1)一辺上の点Dと、前記点Dを通り、前記一辺の垂線上の点Aとを直線DA、(2)前記一辺に交わる他の一辺上の点Eと、前記点Eを通り、前記他の一辺の垂線上の点Bとを結ぶ直線EB、(3)前記点Aを始点に持ち、前記点Bを終点に持ち、前記直線DAと前記直線EBとの交点Cを制御点に持つベジエ曲線AB、を連結した図形における前記透明度を定めた画像である、請求項2記載の描画装置。
【請求項6】
前記基本テクスチャを格納するテクスチャ格納部をさらに備え、
前記基本テクスチャは、長方形の、(1)一辺上の点Dと、前記点Dを通り、前記一辺の垂線上の点Aとを結ぶ直線DA、(2)前記一辺の対辺上の点Eと、点Eを通り、前記対辺の垂線上の点Gとを結ぶ直線EG、(3)前記点Aを始点に持ち、前記長方形の中心Bを終点に持ち、前記点Bを通る直線DAの垂線と前記直線DAとの交点Cを制御点に持つベジエ曲線ABと、(4)前記点Gを始点に持ち、前記点Bを終点に持ち、前記点Bを通る直線EFの垂線と前記直線EGとの交点Fを制御点に持つベジエ曲線GBと、を連結した図形における前記透明度を定めた画像である、請求項2記載の描画装置。
【請求項7】
連結する2つの前記曲線セグメントの連結点、又は連結する前記曲線セグメントと前記直線セグメントとの連結点のうち、少なくともいずれか1つの連結点に接する描画領域の接点セグメントを生成する第3セグメント設定部と、
前記接点セグメントに対して、前記基本テクスチャの一部を、前記曲線セグメントの形状に応じて貼り付け、貼り付け後の前記曲線セグメントをビット反転することにより、前記曲線セグメントのステンシルデータを生成する第3ステンシル生成部と、
をさらに備える、請求項2から6記載の描画装置。
【請求項8】
入力されたアウトラインデータを解析し、前記アウトラインデータにおける直線部分を描画するための直線セグメントを設定し、
前記アウトラインデータを解析し、前記アウトラインデータにおける曲線部分を描画するための曲線セグメントを設定し、
前記直線セグメントのステンシルデータを生成し、
画像内の複数の領域毎に透明度が割り当てられた基本テクスチャを取得し、前記曲線セグメントに対して、前記基本テクスチャの一部を前記曲線セグメントの形状に応じて貼り付けた後、前記曲線セグメントのステンシルデータを生成し、
前記直線セグメントのステンシルデータと、前記曲線セグメントのステンシルデータとから、前記アウトラインデータに対応する文字画像を描画する、描画方法。
【請求項9】
コンピュータを、
入力されたアウトラインデータを解析し、前記アウトラインデータにおける直線部分を描画するための直線セグメントを設定する手段と、
前記アウトラインデータを解析し、前記アウトラインデータにおける曲線部分を描画するための曲線セグメントを設定する手段と、
前記直線セグメントのステンシルデータを生成する手段と、
画像内の複数の領域毎に透明度が割り当てられた基本テクスチャを取得し、前記曲線セグメントに対して、前記基本テクスチャの一部を前記曲線セグメントの形状に応じて貼り付けた後、前記曲線セグメントのステンシルデータを生成する手段と、
前記直線セグメントのステンシルデータと、前記曲線セグメントのステンシルデータとから、前記アウトラインデータに対応する文字画像を描画する手段と
して機能させる、描画プログラム。

【図1】
image rotate

【図2】
image rotate

【図4】
image rotate

【図5】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図26】
image rotate

【図27】
image rotate

【図3】
image rotate

【図6】
image rotate

【図12】
image rotate

【図19】
image rotate

【図25】
image rotate


【公開番号】特開2012−215679(P2012−215679A)
【公開日】平成24年11月8日(2012.11.8)
【国際特許分類】
【出願番号】特願2011−80233(P2011−80233)
【出願日】平成23年3月31日(2011.3.31)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】