JP2018019212A - 情報処理装置及び描画処理方法、コンピュータプログラム - Google Patents
情報処理装置及び描画処理方法、コンピュータプログラム Download PDFInfo
- Publication number
- JP2018019212A JP2018019212A JP2016147227A JP2016147227A JP2018019212A JP 2018019212 A JP2018019212 A JP 2018019212A JP 2016147227 A JP2016147227 A JP 2016147227A JP 2016147227 A JP2016147227 A JP 2016147227A JP 2018019212 A JP2018019212 A JP 2018019212A
- Authority
- JP
- Japan
- Prior art keywords
- information
- character
- character string
- processing apparatus
- color
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Abstract
【課題】文字とその背景との関係に応じた描画を可能にする情報処理装置を提供する。
【解決手段】情報処理装置に合成処理決定部204と描画処理部205の機能を形成する。合成処理決定部204は、描画対象となる文字列の属性を表す属性情報と文字列を構成する各文字のメトリクスを表すメトリクス情報を取得する。そして、文字列に重なり合う部分を第1形態で合成処理するか、第1形態と異なる描画結果となり且つ当該第1形態よりも処理負荷の大きい第2形態で合成処理するかを決定する。描画処理部205は、決定された形態で重なり合う部分が合成された文字列をバッファに描画する。
【選択図】図2
【解決手段】情報処理装置に合成処理決定部204と描画処理部205の機能を形成する。合成処理決定部204は、描画対象となる文字列の属性を表す属性情報と文字列を構成する各文字のメトリクスを表すメトリクス情報を取得する。そして、文字列に重なり合う部分を第1形態で合成処理するか、第1形態と異なる描画結果となり且つ当該第1形態よりも処理負荷の大きい第2形態で合成処理するかを決定する。描画処理部205は、決定された形態で重なり合う部分が合成された文字列をバッファに描画する。
【選択図】図2
Description
本発明は重なり合う部分が存在する可能性のある文字列の描画処理を効率的に行う情報処理装置に関する。
低リソースの情報処理装置において多くの文字を高速に描画する場合、文字の透明度やアンチエイリアス処理を考慮した背景との合成処理をいかに効率よく行うかが課題となる。文字とその背景との合成に関する従来技術として、特許文献1,2に開示された技術が知られている。特許文献1に開示された技術では、文字を構成する各ドットのブレンド比率を算出し、出力する段階でブレンド比率に基づいて文字の色と背景の色とを合成して階調色を決定する。この技術では、ブレンド比率を求める処理と階調色を決定する処理を独立に行い、算出したブレンド比率を保存しておくことで、一度求めたブレンド比率の再利用を可能にする。また、特許文献2に開示された技術は、図形全般に関する背景色との合成処理に関する。この技術では、図形のオブジェクトを順次上書きすることで構成されるグループを他のオブジェクトや背景に重ねることで少ないメモリ容量で透明処理を可能にする。
特許文献1,2に開示された技術では、合成処理が不要な場合があるにも関わらず、全ての場合においてブレンド比率やオブジェクト同士が重なる領域を算出しなければならない。そのため、リソースを無駄に消費する問題があった。
本発明の主たる課題は、文字とその背景との関係に応じた合成処理を行うことでリソースを効率的に使用することができる情報処理装置及び描画方法を提供することにある。
本発明の主たる課題は、文字とその背景との関係に応じた合成処理を行うことでリソースを効率的に使用することができる情報処理装置及び描画方法を提供することにある。
上記課題を解決するために、本発明に係る情報処理装置は、描画対象となる文字列の属性を表す属性情報及び前記文字列を構成する各文字のメトリクスを表すメトリクス情報の少なくとも一方を取得する取得手段と、前記取得手段で取得した情報から前記文字列に重なり合う部分が存在するかどうかを判定し、この判定結果に基づいて前記重なり合う部分を第1形態で合成処理するか前記第1形態と異なる描画結果となり且つ当該第1形態よりも処理負荷の大きい第2形態で合成処理するかを決定する合成処理決定手段と、前記合成処理決定手段で決定された形態で前記重なり合う部分が合成された前記文字列を描画する描画手段と、を有することを特徴とする。
また、本発明に係る描画方法は、描画対象となる文字列の属性、前記文字列を構成する各文字のメトリクス、前記文字列の描画領域の少なくともいずれかを表す情報を取得するとともに、取得した前記情報を用いて前記文字列を所定の領域に描画する情報処理装置が実行する方法であって、取得した前記情報から前記文字列に重なり合う部分が存在するかどうかを判定し、この判定結果に基づいて前記重なり合う部分を第1形態で合成処理するか前記第1形態と異なる第2形態で合成処理するかを決定し、決定した形態で前記重なり合う部分が合成された前記文字列を前記描画領域に描画する工程を含むことを特徴とする。
本発明によれば、文字とその背景との関係に応じてリソースの異なる合成処理の形態を切り替えることで、より高速に文字の描画処理が可能となる。
以下、本発明の実施の形態例について図面を参照して説明する。
[第1実施形態]
図1は、第1実施形態に係る情報処理装置のハードウェア構成例を示す図である。この情報処理装置100は、システムバス107に接続されたCPU101、ROM102、RAM103を有するコンピュータを備える。CPU(Central Processing Unit)101は、本発明のコンピュータプログラムを実行することにより、コンピュータを情報処理装置100として動作させる。ROM(Read Only Memory)102は変更を必要としないプログラムや各種パラメータを格納する。RAM(Random Access Memory)103はCPU101のワークエリアとして機能する。また、図示しない外部装置などから供給されるプログラムやデータを一時記憶する。RAM103は、SDRAM((Synchronous Dynamic Random Access Memory)あるいはDRAM(Dynamic Random Access Memory)などで構成される。なお、図示しないハードディスクドライブ装置などのストレージを備え、本発明のコンピュータプログラムをこのストレージにインストールするようにしてもよい。
[第1実施形態]
図1は、第1実施形態に係る情報処理装置のハードウェア構成例を示す図である。この情報処理装置100は、システムバス107に接続されたCPU101、ROM102、RAM103を有するコンピュータを備える。CPU(Central Processing Unit)101は、本発明のコンピュータプログラムを実行することにより、コンピュータを情報処理装置100として動作させる。ROM(Read Only Memory)102は変更を必要としないプログラムや各種パラメータを格納する。RAM(Random Access Memory)103はCPU101のワークエリアとして機能する。また、図示しない外部装置などから供給されるプログラムやデータを一時記憶する。RAM103は、SDRAM((Synchronous Dynamic Random Access Memory)あるいはDRAM(Dynamic Random Access Memory)などで構成される。なお、図示しないハードディスクドライブ装置などのストレージを備え、本発明のコンピュータプログラムをこのストレージにインストールするようにしてもよい。
システムバス107には、入力ユニット104、描画ユニット105及び表示ユニット106も接続されている。入力ユニット104は、外部からの入力を受信するもので、マウスやキーボード、タッチパネル、音声を受信するマイクなどがこれに該当する。描画ユニット105は、ROM102やRAM103などに格納され、あるいは入力ユニット104で受信した文字列の情報を取得し、内部に保持した文字列を描画するためのバッファに対して描画処理を行う。バッファの所定の領域には、文字列が画素値として描画される。表示ユニット106は描画ユニット105で決定されたバッファの各画素値に従い、グラフィックスやユーザインターフェースとして表示させる。
図2は、情報処理装置100のコンピュータに形成される機能ブロックの構成図である。各機能ブロックは、CPU101が、本発明のコンピュータプログラムをRAM103に展開して実行することで実現される。図2を参照すると、本実施形態の情報処理装置100は識別情報取得部201を有する。識別情報取得部201は、表示ユニット106に表示するための文字列あるいはそれを構成する個々の文字を識別するための識別情報を取得する。識別情報は、ROM102やRAM103に格納されていることを想定するが、入力ユニット104で受信するユーザからの入力であっても構わない。
情報処理装置100は、メトリクス情報取得部202を有する。メトリクス情報取得部202は、識別情報により特定される各文字のメトリクスを表すメトリクス情報を取得する。メトリクスは、当該文字を構成する部品の配置、サイズ、次の文字までの送り幅などである。すなわちメトリクス情報は、文字列を構成する文字の形状情報と送り幅情報を含む情報である。メトリクスを特定するための識別情報は、例えば、アウトラインフォントの場合はベクター情報であり、ビットマップフォントの場合は2値や多値の画像情報である。メトリクス情報は、ROM102やRAM103にメモリ展開されたフォントデータ、あるいは外部記憶装置に格納されているフォントデータなどから取得が可能である。
情報処理装置100は、また、属性情報取得部203を有する。属性情報取得部203は、描画対象となる文字列の属性を表す属性情報を取得する。属性情報は、例えば、言語情報、フォント情報、文字間調整情報、アンチエイリアス情報、色情報、文字装飾情報の少なくともいずれかを含む。言語情報は、文字列がどの国の通用語を表すかを示す情報(日本語、ヒンディー語などの言語の種類)である。フォント情報は文字列を描画するのに使用されるフォントの種類を表す情報である。文字間調整情報は隣り合う文字の間隔を調整するために設定される情報である。アンチエイリアス情報はアンチエイリアス処理の有無を表す情報である。色情報はフォントがどの色か表す情報であり、不透明度を表す情報が付される場合がある。文字装飾情報は文字列を構成する文字に施される装飾の内容を表す情報である。
情報処理装置100は、また、合成処理決定部204を有する。合成処理決定部204は、描画する文字列において文字同士あるいは文字を構成する部品同士が重なる可能性があるかどうかを判定し、判定の結果、重なる可能性がある場合は、複数の合成処理の形態のいずれかを決定する。重なり合う可能性があるか否かの判定法については後述する。
情報処理装置100は、また、描画処理部205を有する。描画処理部205は、合成処理決定部204で決定された合成処理の形態に従って、バッファに文字形状を描画し、描画結果を表示ユニット106に表示させる。
ここで、合成処理決定部204において決定する合成処理の概要を説明する。
画像の色情報の中にはRGBの各色成分の他に、アルファ値と呼ばれる透明度を表すパラメータがある。RGB成分値や属性情報は、例えば、言語情報、フォント情報、文字間調整情報、アンチエイリアス情報、色情報、文字装飾情報の少なくともいずれかを含む。言語情報は、文字列がどの国の通用語を表すかを示す情報(日本語、ヒンディー語などの言語の種類)である。フォント情報は文字列を描画するのに使用されるフォントの種類を表す情報である。文字間調整情報は隣り合う文字の間隔を調整するために設定される情報である。アンチエイリアス情報はアンチエイリアス処理の有無を表す情報である。色情報はフォントがどの色か表す情報であり、不透明度を表す情報が付される場合がある。文字装飾情報は文字列を構成する文字に施される装飾の内容を表す情報である。
画像の色情報の中にはRGBの各色成分の他に、アルファ値と呼ばれる透明度を表すパラメータがある。RGB成分値や属性情報は、例えば、言語情報、フォント情報、文字間調整情報、アンチエイリアス情報、色情報、文字装飾情報の少なくともいずれかを含む。言語情報は、文字列がどの国の通用語を表すかを示す情報(日本語、ヒンディー語などの言語の種類)である。フォント情報は文字列を描画するのに使用されるフォントの種類を表す情報である。文字間調整情報は隣り合う文字の間隔を調整するために設定される情報である。アンチエイリアス情報はアンチエイリアス処理の有無を表す情報である。色情報はフォントがどの色か表す情報であり、不透明度を表す情報が付される場合がある。文字装飾情報は文字列を構成する文字に施される装飾の内容を表す情報である。
アルファ値は、それぞれ「0.0」から「1.0」の範囲の数値で表される。アルファ値は、利用の目的によって透明度を表す、あるいは不透明度を表す、と言い換えることができるが、本質的には同じことである。背景となるオブジェクトを便宜上「第1オブジェクト」という。また、その上に描画するオブジェクトを便宜上「第2オブジェクト」という。また、第1オブジェクトと第2オブジェクトとが重なる部分を、第1オブジェクト及び第2オブジェクトの色情報を合成したオブジェクトとして便宜上「第3オブジェクト」という。さらに、各オブジェクトの色情報を、不透明度を表す係数値であるアルファ値(色情報に含まれる)を使ってピクセル単位で合成することをアルファブレンドという。
ここで、第1オブジェクトが不透明(アルファ値が「1.0」)でRGB値が「D」であるとする。また、第2オブジェクトのアルファ値が「A」でRGB値が「S」であるとする。この場合、アルファブレンドにより描画される、第1オブジェクトと第2オブジェクトとが重なる部分の第3オブジェクトのRGB値は「S×A+D×(1−A)」の計算式で求めることができる。
ここで、第1オブジェクトが不透明(アルファ値が「1.0」)でRGB値が「D」であるとする。また、第2オブジェクトのアルファ値が「A」でRGB値が「S」であるとする。この場合、アルファブレンドにより描画される、第1オブジェクトと第2オブジェクトとが重なる部分の第3オブジェクトのRGB値は「S×A+D×(1−A)」の計算式で求めることができる。
アルファブレンドの計算式は、Porter−Duff演算を用いたものである。これは、Thomas PorterとTom Duffの共著「Compositing Digital Images」で示された公知の演算法である。この演算法では、第1オブジェクトの色情報と第2オブジェクトの色情報とを合成するための12種類の演算規則を規定する。この場合、アルファ値を持つ2つのオブジェクトを合成演算した結果である第3オブジェクトもアルファ値を持つものとなる。この第3オブジェクトを描画し、表示ユニット106に表示する際には、RGB値にアルファ値をかけ合わせた値が出力されることとなる。第1実施形態では、上記12種類の演算規則のうち、「Src」と「Src_Over」の2種類の演算規則を用い、これらの演算規則に従う処理を適宜切り替える場合の例を示す。「Src」は、背景となる第1オブジェクトの上に描画する第2オブジェクトのうち、第1オブジェクトと重なる部分を当該第2オブジェクトの前記色情報を用いて塗りつぶす形態の処理であり、第1形態の合成処理の一例となるものである。これに対して「Src_Over」は、第2オブジェクトの色情報を背景の第1オブジェクトの色情報と合成することにより第3オブジェクトを生成する形態の処理であり、第2形態の合成処理の一例となるものである。「Src_Over」は「Src」と異なる描画結果となり且つ「Src」よりも処理負荷の大きい処理形態である。
例えば、図4に示されるように、正方形401を第1オブジェクト、円402を第2オブジェクトとする。正方形401の色情報はアルファ値が「1.0」、RGB各成分の値が「0.0」の不透明な黒であるとする。円402の色情報はアルファ値が「0.5」、RGB各成分の値が「1.0」の半透明な白であるとする。同図(a)は正方形401の一部と重なるようにその前面に円402を描画する際に、Porter−Duff演算の「Src」により円402に設定されている色で上書きしたときの描画結果を示す。この場合、重なった扇形部分403の色情報は、第2オブジェクトである円402の色情報と同じとなる。一方、同図(b)はPorter−Duff演算の「Src_Over」により合成処理したときの描画結果を示す。重なった扇形部分404の色情報は、前述したアルファブレンドの計算式に基づくと、RGB各成分の値が「0.5」の灰色となる。つまり、背景色に対して文字の色が合成されている。
このような合成処理の手法を切り替えて不透明色の文字を描画するときの描画処理方法の手順例を図3に示す。図3を参照すると、情報処理装置100は、識別情報取得部201で文字列を構成する各文字の識別情報を取得する(S301)。その後、メトリクス情報取得部202で、識別情報に該当する文字のメトリクス情報を取得する(S302)。また、属性情報取得部203で、文字列を描画するための属性情報を取得する(S304)。そして、合成処理決定部204で、描画する文字列において文字同士あるいは文字を構成する部品同士が重なる可能性があるかどうかを判定する(S304)。重なる可能性がないと判定された場合(S304:N)、合成処理決定部204は、Porter−Duff演算の「Src」を選択する(S305)。他方、重なる可能性があると判定された場合(S304:Y)、合成処理決定部204は、Porter−Duff演算の「Src_Over」の処理を選択する(S306)。その後、情報処理装置100は、選択された合成処理の手法に従って描画処理部205で文字形状を描画し(S307)、処理を終了する。
ここで、S304における判定処理の内容を詳しく説明する。図5のS501〜S505は、S304の処理の内容を具体的に示した部分である。
合成処理決定部204は、入力された文字列に対する属性情報のうち言語情報が特定の言語か否かを判定する(S501)。ここでは「特定の言語」は、隣り合う文字同士が重なる可能性のある言語を想定している。一般的に、欧米で使用されるラテン系言語、日本語や中国語のような漢字を基本とした言語では、隣り合う文字同士が重なることが少ない。一方、アラビア語、タイ語、ヒンディー語などは隣り合う文字によっては重なることがある。
合成処理決定部204は、入力された文字列に対する属性情報のうち言語情報が特定の言語か否かを判定する(S501)。ここでは「特定の言語」は、隣り合う文字同士が重なる可能性のある言語を想定している。一般的に、欧米で使用されるラテン系言語、日本語や中国語のような漢字を基本とした言語では、隣り合う文字同士が重なることが少ない。一方、アラビア語、タイ語、ヒンディー語などは隣り合う文字によっては重なることがある。
図6はタイ語において隣り合う文字が重なる例を示した図である。同図(a)は、一方の文字601の文字送り幅603に従って他方の(次の)文字602が配置されている。文字送り幅603は、文字601のグリフ原点604から文字602のグリフ原点605までの幅を示す。文字601と文字602は、ともに不透明の黒色で描画され、輪郭部分にはアンチエイリアス処理が施されるものとする。ただし、図6(a)及び図6(b)では、各文字の形状及び重なり部分の形状を解り易く示すため、輪郭線を強調し、文字は白抜きで表す。アンチエイリアス処理とは、文字601,602の部品であるオブジェクトの輪郭部分に対し、透明度の情報を用いて背景と融合するように色を滑らかに変化させる処理である。これにより、ジャギーと呼ばれる画素のギザギザを軽減させることができる。
ここでアンチエイリアス処理の概要を図7(a),(b)を参照して説明する。図中、各マス目は画素の1つ1つを表す。2本の輪郭線701で囲まれた画素領域は不透明の黒で描画される。図7(a)はアンチエイリアス処理を行わずに、輪郭線701で挟まれた内部を不透明の黒で塗りつぶした時の状態を示す。輪郭線701付近の画素領域のうち、半分以上の面積が輪郭線701の内側に含まれている画素702については内側と同色で描画し、そうでない画素703は描画しない。そのため、各画素の色をそのまま使うと、オブジェクトの輪郭線が斜めになっている部分でジャギーが生じる。
これに対し、図7(b)は輪郭線701付近の画素領域にアンチエイリアス処理を施したときの描画結果を示す。輪郭線701内部の面積の方が大きな画素704は、より不透明度が強く、背景色よりも輪郭を描画する色に重みづけがなされる。一方、輪郭線701内部の面積の方が小さな画素705は、より不透明度が弱く(透明度が強く)背景色に重みづけがなされる。このように、輪郭線付近の画素についてオブジェクト側に含まれる面積の大きさに応じて各画素の不透明度(透明度の係数値)を示すアルファ値を調整し、「Src_Over」により背景の白と合成処理することでジャギーの見え方を低減させることができる。
これに対し、図7(b)は輪郭線701付近の画素領域にアンチエイリアス処理を施したときの描画結果を示す。輪郭線701内部の面積の方が大きな画素704は、より不透明度が強く、背景色よりも輪郭を描画する色に重みづけがなされる。一方、輪郭線701内部の面積の方が小さな画素705は、より不透明度が弱く(透明度が強く)背景色に重みづけがなされる。このように、輪郭線付近の画素についてオブジェクト側に含まれる面積の大きさに応じて各画素の不透明度(透明度の係数値)を示すアルファ値を調整し、「Src_Over」により背景の白と合成処理することでジャギーの見え方を低減させることができる。
図6(b)は、「Src_Over」による合成処理の結果を示す。点線枠606内で、文字601と文字602とが重なる部分が生じるが、描画される際、合成する背景色も文字の色と同色の不透明な黒色となるため、輪郭部分にアンチエイリアス処理がなされても2つの文字の境界は識別できない。一方、「Src」を用いた合成処理の結果を示したのが図6(c)である。文字602の描画時には輪郭部分にアンチエイリアス処理を施すが、「Src」により合成すると文字601と重なる輪郭部分が背景色ではなく、白との合成処理後の色で描画される。そのため、点線枠607で示すように文字602の輪郭線が生じ、図6(b)と異なる合成結果となる。つまり、オブジェクトが重なる場合に「Src」で合成すると、点線枠607で示したように輪郭が生じる。
そのため、図5のS501において、言語情報が特定の言語(隣り合う文字同士の重なる可能性のある言語)と判定された場合(S501:Y)、合成処理決定部204は、文字描画に指定された色情報が完全不透明かどうかを判定する(S502)。すなわち、属性情報に含まれる文字描画に指定された色情報のアルファ値が「1.0」かどうかを判定する。完全不透明でないと判定した場合(S502:N)、合成処理決定部204は、「Src_Over」による合成処理を選択する(S306)。一方、S502において色情報が完全不透明と判定した場合(S502:Y)、合成処理決定部204は、属性情報に含まれるアンチエイリアスの情報が有効かどうかを判定する(S503)。有効の場合は(S503:Y)、「Src_Over」の合成処理を選択する(S306)。有効でない場合は(S503:N)、「Src」の合成処理を選択する(S305)。
S501で、特定の言語でないと判定された場合(S501:N)、例えば日本語やラテン系言語のように隣り合う文字同士の重なる可能性のない言語の場合、合成処理決定部204は、文字装飾に縁部分を使用するかどうかを判定する(S504)。具体的には、属性情報に、文字装飾としてボールドや縁を使用するスタイル情報が設定されているかどうかを判定する。設定されていると判定した場合(S504:Y)、上記のS502に処理を移す。
ここで、属性情報にボールドが指定された場合に、隣り合う文字が重なる例について説明する。図8(a)は文字列に関する装飾として何も指定されていない場合の文字レイアウトを示す。一般に、筆記体を除いたラテン系言語や日本語であれば、隣接する文字同士が重なり合うことは少ない。しかし、図8(b)に示すように、文字列に関する装飾としてボールドが指定された場合、フォントデザインにもよるが、ボールド化により文字間が狭まり、隣接する文字同士が重なる可能性が生じる。また、アウトラインフォントを使ったボールド化を実現する手法の1つとして、文字形状を表す第1の輪郭線に対して、それを縁取るような第2の輪郭線を生成する場合がある。この第1の輪郭線の描画後に第2の輪郭線を同色で重ねて描画することでボールド化を実現する手法の例を図9を用いて説明する。
図9(a)は、文字「L」の輪郭線を示す。この第一の輪郭線の内側を指定された色で塗りつぶすことで文字を描画する。同図(b)は、第1の輪郭線を縁取るような第2の輪郭線を生成し、第2の輪郭線の内部を黒で塗りつぶしたときの描画結果を示す。同図(c)は、第2の輪郭線を塗りつぶす際に、Src_Overを用いて背景にある第1の輪郭線の描画結果に重ねたときの結果を示す。このように、同図(a)で示した描画結果に対して縁部分を同色で重ねて塗りつぶすことで描画結果をボールド文字のように見せることができる。このような手法でボールド化を実現する際に、「Src」により第2の輪郭線を塗りつぶしたときの描画結果を同図(d)に示す。この例では、第2の輪郭線の内側部分のアンチエイリアス処理で、背景にある第1の描画結果との合成処理を行わずに描画するため、その部分だけ異なる色で描画される。そのため、第2の輪郭線で表わされる縁部分の使用される装飾が設定されている場合にも、合成処理の方法を切り替える処理が必要となる。
図5に戻り、S504において文字装飾に縁部分を使用しないと判定した場合(S504:N)、合成処理決定部204は、文字間を狭める設定かどうかを判定する(S505)。具体的には、属性情報に文字間調整の設定がなされているかどうかを判定する。文書編集のためのアプリケーションなどでも、文字間の調整において前後の文字が重なるほど文字間を狭める設定が可能なものがある。本実施形態では、文字列が実際に重なっているかどうかに関わらず、取得した属性情報に含まれる設定内容に基づいて重なり合う可能性のある部分が存在するかどうかを判定する。例えば、文字間調整において通常の文字レイアウトに対して文字間を狭めるような設定がなされている場合(S506:Y)、合成処理決定部204は、上記のS502に処理を移す。そうでなければ(S506:N)、合成処理決定部204は、「Src」による合成処理を選択し(S305)、処理を終了する。
このように、第1実施形態では、文字列の各種の属性情報に基づいて文字とその背景との重なり部分の有無を判定し、当該重なり部分の合成処理を切り替えるようにしたので、それを行わない場合に比べて、より高速に文字の描画処理が可能となる。また、重なり部分を、より自然に描画することが可能となる。
なお、第1実施形態では、メトリクス情報の扱いについての詳しい説明は省略したが、これについては第2実施形態において説明する。第1実施形態では、また、属性情報に含まれる情報として、言語情報、フォント情報、文字間調整情報、アンチエイリアス情報、色情報、文字装飾情報について説明した。しかし、隣り合う文字間で重なり合う可能性のある部分があるかどうかの判定には、これらの情報の少なくともいずれかを用いればよい。
[第2実施形態]
第2実施形態では、文字のメトリクス情報に応じて合成処理の手法を切り替える場合の例を説明する。第2実施形態で用いるメトリクス情報には、文字送り幅、文字形状を包含する最小矩形領域の位置関係などが含まれるものとする。第2実施形態では、このようなメトリクス情報に応じて、文字ごとに描画時に適用する合成処理を切り替える。図10は、第2実施形態における描画処理の手順説明図である。第1実施形態の説明で使用した図と同じ番号が付してあるものは説明を省略する。
第2実施形態では、文字のメトリクス情報に応じて合成処理の手法を切り替える場合の例を説明する。第2実施形態で用いるメトリクス情報には、文字送り幅、文字形状を包含する最小矩形領域の位置関係などが含まれるものとする。第2実施形態では、このようなメトリクス情報に応じて、文字ごとに描画時に適用する合成処理を切り替える。図10は、第2実施形態における描画処理の手順説明図である。第1実施形態の説明で使用した図と同じ番号が付してあるものは説明を省略する。
図10を参照すると、情報処理装置100は、識別情報取得部201で、表示ユニット106に表示する文字の識別情報を取得する(S1001)。また、メトリクス情報取得部202で、識別情報に該当する文字のメトリクス情報をフォントデータから取得する(S1002)。合成処理決定部204は、処理対象となっている文字が入力文字列の先頭文字か否かを判定する(S1003)。先頭文字と判定した場合(S1003:Y)、合成処理決定部204は、「Src」による合成処理を選択し(S305)、描画処理部205に文字を描画させる(S1005)。次の文字がある場合(S1006:Y)、処理対象を次の文字に移してS1001に戻る。次の文字がない場合(S1006:N)、処理を終える。
S1003において、先頭文字でないと判定された場合(S1003:N)、合成処理決定部204は、直前に描画した文字とこれから描画する文字が重なるか否かを判定する(S1004)。重ならないと判定した場合(S1004:N)、合成処理決定部204は、「Src」による合成処理を選択し(S305)、そうでなければ(S1004:Y)、「Src_Over」の合成処理を選択する(S306)。
S1004における、前後の文字が重なるか否かを判定する処理の内容を、図11を参照して説明する。図11は、文字送り幅による文字配置と、各文字を包含する最小矩形領域との位置関係によって、前後の文字が重なる場合とそうでない場合を示したものである。なお、この最小矩形領域については、S1002で取得した文字のメトリクス情報に含まれる、文字の形状情報から算出することができる。また、フォントデータ内に最小矩形領域に関する情報が既に格納されている場合、S1002で文字のメトリクス情報として取得してもよい。
図11(a)は、文字「a」と「g」に関するメトリクス情報を示す。文字「a」と「g」の文字形状を包含する最小矩形領域は、それぞれ、矩形1101と矩形1102である。文字「a」の送り幅1103は、文字「a」のグリフ原点から次の文字のグリフ原点までの幅である。文字「a」の送り幅1103に従い、次の文字「g」を配置した状態が同図(a)右である。矩形1102のx座標の最小値1104と送り幅1103との和が、矩形1101のx座標の最大値1105より大きい場合、文字「a」と文字「g」が重ならないと判定することができる。
同図(b)は、文字「f」と「k」に関するメトリクス情報を示す。文字「f」と「k」の文字形状を包含する最小矩形領域は、それぞれ、矩形1106と矩形1107である。同図(a)のときと同様に、文字「f」の送り幅1108に従い、次の文字「k」を配置した状態が同図(b)右である。矩形1107のx座標の最小値1110と送り幅1108の和が、矩形1106のx座標の最大値1109より小さい場合、文字「f」と文字「k」が重なると判定することができる。
同図(c)は、文字「q」と「y」に関するメトリクス情報を示す。文字「q」と「y」の文字形状を包含する最小矩形領域は、それぞれ、矩形1111と矩形1112である。文字「q」の送り幅1113に従い、次の文字「y」を配置した状態が同図(c)右である。矩形1112のx座標の最小値1115は負の値であるため、送り幅1108と矩形1112のx座標の最小値1115の差が、矩形1111のx座標の最大値1114より小さい場合、文字「q」と文字「y」が重なると判定することができる。
図11に示したように、文字送り幅に従って前後の文字を配置したときに各文字の文字形状を包含する最小矩形が重なる場合、後ろの文字は、「Src」による合成処理により描画される。なお、属性情報に文字間を狭める設定情報が含まれている場合は、狭める幅を、前の文字の文字送り幅に反映させて次の文字を配置することで対応することができる。また、第1実施形態で説明した文字同士が重なる条件を組み合わせて、合成処理の手法を切り替えることも可能である。
このように、第2実施形態では、メトリクス情報に基づいて文字とその背景との合成処理を切り替えるようにしたので、より高速に文字の描画処理が可能となる。
[第3実施形態]
第3実施形態では、文字列を描画する領域に既に別オブジェクトが描画されているか否かに応じて、文字列描画時に適用する合成処理の形態を切り替える場合の例を説明する。ハードウエア構成及び機能ブロックの構成は第1実施形態及び第2実施形態と基本的に同じである。第3実施形態では、隣り合う文字やその部品が重なり合う可能性を判定するための情報の取得手段として、文字列を描画するための描画領域を取得する描画領域取得部をさらに追加した点が異なる。また、合成処理決定部204が、取得した描画領域に、すでに別のオブジェクトが描画されているか否かを判定する点が異なる。
なお、描画領域はそれが外部から入力される場合はそのまま用いてもよいが、本実施形態では、文字列の属性情報及びメトリクス情報から算出する場合の例を説明する。
第3実施形態では、文字列を描画する領域に既に別オブジェクトが描画されているか否かに応じて、文字列描画時に適用する合成処理の形態を切り替える場合の例を説明する。ハードウエア構成及び機能ブロックの構成は第1実施形態及び第2実施形態と基本的に同じである。第3実施形態では、隣り合う文字やその部品が重なり合う可能性を判定するための情報の取得手段として、文字列を描画するための描画領域を取得する描画領域取得部をさらに追加した点が異なる。また、合成処理決定部204が、取得した描画領域に、すでに別のオブジェクトが描画されているか否かを判定する点が異なる。
なお、描画領域はそれが外部から入力される場合はそのまま用いてもよいが、本実施形態では、文字列の属性情報及びメトリクス情報から算出する場合の例を説明する。
図12は、第3実施形態における描画処理の手順説明図である。第1実施形態の説明で使用した構成部品ないし機能と同じ符号が付してあるものについては実質的に同一の部品ないし機能なので、重複した説明を省略する。図12を参照すると、情報処理装置100は、識別情報取得部201で、文字列を構成する各文字の識別情報を取得し(S301)、メトリクス情報取得部202で、該当する文字のメトリクス情報を取得する(S302)。メトリクス情報には文字形状と文字送り幅に関する情報が少なくとも含まれているものとする。また、属性情報取得部203で、描画する文字列に関する属性情報を取得する(S303)。
第3実施形態では、合成処理決定部204が、属性情報と各文字のメトリクス情報に基づいて、文字列を描画するときの文字列の描画領域を算出する(S1201)。具体的には、文字送り幅に従い、各文字を配置した時の文字形状を包含する最小矩形の座標位置を求める。その後、各文字の最小矩形の全てを包含する最小矩形領域を求め、これを描画領域とする。合成処理決定部204は、算出した描画領域の少なくとも一部に別オブジェクトが既に描画されているかどうかを判定する(S1202)。既に描画されている別オブジェクトに関する形状情報がある場合(S1202:Y)、別オブジェクトの形状を包含する最小矩形を算出する。そして、描画領域との位置関係から、重なる部分が存在するか否かを判定する。他の方法として、描画領域に含まれる画素の値を全て取得し、初期値でない値が1画素でも含まれていれば、重なる部分が存在すると判定してもよい。その後、「Src_Over」の合成処理を選択する(S306)。
図13は、すでに描画されている別オブジェクトと、文字列を描画する領域が重なっている状態の一例を示す。図示の例では、描画する文字列1301に関する描画領域1302に対し、別オブジェクト1303が重なっている。このときの別オブジェクトを包含する最小矩形は矩形1304である。S1302の段階では、文字列1301はまだ描画されていない。このとき、描画領域1302と矩形1304が一部でも重なっていれば、S1302において「Src_Over」の合成処理を選択する(S306)。そうでなければ処理をS304に移し、文字同士が重なる可能性があるか判定して合成処理を「Src」にするか「Src_Over」にするかを選択する。
描画処理部205は、S305ないしS306で選択された合成処理に従い文字列を描画し(S307)、処理を終える。
描画処理部205は、S305ないしS306で選択された合成処理に従い文字列を描画し(S307)、処理を終える。
このように、第3実施形態では、文字列を描画する領域に既に別オブジェクトが描画されているか否かに応じて、文字列描画時に適用する合成処理を切り替えるようにしたので、リソースを効果的に活用し、より高速に文字の描画処理が可能となる。
[変形例]
第1ないし第3実施形態では、文字列の識別情報、属性情報、メトリクス情報及び描画領域を用いて文字列に重なり合う部分が存在するかどうかを判定する場合の例を説明したが、この例に限らない。描画対象となる文字列の属性、文字列を構成する各文字のメトリクス、文字列の描画領域の少なくともいずれかを表す情報を取得するとともに、取得した情報を用いて文字列を所定の領域に描画するようにしてもよい。要は、重なり合う部分が生じる可能性があるか否かの判定に用いることができる情報であればよい。そして、判定の結果、重なり合う部分が生じる可能性がある場合は、文字とその背景との関係に応じた合成処理を行うようにすればよい。これにより、リソースを効率的に使用することができる描画方法を提供することができる。
第1ないし第3実施形態では、文字列の識別情報、属性情報、メトリクス情報及び描画領域を用いて文字列に重なり合う部分が存在するかどうかを判定する場合の例を説明したが、この例に限らない。描画対象となる文字列の属性、文字列を構成する各文字のメトリクス、文字列の描画領域の少なくともいずれかを表す情報を取得するとともに、取得した情報を用いて文字列を所定の領域に描画するようにしてもよい。要は、重なり合う部分が生じる可能性があるか否かの判定に用いることができる情報であればよい。そして、判定の結果、重なり合う部分が生じる可能性がある場合は、文字とその背景との関係に応じた合成処理を行うようにすればよい。これにより、リソースを効率的に使用することができる描画方法を提供することができる。
第1ないし第3実施形態では、また、色情報(不透明度を表す係数値)を属性情報、メトリクス情報と独立の情報として扱う場合の例を説明したが、属性情報又はメトリクス情報の一部として扱うようにしてもよい。第1ないし第3実施形態では、さらに、描画対象となる文字ないし文字列の構成に応じて切り替える合成処理の形態として、Porter−Duff演算の「Src」と「Src_Over」を用いたが、この例に限定されない。切り替える合成処理の形態は、描画に使用するリソースの大きさに応じて任意に設定することができる。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
Claims (12)
- 描画対象となる文字列の属性を表す属性情報及び前記文字列を構成する各文字のメトリクスを表すメトリクス情報の少なくとも一方を取得する取得手段と、
前記取得手段で取得した情報から前記文字列に重なり合う部分が存在するかどうかを判定し、この判定結果に基づいて前記重なり合う部分を第1形態で合成処理するか前記第1形態と異なる描画結果となり且つ当該第1形態よりも処理負荷の大きい第2形態で合成処理するかを決定する合成処理決定手段と、
前記合成処理決定手段で決定された形態で前記重なり合う部分が合成された前記文字列を描画する描画手段と、
を有することを特徴とする情報処理装置。 - 前記判定手段は、前記文字列が実際に重なっているかどうかに関わらず、前記取得した情報に含まれる設定内容に基づいて前記重なり合う可能性のある部分が存在するかどうかを判定することを特徴とする、
請求項1に記載の情報処理装置。 - 前記属性情報は、前記文字列の言語の種類を表す言語情報又は隣り合う文字の間隔を調整するための文字間調整情報を含んでおり、
前記合成処理決定手段は、前記言語情報又は前記文字間調整情報に応じて前記第1形態の合成処理と前記第2形態の合成処理のいずれか一方を決定することを特徴とする、
請求項1又は2に記載の情報処理装置。 - 前記属性情報は、前記文字列を構成する文字に施される装飾の内容を表す文字装飾情報を含んでおり、
前記合成処理決定手段は、前記文字装飾情報に応じて前記第1形態の合成処理と前記第2形態の合成処理のいずれか一方を決定することを特徴とする、
請求項1又は2に記載の情報処理装置。 - 前記メトリクス情報は、少なくとも文字の形状情報と送り幅情報と、を含み、
前記合成処理決定手段は、前記メトリクス情報に基づいて前後の文字形状が重なるか否かを判定し、判定結果に基づいて前記第1形態の合成処理と前記第2形態の合成処理のいずれか一方を決定することを特徴とする、
請求項1又は2に記載の情報処理装置。 - 前記取得手段は前記文字列の描画領域をも取得するものであり、
前記合成処理決定手段は、前記取得手段により取得した前記描画領域に、すでに別のオブジェクトが描画されているか否かを判定し、判定結果に基づいて前記第1形態の合成処理と前記第2形態の合成処理のいずれか一方を決定することを特徴とする、
請求項1又は2に記載の情報処理装置。 - 前記属性情報又は前記メトリクス情報は、前記文字列を構成する文字の色を表す色情報を含んでおり、
前記第1形態の合成処理は、背景となる第1オブジェクトの上に描画する第2オブジェクトのうち、前記第1オブジェクトと重なる部分を当該第2オブジェクトの前記色情報を用いて塗りつぶす形態の処理であり、
前記第2形態の合成処理は、前記第1オブジェクトと前記第2オブジェクトとが重なる部分を、前記第1オブジェクト及び前記第2オブジェクトの色情報とを合成した第3オブジェクトとする形態の処理であることを特徴とする、
請求項1ないし6のいずれか一項に記載の情報処理装置。 - 前記色情報は、不透明度を表す係数値を含み、前記色情報のほかに前記係数値を用いて前記第3オブジェクトを生成することを特徴とする、
請求項7に記載の情報処理装置。 - 前記属性情報又は前記メトリクス情報は、アンチエイリアス処理の有無を表すアンチエイリアス情報と前記文字列を構成する文字の色及びその透明度を表す色情報とを含み、隣り合う文字が、ともに不透明度を持つ色で、重なり合う部分の輪郭線が含まれる画素領域にアンチエイリアス処理が施される場合、
前記合成処理決定手段は、前記合成処理を前記第2形態とすることを特徴とする、
請求項1又は2に記載の情報処理装置。 - 前記合成処理決定手段は、前記輪郭線の内部の面積の方が大きい画素は、より不透明度が強く、背景色よりも輪郭線を描画する色に重みづけがなされ、他方、輪郭線の内部の面積の方が小さな画素は、より不透明度が弱く背景色に重みづけがなされるように、前記輪郭線の付近の画素の色情報を調整することを特徴とする、
請求項9に記載の情報処理装置。 - 描画対象となる文字列の属性、前記文字列を構成する各文字のメトリクス、前記文字列の描画領域の少なくともいずれかを表す情報を取得するとともに、取得した前記情報を用いて前記文字列を所定の領域に描画する情報処理装置が実行する方法であって、
取得した前記情報から前記文字列に重なり合う部分が存在するかどうかを判定し、
この判定結果に基づいて前記重なり合う部分を第1形態で合成処理するか前記第1形態と異なる第2形態で合成処理するかを決定し、
決定した形態で前記重なり合う部分が合成された前記文字列を前記描画領域に描画する工程を含むことを特徴とする、描画処理方法。 - コンピュータを請求項1乃至10のいずれか1項に記載の情報処理装置として機能させるためのコンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016147227A JP2018019212A (ja) | 2016-07-27 | 2016-07-27 | 情報処理装置及び描画処理方法、コンピュータプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016147227A JP2018019212A (ja) | 2016-07-27 | 2016-07-27 | 情報処理装置及び描画処理方法、コンピュータプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018019212A true JP2018019212A (ja) | 2018-02-01 |
Family
ID=61076376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016147227A Pending JP2018019212A (ja) | 2016-07-27 | 2016-07-27 | 情報処理装置及び描画処理方法、コンピュータプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018019212A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200102660A (ko) * | 2019-02-22 | 2020-09-01 | 지멘스 메디컬 솔루션즈 유에스에이, 인크. | 영상 처리 방법 및 영상 처리 시스템 |
-
2016
- 2016-07-27 JP JP2016147227A patent/JP2018019212A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200102660A (ko) * | 2019-02-22 | 2020-09-01 | 지멘스 메디컬 솔루션즈 유에스에이, 인크. | 영상 처리 방법 및 영상 처리 시스템 |
KR102374945B1 (ko) | 2019-02-22 | 2022-03-16 | 지멘스 메디컬 솔루션즈 유에스에이, 인크. | 영상 처리 방법 및 영상 처리 시스템 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4693660B2 (ja) | 描画装置、描画方法及び描画プログラム | |
US20040075699A1 (en) | Method and apparatus for highlighting graphical objects | |
JPH03208094A (ja) | 種々の寸法の記号映像のアウトラインを処理する方法およびコンピュータ表示装置 | |
JPH08511638A (ja) | アンチ−アライアジング装置及び目的グリッドへの水平・垂直エッジの自動高速合わせの方法 | |
JP2007529788A (ja) | 合成グリフの領域をレンダリングする方法 | |
CN111221597A (zh) | 字体渲染方法、装置及计算机可读存储介质 | |
US7342585B2 (en) | Use of an input overscaled bitmap to generate emboldened overscaled bitmap | |
US20140362104A1 (en) | Layered z-order and hinted color fonts with dynamic palettes | |
US9881395B2 (en) | Rendering multi-part glyphs | |
JP4370438B2 (ja) | ベクター画像描画装置、ベクター画像描画方法およびプログラム | |
US20150325022A1 (en) | Technique for processing a character string for graphical representation on a man/machine interface | |
JP4180043B2 (ja) | 3次元図形描画処理装置、画像表示装置、3次元図形描画処理方法、これをコンピュータに実行させるための制御プログラムおよび、これを記録したコンピュータ読み取り可能な可読記録媒体 | |
JP4143613B2 (ja) | 描画方法、描画装置 | |
JP2018019212A (ja) | 情報処理装置及び描画処理方法、コンピュータプログラム | |
JP5826966B2 (ja) | 画像処理装置、画像処理方法、情報記憶媒体、及びプログラム | |
JP5744197B2 (ja) | ウィンドウ合成装置 | |
JP5492911B2 (ja) | 文字作成方法、および文字作成装置 | |
JP2014023006A (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム | |
JP2012133765A (ja) | 画像処理装置、および画像処理方法 | |
JP2017116859A (ja) | 文字描画装置および文字描画方法、コンピュータプログラム | |
JP4991429B2 (ja) | 着色材料使用量削減プログラム | |
JPH02176927A (ja) | 文字の処理方式 | |
AU2005200528B2 (en) | Compositing with clip-to-self functionality without using a shape channel | |
JP2018072569A (ja) | 文字生成装置、文字生成プログラムおよび文字生成方法 | |
JP2010157041A (ja) | 画像形成装置 |