(57)【要約】      （修正有）【課題】文字とその背景との関係に応じた描画を可能にする情報処理装置を提供する。【解決手段】情報処理装置に合成処理決定部２０４と描画処理部２０５の機能を形成する。合成処理決定部２０４は、描画対象となる文字列の属性を表す属性情報と文字列を構成する各文字のメトリクスを表すメトリクス情報を取得する。そして、文字列に重なり合う部分を第１形態で合成処理するか、第１形態と異なる描画結果となり且つ当該第１形態よりも処理負荷の大きい第２形態で合成処理するかを決定する。描画処理部２０５は、決定された形態で重なり合う部分が合成された文字列をバッファに描画する。【選択図】図２
2018019212.tif 000002
【特許請求の範囲】
【請求項１】
描画対象となる文字列の属性を表す属性情報及び前記文字列を構成する各文字のメトリクスを表すメトリクス情報の少なくとも一方を取得する取得手段と、
前記取得手段で取得した情報から前記文字列に重なり合う部分が存在するかどうかを判定し、この判定結果に基づいて前記重なり合う部分を第１形態で合成処理するか前記第１形態と異なる描画結果となり且つ当該第１形態よりも処理負荷の大きい第２形態で合成処理するかを決定する合成処理決定手段と、
前記合成処理決定手段で決定された形態で前記重なり合う部分が合成された前記文字列を描画する描画手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記判定手段は、前記文字列が実際に重なっているかどうかに関わらず、前記取得した情報に含まれる設定内容に基づいて前記重なり合う可能性のある部分が存在するかどうかを判定することを特徴とする、
請求項１に記載の情報処理装置。
【請求項３】
前記属性情報は、前記文字列の言語の種類を表す言語情報又は隣り合う文字の間隔を調整するための文字間調整情報を含んでおり、
前記合成処理決定手段は、前記言語情報又は前記文字間調整情報に応じて前記第１形態の合成処理と前記第２形態の合成処理のいずれか一方を決定することを特徴とする、
請求項１又は２に記載の情報処理装置。
【請求項４】
前記属性情報は、前記文字列を構成する文字に施される装飾の内容を表す文字装飾情報を含んでおり、
前記合成処理決定手段は、前記文字装飾情報に応じて前記第１形態の合成処理と前記第２形態の合成処理のいずれか一方を決定することを特徴とする、
請求項１又は２に記載の情報処理装置。
【請求項５】
前記メトリクス情報は、少なくとも文字の形状情報と送り幅情報と、を含み、
前記合成処理決定手段は、前記メトリクス情報に基づいて前後の文字形状が重なるか否かを判定し、判定結果に基づいて前記第１形態の合成処理と前記第２形態の合成処理のいずれか一方を決定することを特徴とする、
請求項１又は２に記載の情報処理装置。
【請求項６】
前記取得手段は前記文字列の描画領域をも取得するものであり、
前記合成処理決定手段は、前記取得手段により取得した前記描画領域に、すでに別のオブジェクトが描画されているか否かを判定し、判定結果に基づいて前記第１形態の合成処理と前記第２形態の合成処理のいずれか一方を決定することを特徴とする、
請求項１又は２に記載の情報処理装置。
【請求項７】
前記属性情報又は前記メトリクス情報は、前記文字列を構成する文字の色を表す色情報を含んでおり、
前記第１形態の合成処理は、背景となる第１オブジェクトの上に描画する第２オブジェクトのうち、前記第１オブジェクトと重なる部分を当該第２オブジェクトの前記色情報を用いて塗りつぶす形態の処理であり、
前記第２形態の合成処理は、前記第１オブジェクトと前記第２オブジェクトとが重なる部分を、前記第１オブジェクト及び前記第２オブジェクトの色情報とを合成した第３オブジェクトとする形態の処理であることを特徴とする、
請求項１ないし６のいずれか一項に記載の情報処理装置。
【請求項８】
前記色情報は、不透明度を表す係数値を含み、前記色情報のほかに前記係数値を用いて前記第３オブジェクトを生成することを特徴とする、
請求項７に記載の情報処理装置。
【請求項９】
前記属性情報又は前記メトリクス情報は、アンチエイリアス処理の有無を表すアンチエイリアス情報と前記文字列を構成する文字の色及びその透明度を表す色情報とを含み、隣り合う文字が、ともに不透明度を持つ色で、重なり合う部分の輪郭線が含まれる画素領域にアンチエイリアス処理が施される場合、
前記合成処理決定手段は、前記合成処理を前記第２形態とすることを特徴とする、
請求項１又は２に記載の情報処理装置。
【請求項１０】
前記合成処理決定手段は、前記輪郭線の内部の面積の方が大きい画素は、より不透明度が強く、背景色よりも輪郭線を描画する色に重みづけがなされ、他方、輪郭線の内部の面積の方が小さな画素は、より不透明度が弱く背景色に重みづけがなされるように、前記輪郭線の付近の画素の色情報を調整することを特徴とする、
請求項９に記載の情報処理装置。
【請求項１１】
描画対象となる文字列の属性、前記文字列を構成する各文字のメトリクス、前記文字列の描画領域の少なくともいずれかを表す情報を取得するとともに、取得した前記情報を用いて前記文字列を所定の領域に描画する情報処理装置が実行する方法であって、
取得した前記情報から前記文字列に重なり合う部分が存在するかどうかを判定し、
この判定結果に基づいて前記重なり合う部分を第１形態で合成処理するか前記第１形態と異なる第２形態で合成処理するかを決定し、
決定した形態で前記重なり合う部分が合成された前記文字列を前記描画領域に描画する工程を含むことを特徴とする、描画処理方法。
【請求項１２】
コンピュータを請求項１乃至１０のいずれか１項に記載の情報処理装置として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は重なり合う部分が存在する可能性のある文字列の描画処理を効率的に行う情報処理装置に関する。
【背景技術】
【０００２】
低リソースの情報処理装置において多くの文字を高速に描画する場合、文字の透明度やアンチエイリアス処理を考慮した背景との合成処理をいかに効率よく行うかが課題となる。文字とその背景との合成に関する従来技術として、特許文献１，２に開示された技術が知られている。特許文献１に開示された技術では、文字を構成する各ドットのブレンド比率を算出し、出力する段階でブレンド比率に基づいて文字の色と背景の色とを合成して階調色を決定する。この技術では、ブレンド比率を求める処理と階調色を決定する処理を独立に行い、算出したブレンド比率を保存しておくことで、一度求めたブレンド比率の再利用を可能にする。また、特許文献２に開示された技術は、図形全般に関する背景色との合成処理に関する。この技術では、図形のオブジェクトを順次上書きすることで構成されるグループを他のオブジェクトや背景に重ねることで少ないメモリ容量で透明処理を可能にする。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平４−１８８１９２号公報
【特許文献２】特開２００８−１７１３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１，２に開示された技術では、合成処理が不要な場合があるにも関わらず、全ての場合においてブレンド比率やオブジェクト同士が重なる領域を算出しなければならない。そのため、リソースを無駄に消費する問題があった。
本発明の主たる課題は、文字とその背景との関係に応じた合成処理を行うことでリソースを効率的に使用することができる情報処理装置及び描画方法を提供することにある。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明に係る情報処理装置は、描画対象となる文字列の属性を表す属性情報及び前記文字列を構成する各文字のメトリクスを表すメトリクス情報の少なくとも一方を取得する取得手段と、前記取得手段で取得した情報から前記文字列に重なり合う部分が存在するかどうかを判定し、この判定結果に基づいて前記重なり合う部分を第１形態で合成処理するか前記第１形態と異なる描画結果となり且つ当該第１形態よりも処理負荷の大きい第２形態で合成処理するかを決定する合成処理決定手段と、前記合成処理決定手段で決定された形態で前記重なり合う部分が合成された前記文字列を描画する描画手段と、を有することを特徴とする。
【０００６】
また、本発明に係る描画方法は、描画対象となる文字列の属性、前記文字列を構成する各文字のメトリクス、前記文字列の描画領域の少なくともいずれかを表す情報を取得するとともに、取得した前記情報を用いて前記文字列を所定の領域に描画する情報処理装置が実行する方法であって、取得した前記情報から前記文字列に重なり合う部分が存在するかどうかを判定し、この判定結果に基づいて前記重なり合う部分を第１形態で合成処理するか前記第１形態と異なる第２形態で合成処理するかを決定し、決定した形態で前記重なり合う部分が合成された前記文字列を前記描画領域に描画する工程を含むことを特徴とする。
【発明の効果】
【０００７】
本発明によれば、文字とその背景との関係に応じてリソースの異なる合成処理の形態を切り替えることで、より高速に文字の描画処理が可能となる。
【図面の簡単な説明】
【０００８】
【図１】情報処理装置のハードウェア構成図。
【図２】情報処理装置の機能構成図。
【図３】第１実施形態における描画処理の手順説明図。
【図４】（ａ），（ｂ）はそれぞれ合成処理の例示図。
【図５】第１実施形態における合成処理の切り替えの判定処理の手順説明図。
【図６】（ａ）〜（ｃ）はタイ語における隣接する文字同士が重なる場合の説明図。
【図７】（ａ），（ｂ）はアンチエイリアス処理の説明図。
【図８】（ａ），（ｂ）は文字間調整時における文字同士が重なる場合の説明図。
【図９】（ａ）〜（ｄ）は文字装飾としてのボールド処理の一例を示した図。
【図１０】第２実施形態における描画処理の手順説明図。
【図１１】（ａ）〜（ｃ）は文字送り幅と文字形状を包含する矩形との位置関係の説明図。
【図１２】第３実施形態における描画処理の手順説明図。
【図１３】文字列の描画領域に別オブジェクトが描画されている一例を示した説明図。
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態例について図面を参照して説明する。
［第１実施形態］
図１は、第１実施形態に係る情報処理装置のハードウェア構成例を示す図である。この情報処理装置１００は、システムバス１０７に接続されたＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３を有するコンピュータを備える。ＣＰＵ（Central Processing Unit）１０１は、本発明のコンピュータプログラムを実行することにより、コンピュータを情報処理装置１００として動作させる。ＲＯＭ（Read Only Memory）１０２は変更を必要としないプログラムや各種パラメータを格納する。ＲＡＭ（Random Access Memory）１０３はＣＰＵ１０１のワークエリアとして機能する。また、図示しない外部装置などから供給されるプログラムやデータを一時記憶する。ＲＡＭ１０３は、ＳＤＲＡＭ（(Synchronous Dynamic Random Access Memory)あるいはＤＲＡＭ（Dynamic Random Access Memory）などで構成される。なお、図示しないハードディスクドライブ装置などのストレージを備え、本発明のコンピュータプログラムをこのストレージにインストールするようにしてもよい。
【００１０】
システムバス１０７には、入力ユニット１０４、描画ユニット１０５及び表示ユニット１０６も接続されている。入力ユニット１０４は、外部からの入力を受信するもので、マウスやキーボード、タッチパネル、音声を受信するマイクなどがこれに該当する。描画ユニット１０５は、ＲＯＭ１０２やＲＡＭ１０３などに格納され、あるいは入力ユニット１０４で受信した文字列の情報を取得し、内部に保持した文字列を描画するためのバッファに対して描画処理を行う。バッファの所定の領域には、文字列が画素値として描画される。表示ユニット１０６は描画ユニット１０５で決定されたバッファの各画素値に従い、グラフィックスやユーザインターフェースとして表示させる。
【００１１】
図２は、情報処理装置１００のコンピュータに形成される機能ブロックの構成図である。各機能ブロックは、ＣＰＵ１０１が、本発明のコンピュータプログラムをＲＡＭ１０３に展開して実行することで実現される。図２を参照すると、本実施形態の情報処理装置１００は識別情報取得部２０１を有する。識別情報取得部２０１は、表示ユニット１０６に表示するための文字列あるいはそれを構成する個々の文字を識別するための識別情報を取得する。識別情報は、ＲＯＭ１０２やＲＡＭ１０３に格納されていることを想定するが、入力ユニット１０４で受信するユーザからの入力であっても構わない。
【００１２】
情報処理装置１００は、メトリクス情報取得部２０２を有する。メトリクス情報取得部２０２は、識別情報により特定される各文字のメトリクスを表すメトリクス情報を取得する。メトリクスは、当該文字を構成する部品の配置、サイズ、次の文字までの送り幅などである。すなわちメトリクス情報は、文字列を構成する文字の形状情報と送り幅情報を含む情報である。メトリクスを特定するための識別情報は、例えば、アウトラインフォントの場合はベクター情報であり、ビットマップフォントの場合は２値や多値の画像情報である。メトリクス情報は、ＲＯＭ１０２やＲＡＭ１０３にメモリ展開されたフォントデータ、あるいは外部記憶装置に格納されているフォントデータなどから取得が可能である。
【００１３】
情報処理装置１００は、また、属性情報取得部２０３を有する。属性情報取得部２０３は、描画対象となる文字列の属性を表す属性情報を取得する。属性情報は、例えば、言語情報、フォント情報、文字間調整情報、アンチエイリアス情報、色情報、文字装飾情報の少なくともいずれかを含む。言語情報は、文字列がどの国の通用語を表すかを示す情報（日本語、ヒンディー語などの言語の種類）である。フォント情報は文字列を描画するのに使用されるフォントの種類を表す情報である。文字間調整情報は隣り合う文字の間隔を調整するために設定される情報である。アンチエイリアス情報はアンチエイリアス処理の有無を表す情報である。色情報はフォントがどの色か表す情報であり、不透明度を表す情報が付される場合がある。文字装飾情報は文字列を構成する文字に施される装飾の内容を表す情報である。
【００１４】
情報処理装置１００は、また、合成処理決定部２０４を有する。合成処理決定部２０４は、描画する文字列において文字同士あるいは文字を構成する部品同士が重なる可能性があるかどうかを判定し、判定の結果、重なる可能性がある場合は、複数の合成処理の形態のいずれかを決定する。重なり合う可能性があるか否かの判定法については後述する。
【００１５】
情報処理装置１００は、また、描画処理部２０５を有する。描画処理部２０５は、合成処理決定部２０４で決定された合成処理の形態に従って、バッファに文字形状を描画し、描画結果を表示ユニット１０６に表示させる。
【００１６】
ここで、合成処理決定部２０４において決定する合成処理の概要を説明する。
画像の色情報の中にはＲＧＢの各色成分の他に、アルファ値と呼ばれる透明度を表すパラメータがある。ＲＧＢ成分値や属性情報は、例えば、言語情報、フォント情報、文字間調整情報、アンチエイリアス情報、色情報、文字装飾情報の少なくともいずれかを含む。言語情報は、文字列がどの国の通用語を表すかを示す情報（日本語、ヒンディー語などの言語の種類）である。フォント情報は文字列を描画するのに使用されるフォントの種類を表す情報である。文字間調整情報は隣り合う文字の間隔を調整するために設定される情報である。アンチエイリアス情報はアンチエイリアス処理の有無を表す情報である。色情報はフォントがどの色か表す情報であり、不透明度を表す情報が付される場合がある。文字装飾情報は文字列を構成する文字に施される装飾の内容を表す情報である。
【００１７】
アルファ値は、それぞれ「０．０」から「１．０」の範囲の数値で表される。アルファ値は、利用の目的によって透明度を表す、あるいは不透明度を表す、と言い換えることができるが、本質的には同じことである。背景となるオブジェクトを便宜上「第１オブジェクト」という。また、その上に描画するオブジェクトを便宜上「第２オブジェクト」という。また、第１オブジェクトと第２オブジェクトとが重なる部分を、第１オブジェクト及び第２オブジェクトの色情報を合成したオブジェクトとして便宜上「第３オブジェクト」という。さらに、各オブジェクトの色情報を、不透明度を表す係数値であるアルファ値（色情報に含まれる）を使ってピクセル単位で合成することをアルファブレンドという。
ここで、第１オブジェクトが不透明（アルファ値が「１．０」）でＲＧＢ値が「Ｄ」であるとする。また、第２オブジェクトのアルファ値が「Ａ」でＲＧＢ値が「Ｓ」であるとする。この場合、アルファブレンドにより描画される、第１オブジェクトと第２オブジェクトとが重なる部分の第３オブジェクトのＲＧＢ値は「Ｓ×Ａ＋Ｄ×（１−Ａ）」の計算式で求めることができる。
【００１８】
アルファブレンドの計算式は、Ｐｏｒｔｅｒ−Ｄｕｆｆ演算を用いたものである。これは、Ｔｈｏｍａｓ  ＰｏｒｔｅｒとＴｏｍ  Ｄｕｆｆの共著「Compositing Digital Images」で示された公知の演算法である。この演算法では、第１オブジェクトの色情報と第２オブジェクトの色情報とを合成するための１２種類の演算規則を規定する。この場合、アルファ値を持つ２つのオブジェクトを合成演算した結果である第３オブジェクトもアルファ値を持つものとなる。この第３オブジェクトを描画し、表示ユニット１０６に表示する際には、ＲＧＢ値にアルファ値をかけ合わせた値が出力されることとなる。第１実施形態では、上記１２種類の演算規則のうち、「Ｓｒｃ」と「Ｓｒｃ_Ｏｖｅｒ」の２種類の演算規則を用い、これらの演算規則に従う処理を適宜切り替える場合の例を示す。「Ｓｒｃ」は、背景となる第１オブジェクトの上に描画する第２オブジェクトのうち、第１オブジェクトと重なる部分を当該第２オブジェクトの前記色情報を用いて塗りつぶす形態の処理であり、第１形態の合成処理の一例となるものである。これに対して「Ｓｒｃ_Ｏｖｅｒ」は、第２オブジェクトの色情報を背景の第１オブジェクトの色情報と合成することにより第３オブジェクトを生成する形態の処理であり、第２形態の合成処理の一例となるものである。「Ｓｒｃ_Ｏｖｅｒ」は「Ｓｒｃ」と異なる描画結果となり且つ「Ｓｒｃ」よりも処理負荷の大きい処理形態である。
【００１９】
例えば、図４に示されるように、正方形４０１を第１オブジェクト、円４０２を第２オブジェクトとする。正方形４０１の色情報はアルファ値が「１．０」、ＲＧＢ各成分の値が「０．０」の不透明な黒であるとする。円４０２の色情報はアルファ値が「０．５」、ＲＧＢ各成分の値が「１．０」の半透明な白であるとする。同図（ａ）は正方形４０１の一部と重なるようにその前面に円４０２を描画する際に、Ｐｏｒｔｅｒ−Ｄｕｆｆ演算の「Ｓｒｃ」により円４０２に設定されている色で上書きしたときの描画結果を示す。この場合、重なった扇形部分４０３の色情報は、第２オブジェクトである円４０２の色情報と同じとなる。一方、同図（ｂ）はＰｏｒｔｅｒ−Ｄｕｆｆ演算の「Ｓｒｃ_Ｏｖｅｒ」により合成処理したときの描画結果を示す。重なった扇形部分４０４の色情報は、前述したアルファブレンドの計算式に基づくと、ＲＧＢ各成分の値が「０．５」の灰色となる。つまり、背景色に対して文字の色が合成されている。
【００２０】
このような合成処理の手法を切り替えて不透明色の文字を描画するときの描画処理方法の手順例を図３に示す。図３を参照すると、情報処理装置１００は、識別情報取得部２０１で文字列を構成する各文字の識別情報を取得する（Ｓ３０１）。その後、メトリクス情報取得部２０２で、識別情報に該当する文字のメトリクス情報を取得する（Ｓ３０２）。また、属性情報取得部２０３で、文字列を描画するための属性情報を取得する（Ｓ３０４）。そして、合成処理決定部２０４で、描画する文字列において文字同士あるいは文字を構成する部品同士が重なる可能性があるかどうかを判定する（Ｓ３０４）。重なる可能性がないと判定された場合（Ｓ３０４：Ｎ）、合成処理決定部２０４は、Ｐｏｒｔｅｒ−Ｄｕｆｆ演算の「Ｓｒｃ」を選択する（Ｓ３０５）。他方、重なる可能性があると判定された場合（Ｓ３０４：Ｙ）、合成処理決定部２０４は、Ｐｏｒｔｅｒ−Ｄｕｆｆ演算の「Ｓｒｃ_Ｏｖｅｒ」の処理を選択する（Ｓ３０６）。その後、情報処理装置１００は、選択された合成処理の手法に従って描画処理部２０５で文字形状を描画し（Ｓ３０７）、処理を終了する。
【００２１】
ここで、Ｓ３０４における判定処理の内容を詳しく説明する。図５のＳ５０１〜Ｓ５０５は、Ｓ３０４の処理の内容を具体的に示した部分である。
合成処理決定部２０４は、入力された文字列に対する属性情報のうち言語情報が特定の言語か否かを判定する（Ｓ５０１）。ここでは「特定の言語」は、隣り合う文字同士が重なる可能性のある言語を想定している。一般的に、欧米で使用されるラテン系言語、日本語や中国語のような漢字を基本とした言語では、隣り合う文字同士が重なることが少ない。一方、アラビア語、タイ語、ヒンディー語などは隣り合う文字によっては重なることがある。
【００２２】
図６はタイ語において隣り合う文字が重なる例を示した図である。同図（ａ）は、一方の文字６０１の文字送り幅６０３に従って他方の（次の）文字６０２が配置されている。文字送り幅６０３は、文字６０１のグリフ原点６０４から文字６０２のグリフ原点６０５までの幅を示す。文字６０１と文字６０２は、ともに不透明の黒色で描画され、輪郭部分にはアンチエイリアス処理が施されるものとする。ただし、図６（ａ）及び図６（ｂ）では、各文字の形状及び重なり部分の形状を解り易く示すため、輪郭線を強調し、文字は白抜きで表す。アンチエイリアス処理とは、文字６０１，６０２の部品であるオブジェクトの輪郭部分に対し、透明度の情報を用いて背景と融合するように色を滑らかに変化させる処理である。これにより、ジャギーと呼ばれる画素のギザギザを軽減させることができる。
【００２３】
ここでアンチエイリアス処理の概要を図７（ａ），（ｂ）を参照して説明する。図中、各マス目は画素の１つ１つを表す。２本の輪郭線７０１で囲まれた画素領域は不透明の黒で描画される。図７（ａ）はアンチエイリアス処理を行わずに、輪郭線７０１で挟まれた内部を不透明の黒で塗りつぶした時の状態を示す。輪郭線７０１付近の画素領域のうち、半分以上の面積が輪郭線７０１の内側に含まれている画素７０２については内側と同色で描画し、そうでない画素７０３は描画しない。そのため、各画素の色をそのまま使うと、オブジェクトの輪郭線が斜めになっている部分でジャギーが生じる。
これに対し、図７（ｂ）は輪郭線７０１付近の画素領域にアンチエイリアス処理を施したときの描画結果を示す。輪郭線７０１内部の面積の方が大きな画素７０４は、より不透明度が強く、背景色よりも輪郭を描画する色に重みづけがなされる。一方、輪郭線７０１内部の面積の方が小さな画素７０５は、より不透明度が弱く（透明度が強く）背景色に重みづけがなされる。このように、輪郭線付近の画素についてオブジェクト側に含まれる面積の大きさに応じて各画素の不透明度（透明度の係数値）を示すアルファ値を調整し、「Ｓｒｃ_Ｏｖｅｒ」により背景の白と合成処理することでジャギーの見え方を低減させることができる。
【００２４】
図６（ｂ）は、「Ｓｒｃ_Ｏｖｅｒ」による合成処理の結果を示す。点線枠６０６内で、文字６０１と文字６０２とが重なる部分が生じるが、描画される際、合成する背景色も文字の色と同色の不透明な黒色となるため、輪郭部分にアンチエイリアス処理がなされても２つの文字の境界は識別できない。一方、「Ｓｒｃ」を用いた合成処理の結果を示したのが図６（ｃ）である。文字６０２の描画時には輪郭部分にアンチエイリアス処理を施すが、「Ｓｒｃ」により合成すると文字６０１と重なる輪郭部分が背景色ではなく、白との合成処理後の色で描画される。そのため、点線枠６０７で示すように文字６０２の輪郭線が生じ、図６（ｂ）と異なる合成結果となる。つまり、オブジェクトが重なる場合に「Ｓｒｃ」で合成すると、点線枠６０７で示したように輪郭が生じる。
【００２５】
そのため、図５のＳ５０１において、言語情報が特定の言語（隣り合う文字同士の重なる可能性のある言語）と判定された場合（Ｓ５０１：Ｙ）、合成処理決定部２０４は、文字描画に指定された色情報が完全不透明かどうかを判定する（Ｓ５０２）。すなわち、属性情報に含まれる文字描画に指定された色情報のアルファ値が「１．０」かどうかを判定する。完全不透明でないと判定した場合（Ｓ５０２：Ｎ）、合成処理決定部２０４は、「Ｓｒｃ_Ｏｖｅｒ」による合成処理を選択する（Ｓ３０６）。一方、Ｓ５０２において色情報が完全不透明と判定した場合（Ｓ５０２：Ｙ）、合成処理決定部２０４は、属性情報に含まれるアンチエイリアスの情報が有効かどうかを判定する（Ｓ５０３）。有効の場合は（Ｓ５０３：Ｙ）、「Ｓｒｃ_Ｏｖｅｒ」の合成処理を選択する（Ｓ３０６）。有効でない場合は（Ｓ５０３：Ｎ）、「Ｓｒｃ」の合成処理を選択する（Ｓ３０５）。
【００２６】
Ｓ５０１で、特定の言語でないと判定された場合（Ｓ５０１：Ｎ）、例えば日本語やラテン系言語のように隣り合う文字同士の重なる可能性のない言語の場合、合成処理決定部２０４は、文字装飾に縁部分を使用するかどうかを判定する（Ｓ５０４）。具体的には、属性情報に、文字装飾としてボールドや縁を使用するスタイル情報が設定されているかどうかを判定する。設定されていると判定した場合（Ｓ５０４：Ｙ）、上記のＳ５０２に処理を移す。
【００２７】
ここで、属性情報にボールドが指定された場合に、隣り合う文字が重なる例について説明する。図８（ａ）は文字列に関する装飾として何も指定されていない場合の文字レイアウトを示す。一般に、筆記体を除いたラテン系言語や日本語であれば、隣接する文字同士が重なり合うことは少ない。しかし、図８（ｂ）に示すように、文字列に関する装飾としてボールドが指定された場合、フォントデザインにもよるが、ボールド化により文字間が狭まり、隣接する文字同士が重なる可能性が生じる。また、アウトラインフォントを使ったボールド化を実現する手法の１つとして、文字形状を表す第１の輪郭線に対して、それを縁取るような第２の輪郭線を生成する場合がある。この第１の輪郭線の描画後に第２の輪郭線を同色で重ねて描画することでボールド化を実現する手法の例を図９を用いて説明する。
【００２８】
図９（ａ）は、文字「Ｌ」の輪郭線を示す。この第一の輪郭線の内側を指定された色で塗りつぶすことで文字を描画する。同図（ｂ）は、第１の輪郭線を縁取るような第２の輪郭線を生成し、第２の輪郭線の内部を黒で塗りつぶしたときの描画結果を示す。同図（ｃ）は、第２の輪郭線を塗りつぶす際に、Ｓｒｃ_Ｏｖｅｒを用いて背景にある第１の輪郭線の描画結果に重ねたときの結果を示す。このように、同図（ａ）で示した描画結果に対して縁部分を同色で重ねて塗りつぶすことで描画結果をボールド文字のように見せることができる。このような手法でボールド化を実現する際に、「Ｓｒｃ」により第２の輪郭線を塗りつぶしたときの描画結果を同図（ｄ）に示す。この例では、第２の輪郭線の内側部分のアンチエイリアス処理で、背景にある第１の描画結果との合成処理を行わずに描画するため、その部分だけ異なる色で描画される。そのため、第２の輪郭線で表わされる縁部分の使用される装飾が設定されている場合にも、合成処理の方法を切り替える処理が必要となる。
【００２９】
図５に戻り、Ｓ５０４において文字装飾に縁部分を使用しないと判定した場合（Ｓ５０４：Ｎ）、合成処理決定部２０４は、文字間を狭める設定かどうかを判定する（Ｓ５０５）。具体的には、属性情報に文字間調整の設定がなされているかどうかを判定する。文書編集のためのアプリケーションなどでも、文字間の調整において前後の文字が重なるほど文字間を狭める設定が可能なものがある。本実施形態では、文字列が実際に重なっているかどうかに関わらず、取得した属性情報に含まれる設定内容に基づいて重なり合う可能性のある部分が存在するかどうかを判定する。例えば、文字間調整において通常の文字レイアウトに対して文字間を狭めるような設定がなされている場合（Ｓ５０６：Ｙ）、合成処理決定部２０４は、上記のＳ５０２に処理を移す。そうでなければ（Ｓ５０６：Ｎ）、合成処理決定部２０４は、「Ｓｒｃ」による合成処理を選択し（Ｓ３０５）、処理を終了する。
【００３０】
このように、第１実施形態では、文字列の各種の属性情報に基づいて文字とその背景との重なり部分の有無を判定し、当該重なり部分の合成処理を切り替えるようにしたので、それを行わない場合に比べて、より高速に文字の描画処理が可能となる。また、重なり部分を、より自然に描画することが可能となる。
【００３１】
なお、第１実施形態では、メトリクス情報の扱いについての詳しい説明は省略したが、これについては第２実施形態において説明する。第１実施形態では、また、属性情報に含まれる情報として、言語情報、フォント情報、文字間調整情報、アンチエイリアス情報、色情報、文字装飾情報について説明した。しかし、隣り合う文字間で重なり合う可能性のある部分があるかどうかの判定には、これらの情報の少なくともいずれかを用いればよい。
【００３２】
［第２実施形態］
第２実施形態では、文字のメトリクス情報に応じて合成処理の手法を切り替える場合の例を説明する。第２実施形態で用いるメトリクス情報には、文字送り幅、文字形状を包含する最小矩形領域の位置関係などが含まれるものとする。第２実施形態では、このようなメトリクス情報に応じて、文字ごとに描画時に適用する合成処理を切り替える。図１０は、第２実施形態における描画処理の手順説明図である。第１実施形態の説明で使用した図と同じ番号が付してあるものは説明を省略する。
【００３３】
図１０を参照すると、情報処理装置１００は、識別情報取得部２０１で、表示ユニット１０６に表示する文字の識別情報を取得する（Ｓ１００１）。また、メトリクス情報取得部２０２で、識別情報に該当する文字のメトリクス情報をフォントデータから取得する（Ｓ１００２）。合成処理決定部２０４は、処理対象となっている文字が入力文字列の先頭文字か否かを判定する（Ｓ１００３）。先頭文字と判定した場合（Ｓ１００３：Ｙ）、合成処理決定部２０４は、「Ｓｒｃ」による合成処理を選択し（Ｓ３０５）、描画処理部２０５に文字を描画させる（Ｓ１００５）。次の文字がある場合（Ｓ１００６：Ｙ）、処理対象を次の文字に移してＳ１００１に戻る。次の文字がない場合（Ｓ１００６：Ｎ）、処理を終える。
【００３４】
Ｓ１００３において、先頭文字でないと判定された場合（Ｓ１００３：Ｎ）、合成処理決定部２０４は、直前に描画した文字とこれから描画する文字が重なるか否かを判定する（Ｓ１００４）。重ならないと判定した場合（Ｓ１００４：Ｎ）、合成処理決定部２０４は、「Ｓｒｃ」による合成処理を選択し（Ｓ３０５）、そうでなければ（Ｓ１００４：Ｙ）、「Ｓｒｃ_Ｏｖｅｒ」の合成処理を選択する（Ｓ３０６）。
【００３５】
Ｓ１００４における、前後の文字が重なるか否かを判定する処理の内容を、図１１を参照して説明する。図１１は、文字送り幅による文字配置と、各文字を包含する最小矩形領域との位置関係によって、前後の文字が重なる場合とそうでない場合を示したものである。なお、この最小矩形領域については、Ｓ１００２で取得した文字のメトリクス情報に含まれる、文字の形状情報から算出することができる。また、フォントデータ内に最小矩形領域に関する情報が既に格納されている場合、Ｓ１００２で文字のメトリクス情報として取得してもよい。
【００３６】
図１１（ａ）は、文字「ａ」と「ｇ」に関するメトリクス情報を示す。文字「ａ」と「ｇ」の文字形状を包含する最小矩形領域は、それぞれ、矩形１１０１と矩形１１０２である。文字「ａ」の送り幅１１０３は、文字「ａ」のグリフ原点から次の文字のグリフ原点までの幅である。文字「ａ」の送り幅１１０３に従い、次の文字「ｇ」を配置した状態が同図（ａ）右である。矩形１１０２のｘ座標の最小値１１０４と送り幅１１０３との和が、矩形１１０１のｘ座標の最大値１１０５より大きい場合、文字「ａ」と文字「ｇ」が重ならないと判定することができる。
【００３７】
同図（ｂ）は、文字「ｆ」と「ｋ」に関するメトリクス情報を示す。文字「ｆ」と「ｋ」の文字形状を包含する最小矩形領域は、それぞれ、矩形１１０６と矩形１１０７である。同図（ａ）のときと同様に、文字「ｆ」の送り幅１１０８に従い、次の文字「ｋ」を配置した状態が同図（ｂ）右である。矩形１１０７のｘ座標の最小値１１１０と送り幅１１０８の和が、矩形１１０６のｘ座標の最大値１１０９より小さい場合、文字「ｆ」と文字「ｋ」が重なると判定することができる。
【００３８】
同図（ｃ）は、文字「ｑ」と「ｙ」に関するメトリクス情報を示す。文字「ｑ」と「ｙ」の文字形状を包含する最小矩形領域は、それぞれ、矩形１１１１と矩形１１１２である。文字「ｑ」の送り幅１１１３に従い、次の文字「ｙ」を配置した状態が同図（ｃ）右である。矩形１１１２のｘ座標の最小値１１１５は負の値であるため、送り幅１１０８と矩形１１１２のｘ座標の最小値１１１５の差が、矩形１１１１のｘ座標の最大値１１１４より小さい場合、文字「ｑ」と文字「ｙ」が重なると判定することができる。
【００３９】
図１１に示したように、文字送り幅に従って前後の文字を配置したときに各文字の文字形状を包含する最小矩形が重なる場合、後ろの文字は、「Ｓｒｃ」による合成処理により描画される。なお、属性情報に文字間を狭める設定情報が含まれている場合は、狭める幅を、前の文字の文字送り幅に反映させて次の文字を配置することで対応することができる。また、第１実施形態で説明した文字同士が重なる条件を組み合わせて、合成処理の手法を切り替えることも可能である。
【００４０】
このように、第２実施形態では、メトリクス情報に基づいて文字とその背景との合成処理を切り替えるようにしたので、より高速に文字の描画処理が可能となる。
【００４１】
［第３実施形態］
第３実施形態では、文字列を描画する領域に既に別オブジェクトが描画されているか否かに応じて、文字列描画時に適用する合成処理の形態を切り替える場合の例を説明する。ハードウエア構成及び機能ブロックの構成は第１実施形態及び第２実施形態と基本的に同じである。第３実施形態では、隣り合う文字やその部品が重なり合う可能性を判定するための情報の取得手段として、文字列を描画するための描画領域を取得する描画領域取得部をさらに追加した点が異なる。また、合成処理決定部２０４が、取得した描画領域に、すでに別のオブジェクトが描画されているか否かを判定する点が異なる。
なお、描画領域はそれが外部から入力される場合はそのまま用いてもよいが、本実施形態では、文字列の属性情報及びメトリクス情報から算出する場合の例を説明する。
【００４２】
図１２は、第３実施形態における描画処理の手順説明図である。第１実施形態の説明で使用した構成部品ないし機能と同じ符号が付してあるものについては実質的に同一の部品ないし機能なので、重複した説明を省略する。図１２を参照すると、情報処理装置１００は、識別情報取得部２０１で、文字列を構成する各文字の識別情報を取得し（Ｓ３０１）、メトリクス情報取得部２０２で、該当する文字のメトリクス情報を取得する（Ｓ３０２）。メトリクス情報には文字形状と文字送り幅に関する情報が少なくとも含まれているものとする。また、属性情報取得部２０３で、描画する文字列に関する属性情報を取得する（Ｓ３０３）。
【００４３】
第３実施形態では、合成処理決定部２０４が、属性情報と各文字のメトリクス情報に基づいて、文字列を描画するときの文字列の描画領域を算出する（Ｓ１２０１）。具体的には、文字送り幅に従い、各文字を配置した時の文字形状を包含する最小矩形の座標位置を求める。その後、各文字の最小矩形の全てを包含する最小矩形領域を求め、これを描画領域とする。合成処理決定部２０４は、算出した描画領域の少なくとも一部に別オブジェクトが既に描画されているかどうかを判定する（Ｓ１２０２）。既に描画されている別オブジェクトに関する形状情報がある場合（Ｓ１２０２：Ｙ）、別オブジェクトの形状を包含する最小矩形を算出する。そして、描画領域との位置関係から、重なる部分が存在するか否かを判定する。他の方法として、描画領域に含まれる画素の値を全て取得し、初期値でない値が１画素でも含まれていれば、重なる部分が存在すると判定してもよい。その後、「Ｓｒｃ_Ｏｖｅｒ」の合成処理を選択する（Ｓ３０６）。
【００４４】
図１３は、すでに描画されている別オブジェクトと、文字列を描画する領域が重なっている状態の一例を示す。図示の例では、描画する文字列１３０１に関する描画領域１３０２に対し、別オブジェクト１３０３が重なっている。このときの別オブジェクトを包含する最小矩形は矩形１３０４である。Ｓ１３０２の段階では、文字列１３０１はまだ描画されていない。このとき、描画領域１３０２と矩形１３０４が一部でも重なっていれば、Ｓ１３０２において「Ｓｒｃ_Ｏｖｅｒ」の合成処理を選択する（Ｓ３０６）。そうでなければ処理をＳ３０４に移し、文字同士が重なる可能性があるか判定して合成処理を「Ｓｒｃ」にするか「Ｓｒｃ_Ｏｖｅｒ」にするかを選択する。
描画処理部２０５は、Ｓ３０５ないしＳ３０６で選択された合成処理に従い文字列を描画し（Ｓ３０７）、処理を終える。
【００４５】
このように、第３実施形態では、文字列を描画する領域に既に別オブジェクトが描画されているか否かに応じて、文字列描画時に適用する合成処理を切り替えるようにしたので、リソースを効果的に活用し、より高速に文字の描画処理が可能となる。
【００４６】
［変形例］
第１ないし第３実施形態では、文字列の識別情報、属性情報、メトリクス情報及び描画領域を用いて文字列に重なり合う部分が存在するかどうかを判定する場合の例を説明したが、この例に限らない。描画対象となる文字列の属性、文字列を構成する各文字のメトリクス、文字列の描画領域の少なくともいずれかを表す情報を取得するとともに、取得した情報を用いて文字列を所定の領域に描画するようにしてもよい。要は、重なり合う部分が生じる可能性があるか否かの判定に用いることができる情報であればよい。そして、判定の結果、重なり合う部分が生じる可能性がある場合は、文字とその背景との関係に応じた合成処理を行うようにすればよい。これにより、リソースを効率的に使用することができる描画方法を提供することができる。
【００４７】
第１ないし第３実施形態では、また、色情報（不透明度を表す係数値）を属性情報、メトリクス情報と独立の情報として扱う場合の例を説明したが、属性情報又はメトリクス情報の一部として扱うようにしてもよい。第１ないし第３実施形態では、さらに、描画対象となる文字ないし文字列の構成に応じて切り替える合成処理の形態として、Ｐｏｒｔｅｒ−Ｄｕｆｆ演算の「Ｓｒｃ」と「Ｓｒｃ_Ｏｖｅｒ」を用いたが、この例に限定されない。切り替える合成処理の形態は、描画に使用するリソースの大きさに応じて任意に設定することができる。
【００４８】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2018019212.tif 000003
【図２】
2018019212.tif 000004
【図３】
2018019212.tif 000005
【図４】
2018019212.tif 000006
【図５】
2018019212.tif 000007
【図６】
2018019212.tif 000008
【図７】
2018019212.tif 000009
【図８】
2018019212.tif 000010
【図９】
2018019212.tif 000011
【図１０】
2018019212.tif 000012
【図１１】
2018019212.tif 000013
【図１２】
2018019212.tif 000014
【図１３】
2018019212.tif 000015