JPWO2013175520A1 - 文字描画装置 - Google Patents
文字描画装置 Download PDFInfo
- Publication number
- JPWO2013175520A1 JPWO2013175520A1 JP2014516502A JP2014516502A JPWO2013175520A1 JP WO2013175520 A1 JPWO2013175520 A1 JP WO2013175520A1 JP 2014516502 A JP2014516502 A JP 2014516502A JP 2014516502 A JP2014516502 A JP 2014516502A JP WO2013175520 A1 JPWO2013175520 A1 JP WO2013175520A1
- Authority
- JP
- Japan
- Prior art keywords
- character
- vector
- directed graph
- unit
- horizontal
- 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
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/22—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of characters or indicia using display control signals derived from coded signals representing the characters or indicia, e.g. with a character-code memory
- G09G5/24—Generation of individual character patterns
- G09G5/246—Generation of individual character patterns of ideographic or arabic-like characters
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Controls And Circuits For Display Device (AREA)
- Image Generation (AREA)
Abstract
入力部から入力された文字コードに対応する文字ベクトルデータをフォントデータベースから取得するフォントデータロード部(102)と、フォントデータロード部(102)で取得された文字ベクトルデータ内の各ベクトルの上下左右位置関係および同一位置関係を表現する有向グラフで構築された有向グラフ構造を算出する有向グラフ算出部(103)と、有向グラフ算出部(103)において算出された有向グラフ構造を用いて、水平ベクトルおよび垂直ベクトルの各々に対して、同一位置関係にある文字ベクトルデータのすべてのセグメントに適用可能なグリッド・フィッティング方法で、上下左右関係でのグリッド・フィッティング処理を行うグリッド・フィッティング部(104)と、グリッド・フィッティング部(104)においてグリッド・フィッティング処理がなされた文字ベクトルデータをラスタライズして文字画像にするラスタライズ部(105)と、スタライズ部(105)でラスタライズして得られた文字画像を表示する表示部(106)を備えている。
Description
この発明は、低解像度の表示器に高品質なスケーラブルフォントの文字を表示させるために、フォントデータの各ベクトルの位置をグリッドに合わせるグリッド・フィッティングを行う文字描画装置に関するものである。
従来、高解像度の表示器に文字を描画する際には、スケーラブルなベクトルデータで表現された文字(スケーラブルフォント)が使用される。この際、文字の輪郭をスムーズに見せるためにアンチエイリアス処理が行われる。
一方、低解像度の表示器にスケーラブルフォントの文字を表示させると、アンチエイリアス処理が行われた部分がぼけ、または、かすれに見えてしまい、文字の視認性が低下する。この問題を解消するために、文字を表すベクトルデータの位置をピクセル位置に合わせるグリッド・フィッティングを行うことにより、レンダリング後の線がピクセルに跨ることを防ぎ、文字のぼけ、または、かすれを低減する方法が提案されている。
このような文字のぼけ、または、かすれの低減を実現する最も基本的な方法は、フォントデータの中にドット数およびポイント数に基づき保持されている補正情報(「ヒント情報」という)を用いて、ベクトルデータを補正することである。この補正により、文字品質の向上を図ることができる(例えば、特許文献1参照)。ここで、ヒント情報とは、各ベクトルデータの位置および太さなどをサイズに応じてどのように制御するのかを記述した情報である。
一方、ヒント情報を保持すると、フォントデータサイズが大きくなるため、自動的にヒント情報を作成する方法も提案されている。例えば、特許文献2は、ヒント情報を保持していないフォントデータに対し、文字を描画する際に水平ベクトルおよび垂直ベクトルを計算し、これらの幅を丸めて整数値となるようにし、ぼけ、または、かすれを低減する方法を開示している。この特許文献2は、さらに、同じ位置にある水平ベクトルおよび垂直ベクトル群をまとめることにより、文字の各ベクトルを揃え、文字の視認性を高める方法を開示している。
さらに、特許文献3は、ヒント情報を保持していないフォントデータに対して、DAG(Direct Acyclic Graph:有向非循環リスト)を作成し、このDAGを走査して衝突が発生した場合には、セグメントをマージすることにより、文字のつぶれを発生させず、文字の品質を向上させる方法を開示している。
しかしながら、特許文献1に示されたフォントデータにヒント情報を保持する方法では、ヒント情報の分だけフォントデータサイズが増大するという問題がある。これに対し、ヒント情報をフォントデータ内に保持しないことにより、フォントデータサイズを低減できるようにした他の技術においても、以下のような問題がある。
すなわち、特許文献2に開示された技術では、水平ベクトルおよび垂直ベクトルを抽出し、かつ、同じ位置にある水平ベクトルおよび垂直ベクトルをまとめることにより、文字の隣接関係を保持しているが、水平ベクトル間および垂直ベクトル間の関係が考慮されていないために、例えば縦に並んだ水平ベクトルが重なりあって文字のつぶれが発生する場合がある。
また、特許文献3に開示された技術では、文字のつぶれが発生するような場合には、ベクトルをマージすることにより、文字のつぶれを防いでいるが、DAGで構築された関係についてのみつぶれ防止が考慮されるために、各DAGの位置がずれてしまい、表示された文字に違和感を覚える場合がある。
この発明は、上述した諸問題を解決するためになされたものであり、低解像度の表示器に高品質なスケーラブルフォントの文字を描画することができ、しかも、フォントデータサイズを低減できる文字描画装置を提供することを目的とする。
この発明に係る文字描画装置は、情報を入力する入力部と、文字ベクトルデータから成るフォントデータを格納するフォントデータベースと、入力部から入力された文字コードに対応する文字ベクトルデータをフォントデータベースから取得するフォントデータロード部と、フォントデータロード部で取得された文字ベクトルデータ内の各ベクトルの上下左右位置関係および同一位置関係を表現する有向グラフで構築された有向グラフ構造を算出する有向グラフ算出部と、有向グラフ算出部において算出された有向グラフ構造を用いて、水平ベクトルおよび垂直ベクトルの各々に対して、同一位置関係にある文字ベクトルデータのすべてのセグメントに適用可能なグリッド・フィッティング方法で、上下左右位置関係でのグリッド・フィッティング処理を行うグリッド・フィッティング部と、グリッド・フィッティング部においてグリッド・フィッティング処理がなされた文字ベクトルデータをラスタライズして文字画像にするラスタライズ部と、スタライズ部でラスタライズして得られた文字画像を表示する表示部を備えている。
この発明に係る文字描画装置によれば、低解像度の表示器に高品質なスケーラブルフォントの文字を描画することができ、しかも、フォントデータサイズを低減できる。
以下、この発明の実施の形態を、図面を参照しながら詳細に説明する。
実施の形態1.
図1は、この発明の実施の形態1に係る文字描画装置の構成を示すブロック図である。この文字描画装置は、入力部101、フォントデータロード部102、有向グラフ算出部103、グリッド・フィッティング部104、ラスタライズ部105、表示部106およびフォントデータベース112を備えている。
実施の形態1.
図1は、この発明の実施の形態1に係る文字描画装置の構成を示すブロック図である。この文字描画装置は、入力部101、フォントデータロード部102、有向グラフ算出部103、グリッド・フィッティング部104、ラスタライズ部105、表示部106およびフォントデータベース112を備えている。
入力部101は、文字のフォントフェイス名、フォント(ローマン体、ボールド体またはイタリック体など)の設定、文字を描画する際の大きさを示すポイント数、フォントデータ内の表示する文字を指定する文字コード(UTF−16、SHIFT―JISコードなどで表現された文字を特定するための情報)、文字描画位置または色などを入力するために使用される。この入力部101から入力された情報は、フォントデータロード部102に送られる。
フォントデータベース112は、フォントデータを格納している。このフォントデータベース112に格納されているフォントデータは、基本的に、ベクトルデータで表現されたスケーラブルフォントを表すデータである。
フォントデータロード部102は、入力部101から送られてくる情報に基づき、フォントデータベース112にアクセスし、指定された文字コードのベクトルデータ(以下、「文字ベクトルデータ」という)を取得する。また、フォントデータロード部102は、文字ベクトルデータのみでなく、文字を描画する際に必要な文字のベースラインから上方向の高さを示すアセンダ情報、下方向の高さを示すディセンダ情報、上付き文字および下付き文字の配置位置情報なども取得する。このフォントデータロード部102で取得された情報は、有向グラフ算出部103に送られる。
有向グラフ算出部103は、フォントデータロード部102から送られてくる文字ベクトルデータに対して、グリッド・フィッティングを効率的に行うために、水平ベクトル同士、または、垂直ベクトル同士に関係性を持たせる処理を行い、DAGを算出する。この有向グラフ算出部103で算出されたDAGは、グリッド・フィッティング部104に送られる。この有向グラフ算出部103で行われる処理の詳細については後述する。
グリッド・フィッティング部104は、有向グラフ算出部103から送られてくるDAGを用いて、文字ベクトルデータのグリッド・フィッティング処理を実行する。このグリッド・フィッティング部104においてグリッド・フィッティング処理された結果は、ラスタライズ部105に送られる。このグリッド・フィッティング部104で行われる処理の詳細については後述する。
ラスタライズ部105は、グリッド・フィッティング部104から送られてきたグリッド・フィッティング済の文字ベクトルデータをラスタライズする。ラスタライズの方法については、例えば特表2006−521626号公報および特表2006−521582号公報に開示された技術を組み合わせることにより実現できる。ここでは詳細な説明は省略するので、必要に応じて上記公報を参照されたい。このラスタライズ部105におけるラスタライズによって得られたデータは、表示部106に送られる。
表示部106は、ラスタライズ部105から送られてきたデータに基づき、文字ベクトルデータをラスタライズした結果を表示する。
次に、有向グラフ算出部103で行われる処理の詳細について説明する。まず、有向グラフについて説明する。有向グラフとは、図2(A)に示すように、グラフの各頂点が有向辺で結ばれているものをいう。また、DAGは有向非循環グラフのことであり、図2(A)に示すように、グラフは非循環であるものを指す。ここで、非循環であるとは、グラフの各頂点を有向辺でたどったときに、もとの頂点に戻ることができないことを指す。したがって、図2(B)に示すグラフは循環しているという。
文字ベクトルデータの場合は、グラフの各頂点は、ベクトルデータの各セグメントになる。ここで、文字ベクトルデータの構造について説明する。文字ベクトルデータは、移動、線描画および曲線描画などといったペンコマンドから構成されており、フォントレンダラは、これらのペンコマンドで表現された文字ベクトルデータを走査して、フォントをラスタライズする。ここで、線描画および曲線描画コマンドとして表現されたベクトルデータを、セグメントと呼ぶ。以下では、水平ベクトルおよび垂直ベクトルをそれぞれ水平セグメントおよび垂直セグメントと呼ぶ場合もある。
有向グラフ算出部103では、上述した有向グラフ構造を文字ベクトルデータから構築する処理が行われる。すなわち、有向グラフ算出部103では、まず、有向グラフの算出に必要な構造として、接続情報が、以下に説明する接続情報算出処理によって算出される。その後、水平セグメント同士および垂直セグメント同士の各々に対して、有向グラフ構造が、以下に説明する有向グラフ構造構築処理によって構築される。
まず、文字ベクトルデータ内の接続情報を算出する接続情報算出処理について説明する。ここでいう接続情報として、図3に示すような2つのパターンがある。1つは図3(A)に示したように、現在のセグメントから次のセグメントへ端点でつながるような場合(連接関係)であり、他の1つは図3(B)に示すような2つのセグメントが交差するような場合(交差関係)である。このような接続関係を示す情報は、ベクトルデータの各セグメントに保持できる。すなわち、連接関係については双方向リスト構造などで保持し、交差関係については、交差セグメントのリストなどとして保持することができる。
図4は、接続情報算出処理を示すフローチャートである。この接続情報算出処理では、ループ401において、すべてのセグメントが走査される。ここで、現在着目しているセグメントをeとする。このループ401内で、eを含まない他のすべてのセグメントに対して走査が行われる(ループ402)。ここで、着目しているループ402のセグメントをe’とする。eとe’の組に対して、まず、eとe’が連接するかどうかが調べられる(ステップ403)。これは、eとe’の端点が同一であるか否かをチェックすることにより行われる。この際、端点に対して所定の閾値を設け、その範囲内に入るものを「連接する」と判断するように構成することもできる。
ステップ403において連接することが判断された場合は、eに対してe’が連接している旨が登録され(ステップ404)、処理はループ402の次のセグメントに進む。ステップ403において連接しないことが判断された場合は、次いで、eとe’が交差するかどうかが調べられる(ステップ405)。この交差するかどうかは、外積を求めることにより判断することができる。ステップ405において、eとe’が交差することが判断された場合は、交差関係として、eに対してe’が登録される(ステップ406)。その後、処理はループ402の次のセグメントに進む。一方、ステップ405において交差しないことが判断された場合には、ループ402の次のセグメントに進む。ループ402のすべてのセグメントに対する走査が完了したことが判断されると、処理はループ401の次のセグメントに進み、ループ401の全セグメントの処理が完了したら、ループ401は終了する。
上述した処理によって、ベクトルデータ内の接続情報を求めることができる。なお、ここでは接続情報を求めるために、全セグメントに対する走査を行っているが、交点算出の方法として多くのアルゴリズムが知られているので、これらのアルゴリズムを用いることもできる。
次に、水平セグメント同士および垂直セグメント同士に対する有向グラフ構造構築処理を説明する。水平セグメントと垂直セグメントに対する有向グラフ構造構築は、互いに独立して行うことができるため、以下では水平セグメントについて説明する。
まず、有向グラフ構造を抽出する際の頂点同士(セグメント同士)の辺での向き付け規則について説明する。ここでは、上下位置関係を表すfamily関係とfriend関係という2つの関係で向き付けが実施される。
まず、family関係とは、図5(A)に示す「菱」という文字を構成する「土」という文字のように、水平セグメント同士に接続情報算出処理において求められた接続関係がある場合を指す。したがって、「菱」という文字の草冠内の水平セグメントと、「土」の中の水平セグメントはfamily関係ではない。ただし、接続関係がなくても、水平セグメントのX座標の範囲が一定以上共通しており、かつ、Y座標の高さが所定の閾値以内にあるものをfamily関係とすることもできる。また、水平セグメントにおいては、family関係を有するセグメントのうち、上側のセグメントをparent、下側のセグメントをchildと呼ぶ。これらは、文字ベクトルデータ内の各ベクトルの上下位置関係を表現する。なお、垂直セグメントについては、文字ベクトルデータ内の各ベクトルの左右位置関係を表現する。
また、friend関係とは、図5(B)に示す「闘」という文字に見られるように、同じ高さに存在する水平セグメント同士の関係をいい、文字ベクトルデータ内の各ベクトルの同一位置関係を表現する。そのため、「闘」という文字の門構えの一番上に存在する2本の水平セグメント同士は、friend関係となり、門構えの中に存在する「豆」と「寸」の文字の中の水平セグメント同士はfriend関係ではない。この関係を保持するためには、各水平セグメントに対して、child関係にある水平セグメントを片方向リストで保持し、friend関係にある水平セグメントを双方向リストで保持するなどの方法を用いることができる。
図6は、上述した2つの関係を持つ有向グラフ構造を構築する有向グラフ構造構築処理を示すフローチャートである。まず、全セグメントを走査し、水平セグメントを抽出してリストで保持する(ステップ601)。ここで、水平セグメントかどうかは、その両端点が同じY座標の値を持つか否かによって判断される。なお、両端点のY座標の差が所定の閾値以内であるか否かによって判断するように構成することもできる。このようにして抽出された水平セグメントはY座標の昇順にソートされる(ステップ602)。このステップ602で得られた水平セグメントのソート済み双方向リストをEとする。
ループ603では、リストEを昇順に走査して、各セグメントeが処理される。ループ603内では、さらにループ604の処理が行われ、eのY座標以下にあるセグメントが降順に走査される。これは、リストEを逆順にたどることにより実現される。ここで、現在着目しているセグメントをe’とする。まず、eがe’のparentかどうかが調べられる(ステップ605)。これは、eの接続関係をたどり、その中にe’が含まれるか否かを調べることにより行うことができる。この際、eと接続関係にあるセグメントを、e’も接続関係として保持しているかどうかが確認される。また、eと接続関係にあるセグメントと連接関係にあるセグメントを、e’が接続関係として保持する可能性もあるので、セグメントが幅優先探索で調べられ、eとe’にfamily関係があるかどうかが調べられる。
ステップ605においてeとe’にfamily関係があることが判断された場合は、eにe’がchildとして登録される(ステップ606)。ここで、eと接続関係にあるセグメントからchildが得られたら、ループ604においてステップ605を再び実行する際は、このセグメントは検索の対象とされない。これは、1つのセグメントの接続関係から、複数のchildが得られる可能性があり、かつ、それらのchildにはさらにfamily関係があるため、これらの間は直列なfamily関係で結べばよいからである。これにより、探索回数を削減し、処理を高速化することができる。ステップ606が実行された後は、ループ604において次のセグメントが走査される。
ステップ605においてeとe’にfamily関係がないことが判断された場合は、eがe’のfriendであるかどうかが調べられる(ステップ607)。このステップ607の処理は、eとe’のY座標が同じ、または、そのY座標の差が所定の閾値以内であり、かつ、eとe’の幅が同じ、または、その差が所定の閾値以内であるか否かを調べることにより行われる。ステップ607において、eとe’がfriend関係にあることが判断された場合は、friend関係である旨がeとe’の各々に登録される(ステップ608)。その後、ループ604において次のセグメントが走査される。一方、ステップ607において、friend関係でないことが判断された場合は、ループ604において次のセグメントが走査される。ループ604が終了したら、次にループ603において次のセグメントが走査される。ループ603においてすべてのセグメントの走査が完了したら、有向グラフ構造構築処理は終了する。
以上の有向グラフ構造構築処理のフローチャートおよび説明において、「水平」と記載されている部分を「垂直」に、「上」を「右」に、「下」を「左」にというように読み替えれば、垂直セグメントについても上記と同様に有向グラフ構造を実現することができる。また、水平セグメントおよび垂直セメントの各々に対する有向グラフ構造構築処理では、各処理をシーケンシャルに実行することができるが、複数のCPUを保持するシステムでは、各処理を並列に実行することもでき、この場合は、有向グラフ構造構築処理を高速化できる。
次に、グリッド・フィッティング部104で行われる処理の詳細について説明する。グリッド・フィッティング部104は、上述した有向グラフ構造を用いて、グリッド・フィッティング処理を実行する。グリッド・フィッティング処理も、有向グラフ算出部103での処理と同様に、水平セグメントおよび垂直セグメントの各々に対して独立に処理を実行できるので、以下では水平セグメントを例に挙げて説明する。なお、以下で説明する内容は垂直セグメントに対しても同様に実現できる。
図7は、グリッド・フィッティング部104で行われるグリッド・フィッティング処理を示すフローチャートである。グリッド・フィッティング部104では、まず、ループ701において、有向グラフ算出部103で実行される有向グラフ構造構築処理のステップ602で求められた双方向リストEが使用される。ループ701では、リストEの内部のセグメントが昇順に1つずつ処理される。ここで、着目しているリストのセグメントをeとする。ループ701内では、まず、eにグリッド・フィッティングが必要であるかどうかが調べられる(ステップ702)。ここで、グリッド・フィッティングの要否の判断は、例えば、特許文献3に開示された技術で採用されている方法によって行うことができるが、この実施の形態1に係る文字描画装置では、その方法に依存しない。
ステップ702においてグリッド・フィッティングが必要であると判断された場合には、eのグリッド・フィッティング方法が調査される(ステップ703)。通常、グリッド・フィッティング処理は、あるルールに優先順位が決められているので、どのような規則でグリッド・フィッティングするかを求めることは可能である。また、ここで求めるグリッド・フィッティング方法はchild関係にあるセグメントとの関係を視認性高く保つためのものである。なお、グリッド・フィッティング方法の詳細は、例えば、特許文献3に説明されているので、必要に応じて参照されたい。
次に、ループ705において、eとfriend関係にあるセグメントe’の各々のグリッド・フィッティング方法が調査される(ステップ706)。このようにして、eおよびeとfriend関係にあるすべてのセグメントに対するグリッド・フィッティング方法が得られたら、次いで、その中ですべてのセグメントに対して適用可能なグリッド・フィッティング方法が選択され、そのグリッド・フィッティング方法による処理がeおよびeとfriend関係にあるすべてのセグメントに対して実行される(ステップ707)。ここで、すべてのセグメントに適用可能なグリッド・フィッティング方法を選択するのは、以下の理由による。すなわち、基本的にグリッド・フィッティング方法には優先度があり、優先度の高い方法をすべてのセグメントに対して実行できればよいが、優先度の低い方法しか適用できないセグメントには、それより優先度の高い方法は適用できない。逆に、優先度の高い方法が適用できるセグメントには、優先度の低い方法を割り当てることができるので、すべてのセグメントに適用可能なグリッド・フィッティング方法として、基本的に最も優先度の低い方法が適用される。上述した処理を、ループ701においてすべてのセグメントに対して実行することにより、family関係とfriend関係の双方を考慮し、文字のつぶれがなく、かつ、文字のバランスが整った文字を描画することができる。
上述した処理を実行すると、例えば図8に示すような結果が得られる。ここで、図8(A)はfriend関係を考慮していない場合の例であり、門構えのバランスが崩れている。これに対し、図8(B)はfriend関係を考慮している場合の例であり、文字のバランスが整ったグリッド・フィッティング処理の結果が得られている。
なお、上述した水平ベクトルに対するグリッド・フィッティング処理と垂直ベクトルに対するグリッド・フィッティング処理とをシーケンシャルに実行することができるが、複数のCPUを保持するシステムでは、これらを並列に実行することもでき、この場合は、グリッド・フィッティング処理を高速化できる。
以上説明したように、実施の形態1に係る文字描画装置によれば、低解像度の表示器に文字を表示するに際し、文字のつぶれ、または、バランスの崩れが発生しない、高品質なスケーラブルフォントの文字を描画することができる。また、ヒント情報をフォントデータ内に含まないため、フォントデータサイズを低減することができる。
実施の形態2.
上述した実施の形態1では、friend関係を求める際に、水平セグメントの場合はY座標の値がほぼ等しく、長さもほぼ等しいものを対象としている。そのため、漢字としては別の部首に存在するが、たまたま同じ高さに同じ長さで配置されたものも同様に分類することになる。そこで、実施の形態2では、部首として別である場合は、これらを分離するようにしている。
上述した実施の形態1では、friend関係を求める際に、水平セグメントの場合はY座標の値がほぼ等しく、長さもほぼ等しいものを対象としている。そのため、漢字としては別の部首に存在するが、たまたま同じ高さに同じ長さで配置されたものも同様に分類することになる。そこで、実施の形態2では、部首として別である場合は、これらを分離するようにしている。
この実施の形態2に係る文字描画装置の構成は、実施の形態1に係る文字描画装置と同じである。また、実施の形態2に係る文字描画装置の動作は、実施の形態1に係る文字描画装置の動作と基本的に同じであるが、有向グラフ算出部103で行われる処理のステップ607の判定処理のみが異なる。
図9に示す「脇」という文字を例に挙げて説明する。脇という文字を見たときに、「月」の部分の下側の水平セグメントと、下側に存在する2つの「力」の水平セグメントが同じ位置にあり、かつ、長さもほぼ同じである。実施の形態1では、このような3つの水平セグメントをfriend関係と判定するが、これをfriend関係と判定すると、例えば「力」の位置移動によって、「月」の中の2つの水平セグメントのバランスが悪くなる。そこで、このように部首の違いを分離するルールとして、水平セグメントを図10に示すように分断するセグメントが存在する場合は、水平セグメント同士にfriend関係、つまり同一位置関係を構築しない。
以下、具体的な処理手順を説明する。有向グラフ算出部103で行われる処理のステップ607において、水平セグメントeとe’がfriend関係であるかどうかを判断する際に、eとe’以外のすべてのセグメントを調査し、水平セグメントを分断する辺が存在するかチェックする。この分断するかどうかのチェックは、外積を用いることにより行うことができる。
また、このような方法だけでは、例えば図5(B)に示すような門構えの真ん中の水平線同士をfriend関係にすることができない。そこで、分断セグメントより上に存在するparent、または下に存在するchildの水平セグメント間でfriend関係、つまり同一位置関係にある文字が発生した場合は、分断セグメントの判定は無視するようにする。これは、具体的には、有向グラフ構造構築処理を2回実行することにより実現できる。すでに関係が作られているものについては無視し、一度分断セグメントでfriend関係を構築しなかったセグメント対に対して、各parentおよびchild間でfriend関係が存在するか否かを判定し、存在する場合には現在着目しているセグメント対に対しても、friend関係を構築する。
上述した手順を実行することにより、部首ごとに必要な部分に対してfriend関係を作ることができ、文字全体として必要な部分のバランスを揃えた文字描画を実現することができる。
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
この発明に係る文字描画装置は、小さいフォントデータの容量であるにも拘わらず、高品質で文字を表示することが要求される種々の表示装置に適している。
101 入力部、102 フォントデータロード部、103 有向グラフ算出部、104
グリッド・フィッティング部、105 ラスタライズ部、106 表示部、112 フォントデータベース。
グリッド・フィッティング部、105 ラスタライズ部、106 表示部、112 フォントデータベース。
この発明は、低解像度の表示器に高品質なスケーラブルフォントの文字を表示させるために、フォントデータの各ベクトルの位置をグリッドに合わせるグリッド・フィッティングを行う文字描画装置に関するものである。
従来、高解像度の表示器に文字を描画する際には、スケーラブルなベクトルデータで表現された文字(スケーラブルフォント)が使用される。この際、文字の輪郭をスムーズに見せるためにアンチエイリアス処理が行われる。
一方、低解像度の表示器にスケーラブルフォントの文字を表示させると、アンチエイリアス処理が行われた部分がぼけ、または、かすれに見えてしまい、文字の視認性が低下する。この問題を解消するために、文字を表すベクトルデータの位置をピクセル位置に合わせるグリッド・フィッティングを行うことにより、レンダリング後の線がピクセルに跨ることを防ぎ、文字のぼけ、または、かすれを低減する方法が提案されている。
このような文字のぼけ、または、かすれの低減を実現する最も基本的な方法は、フォントデータの中にドット数およびポイント数に基づき保持されている補正情報(「ヒント情報」という)を用いて、ベクトルデータを補正することである。この補正により、文字品質の向上を図ることができる(例えば、特許文献1参照)。ここで、ヒント情報とは、各ベクトルデータの位置および太さなどをサイズに応じてどのように制御するのかを記述した情報である。
一方、ヒント情報を保持すると、フォントデータサイズが大きくなるため、自動的にヒント情報を作成する方法も提案されている。例えば、特許文献2は、ヒント情報を保持していないフォントデータに対し、文字を描画する際に水平ベクトルおよび垂直ベクトルを計算し、これらの幅を丸めて整数値となるようにし、ぼけ、または、かすれを低減する方法を開示している。この特許文献2は、さらに、同じ位置にある水平ベクトルおよび垂直ベクトル群をまとめることにより、文字の各ベクトルを揃え、文字の視認性を高める方法を開示している。
さらに、特許文献3は、ヒント情報を保持していないフォントデータに対して、DAG(Direct Acyclic Graph:有向非循環リスト)を作成し、このDAGを走査して衝突が発生した場合には、セグメントをマージすることにより、文字のつぶれを発生させず、文字の品質を向上させる方法を開示している。
しかしながら、特許文献1に示されたフォントデータにヒント情報を保持する方法では、ヒント情報の分だけフォントデータサイズが増大するという問題がある。これに対し、ヒント情報をフォントデータ内に保持しないことにより、フォントデータサイズを低減できるようにした他の技術においても、以下のような問題がある。
すなわち、特許文献2に開示された技術では、水平ベクトルおよび垂直ベクトルを抽出し、かつ、同じ位置にある水平ベクトルおよび垂直ベクトルをまとめることにより、文字の隣接関係を保持しているが、水平ベクトル間および垂直ベクトル間の関係が考慮されていないために、例えば縦に並んだ水平ベクトルが重なりあって文字のつぶれが発生する場合がある。
また、特許文献3に開示された技術では、文字のつぶれが発生するような場合には、ベクトルをマージすることにより、文字のつぶれを防いでいるが、DAGで構築された関係についてのみつぶれ防止が考慮されるために、各DAGの位置がずれてしまい、表示された文字に違和感を覚える場合がある。
この発明は、上述した諸問題を解決するためになされたものであり、低解像度の表示器に高品質なスケーラブルフォントの文字を描画することができ、しかも、フォントデータサイズを低減できる文字描画装置を提供することを目的とする。
この発明に係る文字描画装置は、文字ベクトルデータ内の各ベクトルの上下左右位置関係および同一位置関係を表現する有向グラフで構築された有向グラフ構造を算出する有向グラフ算出部と、有向グラフ構造を用いて、水平ベクトルおよび垂直ベクトルの各々に対して、同一位置関係にある文字ベクトルデータのすべてのセグメントに適用可能なグリッド・フィッティング方法で、上下左右位置関係でのグリッド・フィッティング処理を行うグリッド・フィッティング部と、グリッド・フィッティング処理がなされた文字ベクトルデータをラスタライズして文字画像にするラスタライズ部と、を備えている。
この発明に係る文字描画装置によれば、低解像度の表示器に高品質なスケーラブルフォントの文字を描画することができ、しかも、フォントデータサイズを低減できる。
以下、この発明の実施の形態を、図面を参照しながら詳細に説明する。
実施の形態1.
図1は、この発明の実施の形態1に係る文字描画装置の構成を示すブロック図である。この文字描画装置は、入力部101、フォントデータロード部102、有向グラフ算出部103、グリッド・フィッティング部104、ラスタライズ部105、表示部106およびフォントデータベース112を備えている。
実施の形態1.
図1は、この発明の実施の形態1に係る文字描画装置の構成を示すブロック図である。この文字描画装置は、入力部101、フォントデータロード部102、有向グラフ算出部103、グリッド・フィッティング部104、ラスタライズ部105、表示部106およびフォントデータベース112を備えている。
入力部101は、文字のフォントフェイス名、フォント(ローマン体、ボールド体またはイタリック体など)の設定、文字を描画する際の大きさを示すポイント数、フォントデータ内の表示する文字を指定する文字コード(UTF−16、SHIFT―JISコードなどで表現された文字を特定するための情報)、文字描画位置または色などを入力するために使用される。この入力部101から入力された情報は、フォントデータロード部102に送られる。
フォントデータベース112は、フォントデータを格納している。このフォントデータベース112に格納されているフォントデータは、基本的に、ベクトルデータで表現されたスケーラブルフォントを表すデータである。
フォントデータロード部102は、入力部101から送られてくる情報に基づき、フォントデータベース112にアクセスし、指定された文字コードのベクトルデータ(以下、「文字ベクトルデータ」という)を取得する。また、フォントデータロード部102は、文字ベクトルデータのみでなく、文字を描画する際に必要な文字のベースラインから上方向の高さを示すアセンダ情報、下方向の高さを示すディセンダ情報、上付き文字および下付き文字の配置位置情報なども取得する。このフォントデータロード部102で取得された情報は、有向グラフ算出部103に送られる。
有向グラフ算出部103は、フォントデータロード部102から送られてくる文字ベクトルデータに対して、グリッド・フィッティングを効率的に行うために、水平ベクトル同士、または、垂直ベクトル同士に関係性を持たせる処理を行い、DAGを算出する。この有向グラフ算出部103で算出されたDAGは、グリッド・フィッティング部104に送られる。この有向グラフ算出部103で行われる処理の詳細については後述する。
グリッド・フィッティング部104は、有向グラフ算出部103から送られてくるDAGを用いて、文字ベクトルデータのグリッド・フィッティング処理を実行する。このグリッド・フィッティング部104においてグリッド・フィッティング処理された結果は、ラスタライズ部105に送られる。このグリッド・フィッティング部104で行われる処理の詳細については後述する。
ラスタライズ部105は、グリッド・フィッティング部104から送られてきたグリッド・フィッティング済の文字ベクトルデータをラスタライズする。ラスタライズの方法については、例えば特表2006−521626号公報および特表2006−521582号公報に開示された技術を組み合わせることにより実現できる。ここでは詳細な説明は省略するので、必要に応じて上記公報を参照されたい。このラスタライズ部105におけるラスタライズによって得られたデータは、表示部106に送られる。
表示部106は、ラスタライズ部105から送られてきたデータに基づき、文字ベクトルデータをラスタライズした結果を表示する。
次に、有向グラフ算出部103で行われる処理の詳細について説明する。まず、有向グラフについて説明する。有向グラフとは、図2(A)に示すように、グラフの各頂点が有向辺で結ばれているものをいう。また、DAGは有向非循環グラフのことであり、図2(A)に示すように、グラフは非循環であるものを指す。ここで、非循環であるとは、グラフの各頂点を有向辺でたどったときに、もとの頂点に戻ることができないことを指す。したがって、図2(B)に示すグラフは循環しているという。
文字ベクトルデータの場合は、グラフの各頂点は、ベクトルデータの各セグメントになる。ここで、文字ベクトルデータの構造について説明する。文字ベクトルデータは、移動、線描画および曲線描画などといったペンコマンドから構成されており、フォントレンダラは、これらのペンコマンドで表現された文字ベクトルデータを走査して、フォントをラスタライズする。ここで、線描画および曲線描画コマンドとして表現されたベクトルデータを、セグメントと呼ぶ。以下では、水平ベクトルおよび垂直ベクトルをそれぞれ水平セグメントおよび垂直セグメントと呼ぶ場合もある。
有向グラフ算出部103では、上述した有向グラフ構造を文字ベクトルデータから構築する処理が行われる。すなわち、有向グラフ算出部103では、まず、有向グラフの算出に必要な構造として、接続情報が、以下に説明する接続情報算出処理によって算出される。その後、水平セグメント同士および垂直セグメント同士の各々に対して、有向グラフ構造が、以下に説明する有向グラフ構造構築処理によって構築される。
まず、文字ベクトルデータ内の接続情報を算出する接続情報算出処理について説明する。ここでいう接続情報として、図3に示すような2つのパターンがある。1つは図3(A)に示したように、現在のセグメントから次のセグメントへ端点でつながるような場合(連接関係)であり、他の1つは図3(B)に示すような2つのセグメントが交差するような場合(交差関係)である。このような接続関係を示す情報は、ベクトルデータの各セグメントに保持できる。すなわち、連接関係については双方向リスト構造などで保持し、交差関係については、交差セグメントのリストなどとして保持することができる。
図4は、接続情報算出処理を示すフローチャートである。この接続情報算出処理では、ループ401において、すべてのセグメントが走査される。ここで、現在着目しているセグメントをeとする。このループ401内で、eを含まない他のすべてのセグメントに対して走査が行われる(ループ402)。ここで、着目しているループ402のセグメントをe’とする。eとe’の組に対して、まず、eとe’が連接するかどうかが調べられる(ステップ403)。これは、eとe’の端点が同一であるか否かをチェックすることにより行われる。この際、端点に対して所定の閾値を設け、その範囲内に入るものを「連接する」と判断するように構成することもできる。
ステップ403において連接することが判断された場合は、eに対してe’が連接している旨が登録され(ステップ404)、処理はループ402の次のセグメントに進む。ステップ403において連接しないことが判断された場合は、次いで、eとe’が交差するかどうかが調べられる(ステップ405)。この交差するかどうかは、外積を求めることにより判断することができる。ステップ405において、eとe’が交差することが判断された場合は、交差関係として、eに対してe’が登録される(ステップ406)。その後、処理はループ402の次のセグメントに進む。一方、ステップ405において交差しないことが判断された場合には、ループ402の次のセグメントに進む。ループ402のすべてのセグメントに対する走査が完了したことが判断されると、処理はループ401の次のセグメントに進み、ループ401の全セグメントの処理が完了したら、ループ401は終了する。
上述した処理によって、ベクトルデータ内の接続情報を求めることができる。なお、ここでは接続情報を求めるために、全セグメントに対する走査を行っているが、交点算出の方法として多くのアルゴリズムが知られているので、これらのアルゴリズムを用いることもできる。
次に、水平セグメント同士および垂直セグメント同士に対する有向グラフ構造構築処理を説明する。水平セグメントと垂直セグメントに対する有向グラフ構造構築は、互いに独立して行うことができるため、以下では水平セグメントについて説明する。
まず、有向グラフ構造を抽出する際の頂点同士(セグメント同士)の辺での向き付け規則について説明する。ここでは、上下位置関係を表すfamily関係とfriend関係という2つの関係で向き付けが実施される。
まず、family関係とは、図5(A)に示す「菱」という文字を構成する「土」という文字のように、水平セグメント同士に接続情報算出処理において求められた接続関係がある場合を指す。したがって、「菱」という文字の草冠内の水平セグメントと、「土」の中の水平セグメントはfamily関係ではない。ただし、接続関係がなくても、水平セグメントのX座標の範囲が一定以上共通しており、かつ、Y座標の高さが所定の閾値以内にあるものをfamily関係とすることもできる。また、水平セグメントにおいては、family関係を有するセグメントのうち、上側のセグメントをparent、下側のセグメントをchildと呼ぶ。これらは、文字ベクトルデータ内の各ベクトルの上下位置関係を表現する。なお、垂直セグメントについては、文字ベクトルデータ内の各ベクトルの左右位置関係を表現する。
また、friend関係とは、図5(B)に示す「闘」という文字に見られるように、同じ高さに存在する水平セグメント同士の関係をいい、文字ベクトルデータ内の各ベクトルの同一位置関係を表現する。そのため、「闘」という文字の門構えの一番上に存在する2本の水平セグメント同士は、friend関係となり、門構えの中に存在する「豆」と「寸」の文字の中の水平セグメント同士はfriend関係ではない。この関係を保持するためには、各水平セグメントに対して、child関係にある水平セグメントを片方向リストで保持し、friend関係にある水平セグメントを双方向リストで保持するなどの方法を用いることができる。
図6は、上述した2つの関係を持つ有向グラフ構造を構築する有向グラフ構造構築処理を示すフローチャートである。まず、全セグメントを走査し、水平セグメントを抽出してリストで保持する(ステップ601)。ここで、水平セグメントかどうかは、その両端点が同じY座標の値を持つか否かによって判断される。なお、両端点のY座標の差が所定の閾値以内であるか否かによって判断するように構成することもできる。このようにして抽出された水平セグメントはY座標の昇順にソートされる(ステップ602)。このステップ602で得られた水平セグメントのソート済み双方向リストをEとする。
ループ603では、リストEを昇順に走査して、各セグメントeが処理される。ループ603内では、さらにループ604の処理が行われ、eのY座標以下にあるセグメントが降順に走査される。これは、リストEを逆順にたどることにより実現される。ここで、現在着目しているセグメントをe’とする。まず、eがe’のparentかどうかが調べられる(ステップ605)。これは、eの接続関係をたどり、その中にe’が含まれるか否かを調べることにより行うことができる。この際、eと接続関係にあるセグメントを、e’も接続関係として保持しているかどうかが確認される。また、eと接続関係にあるセグメントと連接関係にあるセグメントを、e’が接続関係として保持する可能性もあるので、セグメントが幅優先探索で調べられ、eとe’にfamily関係があるかどうかが調べられる。
ステップ605においてeとe’にfamily関係があることが判断された場合は、eにe’がchildとして登録される(ステップ606)。ここで、eと接続関係にあるセグメントからchildが得られたら、ループ604においてステップ605を再び実行する際は、このセグメントは検索の対象とされない。これは、1つのセグメントの接続関係から、複数のchildが得られる可能性があり、かつ、それらのchildにはさらにfamily関係があるため、これらの間は直列なfamily関係で結べばよいからである。これにより、探索回数を削減し、処理を高速化することができる。ステップ606が実行された後は、ループ604において次のセグメントが走査される。
ステップ605においてeとe’にfamily関係がないことが判断された場合は、eがe’のfriendであるかどうかが調べられる(ステップ607)。このステップ607の処理は、eとe’のY座標が同じ、または、そのY座標の差が所定の閾値以内であり、かつ、eとe’の幅が同じ、または、その差が所定の閾値以内であるか否かを調べることにより行われる。ステップ607において、eとe’がfriend関係にあることが判断された場合は、friend関係である旨がeとe’の各々に登録される(ステップ608)。その後、ループ604において次のセグメントが走査される。一方、ステップ607において、friend関係でないことが判断された場合は、ループ604において次のセグメントが走査される。ループ604が終了したら、次にループ603において次のセグメントが走査される。ループ603においてすべてのセグメントの走査が完了したら、有向グラフ構造構築処理は終了する。
以上の有向グラフ構造構築処理のフローチャートおよび説明において、「水平」と記載されている部分を「垂直」に、「上」を「右」に、「下」を「左」にというように読み替えれば、垂直セグメントについても上記と同様に有向グラフ構造を実現することができる。また、水平セグメントおよび垂直セメントの各々に対する有向グラフ構造構築処理では、各処理をシーケンシャルに実行することができるが、複数のCPUを保持するシステムでは、各処理を並列に実行することもでき、この場合は、有向グラフ構造構築処理を高速化できる。
次に、グリッド・フィッティング部104で行われる処理の詳細について説明する。グリッド・フィッティング部104は、上述した有向グラフ構造を用いて、グリッド・フィッティング処理を実行する。グリッド・フィッティング処理も、有向グラフ算出部103での処理と同様に、水平セグメントおよび垂直セグメントの各々に対して独立に処理を実行できるので、以下では水平セグメントを例に挙げて説明する。なお、以下で説明する内容は垂直セグメントに対しても同様に実現できる。
図7は、グリッド・フィッティング部104で行われるグリッド・フィッティング処理を示すフローチャートである。グリッド・フィッティング部104では、まず、ループ701において、有向グラフ算出部103で実行される有向グラフ構造構築処理のステップ602で求められた双方向リストEが使用される。ループ701では、リストEの内部のセグメントが昇順に1つずつ処理される。ここで、着目しているリストのセグメントをeとする。ループ701内では、まず、eにグリッド・フィッティングが必要であるかどうかが調べられる(ステップ702)。ここで、グリッド・フィッティングの要否の判断は、例えば、特許文献3に開示された技術で採用されている方法によって行うことができるが、この実施の形態1に係る文字描画装置では、その方法に依存しない。
ステップ702においてグリッド・フィッティングが必要であると判断された場合には、eのグリッド・フィッティング方法が調査される(ステップ703)。通常、グリッド・フィッティング処理は、あるルールに優先順位が決められているので、どのような規則でグリッド・フィッティングするかを求めることは可能である。また、ここで求めるグリッド・フィッティング方法はchild関係にあるセグメントとの関係を視認性高く保つためのものである。なお、グリッド・フィッティング方法の詳細は、例えば、特許文献3に説明されているので、必要に応じて参照されたい。
次に、ループ705において、eとfriend関係にあるセグメントe’の各々のグリッド・フィッティング方法が調査される(ステップ706)。このようにして、eおよびeとfriend関係にあるすべてのセグメントに対するグリッド・フィッティング方法が得られたら、次いで、その中ですべてのセグメントに対して適用可能なグリッド・フィッティング方法が選択され、そのグリッド・フィッティング方法による処理がeおよびeとfriend関係にあるすべてのセグメントに対して実行される(ステップ707)。ここで、すべてのセグメントに適用可能なグリッド・フィッティング方法を選択するのは、以下の理由による。すなわち、基本的にグリッド・フィッティング方法には優先度があり、優先度の高い方法をすべてのセグメントに対して実行できればよいが、優先度の低い方法しか適用できないセグメントには、それより優先度の高い方法は適用できない。逆に、優先度の高い方法が適用できるセグメントには、優先度の低い方法を割り当てることができるので、すべてのセグメントに適用可能なグリッド・フィッティング方法として、基本的に最も優先度の低い方法が適用される。上述した処理を、ループ701においてすべてのセグメントに対して実行することにより、family関係とfriend関係の双方を考慮し、文字のつぶれがなく、かつ、文字のバランスが整った文字を描画することができる。
上述した処理を実行すると、例えば図8に示すような結果が得られる。ここで、図8(A)はfriend関係を考慮していない場合の例であり、門構えのバランスが崩れている。これに対し、図8(B)はfriend関係を考慮している場合の例であり、文字のバランスが整ったグリッド・フィッティング処理の結果が得られている。
なお、上述した水平ベクトルに対するグリッド・フィッティング処理と垂直ベクトルに対するグリッド・フィッティング処理とをシーケンシャルに実行することができるが、複数のCPUを保持するシステムでは、これらを並列に実行することもでき、この場合は、グリッド・フィッティング処理を高速化できる。
以上説明したように、実施の形態1に係る文字描画装置によれば、低解像度の表示器に文字を表示するに際し、文字のつぶれ、または、バランスの崩れが発生しない、高品質なスケーラブルフォントの文字を描画することができる。また、ヒント情報をフォントデータ内に含まないため、フォントデータサイズを低減することができる。
実施の形態2.
上述した実施の形態1では、friend関係を求める際に、水平セグメントの場合はY座標の値がほぼ等しく、長さもほぼ等しいものを対象としている。そのため、漢字としては別の部首に存在するが、たまたま同じ高さに同じ長さで配置されたものも同様に分類することになる。そこで、実施の形態2では、部首として別である場合は、これらを分離するようにしている。
上述した実施の形態1では、friend関係を求める際に、水平セグメントの場合はY座標の値がほぼ等しく、長さもほぼ等しいものを対象としている。そのため、漢字としては別の部首に存在するが、たまたま同じ高さに同じ長さで配置されたものも同様に分類することになる。そこで、実施の形態2では、部首として別である場合は、これらを分離するようにしている。
この実施の形態2に係る文字描画装置の構成は、実施の形態1に係る文字描画装置と同じである。また、実施の形態2に係る文字描画装置の動作は、実施の形態1に係る文字描画装置の動作と基本的に同じであるが、有向グラフ算出部103で行われる処理のステップ607の判定処理のみが異なる。
図9に示す「脇」という文字を例に挙げて説明する。脇という文字を見たときに、「月」の部分の下側の水平セグメントと、下側に存在する2つの「力」の水平セグメントが同じ位置にあり、かつ、長さもほぼ同じである。実施の形態1では、このような3つの水平セグメントをfriend関係と判定するが、これをfriend関係と判定すると、例えば「力」の位置移動によって、「月」の中の2つの水平セグメントのバランスが悪くなる。そこで、このように部首の違いを分離するルールとして、水平セグメントを図10に示すように分断するセグメントが存在する場合は、水平セグメント同士にfriend関係、つまり同一位置関係を構築しない。
以下、具体的な処理手順を説明する。有向グラフ算出部103で行われる処理のステップ607において、水平セグメントeとe’がfriend関係であるかどうかを判断する際に、eとe’以外のすべてのセグメントを調査し、水平セグメントを分断する辺が存在するかチェックする。この分断するかどうかのチェックは、外積を用いることにより行うことができる。
また、このような方法だけでは、例えば図5(B)に示すような門構えの真ん中の水平線同士をfriend関係にすることができない。そこで、分断セグメントより上に存在するparent、または下に存在するchildの水平セグメント間でfriend関係、つまり同一位置関係にある文字が発生した場合は、分断セグメントの判定は無視するようにする。これは、具体的には、有向グラフ構造構築処理を2回実行することにより実現できる。すでに関係が作られているものについては無視し、一度分断セグメントでfriend関係を構築しなかったセグメント対に対して、各parentおよびchild間でfriend関係が存在するか否かを判定し、存在する場合には現在着目しているセグメント対に対しても、friend関係を構築する。
上述した手順を実行することにより、部首ごとに必要な部分に対してfriend関係を作ることができ、文字全体として必要な部分のバランスを揃えた文字描画を実現することができる。
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
101 入力部、102 フォントデータロード部、103 有向グラフ算出部、104 グリッド・フィッティング部、105 ラスタライズ部、106 表示部、112 フォントデータベース。
この発明に係る文字描画装置は、文字ベクトルデータ内の水平ベクトル同士の上下位置関係と垂直方向の同一位置関係、および垂直ベクトル同士の左右位置関係と水平方向の同一位置関係を表現する有向グラフ構造を算出する有向グラフ算出部と、有向グラフ構造を用いて、水平ベクトルおよび垂直ベクトルの各々に対して、同一位置関係にある文字ベクトルデータのすべてのセグメントに適用可能なグリッド・フィッティング方法で、上下方向または左右方向でのグリッド・フィッティング処理を行うグリッド・フィッティング部と、グリッド・フィッティング処理がなされた文字ベクトルデータをラスタライズして文字画像にするラスタライズ部と、を備えている。
Claims (5)
- 情報を入力する入力部と、
文字ベクトルデータから成るフォントデータを格納するフォントデータベースと、
前記入力部から入力された文字コードに対応する文字ベクトルデータを前記フォントデータベースから取得するフォントデータロード部と、
前記フォントデータロード部で取得された文字ベクトルデータ内の各ベクトルの上下左右位置関係および同一位置関係を表現する有向グラフで構築された有向グラフ構造を算出する有向グラフ算出部と、
前記有向グラフ算出部において算出された有向グラフ構造を用いて、水平ベクトルおよび垂直ベクトルの各々に対して、同一位置関係にある文字ベクトルデータのすべてのセグメントに適用可能なグリッド・フィッティング方法で、上下左右位置関係でのグリッド・フィッティング処理を行うグリッド・フィッティング部と、
前記グリッド・フィッティング部においてグリッド・フィッティング処理がなされた文字ベクトルデータをラスタライズして文字画像にするラスタライズ部と、
前記ラスタライズ部でラスタライズして得られた文字画像を表示する表示部
とを備えた文字描画装置。 - 有向グラフ算出部は、同一位置関係の有無を、水平ベクトルの場合は、Y座標の差が所定の閾値以内であり、かつ、幅の差が所定の閾値以内であるか否か、垂直ベクトルの場合は、X座標の差が所定の閾値以内であり、かつ、幅の差が所定の閾値以内であるか否かによって判断する
ことを特徴とする請求項1記載の文字描画装置。 - 有向グラフ算出部およびグリッド・フィッティング部の各々は、水平ベクトルに対する処理と垂直ベクトルに対する処理を並列に実行する
ことを特徴とする請求項1記載の文字描画装置。 - 有向グラフ算出部は、水平ベクトル同士または垂直ベクトル同士でベクトル間を分断するベクトルが存在する場合には、同一位置関係を構築しない
ことを特徴とする請求項2記載の文字描画装置。 - 有向グラフ算出部は、水平ベクトル同士または垂直ベクトル同士でベクトル間を分断するベクトルが存在する場合であって、上下左右位置関係において同一位置関係がある場合は、該分断するベクトルを無視する
ことを特徴とする請求項4記載の文字描画装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2012/003304 WO2013175520A1 (ja) | 2012-05-21 | 2012-05-21 | 文字描画装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2013175520A1 true JPWO2013175520A1 (ja) | 2016-01-12 |
Family
ID=49623259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014516502A Pending JPWO2013175520A1 (ja) | 2012-05-21 | 2012-05-21 | 文字描画装置 |
Country Status (3)
Country | Link |
---|---|
JP (1) | JPWO2013175520A1 (ja) |
CN (1) | CN104126199B (ja) |
WO (1) | WO2013175520A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106313907A (zh) * | 2016-08-16 | 2017-01-11 | 江苏科技大学 | 一种基于图像转换的热敏打印机文字打印方法及系统 |
CN106875455A (zh) * | 2017-01-18 | 2017-06-20 | 杭州阿优智能科技有限公司 | 图形绘制引导方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001078053A2 (en) * | 2000-04-10 | 2001-10-18 | Microsoft Corporation | Automatic optimization of the position of stems of text characters |
JP2008276247A (ja) * | 1994-05-16 | 2008-11-13 | Monotype Imaging Inc | フォントデータ記憶および検索方法および装置 |
JP2011022429A (ja) * | 2009-07-17 | 2011-02-03 | Nagoya Institute Of Technology | 毛筆フォント作成方法および毛筆フォント作成プログラム |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4367511B2 (ja) * | 2007-03-26 | 2009-11-18 | セイコーエプソン株式会社 | 文字描画装置、表示装置及び印刷装置 |
-
2012
- 2012-05-21 CN CN201280070131.6A patent/CN104126199B/zh not_active Expired - Fee Related
- 2012-05-21 JP JP2014516502A patent/JPWO2013175520A1/ja active Pending
- 2012-05-21 WO PCT/JP2012/003304 patent/WO2013175520A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008276247A (ja) * | 1994-05-16 | 2008-11-13 | Monotype Imaging Inc | フォントデータ記憶および検索方法および装置 |
WO2001078053A2 (en) * | 2000-04-10 | 2001-10-18 | Microsoft Corporation | Automatic optimization of the position of stems of text characters |
JP2011022429A (ja) * | 2009-07-17 | 2011-02-03 | Nagoya Institute Of Technology | 毛筆フォント作成方法および毛筆フォント作成プログラム |
Also Published As
Publication number | Publication date |
---|---|
CN104126199B (zh) | 2016-03-09 |
CN104126199A (zh) | 2014-10-29 |
WO2013175520A1 (ja) | 2013-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8102397B2 (en) | Method for improving uniform width character strokes using multiple alignment zones | |
US7580039B2 (en) | Glyph outline adjustment while rendering | |
US20070236499A1 (en) | Graphics-rendering apparatus | |
US20160343155A1 (en) | Dynamic filling of shapes for graphical display of data | |
US6614432B1 (en) | Image rendering technique | |
US20160364892A1 (en) | Font deformation method by changing dimensions of at least one partition of a frame surrounding a character | |
JP5067501B2 (ja) | 多色ベクトル画像処理装置および方法 | |
JP6298422B2 (ja) | マンマシンインターフェースのグラフィック表示用の文字列の処理技術 | |
JP4370438B2 (ja) | ベクター画像描画装置、ベクター画像描画方法およびプログラム | |
CN101819641B (zh) | 将字符与图像的采样网格对齐的方法 | |
WO2013175520A1 (ja) | 文字描画装置 | |
JP2010146255A (ja) | ベクトル図形描画装置 | |
JP5777726B2 (ja) | 描画装置及び描画プログラム | |
US9311896B2 (en) | Glyph rendering | |
Lengyel | Gpu-centered font rendering directly from glyph outlines | |
JP2012098951A (ja) | 図形描画処理装置、図形描画処理方法、及びコンピュータプログラム | |
JP5492911B2 (ja) | 文字作成方法、および文字作成装置 | |
JP2001307115A (ja) | 画像処理装置および画像処理方法 | |
JP2018019212A (ja) | 情報処理装置及び描画処理方法、コンピュータプログラム | |
WO2015121962A1 (ja) | 文字描画装置及び文字描画方法及び文字描画プログラム | |
JP2017125934A (ja) | 文字描画装置及び文字描画方法、コンピュータプログラム | |
JP2014142789A (ja) | 情報処理装置、情報処理方法 | |
KR101666131B1 (ko) | 서브 픽셀의 패턴을 고려한 벡터 글꼴의 렌더링 방법 | |
CN115509402A (zh) | 一种调整字体粗体效果的方法、装置、设备、存储介质 | |
JP2017116859A (ja) | 文字描画装置および文字描画方法、コンピュータプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20151201 |