JP6642964B2 - 情報処理装置、情報処理方法、プログラム - Google Patents

情報処理装置、情報処理方法、プログラム Download PDF

Info

Publication number
JP6642964B2
JP6642964B2 JP2015000436A JP2015000436A JP6642964B2 JP 6642964 B2 JP6642964 B2 JP 6642964B2 JP 2015000436 A JP2015000436 A JP 2015000436A JP 2015000436 A JP2015000436 A JP 2015000436A JP 6642964 B2 JP6642964 B2 JP 6642964B2
Authority
JP
Japan
Prior art keywords
path
glyph
point
processing
closed area
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.)
Active
Application number
JP2015000436A
Other languages
English (en)
Other versions
JP2016126198A (ja
Inventor
康弘 吉村
康弘 吉村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2015000436A priority Critical patent/JP6642964B2/ja
Priority to US14/986,493 priority patent/US10360707B2/en
Publication of JP2016126198A publication Critical patent/JP2016126198A/ja
Application granted granted Critical
Publication of JP6642964B2 publication Critical patent/JP6642964B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/00Two-dimensional [2D] image generation
    • G06T11/20Drawing from basic elements
    • G06T11/23Drawing from basic elements using straight lines or curves

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)

Description

本発明は、パスの変形処理に関する。
複数の頂点(制御点)を順に結ぶパスで定義される閉領域を塗りつぶしてフォントを形成するグリフパスがある。このグリフパスを太くするボールド処理が特許文献1に開示される。特許文献1では、パスの進行方向に応じた法線方向に各制御点を移動することでパスの形状を一回り大きくし、そのパスで定義される閉領域を塗りつぶすことでグリフパスのボールド処理が行われる。
特開平8−101675号公報
しかし、特許文献1では、フォントを構成する閉領域が複数ある場合に、各閉領域を定義する各パスの進行方向は同一であることを前提としている。そのため、閉領域によってパスの進行方向が異なる場合に、制御点を移動すべき法線方向が閉領域によって異なってしまい、閉領域によっては面積が小さくなってしまうことがあった。すなわち、グリフパスの一部が細くなる場合があった。
例えば図8(a)に示されるように、文字「ニ」のグリフパスの上部の閉領域を定義するパスの進行方向は時計回り(右回り)であり、下部の閉領域を定義するパスの進行方向は反時計回り(左回り)である。この場合、法線方向は、パスの進行方向に関して左側であるという設定であれば、上部の閉領域は面積が大きくなるように変形されるが、下部の閉領域は面積が小さくなるように変形されてしまう。
本発明は、閉領域を構成するパスとスキャンラインとの交点における前記パスの進行方向を特定する特定手段と、前記特定手段が特定した前記進行方向に応じてWinding値を算出する算出手段と、前記スキャンラインが前記交点において前記パスを通過する際に前記Winding値が所定の値に近づくか否かに基づいて、前記スのずらし方向を決定する決定手段と、前記決定されたずらし方向に基づいて、前記パスにおける制御点の位置を前記閉領域の内側から前記閉領域の外側に移動する移動手段と、を有することを特徴とする。
閉領域によってパスの進行方向が異なるようなグリフパスでも、適切にボールド処理を行える。
本実施例の情報処理装置のハードウェア構成を示すブロック図。 本実施例の情報処理装置のソフトウェアモジュールの構成を示すブロック図。 グリフパスに対する処理を示すフローチャート。 パスに対するボールド処理を示すフローチャート。 Winding値を算出する処理を示すフローチャート。 パスのずらし方向を決定する処理を示すフローチャート。 パスの各頂点を移動する処理を示すフローチャート。 閉領域によってパスの進行方向が異なるグリフパスの例を示す図。 2つのパスによって1つの閉領域が定義されるグリフパスの例を示す図。 ボールド処理の結果を示す図。
(実施例1)
図1は、本実施例の情報処理装置101のハードウェア構成を示すブロック図である。情報処理装置101は、CPU102、ROM103、RAM104、HDDである記憶部105、LAN107と情報処理装置101とを接続するためのインターフェースである通信部106、とを備える。
記憶部105は、情報処理装置101を制御するための各プログラムを記憶している。例えば記憶部105は、図3(後述)の処理フローを実行するためのプログラムを記憶している。
通信部106は、LAN107を介して、情報処理装置101とは別の外部装置から、PDF(Portable Document Format)やXPS(XML Paper Specification:登録商標)などのPDLデータ201を受信する。
CPU102は、ROM103、RAM104、記憶部105、通信装置106を統括的に制御する。例えばCPU102は、RAM103やROM104を利用して、記憶部105に記憶されているプログラムを実行することで、通信部106で受信されたPDLデータ201に対して図3(後述)の処理フローを実行する。
図2は、図3(後述)の処理フローを実行するためのプログラムをCPU102が実行した場合に実現されるソフトウェアモジュールの構成を示すブロック図である。情報処理装置101のCPU102は、グリフパス取得部202、ボールド処理部209、レンダリング部207として機能する。グリフパス取得部202は、通信部106で受信されたPDLデータ201に含まれるグリフパスを取得する。ボールド処理部209は、取得されたグリフパスに対してボールド処理を行う。レンダリング部207は、ボールド処理後のグリフパスのレンダリング(ラスタライズ)を行って、ラスターデータ208を生成する。なおボールド処理部209は、Winding値(ワインディング値)算出部203、パスずらし方向決定部205、パス生成部206で構成され、各部の処理については後述する。
図3は、CPU102が記憶部105に記憶されているプログラムをROM103、RAM104を利用して実行することで実現される処理フローである。この処理フローは、通信部106で受信されたPDLデータ201に含まれるグリフパスに対してボールド処理およびレンダリングを行うための処理フローである。なお以下で説明するのは、PDLデータ201に含まれる1つのグリフパスについてであるが、複数のグリフパスがPDLデータ201に含まれる場合には、グリフパスの数だけ各処理が繰り返される。またグリフパス以外のグラフィカルオブジェクトについては図3の処理フローは実行されない。
ステップS1001において、グリフパス取得部202は、通信部106が外部装置からLAN107を介して受信したPDLデータ201を解析することで、PDLデータ201に含まれるグリフパスを取得する。この取得について説明する。PDLデータ201には、複数のグラフィカルオブジェクトの描画命令が含まれており、グリフパス取得部202は、その複数の描画命令のうちから、グリフパスを示す識別子によって区別される描画命令(グリフパス描画命令)を判定する。そしてグリフパス取得部202は、グリフパス描画命令の情報をRAM104に記憶する。
図8、図9にグリフパスおよびグリフパス描画命令の一例を示す。グリフパスは複数の頂点を含む。
図8(a)は、4つの頂点で構成されるパス2つで表される1つのグリフパスの例である。頂点P1、P2、P3、P4は、頂点P1、P2、P3、P4の順序で結ばれ、時計回りに進む第1のパスを構成し、第1の閉領域を定義する。頂点P5、P6、P7、P8は、頂点P5、P6、P7、P8の順序で結ばれ、反時計回りに進む第2のパスを構成し、第2の閉領域を定義する。つまりこのグリフパスでは、閉領域によって、パスの進行方向が異なる。各パスで定義される2つの閉領域が指定の色で塗り潰されることで文字「二」が形成される。この文字「ニ」を表すグリフパスにおける2つのパスおよび閉領域は、重なりを持たない。なお、図示こそしないが、2つのパスが重なりを持つような場合(例えばベジエ曲線を表す頂点および制御点を順に結ぶパスが、他のパスと重なりを持つような場合)、各パスの進行方向が同一である場合に限り、本実施例の以下の処理フローで適切なボールド処理を行うことができる。
図9(a)は、4つの頂点で構成されるパス2つで表される1つのグリフパスの例である。頂点P1、P2、P3、P4は、頂点P1、P2、P3、P4の順序で結ばれ、時計回りに進む第1のパスを構成し、頂点P5、P6、P7、P8は、頂点P5、P6、P7、P8の順序で結ばれ、反時計回りに進む第2のパスを構成する。第1のパスおよび第2のパスはそれぞれ1つの閉領域の外縁および内縁に相当する。各パスで定義される1つの閉領域が指定の色で塗り潰されることで文字「ロ」が形成される。この文字「ロ」を表すグリフパスにおける2つのパスは、重なりを持たない。
図8(b)は、図8(a)のグリフパスを表現するグリフパス描画命令の例である。グリフパス描画命令400は、図8(b)に示されるように、グリフパスを示す識別子すなわち要素名「Paths」の開始タグ401(<Paths>)および終了タグ408(</Paths>)の間に含まれる1つ以上のパスによって表される。
開始タグ401には複数の属性が含まれる。Id属性とPathNum属性である。Id属性はグリフパスを一意に識別するための識別番号を示し、PathNum属性はそのグリフパスに含まれるパスの数を示す。開始タグ1601内のId属性の属性値は「1」であり、PathNum属性の属性値は「2」であるため、グリフパスの識別番号が「1」であり、グリフパスに含まれるパスの数が「2」である。開始タグ1601および終了タグ402の間に含まれるPaths要素の内容には、第1のPath要素の開始タグ410、そのPath要素の内容(4つのPoint要素の空タグ411〜414)、第1のPath要素の終了タグ415、第2のPath要素の開始タグ420、そのPath要素の内容(4つのPoint要素の空タグ421〜424)、第2のPath要素の終了タグ425が含まれる。すなわち、Paths要素の内容には、グリフパスに含まれるパス数分の各パスが表されている。
第1のPath要素の開始タグ410には、Id属性、PointNum属性が含まれる。Id属性はグリフパスに含まれるパスを一意に識別するための識別番号を示し、PointNum属性はId属性の識別番号によって識別されるパスの頂点(あるいは制御点)の数を示す。以降では、制御点も頂点と表記する。Path要素の内容には、そのパスの各頂点の座標を示す情報が含まれる。すなわち、Point要素の空タグ411〜414である。
4つのPoint要素の空タグ411〜414のそれぞれには、Id属性、X属性、Y属性が含まれる。Id属性は、パスの頂点を一意に識別するための識別番号を示す。X属性およびY属性のそれぞれは、頂点のX座標およびY座標を示す。例えばPoint要素の空タグ411は、識別番号「1」の頂点の座標が(X、Y)=(40、30)であることを示す。他のPoint要素の空タグ412〜414についても同様である。
また、第2のPath要素の開始タグ420、内容(Point要素の空タグ421〜424)についても、第1のPath要素と同様である。
図8(b)のグリフパス描画命令400に含まれるPoint要素の空タグは、図8(a)のグリフパスの頂点に対応する。すなわち、Point要素の空タグ411〜414によって示される頂点のそれぞれは頂点P1〜P4に対応し、Point要素の空タグ421〜424によって示される頂点のそれぞれは頂点P5〜P8に対応する。
図9(b)は、図8(b)と同様に、図9(a)のグリフパスを表現するグリフパス描画命令1600である。
グリフパス取得部202は、Paths要素をPDLデータ201から特定することで、グリフパス描画命令を特定し、そのグリフパス描画命令の情報をリンク形式でRAM104に記憶する。
グリフパス取得部202は、例えばグリフパス描画命令400の情報を、図8(c)に示されるリンク形式でRAM104に記憶する。まずグリフパス取得部202は、Paths構造体441を生成する。構造体441には、IdとPathNumが含まれる。IdおよびPathNumは、Paths要素の開始タグ401のId属性値およびPathNum属性値と等しい。そしてグリフパス取得部202は、Path構造体451を生成する。構造体451には、IdとPointNumの組が1つ以上含まれる。一組のIdおよびPointNumは、1つのPath要素開始タグ(410や420)のId属性値およびPointNum属性値と等しい。グリフパス取得部202は、Paths構造体441とPath構造体451とをリンクで結ぶ。
そしてグリフパス取得部202は、グリフパスに含まれる各パスに対応するPoint構造体を生成する。例えばグリフパス取得部202は、Path構造体451のId「1」のレコードに対応するPoint構造体461を生成し、Path構造体451のId「2」のレコードに対応するPoint構造体462を生成する。構造体461や462には、Id、X、Yが含まれる。Id、X、Yは、Path要素の開始タグ410、462の内容であるPoint要素の空タグのId属性値、X属性値、Y属性値と等しい。1つのPoint構造体は、1つのパスに対応しており、そのパスの各頂点の情報(Id、X座標、Y座標)が記憶される。例えば構造体461にはId1〜4を持つ複数のレコードが記憶され、各レコードは、図8(a)のグリフパスの頂点P1〜P4に対応している。また例えば構造体462にはId1〜4を持つ複数のレコードが記憶され、各レコードは、図8(a)のグリフパスの頂点P5〜P8に対応している。グリフパス取得部202は、このPoint構造体(461、462)のそれぞれを対応するPath構造体451のレコードとリンクで結ぶ。
以上説明した図8(c)のリンク形式の情報が、RAM104に記憶される。なお、PDLデータ201にグリフパス描画命令1600が含まれる場合には、図9(c)のリンク形式の情報が、RAM104に記憶される。
図3の処理フローの説明に戻る。ステップS1002において、ボールド処理部209は、ステップS1001で取得されたグリフパスに含まれるパスの数を取得する。具体的には、ボールド処理部209は、RAM104に記憶された情報から、Paths要素のPathNum属性の属性値Nを取得する。図8の例では、「2」が取得され、図9の例では、「2」が取得される。
ステップS1003において、ボールド処理部209は、処理済みのパス数をカウントするためのカウンタiを0で初期化する。
ステップS1004において、ボールド処理部209は、グリフパスに含まれる全てのパスに対してボールド処理を行ったかを判定する。全てのパスに対してボールド処理が行われていると判定された場合に処理はステップS1007へ進み、そうでない場合に処理はステップS1005へ進む。具体的には、ボールド処理部209は、カウンタiがステップS1002で取得された属性値Nよりも小さいか否かを判定する。カウンタiが属性値Nよりも小さい場合に処理はステップS1005へ進み、そうでない場合に処理はステップS1007へ進む。
ステップS1005において、ボールド処理部209は、カウンタiに対応するパス(すなわち現在の対象パス)についてボールド処理を行う。詳細は図4〜7を用いて後述する。
ステップS1006において、ボールド処理部209は、カウンタiを1つインクリメントし、ステップS1004の処理を繰り返す。
ステップS1007において、レンダリング部207は、レンダリング部207は、ボールド処理後のグリフパスのレンダリング(ラスタライズ)を行って、フォントのラスターデータ208を生成する。このレンダリングは、ペインターズアルゴリズムなどの公知の方法によって行われる。
以上で1つのグリフパスに対する図3の処理フローが終了する。
以下では、ステップS1005の現在の対象パスに対するボールド処理について説明する。本実施例のボールド処理は、図4に示される4つのステップS1101〜S1104に大別される。
ステップS1101において、Winding値算出部204は、現在の対象パスを構成する頂点のうち、最もX座標が小さいもの(最左端の点)を特定する。具体的にはWinding値算出部204は、現在の対象パスについてのRAM104に記憶されているPoint要素のうち、X属性の属性値が最も小さいものを特定する。このとき属性値が等しいPoint要素が複数あれば、Winding値算出部204は、その複数のPoint要素のうちのいずれか1つを選択する。たとえばY属性の属性値が最も小さいものが選択される。
図8に示されるグリフパスのId属性値「1」で識別されるパスについては、Point要素のId属性値「2」で識別される点P2が特定される。図8に示されるグリフパスのId属性値「2」で識別されるパスについては、Point要素のId属性値「4」で識別される点P8が特定される。図9に示されるグリフパスのId属性値「1」で識別されるパスについては、Point要素のId属性値「2」で識別される点P2が特定される。図9に示されるグリフパスのId属性値「2」で識別されるパスについては、Point要素のId属性値「4」で識別される点P8が特定される。
ステップS1102において、Winding値算出部204は、図5の処理フローを実行する。
ステップS1103において、パスずらし方向決定部205は、図6の処理フローを実行する。
ステップS1104において、パス生成部206は、図7の処理フローを実行する。
以上のステップS1101〜S1104の一連の処理フローが図4のボールド処理である。
図5を用いて、Winding値算出部204によって実行されるステップS1102の処理フローについて説明する。図5は、現在の対象パスについてのWinding値を算出する処理のフローである。
ステップS1301において、Winding値算出部204は、Winding値を「0」で初期化する。
ステップS1302において、Winding値算出部204は、ステップS1101で特定された頂点(現在の対象パスにおける最左端の点)を通るスキャンラインを決定する。すなわち特定された頂点のY座標を通るX軸に平行なスキャンラインを決定する。このスキャンライン上のWinding値が後述の処理で算出される。そしてWinding値算出部204は、現在の対象パスを含むグリフパスに含まれる全てのパスについて、決定されたスキャンラインと交差する点(以下、交点という)を求める。そして、Winding値算出部204は求められた交点の数をカウントし、それを交点の数Nとする。
現在の対象パスが図8(c)のPath構造体451のId「1」のパスである場合、決定されたスキャンラインはY=20であり、全てのパスとスキャンラインとの交点の座標は(40、20)、(80、20)である。交点数Nは「2」となる。
現在の対象パスが図8(c)のPath構造体451のId「2」のパスである場合、決定されたスキャンラインはY=50であり、全てのパスとスキャンラインとの交点の座標は(20、50)、(100、50)である。交点数Nは「2」となる。
現在の対象パスが図9(c)のPath構造体451のId「1」のパスである場合、決定されたスキャンラインはY=10であり、全てのパスとスキャンラインとの交点の座標は(10、10)、(60、10)である。交点数Nは「2」となる。
現在の対象パスが図9(c)のPath構造体451のId「2」のパスである場合、決定されたスキャンラインはY=20であり、全てのパスとスキャンラインとの交点の座標は(10、20)、(20、20)、(50、20)、(60、20)である。交点数Nは「4」となる。
ステップS1303において、Winding値算出部204は、カウンタiを「0」で初期化する。
ステップS1304において、Winding値算出部204は、S1302で求められた全ての交点について処理を完了したかを判定し、全ての交点の処理が完了した場合に本処理フローは終了し、完了していない場合に処理はステップS1305へ進む。具体的にはWinding値算出部204は、カウンタiと交点数Nとを比較し、カウンタiが点数N以上であれば本処理フローを終了し、そうでなければ処理はステップS1305へ進む。
ステップS1305において、Winding値算出部204は、カウンタiによって特定される現在の対象交点のX座標が、ステップS1101で特定された頂点(現在の対象パスにおける最左端の点)のX座標以下であるかを判定する。すなわち、この処理は、現在の対象パスにおける最左端の点よりも左側にスキャンラインとの交点を持つパス(左側に存在するパス)に対してのみ、ステップS1306以降の処理を行うようにするための判定処理である。S1306以降の処理に進む対象を限定することで、処理量を減らすことができる。しかしこのステップS1305の判定は必須ではない。現在の対象交点のX座標がステップS1101で特定された頂点のX座標以下である場合、処理はステップS1306へ進む。そうでない場合、処理はステップS1309へ進む。
ステップS1306において、Winding値算出部204は、現在の対象交点における、対象交点の属するパスの進行方向を特定する。すなわち交差の仕方が特定される。例えば対象交点の属するパスを構成する点を順につないだときに点Aから点Bへのパス上に対象交点があるとする。このとき点AのY座標<点BのY座標であれば進行方向は上向き(第1の方向)であり、点AのY座標>点BのY座標であれば進行方向は下向き(第2の方向)である。進行方向が上向きであれば、ステップS1307へ処理が進む。そうでなければ、ステップS1308へ処理が進む。
ステップS1307において、Winding値算出部204は、その対象交点に現在のWinding値と、Winding値の変化を示す情報とを関連付けてから、Winding値を1だけ加算する。ここで変化を示す情報とは、現在のWinding値に1を加算した場合に、加算結果は「0」に近づくのかそうでないのかを示す情報である。
ステップS1308において、Winding値算出部204は、その対象交点に現在のWinding値と、Winding値の変化を示す情報と関連付けてから、Winding値を1だけ減算する。ここで変化を示す情報とは、現在のWinding値に1を減算した場合に、加算結果は「0」に近づくのかそうでないのかを示す情報である。
ステップS1307、S1308について、現在の対象パスの最左端の頂点にWinding値と前記の情報が関連付けられる。言い換えると、Winding値算出部204は、現在の対象パスに対して、最左端の頂点におけるWinding値と前記の情報を関連付ける。
ステップS1309において、Winding値算出部204は、カウンタiを1インクリメントする。
以上が図5のWinding値を算出する処理フローである。
図6を用いて、パスずらし方向決定部205によって実行されるステップS1103の処理フローについて説明する。図6は、現在の対象パスについてのパスのずらし方向を決定する処理のフローである。
ステップS1401において、パスずらし方向決定部205は、ステップS1101で特定された頂点(現在の対象パスにおける最左端の点)に関連付けられたWinding値を参照する。言い換えれば、パスずらし方向決定部205は、現在の対象パスに関連付けられたWinding値を参照する。そして、そのWinding値が「0」であるかを判定する。この判定によって、閉領域を定義する現在の対象パスが、その閉領域の外縁を定義しているのか否かが判定される。Winding値が「0」である場合、現在の対象パスは閉領域の外縁に相当する。現在の対象パスにおける最左端の点のWinding値が「0」であると判定された場合、処理はステップS1403に進み、そうでない場合に、処理はS1402へ進む。図8(c)のPath要素のId「1」、「2」で特定されるパス、および、図9(c)のPath要素のId「1」で特定されるパスでは、Winding値が「0」であるので、処理はステップS1403へ進む。図9(c)のPath要素のId「2」で特定されるパスでは、Winding値が「1」であるので、処理はステップS1402へ進む。
ステップS1402において、パスずらし方向決定部205は、ステップS1307あるいはステップS1308で関連付けられた情報を参照する。言い換えれば、パスずらし方向決定部205は、現在の対象パスに関連付けられた情報を参照する。そして、参照される情報が、Winding値が「0」に近づくことを示す第1の情報であるか否かを判定する。参照される情報が、Winding値が、「0」に近づくことを示す場合に処理はステップS1404へ進み、そうでない場合に処理はステップS1405へ進む。つまり参照される情報が「0」から遠ざかることを示す第2の情報である場合にステップS1405の処理が行われる。この判定によって、閉領域を定義する現在の対象パスが、その閉領域の内縁を定義しているのか、外縁を定義しているのかが判定される。参照される情報が、Winding値が「0」に近づくことを示す場合、現在の対象パスは閉領域の内縁に相当する。例えば図9(c)のPath要素のId「2」で特定されるパスでは、Winding値が「0」に近づくことを示す情報が関連付けられているので、処理はステップS1404へ進む。
ステップS1403において、パスずらし方向決定部205は、現在の対象パスのずらし方向を、ステップS1101で特定された頂点においてX軸で負方向(左方向)となる方向に決定し、その決定されたずらし方向を現在の対象パスに関連付ける。例えば現在の対象パスの進行方向が時計回りであれば、ずらし方向を、パスの進行方向に関して左方向に決定される。現在の対象パスの進行方向が反時計回りであれば、ずらし方向を、パスの進行方向に関して右方向に決定される。例えば図8(c)のPath要素のId「1」で特定されるパスのずらし方向は、パスの進行方向が時計回りであるので、進行方向に関して左方向となる。また図8(c)のPath要素のId「2」で特定されるパスのずらし方向は、パスの進行方向が反時計回りであるので、進行方向に関して右方向となる。また図9(c)のPath要素のId「1」で特定されるパスのずらし方向は、パスの進行方向が時計回りであるので、進行方向に関して左方向となる。
ステップS1404において、パスずらし方向決定部205は、現在の対象パスのずらし方向を、ステップS1101で特定された頂点においてX軸で正方向(右方向)となる方向に決定し、その決定されたずらし方向を現在の対象パスに関連付ける。例えば現在の対象パスの進行方向が時計回りであれば、ずらし方向を、パスの進行方向に関して右方向に決定される。現在の対象パスの進行方向が反時計回りであれば、ずらし方向を、パスの進行方向に関して左方向に決定される。例えば図9(c)のPath要素のId「2」で特定されるパスのずらし方向は、パスの進行方向が反時計回りであるので、進行方向に関して左方向となる。
ステップS1405において、パスずらし方向決定部205は、ステップS1403と同じ処理を行う。
以上がパスのずらし方向の決定処理である。
図7は、現在の対象パスについてのボールド処理のフローである。
ステップS1501において、パス生成部206は、現在の対象パスに含まれる頂点の数Mを取得する。
ステップS1502において、パス生成部206は、処理済みの頂点数のカウンタiを「0」で初期化する。
ステップS1503において、パス生成部206は、現在の対象パスに含まれる全ての頂点について処理したかを判定する。全ての頂点を処理した場合に処理は終了し、そうでない場合には処理は現在の対象パスに含まれる未処理の頂点を1つ選びステップS1504に進む。具体的には、パス生成部206は、カウンタiが頂点数M未満かを判定し、カウンタiが頂点数未満であれば現在の対象パスに含まれる未処理の頂点を1つ選び、処理はステップS1504に進み、そうでなければ処理は終了する。
ステップS1504において、パス生成部206は、現在の対象パスに関連付けられているずらし方向に基づいて、現在の対象頂点の移動ベクトルを求める。例えば、パス生成部206は、現在の対象頂点に接続する各パスの法線ベクトルのうち、関連付けられているずらし方向側の法線ベクトルの合成ベクトルを求め、その合成ベクトルに所定係数をかけたベクトルを移動ベクトルとして求める。そしてパス生成部206は、対象頂点の位置を移動ベクトル分だけ平行移動させる。
ステップS1505において、パス生成部206は、カウンタiを+1だけインクリメントし、処理をステップS1503に進める。
以上のように、パスの各頂点を移動することで、閉領域の面積を大きくすることができる。
図10に図8、9のグリフパスの各頂点を本実施例のボールド処理に従って移動させた結果を示す。
図10(a)は、図8に示された文字「ニ」の2つのパスを構成する各頂点を移動させた結果を示す。移動前の各頂点は、破線の丸印で示されており、グレーで塗り潰されているのが、頂点の移動前の閉領域を示す。破線の矢印が本実施例によって求まる移動ベクトルであり、移動ベクトルに従って移動された頂点が黒く塗りつぶした丸印によって示される。このように閉領域によって逆方向の進行方向を持つパスであっても正しくボールド処理を行うことができる。
また図10(b)は、図9に示された文字「ロ」の2つのパスを構成する各頂点を移動させた結果を示す。図10(b)でも図10(a)と同じく、正しくボールド処理を行うことができる。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。

Claims (5)

  1. 閉領域を構成するパスとスキャンラインとの交点における前記パスの進行方向を特定する特定手段と、
    前記特定手段が特定した前記進行方向に応じてWinding値を算出する算出手段と、
    前記スキャンラインが前記交点において前記パスを通過する際に前記Winding値が所定の値に近づくか否かに基づいて、前記スのずらし方向を決定する決定手段と、
    前記決定されたずらし方向に基づいて、前記パスにおける制御点の位置を前記閉領域の内側から前記閉領域の外側に移動する移動手段と、を有することを特徴とする情報処理装置。
  2. 前記制御点、頂点を含むことを特徴とする請求項1に記載の情報処理装置。
  3. 前記移動手段によって前記制御点の位置が移動された後の前記パスのレンダリングを行うレンダリング手段を有する請求項1又は2に記載の情報処理装置。
  4. 閉領域を構成するパスとスキャンラインとの交点における前記パスの進行方向を特定する特定工程と、
    前記特定手段が特定した前記進行方向に応じてWinding値を算出する算出工程と、
    前記スキャンラインが前記交点において前記パスを通過する際に前記Winding値が所定の値に近づくか否かに基づいて、前記スのずらし方向を決定する決定工程と、
    前記決定されたずらし方向に基づいて、前記パスにおける制御点の位置を前記閉領域の内側から前記閉領域の外側に移動する移動工程と、を有することを特徴とする情報処理方法。
  5. 請求項1乃至の何れか1項の各手段としてコンピュータを機能させるためのプログラム。
JP2015000436A 2015-01-05 2015-01-05 情報処理装置、情報処理方法、プログラム Active JP6642964B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015000436A JP6642964B2 (ja) 2015-01-05 2015-01-05 情報処理装置、情報処理方法、プログラム
US14/986,493 US10360707B2 (en) 2015-01-05 2015-12-31 Information processing apparatus, information processing method, and storage medium for transforming path

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015000436A JP6642964B2 (ja) 2015-01-05 2015-01-05 情報処理装置、情報処理方法、プログラム

Publications (2)

Publication Number Publication Date
JP2016126198A JP2016126198A (ja) 2016-07-11
JP6642964B2 true JP6642964B2 (ja) 2020-02-12

Family

ID=56286785

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015000436A Active JP6642964B2 (ja) 2015-01-05 2015-01-05 情報処理装置、情報処理方法、プログラム

Country Status (2)

Country Link
US (1) US10360707B2 (ja)
JP (1) JP6642964B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102618560B1 (ko) * 2016-06-15 2023-12-27 삼성전자주식회사 경로 렌더링을 수행하는 방법 및 장치
KR102446865B1 (ko) 2017-09-12 2022-09-23 삼성전자주식회사 경로 렌더링을 수행하는 그래픽 처리 장치 및 그래픽 처리 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2861044B2 (ja) * 1989-05-12 1999-02-24 富士ゼロックス株式会社 図形処理装置
US5715473A (en) * 1992-12-29 1998-02-03 Apple Computer, Inc. Method and apparatus to vary control points of an outline font to provide a set of variations for the outline font
US5959634A (en) * 1993-12-09 1999-09-28 Canon Kabushiki Kaisha Character generating system employing thickening or narrowing of characters
JP3170155B2 (ja) 1994-09-30 2001-05-28 シャープ株式会社 フォント展開装置
US7719536B2 (en) * 2004-03-31 2010-05-18 Adobe Systems Incorporated Glyph adjustment in high resolution raster while rendering
JP4400667B2 (ja) * 2007-10-04 2010-01-20 セイコーエプソン株式会社 描画装置、画像出力装置及びプログラム

Also Published As

Publication number Publication date
US10360707B2 (en) 2019-07-23
US20160196678A1 (en) 2016-07-07
JP2016126198A (ja) 2016-07-11

Similar Documents

Publication Publication Date Title
US8933937B2 (en) Visualizing a layered graph using edge bundling
US10118378B2 (en) Cross-section data generating device and cross-section data generating method
JP5236055B2 (ja) マーカーを利用した拡張現実(ar)を提供する装置及び方法
US9881417B2 (en) Multi-view drawing apparatus of three-dimensional objects, and method
EP3682426B1 (en) Three-dimensional graphics image processing
US11557110B2 (en) Selective extraction of color attributes from digital images
KR20130043592A (ko) 트리맵 제어 시스템 및 방법
US20200175727A1 (en) Color Handle Generation for Digital Image Color Gradients using Machine Learning
WO2022024165A1 (ja) 情報処理装置、情報処理方法、及び、記録媒体
US20160332385A1 (en) Apparatus and method for generating bitmap of 3-dimensional model
JP6642964B2 (ja) 情報処理装置、情報処理方法、プログラム
JP5675445B2 (ja) 情報処理装置、情報処理装置の制御方法、及びコンピュータプログラム
CN115630698B (zh) 基于力引导图的知识图谱可视化方法、装置及电子设备
JP5067882B2 (ja) 画像処理装置、画像処理方法およびプログラム
US9390689B2 (en) Need-below processing across z-band boundaries
US10424104B2 (en) Thumbnail image creation apparatus, and 3D model data management system
US20210027534A1 (en) Information processing apparatus and non-transitory computer readable medium
KR101359661B1 (ko) 삼각형 메쉬로 표현된 3차원 물체를 DoSurface 표현 방법으로 변환하는 시스템 및 그 방법
JP6323209B2 (ja) 画像処理装置及びプログラム
JP2014194635A (ja) 画像形成装置及び画像形成方法ならびにプログラム
KR20150042095A (ko) 드로우 커맨드들의 처리 순서를 재조정하여 프레임을 렌더링하는 장치 및 방법
JP6512763B2 (ja) 情報処理装置、情報処理方法、プログラム
JP4986934B2 (ja) 図形領域抽出装置、図形領域抽出方法、プログラム、及び記録媒体
JP2017142663A (ja) 情報処理装置及び情報処理方法
JP4870721B2 (ja) 画像特徴抽出装置、画像特徴抽出方法、プログラム、及び記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180925

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190705

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200106

R151 Written notification of patent or utility model registration

Ref document number: 6642964

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151