(57)【要約】【課題】描画データのデータ量を削減するとともに、描画品位の劣化を抑制することを可能とする情報処理装置を提供する。【解決手段】データ変換サーバ１２０が、パスで表される描画データの当該パスのデータ量を削減する。データ変換サーバ１２０は、データ量の削減前のパスの長さに基づいた、描画データのスケールを調整するために用いられる情報を描画データに付加する。例えば、ＳＶＧフォーマットのデータの場合、スケールを調整するために用いられる情報として、属性（ＰａｔｈＬｅｎｇｔｈ）にデータ量を削減する前のパス長情報を設定する。【選択図】図４
2016081187.tif 000002
【特許請求の範囲】
【請求項１】
パスで表される描画データの当該パスのデータ量を削減する削減手段と、
前記削減手段により前記データ量が削減される前の前記パスの長さに基づいた、前記描画データのスケールを調整するために用いられる情報を当該描画データに付加する調整手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記削減手段は、前記パスに含まれる座標点の数に基づいて、当該パスのデータ量を削減するか否かを判別する、ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記削減手段は、前記パスに含まれる座標点を間引くことにより、当該パスのデータ量を削減する、ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記削減手段は、前記パスに含まれる３点を取得し、前記３点のうちパスの出現順に第１の点、第２の点、及び第３の点としたときに、
前記第１の点と第２の点とを結んだ直線の長さと、前記第２の点との距離が所定の値よりも小さければ、前記第２の点を間引く、
ことを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
前記パスに含まれる前記座標点が小数点以下の値を含む場合に、前記削減手段は、前記小数点以下の値が所定の桁数となるように丸める、ことを特徴とする請求項２ないし４のいずれか１項に記載の情報処理装置。
【請求項６】
前記パスに曲線が含まれる場合に、前記削減手段は、該曲線を直線に近似する、ことを特徴とする請求項２ないし５のいずれか１項に記載の情報処理装置。
【請求項７】
前記調整手段は、前記削減手段により前記データ量が削減される前の前記パスの長さを、前記スケールを調整するために用いられる情報として付加する、ことを特徴とする請求項１ないし６のいずれか１項に記載の情報処理装置。
【請求項８】
前記描画データの形式がＳＶＧフォーマットである場合に、前記調整手段は、前記スケールを調整するために用いられる情報としてＰａｔｈＬｅｎｇｔｈに前記データ量が削除される前の前記パスの長さを設定する、ことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記削減手段により前記データ量が削減される前の前記パスの長さをＡとし、前記データ量が削減された後のパスの長さをＢとしたときに、前記調整手段は、前記描画データの描画パラメータをＢ／Ａ倍した値を、前記スケールを調整するために用いられる情報として付加する、ことを特徴とする請求項１ないし８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記描画データがダッシュパターンである場合に、前記調整手段は、前記削減手段により前記データ量が削減される前の前記ダッシュパターンの指定値を前記Ｂ／Ａ倍した値を、前記スケールを調整するために用いられる情報として付加する、ことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記描画データが前記パスに沿った文字列の配置を伴う場合に、前記調整手段は、前記削減手段により前記データ量が削減される前の前記文字列の指定値を、前記Ｂ／Ａ倍した値を、前記スケールを調整するために用いられる情報として付加する、ことを特徴とする請求項９に記載の情報処理装置。
【請求項１２】
端末からネットワークを介してデータを受信する受信手段と、
前記受信されたデータを前記パスで表される前記描画データに変換する変換手段と、
前記パスで表される描画データの当該パスのデータ量を削減する削減手段と、
前記削減手段により前記データ量が削減される前の前記パスの長さに基づいた、前記描画データのスケールを調整するために用いられる情報を当該描画データに付加する調整手段と、
前記スケールを調整するために用いられる情報が付加された前記描画データを前記端末に送信する送信手段と、
をさらに備え、
前記端末において、前記描画データは、前記付加された情報を用いて前記スケールが調整されて表示される、
ことを特徴とする請求項１ないし１１のいずれか１項に記載の情報処理装置。
【請求項１３】
情報処理装置と、前記情報処理装置とネットワークを介して通信する端末と、を含む情報処理システムであって、
前記情報処理装置は、
前記端末から前記ネットワークを介してデータを受信する受信手段と、
前記受信されたデータをパスで表される描画データに変換する変換手段と、
前記パスで表される描画データの当該パスのデータ量を削減する削減手段と、
前記削減手段により前記データ量が削減される前の前記パスの長さに基づいた、前記描画データのスケールを調整するために用いられる情報を当該描画データに付加する調整手段と、
前記スケールを調整するために用いられる情報が付加された前記描画データを前記端末に送信する送信手段と、
を備え、
前記端末は、受信した前記描画データに対して、前記付加された情報を用いて前記スケールを調整して表示する表示手段を備える、
ことを特徴とする情報処理システム。
【請求項１４】
パスで表される描画データの当該パスのデータ量を削減する削減工程と、
前記削減工程により前記データ量が削減される前の前記パスの長さに基づいた、前記描画データのスケールを調整するために用いられる情報を当該描画データに付加する調整工程と、
を有することを特徴とする情報処理装置の制御方法。
【請求項１５】
請求項１乃至１２のいずれか１項に記載の各手段としてコンピュータを機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、情報処理装置の制御方法、及びコンピュータプログラムに関する。
【背景技術】
【０００２】
ＳＶＧ（スケーラブル  ベクター  グラフィクス）形式のファイルは、ＸＭＬ（エクステンシブル  マークアップ  ランゲージ）形式で記述され、標準のウェブビューワで表示可能なため、ウェブビューワを標準で備えるモバイル端末での使用に適している。そのため、ＰＤＦ（ポータブル  ドキュメント  フォーマット）やマイクロソフト（登録商標）社のワードなどのファイルを一時的にどのモバイル端末でも表示可能なＳＶＧフォーマットに変換して使用することが多い。しかし、モバイル端末はＰＣ端末と比べ、少メモリ、非力なＣＰＵ、小画面表示、通信が遅い等の制約がある。
【０００３】
また、表示するファイルは、モバイル端末内ではなくクラウド等外部サーバに置かれることが多く、ファイル取得のためにＳＶＧファイルサイズはできるだけ小さいことが望ましい。そこで、モバイル端末は、画面サイズが比較的小さいため、込み入った図形に対し見た目上変わらない程度に図形を表現する座標点列の一部の点を間引くことがある。以後、図形を表現する始点から終点までの座標点列をパスと呼び、パスの一部の点を間引くことをパス間引きと呼ぶことにする。尚、パスを構成する座標点列には、曲線を示す制御点を含むこともある。
【０００４】
特許文献１および２は、ファイルサイズの削減および図形描画処理の負荷を低減する画像処理装置を開示している。特許文献１は、パスが３個以上の規定点により規定される多角形を表す図形データを、その図形より規定点の少ない単純な多角形を表す図形データに変換する画像処理装置を開示している。また、特許文献２は、曲線の曲率に応じて近似する折れ線の数を変化させ、曲線を折れ線近似する曲線の折線近似装置を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−２０５５３９号公報
【特許文献２】特開平２−１０４７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１および２では、描画データのパスのデータ量を削減し、例えばパスの線描画やパスに沿った文字列描画等の複雑な描画を行った場合に、パスの長さが変わることによる描画結果の違いが発生しうる点について考慮されていない。尚、パスの長さとは図形を表現する始点から終点までの座標点列間の距離の和（道のり）であり、以後パス長とも呼ぶ。描画結果の違いの例としては、図１０および１２を用いて後述するように、線描画時のダッシュパターンの見え方が変わることや、文字列描画時にパス内に描画できる文字数が変わること等がある。
【０００７】
本発明は、描画データのデータ量を削減するとともに、描画品位の劣化を抑制することを可能とする情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一実施形態の情報処理装置は、パスで表される描画データの当該パスのデータ量を削減する削減手段と、削減手段によりデータ量が削減される前のパスの長さに基づいた、描画データのスケールを調整するために用いられる情報を当該描画データに付加する調整手段と、を備える。
【発明の効果】
【０００９】
本発明の情報処理装置によれば、描画データのデータ量を削減するとともに、描画品位の劣化を抑制することができる。これにより、データ通信時間の短縮や表示時間の高速化を図るとともに、描画品位の劣化を抑制することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態に係る情報処理システムのハードウエア構成例を示す図である。
【図２】第１実施形態に係る情報処理システムの機能構成例を示す図である。
【図３】描画データ変換処理を説明するメインフローチャートである。
【図４】パス変換処理１を説明するフローチャートである。
【図５】パス長情報が必要か否かのチェック処理を説明するフローチャートである。
【図６】パス補正処理１を説明するフローチャートである。
【図７】パス補正処理２を説明するフローチャートである。
【図８】パス補正処理３を説明するフローチャートである。
【図９】間引き前のパスと間引き後のパスの一例を示す図である。
【図１０】間引き前のパスと間引き後のパスをダッシュパターン描画した図である。
【図１１】間引き前のパスと間引き後のパスの一例を示す図である。
【図１２】間引き前のパスと間引き後のパスに沿った文字列を描画した図である。
【図１３】ＳＶＧフォーマットのデータの一例を示す図である。
【図１４】パス変換処理２を説明するフローチャートである。
【図１５】ＳＶＧフォーマットのデータの一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について図面などを参照して説明する。
（第１実施形態）
図１は、本実施形態に係る情報処理システムのハードウエア構成例を示す図である。
本実施形態に係る情報処理システムは、一例としてＰＤＦやワードなどのページ記述データをＳＶＧデータに変換するシステムである。図１に示す情報処理システムは、スマートフォンやタブレットといったモバイル端末１１０、データ変換サーバ（情報処理装置）１２０およびそれらを繋げるネットワーク１０１の組み合わせで構成されている。ネットワーク１０１は、例えば、ＬＡＮ、ＷＡＮ等である。ＬＡＮは、Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋの略称である。ＷＡＮは、Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋの略称である。
【００１２】
モバイル端末１１０は、ＣＰＵ１１１、メモリユニット１１２、記憶装置１１３、入力装置１１４、ディスプレイ装置１１５およびネットワークインタフェイス１１６を備える。ＣＰＵは、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略称である。ＣＰＵ１１１は、モバイル端末１１０全体を制御する。ネットワークインタフェイス１１６は、モバイル端末１１０をネットワーク１０１を介して他の装置につなげることができる。メモリユニット１１２は、例えば、半導体のランダムアクセスメモリ（ＲＡＭ）やリードオンリーメモリ（ＲＯＭ）から構成される。ＲＡＭは、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略称である。ＲＯＭは、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙの略称である。
【００１３】
また、記憶装置１１３は、典型的にハードディスクドライブやフラッシュメモリを含んでおり、ＯＳやプログラムおよびデータの格納に使用する。ＯＳは、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍの略称である。
【００１４】
また、モバイル端末１１０は、タッチパネルやキーボードまたは音声入力のためのマイクといった入力装置１１４、表示を行うためのディスプレイ装置１１５を含んでいる。モバイル端末１１０は、アップル（登録商標）社のｉＯＳ、グーグル社のアンドロイドまたはＬＩＮＵＸ（登録商標）やマイクロソフト（登録商標）ウィンドウズ（登録商標）のようなＯＳや相互接続バス１１７を介して通信を行うモバイル端末１１０のコンポーネント１１１〜１１６を利用する。
【００１５】
本実施形態におけるモバイル端末１１０の動作処理を実現するソフトウェアは、例えば上述した記憶装置を含むコンピュータの可読媒体に格納される。ソフトウェアは、コンピュータの可読媒体からコンピュータにロードされ、モバイル端末１１０のＣＰＵ１１１によって実行される。そのコンピュータでコンピュータプログラム製品を使用することにより画像処理に有利な装置として作動することができる。
【００１６】
データ変換サーバ１２０は、ＣＰＵ１２１、メモリユニット１２２、記憶装置１２３、入力装置１２４、ディスプレイ装置１２５およびネットワークインタフェイス１２６を備える。ＣＰＵ１２１は、データ変換サーバ１２０全体を制御する。ネットワークインタフェイス１２６は、データ変換サーバ１２０をネットワーク１０１を介して他の装置につなげることができる。メモリユニット１２２は、例えば、半導体のランダムアクセスメモリ（ＲＡＭ）やリードオンリーメモリ（ＲＯＭ）から構成される。
【００１７】
記憶装置１２３は、典型的にハードディスクドライブやフラッシュメモリを含んでおり、ＯＳやプログラムおよびデータの格納に使用する。また、データ変換サーバ１２０は、キーボードやマウスといった入力装置１２４、表示を行うためのディスプレイ装置１２５を含んでいる。データ変換サーバ１２０は、ＬＩＮＵＸ（登録商標）やマイクロソフト（登録商標）ウィンドウズ（登録商標）のようなオペレーションシステムや相互接続バス１２７を介して通信を行うデータ変換サーバ１２０のコンポーネント１２１から１２６を利用する。
【００１８】
本実施形態のデータ変換サーバ１２０の動作処理を実現するソフトウェアは、例えば上述した記憶装置を含むコンピュータの可読媒体に格納される。ソフトウェアは、コンピュータの可読媒体からコンピュータにロードされ、データ変換サーバ１２０のＣＰＵ１２１によって実行される。そのコンピュータでコンピュータプログラム製品を使用することによりデータ変換処理に有利な装置として作動することができる。
【００１９】
図２は、本実施形態に係る情報処理システムの機能構成例を示す図である。
本実施形態に係る情報処理システムでは、モバイル端末１１０でデータ変換指示を受けたデータをデータ変換サーバ１２０に送信する。データ変換サーバ１２０は、指定されたフォーマットへのデータ変換処理を行い、生成したデータをモバイル端末１１０に送信し、モバイル端末１１０で端末表示を行う。図２に示すように、モバイル端末１１０とデータ変換サーバ１２０は、ネットワーク１０１を介して通信する。ネットワーク１０１は、例えばインターネットやイントラネット等である。
【００２０】
モバイル端末１１０は、表示部２１１、通信部２１２、入力部２１３およびデータ取得部２１４を備える。表示部２１１は、端末表示を行う。通信部２１２は、ネットワーク１０１に接続し他の機器とネットワーク通信を行う。入力部２１３は、ユーザの操作にしたがって、アプリケーションへの指示や印刷指示を入力する。データ取得部２１４は、ドキュメントデータやアプリケーションが動作するためのデータ取得を行う。
【００２１】
データ変換サーバ１２０は、表示部２２１、通信部２２２、入力部２２３、データ取得部２２４、データ変換部２２５およびデータ保存部２２６を備える。表示部２２１は、端末表示を行う。通信部２２２は、ネットワーク１０１に接続し他の機器とネットワーク通信を行う。入力部２２３は、ユーザの操作にしたがって、データや指示を入力する。データ取得部２２４は、変換するデータの取得を行う。データ変換部２２５は、入力データに対して指定されたフォーマットへデータ変換を行う。図３〜図８、および図１４を用いて後述するフローチャートの処理は、このデータ変換部２２５で行われる。データ保存部２２６は、データ変換処理中のデータを保存する。
【００２２】
図３は、実施例における描画データ変換処理を説明するメインフローチャートであり、データ変換サーバ１２０においてＰＤＦやワードなどのページ記述データをＳＶＧデータに変換する処理を説明するものである。
本実施形態に係る情報処理システム全体の処理の流れとしては、まずモバイル端末１１０が、データ変換対象データおよび変換フォーマット情報を含むデータをデータ変換サーバ１２０に送信する。データ変換サーバ１２０では、記憶装置１２３に記憶されたデータ変換部２２５の処理が、ＣＰＵ１２１によりメモリユニット１２２にロードされ実行される。ＣＰＵ１２１は、メモリユニット１２２、記憶装置１２３、入力装置１２４、ディスプレイ装置１２５、ネットワークインタフェイス１２６を制御することにより、図３〜図８、および図１４で後述するフローチャートの処理を行う。データ変換サーバ１２０は、変換し、生成したデータをモバイル端末１１０に送信する。
モバイル端末１１０は、ＣＰＵ１１１が、メモリユニット１１２、記憶装置１１３、入力装置１１４、ディスプレイ装置１１５、ネットワークインタフェイス１１６を制御することにより、受信したデータをディスプレイ装置１１５に端末表示する。以上が、本実施形態に係る情報処理システムの描画データ変換処理の基本的な流れである。以下、図３を用いて描画データ変換処理の詳細について説明する。
【００２３】
まずデータ変換部２２５の処理がＣＰＵ１２１によりロードされ実行されると、ＣＰＵ１２１は、ステップＳ３０１でネットワークインタフェイス１２６を制御し通信部２２２により、データ変換対象データの取得を行う。次にステップＳ３０２で、ＣＰＵ１２１は、取得したデータを指定されたデータ形式にフォーマット変換する。ここでのフォーマット変換は、入力データを指定されたフォーマットに単純に変換するもので、パスの最適化等は行わない。
【００２４】
次にステップＳ３０３で、ＣＰＵ１２１は、指定されたフォーマットがパス長の指定が可能なフォーマットか否かを判別する。例えば、ＳＶＧフォーマットであればパス長（ＰａｔｈＬｅｎｇｔｈ）がパスに沿う距離としてフォーマットが定義されている。描画データが、図形を表現するパス座標に従って厳密に計算し描画されることを想定していた場合、その図形を描画する際にパス長の計算誤差が発生すると、想定通りに図形が描画されないことがありうる。この問題を解決するためにフォーマットによってはパス長を定義し、パス長が設定されたパスに対しては、実際に計算して求めたパス長を、パス長で設定された値で補正する。例えば、計算したパス長が９０で、設定されたパス長が１００とすると、９０／１００の比率で描画補正を行う。
【００２５】
ステップＳ３０３の判別でＹＥＳの場合には、処理はステップＳ３０４に進み、ＣＰＵ１２１は、図４で後述するパス変換処理１を行う。そして、ステップＳ３０６で、ＣＰＵ１２１は、変換したデータを通信部２２２によりモバイル端末１１０にデータ出力を行い、描画データ変換処理を終了する。一方、ステップＳ３０３の判別でＮＯの場合には、処理はステップＳ３０５に進み、ＣＰＵ１２１は、図１４で後述するパス変換処理２を行い、ステップＳ３０６へ進む。
【００２６】
図４は、図３に示したステップＳ３０４で呼び出されるパス変換処理１を説明するフローチャートである。
まずデータ変換部２２５の処理がＣＰＵ１２１によりロードされ実行されると、ステップＳ４０１では、ＣＰＵ１２１はデータに未処理の描画データがあるか否かを判別する。未処理の描画データがある場合には、処理はステップＳ４０２に進み、ない場合には、呼び出し元に戻る。
【００２７】
ステップＳ４０２で、ＣＰＵ１２１は、描画データのパス内の座標点の数を算出する。パス内の座標点の数を以後パス数と呼ぶ。また、ここでの描画データの単位は、１つの図形描画に関するデータであって、パスの定義、パスに対する描画指定および描画属性を含む。例えば、図１３（Ａ）は、ＳＶＧフォーマットのデータの一例を示すもので、枠１３００で囲まれたデータが描画データの１単位に相当する。このようにＳＶＧフォーマットの場合は、ｓｖｇタグの内部に、描画データの１単位に相当する図形等の各要素がそれぞれ固有のタグを用いて記載される。枠１３００で囲まれた要素は、“ｐｏｌｙｇｏｎ”タグにより多角形を描画するためのデータであり、枠１３０２で囲まれたパスを定義するためのデータと、それ以外の描画属性を指定するためのデータとを含む。具体的には、枠１３０２で囲まれたデータのように、パス（図形を表現する始点から終点までの座標点列）を定義するには“ｐｏｉｎｔｓ”属性を用いて、各座標点のＸ座標とＹ座標の値をカンマまたは空白で区切って記載する。また、描画属性としてこの例では“ｆｉｌｌ”や“ｓｔｒｏｋｅ”、“ｓｔｒｏｋｅ−ｗｉｄｔｈ”、“ｓｔｒｏｋｅ−ｄａｓｈａｒｒａｙ”を用いて、多角形の描画に関して塗色や輪郭線の色、輪郭線の太さ、破線の作成等の指定を行う。
【００２８】
次にステップＳ４０３で、ＣＰＵ１２１は、パス数が所定値より多いか否かを判別する。パス数が所定値より多くない場合には、処理はステップＳ４０１に戻り、多い場合には、処理はステップＳ４０４に進む。表示対象デバイスの処理能力が高い場合やデータ通信スピードが高速な場合は、パス数が多くてもシステムとしての処理時間が問題になるケースが非常に少ないため、所定値を大きい値に設定する。一方、表示対象デバイスの処理能力が低い場合やデータ通信スピードが低速な場合は、パス数が多いことによるシステムとしての処理時間が問題になるため、所定値を小さい値に設定することが望ましい。本実施形態では一例としパス数が１００を超えるか否かで判断する。パス数が少ないときは、パスに対する補正処理を行っても効果が少ないのでこのような判断を行う。ステップＳ４０４では、図５を用いて後述するパス長情報が必要か否かのチェック処理を行う。
【００２９】
次にステップＳ４０５で、ＣＰＵ１２１は、パス長情報が必要か否かを判別し、必要であると判別した場合には、処理はステップＳ４０６に進み、パス長の算出を行い、ステップＳ４０７に進む。一方、ステップＳ４０５でパス長情報が不要であると判別した場合には、処理はステップＳ４０７に進む。
パス長の算出は、始点から終点までのパス座標値を順次取り出し、２点間の距離を求め、累積することで行う。図９（Ａ）および図１１（Ａ）は、パス補正処理前のパスを示す図の例である。図９（Ａ）では、パス長として始点となる点９０１から、矢印９００の向きに、点９０２、点９０３と続き、終点の点９０１まで、全１７点のパスの距離を求める。また、図１１（Ａ）では、パス長として始点となる点１１０１から矢印１１００の向きに、点１１０９までの全９点のパスの距離を求める。図示しないが、途中曲線がある場合には、曲線の定義に基づきパスの道のりを求める。例えば、曲線がベジェ曲線であれば、ベジェ曲線の定義に従い道のりを求める。
【００３０】
次にステップＳ４０７で、ＣＰＵ１２１は、図６〜図８を用いて後述するパス補正処理１〜３を行う。パス補正処理１〜３のうちどの補正処理を行うかは、あらかじめ決めた補正処理を実施してもよいし、複数の補正処理を組み合わせてもよい。このいずれかの補正処理によって、パスで示される描画データのデータ量を削減することができる。補正処理による描画データのデータ量の削減の様子については、後述する。次にステップＳ４０８で、ＣＰＵ１２１は、ステップＳ４０５の判断でパス長が必要と判断した場合には、ステップＳ４０６で算出されたパス長に基づいて求められるパス長情報をデータに追加する処理を行い、処理はステップＳ４０１に戻る。つまりステップＳ４０８において、ＣＰＵ１２１は、パス補正処理前のパスの長さに基づくパス長情報をデータに追加する。パス長情報の追加処理については後述する。
図１３（Ｃ）は、パス補正処理として図６を用いて後述するパス間引き処理（パス補正処理１）を行った後のＳＶＧデータに対して、パス長情報としてＳＶＧフォーマットで定義されている“ｐａｔｈＬｅｎｇｔｈ”属性を付加した例を示している。
【００３１】
図５は、図４に示したステップＳ４０４で呼び出されるパス長情報が必要か否かのチェック処理を説明するフローチャートである。
まずデータ変換部２２５の処理がＣＰＵ１２１によりロードされ実行されると、ステップＳ５０１で、ＣＰＵ１２１は、描画データにパス長情報があるか否かを判別する。パス長情報があれば、処理はステップＳ５０５へ進み、なければステップＳ５０２に進む。パス長情報があるか否かは、ＳＶＧフォーマットの場合は、“ｐａｔｈＬｅｎｇｔｈ”属性が含まれているか否かで判別する。
【００３２】
ステップＳ５０２で、ＣＰＵ１２１は、描画データにダッシュパターンが指定されているか否かを判別し、指定されていれば処理はステップＳ５０６へ進み、指定されていなければステップＳ５０３へ進む。ダッシュパターンが指定されているか否かは、ＳＶＧフォーマットの場合は、“ｓｔｒｏｋｅ−ｄａｓｈａｒｒａｙ”属性が含まれているか否かで判別する。ステップＳ５０３で、ＣＰＵ１２１は、描画データにパスに沿った文字列描画が指定されているか否かを判別し、指定されていれば処理ステップＳ５０６へ進み、指定されていなければステップＳ５０４へ進む。パスに沿った文字列描画が指定されているか否かは、ＳＶＧフォーマットの場合は、“ｔｅｘｔＰａｔｈ”要素が含まれているか否かで判別する。
【００３３】
ステップＳ５０４で、ＣＰＵ１２１は、描画データにモーションパスが指定されているか否かを判別し、指定されていれば処理はステップＳ５０６へ進み、指定されていなければステップＳ５０５へ進む。モーションパスが指定されているか否かは、ＳＶＧフォーマットの場合は、“ａｎｉｍａｔｅＭｏｔｉｏｎ”要素が含まれているか否かで判別する。ステップＳ５０５では、ＣＰＵ１２１は、パス長情報は不要とし、呼び出し元に戻る。一方、ステップＳ５０６では、ＣＰＵ１２１は、パス長情報は必要とし、呼び出し元に戻る。
【００３４】
図６は、図４に示したステップＳ４０７で呼び出されるパス補正処理の１つであるパス補正処理１を説明するフローチャートである。
パス補正処理１は、描画データ内のパスを間引いた場合に、図形形状が間引き前のパスに対してあらかじめ指定された許容誤差以内に収まると判断したパスを削除することで間引くものである。まずデータ変換部２２５の処理がＣＰＵ１２１によりロードされ実行されると、ステップＳ６０１で、ＣＰＵ１２１は、図形描画時の許容誤差を算出する。許容誤差は、あらかじめ固定的に設定してもよいし、表示端末のサイズや解像度情報に基づき最適な値を決定してもよい。
【００３５】
次にステップＳ６０２で、ＣＰＵ１２１は、描画データから３点分のパス情報を取得する。次にステップＳ６０３で、取得した３点のパス内での出現順に第１、第２、第３の点としたときに、ＣＰＵ１２１は、中間点である第２の点と、両端である第１及び第２の点を結ぶ直線との距離を算出し、ステップＳ６０１で算出した許容誤差内か否かを判別する。ステップＳ６０３の判別で、許容誤差内であれば処理はステップＳ６０４へ進み、許容誤差内でなければ処理はステップＳ６０５に進む。ステップＳ６０４で、ＣＰＵ１２１は、描画データから中間点のパスを削除し、処理はステップＳ６０５へ進む。
【００３６】
図９及び図１１は、パス補正処理１（間引き処理）を行う前のパスとパス補正処理１を行った後のパスの一例を示す図である。
図９（Ａ）に対し、点９０２、点９０４、点９０６、点９０８、点９１０、点９１２、点９１４、点９１６の全８点が間引かれた状態を図９（Ｂ）に示す。また、図１１（Ａ）に対し、点１１０２、点１１０４、点１１０６、点１１０８の全４点が間引かれた状態を図１１（Ｂ）に示す。
【００３７】
図６のフローチャートに戻る。ステップＳ６０５で、ＣＰＵ１２１は、描画データに未処理のパスがあるか否かを判別し、あれば処理はステップＳ６０２へ戻り、なければ呼び出し元に戻る。
【００３８】
図７は、図４に示したステップＳ４０７で呼び出されるパス補正処理の１つであるパス補正処理２を説明するフローチャートである。
パス補正処理２は、パスの座標表記に小数点以下の記載があるとき、小数点以下をあらかじめ指定された桁数に丸めることにより座標記述サイズを削減するためのパス補正を行うものである。
【００３９】
まずデータ変換部２２５の処理がＣＰＵ１２１によりロードされ実行されると、ステップＳ７０１で、ＣＰＵ１２１は、描画データのパスの小数点以下の許容桁数を算出する。許容桁数は、あらかじめ固定的に設定してもよいし、表示端末のサイズや解像度情報に基づき最適な値を決定してもよい。次にステップＳ７０２で、ＣＰＵ１２１は、描画データから順次パス情報を取得する。次にステップＳ７０３で、ＣＰＵ１２１は、取得したパスの座標値に小数点以下の値があれば、ステップＳ７０１で算出した許容桁数内にパスの座標値を丸める。次にステップＳ７０４で、ＣＰＵ１２１は、描画データに未処理のパスがあるか否かを判別し、あれば処理はステップＳ７０２へ戻り、なければ呼び出し元に戻る。
【００４０】
図８は、図４に示したステップＳ４０７で呼び出されるパス補正処理の１つであるパス補正処理３を説明するフローチャートである。
パス補正処理３は、描画データ内の曲線パスを直線パスで近似するもので、端末等で表示する際に負荷のかかる処理を予め負荷の軽い処理に変換しておくものである。
【００４１】
まずデータ変換部２２５の処理がＣＰＵ１２１によりロードされ実行されると、ステップＳ８０１では、ＣＰＵ１２１は、曲線を直線に近似する際の許容誤差を算出する。次にステップＳ８０２で、ＣＰＵ１２１は、描画データから順次パス情報を取得する。次にステップＳ８０３で、ＣＰＵ１２１は、取得したパスが曲線パスか否かを判別する。ステップＳ８０３の判別で、曲線パスであれば処理はステップＳ８０４へ進み、曲線パスでなければ処理はステップＳ８０５に進む。ステップＳ８０４で、ＣＰＵ１２１は、曲線パスをステップＳ８０１で算出した直線近似誤差内に収まるように直線に近似し、曲線パスを直線パスに置き換える。ステップＳ８０５で、ＣＰＵ１２１は、描画データに未処理のパスがあるか否かを判別し、あれば処理はステップＳ８０２へ戻り、なければ呼び出し元に戻る。
【００４２】
上述したように、描画データのパスのデータ量をパス補正処理１〜３により削減することができる。次に、これらパス補正処理により、例えば、パスに沿った文字列描画のずれや、ストロークダッシュ位置がずれるといった描画品位の劣化を抑制するために、パス補正処理により削減した削減量に応じた描画データのスケール調整について説明する。
【００４３】
図１０は、図９の間引き前のパスと間引き後のパスをダッシュパターン（破線）で描画した図である。
ダッシュパターン描画とは、“ｓｔｒｏｋｅ−ｄａｓｈａｒｒａｙ”属性を指定した線描画のこととする。図１０（Ａ）は、図９（Ａ）のパスをダッシュパターン描画したものであり、図１０（Ｂ）は、図９（Ｂ）のパスをダッシュパターン描画したものである。丸枠１００２は、線描画の始点と終点を繋ぐ部分を指し、線１００３は、丸枠１００２部分を拡大したものである。また、丸枠１００５は、線描画の始点と終点を繋ぐ部分を指し、線１００６は丸枠１００５部分を拡大したものである。線１００３と線１００６を比較すると、始点と終点の接続部分のダッシュパターン描画の結果が異なり、線１００３では空白なのに対し、線１００６では黒になっている。パス補正処理１でパスを間引くことによりパスの長さが変わり、上述したように描画結果に差が出てしまう。
【００４４】
本実施形態によれば、図４に示したように、パス補正処理（ステップＳ４０７）後にパス長情報を追加する（ステップＳ４０８）ことで、図９（Ｂ）のパスのダッシュパターン描画したものは図１０（Ｃ）のようになる。線描画の始点と終点を繋ぐ部分が、図１０（Ｃ）の線１００９では図１０（Ａ）の線１００３と同様に空白になる。これはパス長情報であるｐａｔｈＬｅｎｇｔｈを追加することにより、ＳＶＧデータの描画を行う任意のアプリケーションが、アプリケーション自身が算出したパスの全長に対するｐａｔｈＬｅｎｇｔｈの比率によりスケーリングしてパスを描画するためである。ここではパス補正処理前のパス長をｐａｔｈＬｅｎｇｔｈに指定するため、パス補正処理によりパス長が変わっても、アプリケーションでパスを描画する際に自動的にスケーリングされる。つまり、パス補正処理後のパスに対して、パス補正前のパス長で描画するように補正されるため、別途指定されるダッシュパターンの指定値とずれが生じないため、パス補正処理の前後で同等の描画結果を得ることができる。
【００４５】
図１３は、図１０の描画をＳＶＧフォーマットで表記したデータを示す図である。
図１３（Ａ）は、パス補正処理１の前、つまりパス間引き前のＳＶＧデータである。枠１３０２に囲まれたデータは、図９（Ａ）に示した全１７点のパスの情報が、“ｐｏｉｎｔｓ＝”以降、ｘ座標、ｙ座標の組み合わせで記載されたものである。“３００，６００”を始点とし、“２９２．４，６３８．３”、“２７０．７，６７０．７”と続き、最後の“ｚ”は始点（この例では、３００，６００）とを結ぶ閉図形であることを示している。図１３（Ｂ）は、パス補正処理１の後、つまりパス間引き後のＳＶＧデータである。枠１３０４で囲まれたデータは、図９（Ｂ）で示したパスの情報である。“ｐｏｉｎｔｓ＝”以降、“３００，６００”を始点とし、“２７０．７，６７０．７”、“２００，７００”と続き、最後の“ｚ”、つまり始点とを結ぶ全９点のパスを示す情報であり、パスが間引かれていることがわかる。図１３（Ｃ）は、パス補正処理１の後に、図１０（Ｃ）となるようにパス長情報を追加したＳＶＧデータである。図１３（Ｃ）では、図１３（Ｂ）に対し枠１３０６で囲まれた“ｐａｔｈＬｅｎｇｔｈ＝６２５”がパス長情報として付加されている。
【００４６】
図１２は、図１１の間引き前のパスと間引き後のパスを線描画し、さらにパスに沿った文字列を描画した図である。
図１２（Ａ）は、図１１（Ａ）のパスを線描画し、さらにパスに沿った文字列を描画したものであり、図１２（Ｂ）は、図１１（Ｂ）のパスを線描画し、さらにパスに沿った文字列を描画したものである。丸枠１２０２は、描画の終点部分を指し、文字１２０３は丸枠１２０２部分を拡大したものである。また、丸枠１２０５は、描画の終点部分を指し、文字１２０６は丸枠１２０５部分を拡大したものである。文字１２０３と文字１２０６を比較すると、文字列の最後の文字が異なり、文字１２０３では‘ｎ’であるのに対し、文字１２０６では‘ｍ’である。パス補正処理１でパスを間引くことによりパスの長さが変わり、上述したように描画結果に差が出てしまう。本実施形態によれば、図４で示したように、パス補正処理（ステップＳ４０７）後にパス長情報を追加する（ステップＳ４０８）ことで、図１１（Ｂ）のパスに沿った文字列の描画結果が図１２（Ｃ）のようになる。描画の終点部分の文字が、図１２（Ｃ）の文字１２０９は、図１２（Ａ）の文字１２０３と同様に‘ｎ’である。これは上述したように、パス長情報であるｐａｔｈＬｅｎｇｔｈを追加することにより、ＳＶＧデータの描画を行う任意のアプリケーションが、パス補正処理後のパスに対して、パス補正前のパス長で描画するように補正するためである。パス長がスケーリングされて描画されるために、パスに沿って文字列を配置してもパス補正処理前と同等の描画結果を得ることができる。
【００４７】
図１４は、図３に示したステップＳ３０５で呼び出されるパス変換処理２を説明するフローチャートである。
図１４に示す処理は、データ変換処理においえ指定されたフォーマットにパス長定義がない場合に行われる。ただし、ＳＶＧフォーマットのようにパス長定義があるフォーマットの場合であっても、パス長定義を使用せずに図１４に示す処理を行うこともありうる。ここでは、図１４の処理を適用した場合の描画データの一例として、ＳＶＧフォーマットのデータを図１５に示す。
【００４８】
まずデータ変換部２２５の処理がＣＰＵ１２１によりロードされ実行されると、ステップＳ１４０１では、ＣＰＵ１２１は、データに未処理の描画データがあるか否かを判別する。未処理の描画データがある場合には、処理はステップＳ１４０４に進み、ない場合には、呼び出し元に戻る。ステップＳ１４０２で、ＣＰＵ１２１は、描画データ内を検索し、ダッシュパターンの指定またはパスに沿った文字列描画の指定があるか否かを判別する。ダッシュパターンの指定またはパスに沿った文字列描画の指定がある場合には、処理はステップＳ１４０３へ進み、ない場合には、処理はステップＳ１４０４へ進む。
【００４９】
ステップＳ１４０３で、ＣＰＵ１２１は、描画データのパス情報を取得しパス長を算出する。ここで算出したパス長を“Ａ”とする。パス長の算出方法は、前述したステップＳ４０６と同じである。次にステップＳ１４０４で、図６〜図８に示したパス補正処理１〜３を行う。パス補正処理１〜３のうちどの補正処理を行うかは、あらかじめ決めた補正処理を実施してもよいし、複数の補正処理を組み合わせてもよい。次にステップＳ１４０５で、ＣＰＵ１２１は、パス補正処理後のパス長を算出する。ここで算出した補正後のパス長を“Ｂ”とする。
【００５０】
次にステップＳ１４０６で、ＣＰＵ１２１は、描画データにダッシュパターン指定があるか否かを判別し、ある場合には処理はステップＳ１４０７へ進み、ない場合には処理はステップＳ１４０８へ進む。ステップＳ１４０７では、描画データのダッシュパターンの指定値（描画パラメータ）を、ステップＳ１４０３で算出したパス長“Ａ”およびステップＳ１４０５で算出した補正後のパス長“Ｂ”を用いて補正する。ここで、ダッシュパターンの指定値とは、“ｓｔｒｏｋｅ−ｄａｓｈａｒｒａｙ”属性に指定する値のことであり、ダッシュパターンの描画に関して実線と空白の長さを指定する値である。元のダッシュパターン属性の指定値を“Ｃ”、補正後のダッシュパターンの指定値を“Ｄ”とすると、
Ｄ＝（Ｂ／Ａ）＊Ｃ
により算出する。すなわち、元のダッシュパターンの実線と空白の長さをそれぞれＢ／Ａ倍した長さのダッシュパターンを描画することになる。ダッシュパターンの指定値が複数ある場合は、それぞれに対し前述の計算を行う。
【００５１】
上述したように、ダッシュパターンの指定値を補正することにより、ダッシュパターンの描画結果が、図１０（Ａ）に示したパスを間引きする前のダッシュパターンと間引き後のダッシュパターンとで同等の結果となる。このようにダッシュパターンの指定値を直接補正した場合であっても、図４のステップＳ４０８においてパス長情報を追加した場合と同等の結果が得られる。
【００５２】
図１５は、ダッシュパターンの指定値を図１４のステップＳ１４０７に示す方法で補正した際のデータの一例を示す図である。
具体的には、図１５は、図１３（Ａ）のＳＶＧフォーマットで表記したデータに対し、図１３（Ｂ）に示すようにパス間引きを行った後のデータのダッシュパターンの指定値を補正したデータである。パス間引き前のパス長“Ａ＝６２４．７４８“に対し、パス間引き後のパス長は”Ｂ＝６１２．２４７“であるため、比率は、”（Ｂ／Ａ）＝０．９８“となる。“ｓｔｒｏｋｅ−ｄａｓｈａｒｒａｙ”属性は、上述したように破線の描画に関する属性であり、実線と間隔の長さをカンマ区切りまたは空白区切りで指定するものである。ここで、元のダッシュパターンの指定値“ｓｔｒｏｋｅ−ｄａｓｈａｒｒａｙ＝１５，１０”に対し、０．９８倍し、図１５の枠１５０２に示すように“ｓｔｒｏｋｅ−ｄａｓｈａｒｒａｙ＝１４．７，９．８”とする。これにより実践と間隔の長さがともにスケーリングされ、間引き処理によるパス長の変化を補正できるため、ダッシュパターンの見え方が間引きする前と同等の結果となる。
【００５３】
図１４のフローチャートの説明に戻る。ステップＳ１４０８で、ＣＰＵ１２１は、描画データにパスに沿った文字列の描画があるか否かを判別し、ある場合には処理はステップＳ１４０９へ進み、ない場合には処理はステップＳ１４０１に戻る。ステップＳ１４０９では、描画データの文字サイズの指定値を、ステップＳ１４０３で算出したパス長“Ａ”およびステップＳ１４０５で算出した補正後のパス長“Ｂ”を用いて補正し、ステップＳ１４０１に戻る。文字サイズの補正は、元の文字サイズを“Ｅ”、補正後の文字サイズを“Ｆ”とすると、
Ｆ＝（Ｂ／Ａ）＊Ｅ
により算出する。すなわち、元の文字サイズをＢ／Ａ倍したサイズで文字を描画することになる。文字サイズの指定値が複数ある場合は、それぞれに対し前述の計算を行う。
【００５４】
上述したように、パスに沿った文字列の描画があった場合に、文字のサイズを補正することにより、パスに沿った文字列の描画結果が図１２（Ａ）に示した間引き前のパスに沿った文字列と、間引き後のパスに沿った文字列とで同等の結果となる。このように文字サイズの指定値を直接補正した場合であっても、図４のステップＳ４０８においてパス長情報を追加した場合と同等の結果が得られる。
なお、本実施形態ではステップＳ１４０８において文字サイズの指定値を補正しているが、パスに沿った文字列描画に対する補正方法はこれに限られるものではない。例えば、文字のピッチなど、文字の縦または横のサイズをそれぞれ補正することもあり得る。
【００５５】
以上のように、本実施形態によれば、描画データのパスを間引く等のパス変換処理を行うことによりデータ量を削減するとともに、削減量に応じて、パス長情報に基づくパス補正処理を行うことにより、描画品質を維持することが可能となる。これにより、データ通信時間の短縮や表示時間の高速化を図るとともに、描画品位の劣化を抑制することが可能となる。
【００５６】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００５７】
以上、本発明の好ましい実施形態について説明したが、本発明は、これらの実施形態に限定されず、その要旨の範囲内で種々の変形および変更が可能である。
【符号の説明】
【００５８】
１２０    データ変換サーバ
２２５    データ変換部
【図１】
2016081187.tif 000003
【図２】
2016081187.tif 000004
【図３】
2016081187.tif 000005
【図４】
2016081187.tif 000006
【図５】
2016081187.tif 000007
【図６】
2016081187.tif 000008
【図７】
2016081187.tif 000009
【図８】
2016081187.tif 000010
【図９】
2016081187.tif 000011
【図１０】
2016081187.tif 000012
【図１１】
2016081187.tif 000013
【図１２】
2016081187.tif 000014
【図１３】
2016081187.tif 000015
【図１４】
2016081187.tif 000016
【図１５】
2016081187.tif 000017