JP2014063105A - 描画処理装置およびその制御方法 - Google Patents
描画処理装置およびその制御方法 Download PDFInfo
- Publication number
- JP2014063105A JP2014063105A JP2012209494A JP2012209494A JP2014063105A JP 2014063105 A JP2014063105 A JP 2014063105A JP 2012209494 A JP2012209494 A JP 2012209494A JP 2012209494 A JP2012209494 A JP 2012209494A JP 2014063105 A JP2014063105 A JP 2014063105A
- Authority
- JP
- Japan
- Prior art keywords
- scan line
- line data
- font
- drawing processing
- data
- 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
Images
Landscapes
- Controls And Circuits For Display Device (AREA)
- Image Processing (AREA)
- Digital Computer Display Output (AREA)
Abstract
【課題】 フォントのアウトラインデータを変えることなく、簡単な方法で視認性の高いフォントを描画することを目的とする。
【解決手段】 ベクトル形式のフォントデータを取得し、フォントデータをスキャンラインデータに変換し、フォントデータを平行移動させたときのスキャンラインデータを生成する。前記スキャンラインデータと前記平行移動したスキャンラインデータから、それぞれのスコアを計算して、前記スコアを比較し、描画するスキャンラインデータを決定し、決定されたスキャンラインデータに基づいて、フォントを描画する。
【選択図】 図2
【解決手段】 ベクトル形式のフォントデータを取得し、フォントデータをスキャンラインデータに変換し、フォントデータを平行移動させたときのスキャンラインデータを生成する。前記スキャンラインデータと前記平行移動したスキャンラインデータから、それぞれのスコアを計算して、前記スコアを比較し、描画するスキャンラインデータを決定し、決定されたスキャンラインデータに基づいて、フォントを描画する。
【選択図】 図2
Description
本発明は、アウトラインフォントを描画するための処理に関する。
アウトラインフォントを小さなサイズで描画するときに、アウトラインデータをそのまま使用すると、画数の多い漢字などは文字内部が塗りつぶされてしまい、視認性が低下することがある。視認性が低下しないようにするための技術として、ヒンティングという技術が存在している。ヒンティング技術は大きく分けて2つある。フォントデータに埋め込まれたヒント情報をもとにヒンティングを行うものをマニュアルヒンティングと呼ぶ。一方、アウトラインフォントのデータを解析して視認性が向上するように補正するものをオートヒンティングという。フォントのアウトラインデータをピクセル間のグリッドに合うように補正するグリッドフィッティングという技術はオートヒンティング技術の1つである。また、文字から画を削除することや、位置を修正することによって塗りつぶしを解消し、視認性を高める技術が公開されている(特許文献1)。
しかしながら、マニュアルヒンティングによる方法では、アウトラインデータにヒント情報を埋め込むため、データ量が増加するという課題があった。一方、オートヒンティングによる方法では、文字の画同士の組み合わせで計算する必要があり、複雑な文字になるほど計算コストが高い。
そこで本発明では、フォントのアウトラインデータを変えることなく、簡単な方法で視認性の高いフォントを描画することを目的とする。
そこで本発明では、フォントのアウトラインデータを変えることなく、簡単な方法で視認性の高いフォントを描画することを目的とする。
上記課題を解決するために、本発明に係る描画処理装置は、ベクトル形式のフォントデータを取得するフォントデータ取得手段と、前記フォントデータをスキャンラインデータに変換するスキャンラインデータ変換手段と、前記フォントデータを平行移動させたときのスキャンラインデータを生成する平行移動スキャンラインデータ変換手段と、前記スキャンラインデータと前記平行移動したスキャンラインデータから、それぞれのスコアを計算するスコア計算手段と、前記スコアを比較し、描画するスキャンラインデータを決定するスキャンラインデータ決定手段と、前記スキャンラインデータ決定手段で決定されたスキャンラインデータに基づいて、フォントを描画するフォント描画手段を有することを特徴とする。
本発明により、フォントのアウトラインデータを変えることなく、簡単な方法で視認性の高いフォントを描画することができる。
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施の形態は特許請求の範囲に関る本発明を限定するものではなく、また、本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一な構成については、同じ符号を付して説明する。
図1は本発明を適用した描画処理装置のハードウェア構成について説明したブロック図である。図1において、描画処理装置100は、バス101、CPU102、ROM103、RAM104、表示ユニット105から構成されている。CPU102は装備している各機能を実行、制御する。ROM103は変更を必要としないプログラムや各種パラメータを格納する。RAM104はSDRAM、DRAMなどによって構成され、外部装置などから供給されるプログラムやデータを一時記憶する。表示ユニット105は、プログラムによって描画したグラフィックスを出力する。補助記憶装置106は、ハードディスクドライブ、フラッシュメモリなどで構成され、データを記憶する。バス101はシステムバスであって、CPU102、ROM103、RAM104、表示ユニット105、および補助記憶装置106を接続する。
次に、本発明を適用した描画処理装置の処理の流れを、図2に示した機能構成ブロック図と図3に示したフローチャートを参照して説明する。まず、フォントデータ取得部201において、ベクトル形式のフォントデータを取得する(S301)。ベクトル形式のフォントデータは、ROM103に格納されているデータを取得してもよいし、実行しているプログラムがRAM104に格納し、それを参照してもよい。また、補助記憶装置106にあらかじめ格納されたデータを取得してもよいし、実行しているプログラムがランタイムに補助記憶装置106に書きこんだデータを取得してもよい。本実施例ではフォントデータの所在については限定しない。
ここで、フォントデータについて、詳細に説明する。フォントデータには、フォントの形状を、線分や曲線を複数組み合わせて表現されたパスデータが含まれている。図4(a)は、フォントの形状を構成する一般的なコマンドの例について、コマンド名、座標指定、定義について説明した図である。ここでは、MOVE、LINE、QUAD、CUBIC、CLOSEという5種類のコマンドについて説明しているが、他の種類のコマンドとして水平線、垂直線などのコマンドを含んでいてもよい。また、曲線の定義として、2次ベジェ曲線や3次ベジェ曲線の他に、円弧やさらに高次のベジェ曲線やスプライン曲線などのパラメトリック曲線のコマンドを含んでいてもよい。また、例ではコマンドの座標指定を絶対座標で表現しているが、現在座標(x0,y0)からの相対座標で表現されていてもよい。なお、MOVEコマンドについては、パスコマンドの途中で出現する場合は、新規に別のパスを生成する、いわゆるサブパス生成コマンドとして作用し、たとえば漢字の偏旁のように、複数の輪郭によって形成されるフォントデータで使用される。また、本実施例では非ゼロワインディングルールで描画するものとしてフォントデータが生成されているものとするが、描画時のワインディングルールに従ってフォントデータが生成されていれば偶奇ワインディングルールでも構わない。図4(b)は、本実施例で描画対象とするフォントデータの形状について図示したものである。フォント形状401は、パスのコマンドは、MOVEを1個、CUBICを2個、LINEを11個、CLOSEを1個含んでいる。図4(c)は、描画対象のフォントデータのコマンドおよび座標値を示したものである。
次に、スキャンラインデータ変換部202において、S301で取得したフォントデータからスキャンライン法を用いてスキャンラインデータを生成する(S302)。一般にスキャンライン法とは、図形の輪郭とy=p(pは整数)であらわされる直線の交点を求め、交点間を図形の内部として塗りつぶすアルゴリズムである。アンチエイリアス処理は、輪郭上のピクセルが図形の内部に含まれる割合(被覆率)を計算し、その被覆率に応じて不透明度の階調を決定することによって実現する。ここでのスキャンラインデータとは、ピクセルごとの被覆率の計算を完了し、不透明度の階調を決定したデータのことである。ここでは、アンチエイリアスの階調数を0から4の5階調とし、被覆率が0以上0.2未満であれば階調0、0.2以上0.4未満は階調1、0.4以上0.6未満は階調2、0.6以上0.8未満は階調3、0.8以上1.0以下は階調4とする。図4(b)、(c)で示したフォントデータに基づいたスキャンラインデータについて示したのが図5(a)〜(c)である。例として、図5(a)における、座標(1,1)のピクセル501について説明する。図5(b)はピクセル501について拡大した図である。ピクセル501はフォント形状401の輪郭が横切って通過するピクセルである。ピクセル501において、スキャンライン法に基づき、フォント形状401の輪郭の上部がフォント形状の内側であることが検出され、指定されたパスの座標値から、ピクセル501における被覆率は0.75と計算できる。ピクセル501の階調は、被覆率が0.75なので階調3となる。他のピクセルについても同様に被覆率を計算し、階調を求める。
次に、判定部203において、平行移動したスキャンランデータを生成する処理を行うかどうかを判定する(S303)。ここでは描画モードが高品位描画モードであるか高速描画モードであるかを取得し、高品位描画モードの場合は平行移動スキャンラインデータ変換処理を必要と判定し、高速描画モードの場合は不要と判断するものとする。S303で不要と判断された場合は、S302で生成されたスキャンラインデータに基づき、描画処理部207において描画処理を行い(S304)、処理を終了する。
なお、S303における判定処理について、描画モードをもとに判定する例を用いて説明したが、スキャンラインデータをそのまま描画しても視認性に大きな違いが出ない場合は不要と判断するような他の判断基準であってもよい。例えば、描画対象となっているフォントのサイズが一定以上の大きさであれば、視認性に影響を与えないことが分かっていれば、所定の閾値を設定し、フォントサイズが所定の閾値よりも大きいときは平行移動スキャンラインデータ変換処理を不要と判断してもよい。
次に、S303で平行移動したスキャンラインデータの生成処理が必要と判断された場合、平行移動スキャンラインデータ変換部204において、フォントデータを平行移動させたときのスキャンラインデータを生成する(S305)。平行移動量は、フォントの描画位置が平行移動前とずれて見えることがない程度に小さい大きさであることが望ましい。具体的には、平行移動によって得られるスキャンラインデータとS302で得られるスキャンラインデータを比較して、ピクセルの階調が1増減する程度の平行移動量が望ましい。例えば、階調数をNとした場合、(N−1)分の1ピクセルを平行移動量とすると、条件に合致する。ここでは、異なる2つの平行移動量を適用して、2つの平行移動させたスキャンラインデータを生成する。平行移動量として平行移動量Aと平行移動量Bの2つを計算することとし、平行移動量Aは、X軸方向に0、Y軸方向に+0.25ピクセルの平行移動とし、平行移動量Bは、X軸方向に0、Y軸方向に−0.25ピクセルの平行移動とする。
本実施例では平行移動量をY軸方向のみに限定したが、X軸方向の平行移動であっても、X軸方向とY軸方向両方の平行移動であっても構わない。また、例えば日本語の漢字などは横向きの(X軸に平行な)画が多く、Y軸方向のみの平行移動で十分効果が表れることがあるので、フォントの文字コードに応じて平行移動量を変更するようにしてもよい。また、平行移動量の組み合わせの数は1つであっても複数であっても構わない。さらに、S305で生成する平行移動させたスキャンラインデータは、1つでもあっても複数であっても構わない。
平行移動量Aを適用したフォントデータのフォント形状を図示したのが図5(d)である。これをスキャンラインデータに変換した結果を図示したものが図5(e)である。また、平行移動量Bを適用したフォントデータのフォント形状を図示したものが図5(f)で、これをスキャンラインデータに変換した結果が図5(g)である。
次に、スコア計算部205において、スキャンラインデータ変換部202で生成されたスキャンラインデータと、平行移動スキャンラインデータ変換部で生成された平行移動したスキャンラインデータについてスコアを計算する(S306)。スコア計算について、図5(c)で示したスキャンラインデータに基づいて詳細に説明する。スコア計算は、スキャンラインデータまたは平行移動したスキャンラインデータを縦方向(Y軸方向)に走査し、隣接するピクセルの階調の差の絶対値を関数に入力し、得られる値を合計することで処理される。図5(c)において、例えばピクセル(0,0)の階調は0、ピクセル(6,1)の階調は3である。図6(a)は、スコア計算処理を示したフローチャートである。g(x,y)はピクセル(x,y)の階調を示しており、Mは生成されたスキャンラインデータのX軸方向の幅、NはY軸方向の幅を示している。I、J、Sは変数であり、Sが最終的に求めるスコアとなる。図5(c)の例では、M=N=8である。関数F(t)はtに関する一変数関数で、入力されるtは階調の差の絶対値、つまり0以上の整数であり、さらに図6(c)に示した条件を満たすものとする。
本実施例では、関数F(t)をF(t)=2t−1と定義する。F(t)を1階微分した導関数をF´(t)とすると、F´(t)=2tlog2となる。t>0において、F´(t)は単調増加関数であることは明らかであり、図6(c)の条件を満たす。スコア計算処理は図6(a)に従い、まず変数Sを0で初期化する(S601)。次に、I、Jを変数とした入れ子のループを実行する(S602、S603)。ループの中では、上下に隣接しているピクセル間の階調の差の絶対値を求め、関数F(t)に入力し、返り値を変数Sに加算する(S604)。この処理を、すべての上下で隣接するピクセルの組み合わせで行うことにより、計算されたSがスコアとなる。
図5(c)で示したスキャンラインデータについてスコアを計算すると、階調差1となる組み合わせが23個、階調差2となる組み合わせが6個、階調差3となる組み合わせが7個あるので、スコアは90となる。
次に、S305で生成された平行移動したスキャンラインデータについても同様にスコア計算を行う。図5(e)に図示された平行移動量Aを適用した平行移動したスキャンラインデータについてスコア計算を行うと、スコアは90となる。図5(g)で図示された平行移動量Bを適用した平行移動したスキャンラインデータについてスコア計算を行うと、スコアは255となる。
なお、S306の処理について、ここでは説明のためスキャンラインデータおよび平行移動したスキャンランデータのスコアを順次計算するように説明したが、それぞれのスコア計算処理は独立しており、図6(c)に示したように並列に実行することが可能である。並列処理は複数のプロセスあるいはスレッドを実行することで実現が可能である。また、スキャンラインデータのピクセル間の組み合わせを順次取得してスコアを計算している例を用いて説明したが、これらの処理を並列に実行するようにしてもよい。図6(d)は、ピクセル間の組み合わせを取得する処理を並列処理するようにしたときのフローチャートで、この場合2つの処理が並列に実行される。並列処理数は3つ以上でも構わない。ここでの並列処理は数のプロセスあるいはスレッドでも実現可能であるし、SIMD(Single Instruction Multiple Data)やその拡張機能を用いて実現することも可能である。
本実施例では、平行移動量A、平行移動量BがともにY軸方向のみとなっているため、上下に隣接しているピクセル間の階調差に基づいて計算を行った。もしX軸方向にも平行移動させた場合は左右に隣接するピクセル間の階調差についても計算し、スコアに反映させる必要がある。
また、関数F(t)をF(t)=2t−1と定義した例について説明したが、図6(b)に示した条件を満たす関数であれば他の定義でもよい。例えば、F(t)=t2であってもよい。この場合、図5(c)に示されたスキャンラインデータのスコアは120、図5(e)に示された平行移動したスキャンラインデータのスコアは110、図5(g)に示された平行移動したスキャンラインデータのスコアは310となる。また、連続関数である必要はなく、階調差の絶対値としてとりうる値の集合を始域とし、図6(b)に示された条件を満たす写像として定義されてもよい。本実施例では、階調の差の絶対値としてとりうる値は0、1、2、3、4である。始域を集合{0,1,2,3,4}とし、これらの始域に対してのみ定義された関数(写像)であってもよく、例えばF(0)=0,F(1)=1,F(2)=3,F(3)=6,F(4)=10と、始域に対してのみ定義されていてもよい。
S306でスキャンラインデータおよび平行移動したスキャンラインデータについてスコアの計算が完了したあと、スキャンラインデータ決定部206において、描画するスキャンラインデータを決定する(S307)。ここでは、スコアの最も高いスキャンラインデータを選択する。本実施例においては、平行移動量Bを適用した平行移動したスキャンラインデータのスコアが最も高いので、それを選択する。次に、描画処理部207において、選択されたスキャンラインデータに基づいて描画処理を行い(S308)、処理を終了する。
以上説明した処理制御を行うことで、視認性の高いフォントを描画することができる。
なお、これらの実施形態では、描画処理装置を例に説明したが、本発明は、印刷装置、デジタルカメラ、複写機、複合機、スキャナ、テレビ等、表示部を有するあらゆる装置に適用可能である。
なお、これらの実施形態では、描画処理装置を例に説明したが、本発明は、印刷装置、デジタルカメラ、複写機、複合機、スキャナ、テレビ等、表示部を有するあらゆる装置に適用可能である。
本発明はソフトウエアにより実現しても良い。すなわち、ソフトウエアのプログラムコードを記録した記録媒体をシステムあるいは装置に供給し、そのシステムあるいは装置のCPUが記録媒体に格納されたプログラムコードを読み出し実行することで実現しても良い。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、磁気テープ、メモリカードなどを用いることができる。また、本発明は、プログラムコードの指示に基づき、コンピュータ上で稼動しているオペレーティングシステムなどが実際の処理の一部または全部を行い、その処理によって機能が実現される場合にも適用され得る。
Claims (13)
- ベクトル形式のフォントデータを取得するフォントデータ取得手段と、
前記フォントデータをスキャンラインデータに変換するスキャンラインデータ変換手段と、
前記フォントデータを平行移動させたときのスキャンラインデータを生成する平行移動スキャンラインデータ変換手段と、
前記スキャンラインデータと前記平行移動したスキャンラインデータから、それぞれのスコアを計算するスコア計算手段と、
前記スコアを比較し、描画するスキャンラインデータを決定するスキャンラインデータ決定手段と、
前記スキャンラインデータ決定手段で決定されたスキャンラインデータに基づいて、フォントを描画する描画処理手段を有することを特徴とする描画処理装置。 - 前記平行移動スキャンラインデータ変換手段は、平行移動量を適用して、平行移動したスキャンラインデータを生成することを特徴とする請求項1に記載の描画処理装置。
- 前記平行移動スキャンラインデータ変換手段は、アンチエイリアス処理の階調数によって平行移動量を決定することを特徴とする、請求項2に記載の描画処理装置。
- 平行移動したスキャンラインデータを生成する処理を行うかどうかを判定する判定手段を有し、平行移動したスキャンラインデータを生成する処理を行わないと判定された場合、前記描画処理手段は、前記スキャンラインデータ変換手段によって生成されたスキャンラインデータに基づいて描画処理を行うことを特徴とする請求項1乃至3何れか1項に記載の描画処理装置。
- 前記判定手段は、描画モードが高品位描画モードであるか、高速描画モードであるかを判定し、高速描画モードである場合に平行移動したスキャンラインデータを生成する処理を行わないと判定することを特徴とする請求項4に記載の描画処理装置。
- 前記判定手段は、描画するフォントのサイズを取得し、フォントサイズが所定の閾値より大きい場合に平行移動したスキャンラインデータを生成する処理を行わないと判定することを特徴とする請求項4に記載の描画処理装置。
- 前記平行移動スキャンラインデータ変換手段は、複数の平行移動したスキャンラインデータを並列処理で生成することを特徴とする請求項1乃至6の何れか1項に記載の描画処理装置。
- 描画処理装置の制御方法であって、
フォントデータ取得手段が、ベクトル形式のフォントデータを取得するフォントデータ取得工程と、
スキャンラインデータ変換手段が、前記フォントデータをスキャンラインデータに変換するスキャンラインデータ変換工程と、
平行移動スキャンラインデータ変換手段が、前記フォントデータを平行移動させたときのスキャンラインデータを生成する平行移動スキャンラインデータ変換工程と、
スコア計算手段が、前記スキャンラインデータと前記平行移動したスキャンラインデータから、それぞれのスコアを計算するスコア計算工程と、
スキャンラインデータ決定手段が、前記スコアを比較し、描画するスキャンラインデータを決定するスキャンラインデータ決定工程と、
描画処理手段が、前記スキャンラインデータ決定工程で決定されたスキャンラインデータに基づいて、フォントを描画する描画処理工程を有することを特徴とする描画処理装置の制御方法。 - 判定手段が、平行移動したスキャンラインデータを生成する処理を行うかどうかを判定する判定工程を有し、平行移動したスキャンラインデータを生成する処理を行わないと判定された場合、前記平行移動スキャンラインデータ変換工程は行わず、前記描画処理工程は、前記スキャンラインデータ変換手段によって生成されたスキャンラインデータに基づいて描画処理を行うことを特徴とする請求項8に記載の描画処理装置の制御方法。
- 前記判定工程は、描画モードが高品位描画モードであるか、高速描画モードであるかを判定し、高速描画モードである場合に平行移動したスキャンラインデータを生成する処理を行わないと判定することを特徴とする請求項9に記載の描画処理装置の制御方法。
- 前記判定工程は、描画するフォントのサイズを取得し、フォントサイズが所定の閾値より大きい場合に平行移動したスキャンラインデータを生成する処理を行わないと判定することを特徴とする請求項9に記載の描画処理装置の制御方法。
- コンピュータを請求項1乃至7の何れか1項に記載の描画処理装置として機能させるためのプログラム。
- 請求項12に記載のプログラムを格納した、読み取り可能な記憶媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012209494A JP2014063105A (ja) | 2012-09-24 | 2012-09-24 | 描画処理装置およびその制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012209494A JP2014063105A (ja) | 2012-09-24 | 2012-09-24 | 描画処理装置およびその制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014063105A true JP2014063105A (ja) | 2014-04-10 |
Family
ID=50618383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012209494A Pending JP2014063105A (ja) | 2012-09-24 | 2012-09-24 | 描画処理装置およびその制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014063105A (ja) |
-
2012
- 2012-09-24 JP JP2012209494A patent/JP2014063105A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20160051154A (ko) | 렌더링 방법, 렌더링 장치 및 전자 장치 | |
JP2007264989A (ja) | 図形描画装置、図形描画方法、およびプログラム | |
CN105701852A (zh) | 用于渲染的设备和方法 | |
US20100283780A1 (en) | Information processing apparatus, information processing method, and storage medium | |
US9064340B2 (en) | Drawing apparatus, drawing method, and drawing program | |
JP6298422B2 (ja) | マンマシンインターフェースのグラフィック表示用の文字列の処理技術 | |
JP2009301284A (ja) | 描画装置および方法 | |
JP4370438B2 (ja) | ベクター画像描画装置、ベクター画像描画方法およびプログラム | |
JP5172640B2 (ja) | ベクトル図形描画装置 | |
JP2007265035A (ja) | 描画装置及び破線描画方法 | |
JP2010108205A (ja) | 超解像画像作成方法 | |
US20170289493A1 (en) | Projection apparatus, image processing apparatus, and image processing method | |
JP2014063105A (ja) | 描画処理装置およびその制御方法 | |
JP5159949B2 (ja) | ベクトル図形描画装置 | |
JP2003162728A (ja) | 画像処理装置及び画像出力装置 | |
JP3034140B2 (ja) | 文字生成方法及びその装置 | |
US7821515B2 (en) | Method for automatic font character height restriction | |
JP2014085402A (ja) | 描画処理装置およびその制御方法 | |
US20120154429A1 (en) | Apparatus and method for smoothed aliasing on a two-dimensional plane | |
JP2012039331A (ja) | 視差画像作成装置、視差画像作成方法、プログラム及び記憶媒体 | |
WO2021245875A1 (ja) | 画像合成装置及び画像合成方法 | |
JP5492911B2 (ja) | 文字作成方法、および文字作成装置 | |
JP7133094B2 (ja) | 画像処理装置、画像処理方法、及びプログラム | |
JP2010140101A (ja) | 描画装置 | |
JP2009009428A (ja) | ベクター画像描画回路およびベクター画像描画方法 |