(57)【要約】  この発明に係る文字列配置装置は、文字列を道路に沿って配置するための文字列配置データを取得する文字列配置データ取得部２と、文字列配置データ取得部２で取得された文字列配置データに含まれる道路ノード列を構成するノードの一部を間引きする道路ノード列間引き部３と、道路ノード列間引き部３で間引きされた後の道路ノード列から制御点列を作成する制御点列作成部４と、制御点列作成部４で作成された制御点列による曲線を直線で近似したノード列を作成する曲線近似部５と、曲線近似部５で作成されたノード列を曲線近似ノード列として保存する曲線近似ノード列記憶部６と、曲線近似ノード列記憶部６に保存された曲線近似ノード列に基づき文字列の配置処理を行う文字列配置処理部１３ａを備えている。
2012123986.tif 000002
【特許請求の範囲】
【請求項１】
文字列を道路に沿って配置するための文字列配置データを取得する文字列配置データ取得部と、
前記文字列配置データ取得部で取得された文字列配置データに含まれる道路ノード列を構成するノードの一部を間引きする道路ノード列間引き部と、
前記道路ノード列間引き部で間引きされた後の道路ノード列から制御点列を作成する制御点列作成部と、
前記制御点列作成部で作成された制御点列による曲線を直線で近似したノード列を作成する曲線近似部と、
前記曲線近似部で作成されたノード列を曲線近似ノード列として保存する曲線近似ノード列記憶部と、
前記曲線近似ノード列記憶部に保存された曲線近似ノード列に基づき文字列の配置処理を行う文字列配置処理部
とを備えた文字列配置装置。
【請求項２】
曲線近似部は、
制御点列作成部で作成された制御点列による曲線を直線で近似できるか否かを判定する直線判定部と、
前記直線判定部において直線で近似できないことが判定された場合に、前記制御点列作成部で作成された制御点列による曲線上の中間点を作成する曲線上中間点作成部と、
前記制御点列作成部からの制御点列による曲線のうち、前記曲線上中間点作成部で作成された中間点より前の曲線を直線で近似して作成されたノード列を出力する前半曲線近似部と、
前記制御点列作成部からの制御点列による曲線のうち、前記曲線上中間点作成部で作成された中間点より後の曲線を直線で近似して作成されたノード列を、前記前半曲線近似部で直線を近似して作成されたノード列に繋げて出力する後半曲線近似部と、
前記直線判定部において直線で近似できることが判定された場合に、前記制御点列作成部で作成された制御点列による曲線を１本の直線で近似して作成されたノード列を出力する単数直線近似部と、
前記後半曲線近似部からのノード列、または、前記単数直線近似部からのノード列を曲線近似ノード列として曲線近似ノード列記憶部に登録する曲線近似ノード登録部
とを備えたことを特徴とする請求項１記載の文字列配置装置。
【請求項３】
文字列配置処理部は、
曲線近似ノード列記憶部から文字列が沿うノード列を取得する曲線近似ノード列取得部と、
前記曲線近似ノード列取得部で取得された曲線近似ノード列に基づき文字列の配置位置を算出する文字列配置算出部と、
文字列の配置位置を保存する出力文字列配置記憶部と、
前記文字列配置算出部で算出された文字列の配置位置を前記出力文字列配置記憶部に登録する文字列配置登録部
とを備えたことを特徴とする請求項１記載の文字列配置装置。
【請求項４】
文字列配置算出部は、
曲線近似ノード列取得部で取得された曲線近似ノード列に基づいて、各ノードにおいてリンクにより形成されるリンク角度を算出するリンク角度算出部と、
前記リンク角度算出部において算出されたリンク角度に基づき文字を配置する文字配置部と、
前記文字配置部で配置された文字がリンク外であるか否かを判定する文字リンク外判定部と、
前記文字リンク外判定部でリンク外でないことが判定された場合に文字同士が重複するか否かを判定する重複判定部と、
前記重複判定部での判定結果に応じてパラメータを更新するパラメータ更新部と、
前記パラメータ更新部で更新されたパラメータに基づき既定の文字数に達したか否かを判定し、既定の文字数に達したことが判定された場合に処理を終了させる文字数判定部
とを備えたことを特徴とする請求項３記載の文字列配置装置。
【請求項５】
文字配置部は、
リンク角度算出部で算出されたリンク角度に基づき配置された文字が文字列中の１番目の文字であるか否かを判定する初期文字判定部と、
前記初期文字判定部における判定結果に応じて、文字の左下座標を算出する文字左下座標算出部と、
前記初期文字判定部による判定結果または文字左下座標算出部で算出された文字の左下座標に応じて文字の配置位置を決める文字配置位置決定部と、
前記文字左下座標算出部で算出された文字の左下座標に基づき次の文字までの距離を決める次文字配置距離更新部
とを備えたことを特徴とする請求項４記載の文字列配置装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、地図上に道路名称等の文字列を配置する文字列配置装置に関する。
【背景技術】
【０００２】
従来、道路名称等の文字列を、文字列の配置を開始するノード（以下、「配置開始ノード」という）から、道路線（以下、「道路ノード列」という）に沿って文字列を配置する文字列配置機能を搭載したカーナビゲーションシステムが知られている（例えば、特許文献１〜特許文献３参照）。この文字列配置機能を用いれば、道路と平行に文字が配置されるので、２つのリンクに跨った文字列を配置する場合、道路リンクの角度変化（以下、「道路角度変化」という）と、文字の配置角度の変化（以下、「文字角度変化」という）が等しくなる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−７６５９３号公報
【特許文献２】特開２０００−２９４５０号公報
【特許文献３】特開平６−２５９５２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述した従来の文字列配置装置における文字列配置機能を用いて表示された文字列は、道路角度変化と文字角度変化が等しいので、道路角度変化が大きくなるに連れて文字角度変化も大きくなり、文字列の可読性が低下するという問題がある。【０００５】
この発明は、この問題を解決するためになされたものであり、文字列の可読性を向上させた文字列配置装置を提供することを課題とする。
【課題を解決するための手段】
【０００６】
この発明に係る文字列配置装置は、文字列を道路に沿って配置するための文字列配置データを取得する文字列配置データ取得部と、文字列配置データ取得部で取得された文字列配置データに含まれる道路ノード列を構成するノードの一部を間引きする道路ノード列間引き部と、道路ノード列間引き部で間引きされた後の道路ノード列から制御点列を作成する制御点列作成部と、制御点列作成部で作成された制御点列による曲線を直線で近似したノード列を作成する曲線近似部と、曲線近似部で作成されたノード列を曲線近似ノード列として保存する曲線近似ノード列記憶部と、曲線近似ノード列記憶部に保存された曲線近似ノード列に基づき文字列の配置処理を行う文字列配置処理部を備えている。
【発明の効果】
【０００７】
この発明に係る文字列配置装置によれば、道路リンクから作成した曲線上に文字列を配置することにより文字角度変化を小さくできるので、文字列の可読性を向上させることができる。
【図面の簡単な説明】
【０００８】
【図１】この発明の実施の形態１に係る文字列配置装置の構成を示すブロック図である。
【図２】この発明の実施の形態１に係る文字列配置装置の曲線近似部の詳細な構成を示すブロック図である。
【図３】この発明の実施の形態１に係る文字列配置装置の文字列配置算出部の詳細な構成を示すブロック図である。
【図４】この発明の実施の形態１に係る文字列配置装置の文字配置部の詳細な構成を示すブロック図である。
【図５】この発明の実施の形態１に係る文字列配置装置の動作を示すフローチャートである。
【図６】この発明の実施の形態１に係る文字列配置装置において処理対象とされる道路ノード列中のノードとリンクの関係の例を示す図である。
【図７】この発明の実施の形態１に係る文字列配置装置の道路ノード列間引き部で行われる道路ノード列の間引き処理を示すフローチャートである。
【図８】この発明の実施の形態１に係る文字列配置装置において行われた間引き処理後の道路ノード列中のノードとリンクの関係の例を示す図である。
【図９】この発明の実施の形態１に係る文字列配置装置における間引き処理後に処理対象とされる道路ノード列中のノードとリンクの関係の例を示す図である。
【図１０】この発明の実施の形態１に係る文字列配置装置の制御点列作成部で行われる制御点列の作成処理を示すフローチャートである。
【図１１】この発明の実施の形態１に係る文字列配置装置の制御点列作成部で行われる制御点列の作成処理で求められた制御点列の例を示す図である。
【図１２】この発明の実施の形態１に係る文字列配置装置の曲線近似部で行われる曲線近似ノード列の作成処理を示すフローチャートである。
【図１３】この発明の実施の形態１に係る文字列配置装置で行われる曲線近似ノード列の作成処理を説明するための説明図である。
【図１４】この発明の実施の形態１に係る文字列配置装置で行われる曲線近似ノード列の作成処理の一部を詳細に示すフローチャートである。
【図１５】この発明の実施の形態１に係る文字列配置装置で曲線近似後に取得される曲線近似ノード列と道路ノード列の関係を示す図である。
【図１６】この発明の実施の形態１に係る文字列配置装置の文字列配置算出部で行われる文字列配置処理を示すフローチャートである。
【図１７】この発明の実施の形態１に係る文字列配置装置の文字配置部で行われる文字配置処理の詳細を示すフローチャートである。
【図１８】この発明の実施の形態１に係る文字列配置装置で行われる文字の配置処理を説明するための図である。
【図１９】この発明の実施の形態１に係る文字列配置装置で行われる文字の配置処理を説明するための図である。
【図２０】この発明の実施の形態１に係る文字列配置装置で行われる文字の配置処理により配置された文字列を説明するための図である。
【図２１】この発明の実施の形態１に係る文字列配置装置で行われる文字の配置処理により配置された文字列を説明するための図である。
【発明を実施するための形態】
【０００９】
以下、この発明の実施の形態を、図面を参照しながら詳細に説明する。
実施の形態１．
図１は、この発明の実施の形態１に係る文字列配置装置の構成を示すブロック図である。この文字列配置装置は、文字列配置データ記憶部１、文字列配置データ取得部２、道路ノード列間引き部３、制御点列作成部４、曲線近似部５、曲線近似ノード列記憶部６および文字列配置処理部１３ａを備えており、さらに、文字列配置処理部１３ａは、曲線近似ノード列取得部１３、文字列配置算出部１４、文字列配置登録部１５および出力文字列配置記憶部１６を備えている。
【００１０】
文字列配置データ記憶部１は、文字列配置データを記憶する。文字列配置データは、文字列を構成する複数の文字、各文字の縦幅および横幅、文字列が沿う道路ノード列および文字列の配置開始ノードを表すデータを含む。文字列配置データ記憶部１に記憶されている文字列配置データは、文字列配置データ取得部２によって読み出される。
【００１１】
文字列配置データ取得部２は、文字列配置データ記憶部１から文字列配置データを読み出して取得する。この文字列配置データ取得部２で取得された文字列配置データは、道路ノード列間引き部３に送られる。
【００１２】
道路ノード列間引き部３は、文字列配置データ取得部２から送られてきた文字列配置データに含まれる道路ノード列を構成するノードの一部を間引きする。この道路ノード列間引き部３でノードの一部が間引きされた後の道路ノード列は、制御点列作成部４に送られる。この道路ノード列間引き部３における間引きによって、文字列の軌跡を滑らかにすることができる。
【００１３】
制御点列作成部４は、道路ノード列間引き部３から送られてきた、文字列が沿う道路ノード列から曲線を生成するための制御点列を作成する。この制御点列作成部４で作成された制御点列は、曲線近似部５に送られる。
【００１４】
曲線近似部５は、制御点列作成部４から送られてきた制御点列から曲線を作成し、この作成した曲線を直線近似してノード列を生成する。この曲線近似部５で生成されたノード列は、曲線近似ノード列として曲線近似ノード列記憶部６に送られる。この曲線近似部５において道路リンクから作成される曲線を直線で近似することにより、文字配置を高速化することができる。この曲線近似部５の詳細については後述する。
【００１５】
曲線近似ノード列記憶部６は、曲線近似部５から送られてきた曲線近似ノード列を保存する。この曲線近似ノード列記憶部６に保存されている曲線近似ノード列は、曲線近似ノード列取得部１３によって読み出される。曲線近似ノード列取得部１３は、曲線近似ノード列記憶部６から曲線近似ノード列を読み出して取得する。この曲線近似ノード列取得部１３で取得された曲線近似ノード列は、文字列配置算出部１４に送られる。
【００１６】
文字列配置算出部１４は、曲線近似ノード列取得部１３から送られてきた曲線近似ノード列に基づき文字列の配置位置を算出する。この文字列配置算出部１４によって算出された文字列の配置位置は、文字列配置登録部１５に送られる。この文字列配置算出部１４の詳細については後述する。
【００１７】
文字列配置登録部１５は、文字列配置算出部１４から送られてきた文字列の配置位置を、該文字列配置算出部１４から送られてきた判定結果が既定の文字数に達したことを示している場合に、出力文字列配置記憶部１６に登録する。出力文字列配置記憶部１６は、文字列配置登録部１５によって登録された文字列の配置位置を記憶する。
【００１８】
次に、上述した曲線近似部５の詳細を説明する。図２は、曲線近似部５の詳細な構成を示すブロック図である。曲線近似部５は、曲線近似ノード登録部７、直線判定部８、曲線上中間点作成部９、前半曲線近似部１０、後半曲線近似部１１および単数直線近似部１２を備えている。
【００１９】
曲線近似ノード登録部７は、後半曲線近似部１１または単数直線近似部１２から送られてきた曲線近似ノード列を曲線近似ノード列記憶部６に登録する。直線判定部８は、制御点列作成部４から送られてきた制御点列から作成される曲線が直線で近似できるか否か、換言すれば、直線に近いか否かを判定する。この直線判定部８において直線に近くないことが判断されるとシーケンスは曲線上中間点作成部９での処理に移り、直線に近いことが判断されると単数直線近似部１２での処理に移る。
【００２０】
曲線上中間点作成部９は、制御点列作成部４から送られてきた制御点列から作成される曲線上の中間点を作成する。この曲線上中間点作成部９で作成された中間点は、前半曲線近似部１０および後半曲線近似部１１に送られる。前半曲線近似部１０は、制御点列作成部４から送られてきた制御点列から作成される曲線のうち、曲線上中間点作成部９から送られてきた中間点より前の曲線を直線で近似する。この前半曲線近似部１０における直線近似によって作成されたノード列は、後半曲線近似部１１に送られる。
【００２１】
後半曲線近似部１１は、制御点列作成部４から送られてきた制御点列から作成される曲線のうち、曲線上中間点作成部９から送られてきた中間点より後の曲線を直線で近似する。この後半曲線近似部１１における直線近似によって作成されたノード列は、前半曲線近似部１０から送られてくるノード列に繋げられ、曲線近似ノード列として曲線近似ノード登録部７に送られる。
【００２２】
単数直線近似部１２は、制御点列作成部４から送られてきた制御点列から作成される曲線を１本の直線で近似する。この単数直線近似部１２において直線近似によって作成されたノード列は、曲線近似ノード列として曲線近似ノード登録部７に送られる。
【００２３】
次に、上述した文字列配置算出部１４の詳細を説明する。図３は、文字列配置算出部１４の詳細な構成を示すブロック図である。文字列配置算出部１４は、リンク角度算出部１７、文字配置部１８、文字リンク外判定部１９、重複判定部２０、パラメータ更新部２１および文字数判定部２２を備えている。
【００２４】
リンク角度算出部１７は、曲線近似ノード列取得部１３から送られてくる曲線近似ノード列に基づいて、各ノードにおいてリンクが形成する角度（以下、「リンク角度」という）を算出する。このリンク角度算出部１７で算出されたリンク角度は、文字配置部１８に送られる。
【００２５】
文字配置部１８は、リンク角度算出部１７から送られてきたリンク角度に基づき文字を配置する。この文字配置部１８で配置された文字は、文字リンク外判定部１９に送られる。この文字配置部１８の詳細は、後述する。文字リンク外判定部１９は、文字配置部１８から送られてきた文字がリンク外であるか否かを判定する。この文字リンク外判定部１９における判定結果は、重複判定部２０に送られる。
【００２６】
重複判定部２０は、文字リンク外判定部１９から送られてくる判定結果に基づき、文字同士が重複するか否かを判定する。この重複判定部２０における判定結果は、パラメータ更新部２１に送られる。パラメータ更新部２１は、重複判定部２０から送られてきた判定結果に従って、文字列配置に使用されるパラメータを更新する。このパラメータ更新部２１で更新されたパラメータは、文字数判定部２２に送られる。
【００２７】
文字数判定部２２は、パラメータ更新部２１から送られてきたパラメータを参照し、既定の文字数に達したか否かを判定する。この文字数判定部２２における判定結果は、文字列配置登録部１５に送られる。
【００２８】
次に、上述した文字配置部１８の詳細を説明する。図４は、文字配置部１８の詳細な構成を示すブロック図である。文字配置部１８は、初期文字判定部２３、文字配置位置決定部２４、文字左下座標算出部２５および次文字配置距離更新部２６を備えている。
【００２９】
初期文字判定部２３は、リンク角度算出部１７から送られてくるリンク角度に基づいて配置された文字が文字列中の１番目の文字であるか否かを判定する。この初期文字判定部２３における判定結果は、文字配置位置決定部２４および文字左下座標算出部２５に送られる。
【００３０】
文字配置位置決定部２４は、初期文字判定部２３から送られてきた判定結果に応じて、または、文字左下座標算出部２５で算出された文字の左下座標に応じて文字の配置位置を決める。この文字配置位置決定部２４で決められた配置位置は、文字配置位置決定部２４または文字左下座標算出部２５に送られる。
【００３１】
文字左下座標算出部２５は、初期文字判定部２３から送られてきた判定結果に応じて、文字の左下座標を算出する。文字左下座標算出部２５で算出された文字の左下座標は、文字配置位置決定部２４または次文字配置距離更新部２６に送られる。次文字配置距離更新部２６は、文字左下座標算出部２５で算出された文字の左下座標に基づき、次の文字までの距離を決め、文字間隔を更新する。この次文字配置距離更新部２６で更新された文字間隔は、文字リンク外判定部１９に送られる。
【００３２】
次に、上記のように構成される実施の形態１に係る文字列配置装置の動作を説明する。図５は、文字列配置装置の動作を示すフローチャートである。
【００３３】
実施の形態１では、一例として、文字列配置データは、文字列『Ｓｔｒｉｎｇ』中の各文字の横幅、縦幅および文字列『Ｓｔｒｉｎｇ』が沿う道路ノード列を含み、文字列『Ｓｔｒｉｎｇ』中の各文字の縦幅は１０、横幅は５であり、文字列『Ｓｔｒｉｎｇ』が沿う道路ノード列はＰ（１）＝（０，１０）、Ｐ（２）＝（５，１０）、Ｐ（３）＝（１０，１０）、Ｐ（４）＝（５０，１０）およびＰ（５）＝（１０，５０）であり、文字列の配置を開始するノードはＰ（１）＝（０，１０）であるものとして説明する。
【００３４】
また、詳細は後述するが、曲線を直線近似する場合のリンクの本数を示すＳＥＰＡＲＡＴＥ＿ＮＵＭは２であり、１本のリンクで曲線を近似するか複数のリンクで曲線を近似するか否かの判断に用いられる距離の境界であるＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤは１５であり、１本のリンクで曲線を近似するか複数のリンクで曲線を近似するか否かの判断に用いられる角度変化の境界であるＳＴＲＡＩＧＨＴ＿ＴＨＲＥＳＨＯＬＤは１０であり、間引きの可否を判断する距離の境界であるＣＵＬＬＩＮＧ＿ＴＨＲＥＳＨＯＬＤは１０であり、ｒａｎｇｅの増分であるＳＴＥＰ＿ＳＩＺＥは１であるものとする。図６は、道路ノード列中のノードとリンクの関係の例を示している。
【００３５】
文字列配置装置の動作が開始されると、まず、文字列データが取得される（ステップＳＴ１１）。すなわち、文字列配置データ取得部２は、文字列配置データ記憶部１から文字列配置データを読み出し、文字列が沿う道路ノード列と文字列の配置開始ノードを取得する。この例では、文字列『Ｓｔｒｉｎｇ』が沿う道路ノード列と、文字列『Ｓｔｒｉｎｇ』の配置を開始するノードが取得される。
【００３６】
次いで、道路ノード列の間引きが行われる（ステップＳＴ１２）。すなわち、道路ノード列間引き部３は、滑らかな曲線を作成するために、文字列配置データ取得部２で取得された文字列配置データに含まれる道路ノード列を構成するノードの一部を間引きする。ここで、道路ノード列間引き部３で行われる道路ノード列の間引き処理の詳細を、図７に示すフローチャートを参照しながら説明する。
【００３７】
道路ノード列の間引き処理では、道路ノード列に含まれるノードが順々に走査され、以下の３つの条件の全て満たすノードが道路ノード列から間引かれる。
（１）ノードが道路ノード列の配置開始ノードまたは配置終了ノードでない
（２）前のノードを間引きしていない
（３）前のノードとの距離がＣＵＬＬＩＮＧ＿ＴＨＲＥＳＨＯＬＤ以下である
【００３８】
道路ノード列の間引き処理が開始されると、まず、変数ｉｒが１に初期化される（ステップＳＴ１２１）。次いで、変数ｉｒが道路ノード数以下であればループが開始される（ステップＳＴ１２２）。ループが開始されると、まず、ノードＰ（ｉｒ）は配置開始ノードまたは配置終了ノードであるかどうかが調べられる（ステップＳＴ１２３）。すなわち、道路ノード列間引き部３は、文字列配置データ取得部２から送られてきた文字列配置データに含まれる道路ノード列の中のノードＰ（ｉｒ）が配置開始ノードまたは配置終了ノードであるかどうかを調べる。このステップＳＴ１２３において、ノードＰ（ｉｒ）は配置開始ノードまたは配置終了ノードであることが判断されると、上記３つの条件のうちの（１）が満たされないのでノードＰ（ｉｒ）の間引きは行われず、シーケンスはステップＳＴ１２７に進む。
【００３９】
上記ステップＳＴ１２３において、ノードＰ（ｉｒ）は配置開始ノードまたは配置終了ノードでないことが判断されると、次いで、ノードＰ（ｉｒ−１）が間引きされたかどうかが調べられる（ステップＳＴ１２４）。すなわち、道路ノード列間引き部３は、１つ前のノードＰ（ｉｒ−１）を間引きしたかどうかを調べる。このステップＳＴ１２４において、ノードＰ（ｉｒ−１）が間引きされたことが判断されると、上記３つの条件のうちの（２）が満たされないのでノードＰ（ｉｒ）の間引きは行われず、シーケンスはステップＳＴ１２７に進む。
【００４０】
上記ステップＳＴ１２４において、ノードＰ（ｉｒ−１）が間引きされていないことが判断されると、次いで、ノードＰ（ｉｒ−１）とノードＰ（ｉｒ）との距離がＣＵＬＬＩＮＧ＿ＴＨＲＥＳＨＯＬＤ以下であるかどうかが調べられる（ステップＳＴ１２５）。すなわち、道路ノード列間引き部３は、前のノードＰ（ｉｒ−１）と現在のノードＰ（ｉｒ）との間の距離がＣＵＬＬＩＮＧ＿ＴＨＲＥＳＨＯＬＤ（この例では１０）以下であるかどうかを調べる。このステップＳＴ１２５において、ノードＰ（ｉｒ−１）とノードＰ（ｉｒ）との距離がＣＵＬＬＩＮＧ＿ＴＨＲＥＳＨＯＬＤ以下でないことが判断されると、上記３つの条件のうちの（３）が満たされないのでノードＰ（ｉｒ）の間引きは行われず、シーケンスはステップＳＴ１２７に進む。
【００４１】
一方、ステップＳＴ１２５において、ノードＰ（ｉｒ−１）とノードＰ（ｉｒ）との距離がＣＵＬＬＩＮＧ＿ＴＨＲＥＳＨＯＬＤ以下であることが判断されると、上記３つの条件の全てが満たされた旨が認識され、次いで、ノードＰ（ｉｒ）の削除が行われる（ステップＳＴ１２６）。すなわち、道路ノード列間引き部３は、文字列配置データ取得部２から送られてきた文字列配置データに含まれる道路ノード列の中のノード（ｉｒ）を間引きする。その後、シーケンスはステップＳＴ１２７に進む。ステップＳＴ１２７では、変数ｉｒがインクリメントされ、以下、変数ｉｒが道路ノード数より大きくなるまでステップＳＴ１２２とステップＳＴ１２７との間の処理が繰り返される。
【００４２】
以上の繰り返し処理により、ノードＰ（１）〜Ｐ（５）は次のように処理される。まず、ノードＰ（１）の間引きの可否が検討される。ここで、ノードＰ（１）は道路ノード列の配置開始ノードであるので、間引きされない。次に、ノードＰ（２）の間引きの可否が検討される。ここで、ノードＰ（２）は道路ノード列の配置開始ノードまたは配置終了ノードでなく、前のノードＰ（１）は間引きされておらず、且つ、ノードＰ（１）とノードＰ（２）との間の距離は５でありＣＵＬＬＩＮＧ＿ＴＨＲＥＳＨＯＬＤである１０以下である。したがって、上記３つの条件の全てが満たされるので、ノードＰ（２）は間引きされる。
【００４３】
次に、ノードＰ（３）の間引きの可否が検討される。ここで、ノードＰ（３）は道路リンクの配置開始ノードまたは配置終了ノードではないが、前のノードＰ（２）が間引きされているので、ノードＰ（３）は間引きされない。以下同様にして、ノードＰ（４）以降も処理される。
【００４４】
以上の処理の結果、図８に示すように、ノードＰ（２）が間引かれた道路ノード列、つまり、ノードＰ（１）、Ｐ（３）、Ｐ（４）およびＰ（５）で構成される道路ノード列が作成される。ここで、図９に示すように、間引き後の道路ノード列Ｐ（１）、Ｐ（３）、Ｐ（４）およびＰ（５）を、それぞれＰ’（１）、Ｐ’（２）、Ｐ’（３）およびＰ’（４）として、以降の処理を説明する。
【００４５】
以上の道路ノード列の間引き処理が終了すると、次いで、図５のフローチャートに示すように、制御点列が作成される（ステップＳＴ１３）。すなわち、制御点列作成部４は、間引き後の道路ノード列から制御点列を作成する。ここで、制御点列の作成処理の詳細を、図１０に示すフローチャートを参照しながら説明する。
【００４６】
制御点列の作成処理では、まず、制御点列Ｂ（ｉｃ）｛ｉｃ＝１，…，間引き後の道路ノード数−２｝が設定される。詳しくは、まず、変数ｉｃが１に初期化される（ステップＳＴ１３１）。次いで、変数ｉｃが「間引き後の道路ノード数−２」以下であればループが開始される（ステップＳＴ１３２）。ループが開始されると、下記（１）式に従って制御点Ｂ（ｉｃ）が計算される（ステップＳＴ１３３）。その後、シーケンスはステップＳＴ１３４に進む。
2012123986.tif 000003
ここで、ｉｃ＝１，…，間引き後の道路ノード数−２である。
【００４７】
ステップＳＴ１３４では、変数ｉｃがインクリメントされ、以下、変数ｉｃが「間引き後の道路ノード数−２」より大きくなるまでステップＳＴ１３２とステップＳＴ１３４との間の処理、つまりステップＳＴ１３３の処理が繰り返される。
【００４８】
以上の繰り返し処理においては、間引き後の道路ノード数＝４であり、制御点Ｂ（１）＝Ｐ’（２）＝（１０，１０）および制御点Ｂ（２）＝Ｐ’（３）＝（５０，１０）が得られる。
【００４９】
次いで、制御点列Ａ（ｉｃ）｛ｉｃ＝１，…，間引き後の道路ノード数−１｝が設定される。詳しくは、まず、変数ｉｃが１に初期化される（ステップＳＴ１３５）。次いで、変数ｉｃが「間引き後の道路ノード数−１」以下であればループが開始される（ステップＳＴ１３６）。ループが開始されると、まず、変数ｉｃが１であるかどうかが調べられる（ステップＳＴ１３７）。このステップＳＴ１３７において、変数ｉｃが１であることが判断されると、次いで、制御点Ａ（ｉｃ）＝Ｐ’（ｉｃ）が設定される（ステップＳＴ１３８）。その後、シーケンスはステップＳＴ１４２に進む。
【００５０】
上記ステップＳＴ１３７において、変数ｉｃが１でないことが判断されると、次いで、変数ｉｃが「道路ノード数−１」であるかどうかが調べられる（ステップＳＴ１３９）。このステップＳＴ１３９において、変数ｉｃが「道路ノード数−１」であることが判断されると、制御点Ａ（ｉｃ−１）＝Ｐ’（ｉｃ）に設定される（ステップＳＴ１４０）。その後、シーケンスはステップＳＴ１４２に進む。
【００５１】
一方、ステップＳＴ１３９において、変数ｉｃが「道路ノード数−１」でないことが判断されると、制御点Ａ（ｉｃ）＝（Ｂ（ｉｃ−１）＋Ｂ（ｉｃ））／２に設定される（ステップＳＴ１４１）。その後、シーケンスはステップＳＴ１４２に進む。ステップＳＴ１４２では、変数ｉｃがインクリメントされ、以下、変数ｉｃが「間引き後の道路ノード数−１」より大きくなるまでステップＳＴ１３６とステップＳＴ１４２との間の処理が繰り返される。
【００５２】
以上の繰り返し処理により、制御点Ａ（ｉｃ）は、以下に示すように、変数ｉｃの値によって設定値が変化する。まず、ｉｃ＝１の場合、制御点Ａ（ｉｃ）にノードＰ’（１）が設定され、変数ｉｃが「道路ノード数−１」の場合、制御点Ａ（ｉｃ−１）にノードＰ’（ｉｃ）が設定される。変数ｉｃが１でも「間引き後の道路ノード数−１」でもない場合、制御点Ａ（ｉｃ）に制御点Ｂ（ｉｃ）とＢ（ｉｃ−１）の中点が設定される。
【００５３】
以上の処理の結果、まず、制御点Ａ（１）が設定される。制御点Ａ（１）は、ｉｃ＝１であるので、ノードＰ’（１）が設定される。次に、制御点Ａ（２）が設定される。制御点Ａ（２）は、ｉｃ≠１，３であるので、制御点Ｂ（１）とＢ（２）の中点（３０，１０）となる。その後、制御点Ａ（３）が設定される。制御点Ａ（３）は、ｉｃ＝３であるので、ノードＰ’（４）が設定される。このようにして、図１１に示すように、制御点列Ａ（１）、Ａ（２）およびＡ（３）と、制御点列Ｂ（１）およびＢ（２）が求められる。
【００５４】
以上の制御点列の作成処理が終了すると、次いで、図５のフローチャートに示すように、曲線を近似した直線が作成される（ステップＳＴ１４）。すなわち、曲線近似部５は、制御点列から、曲線を近似した直線を作成する。ここで、曲線近似部５で行われる曲線を近似した直線（以下、曲線近似ノード列）の作成処理の詳細を、図１２に示すフローチャートを参照しながら説明する。
【００５５】
曲線近似ノード列の作成処理では、まず、変数ｉａが１に初期化される（ステップＳＴ１５１）。次いで、ノードの登録が行われる（ステップＳＴ１５２）。すなわち、曲線近似ノード登録部７は、制御点Ａ（１）を曲線近似ノード列記憶部６に保存する。この場合、Ａ（１）＝（０，１０）が曲線近似ノード列記憶部６に保存される。
【００５６】
次いで、変数ｉａが「間引き後の道路ノード数−２」以下であればループが開始される（ステップＳＴ１５３）。ループが開始されると、リンク（Ａ（ｉａ）、Ｂ（ｉａ））とリンク（Ｂ（ｉａ）、Ａ（ｉａ＋１））の角度変化＜ＳＴＲＡＩＧＨＴ＿ＴＨＲＥＳＨＯＬＤであるか否かが調べられる（ステップＳＴ１５４）。すなわち、直線判定部８は、制御点Ａ（ｉａ）、Ｂ（ｉａ）およびＡ（ｉａ＋１）によって作成される２次ベジエ曲線（以後、単に「ベジエ曲線」という）が直線で近似できるか否かを判定する。具体的には、まず、リンク（Ａ（ｉａ），Ｂ（ｉａ））とリンク（Ｂ（ｉａ），Ａ（ｉａ＋１））の角度変化がＳＴＲＡＩＧＨＴ＿ＴＨＲＥＳＨＯＬＤ未満か否かを判定する。なお、変数ｉａは制御点列のインデックスを示し、リンク（Ａ（ｉａ），Ｂ（ｉａ））とリンク（Ｂ（ｉａ），Ａ（ｉａ＋１））の角度変化θは、図１３に示すように、リンク（Ａ（ｉａ），Ｂ（ｉａ））の向きとリンク（Ｂ（ｉａ），Ａ（ｉａ＋１））の向きの差分の絶対値である。ここで、リンク（Ａ（ｉａ），Ｂ（ｉａ））の向きは、ｘ軸を０°、ｙ軸を９０°とした時の偏角である。
【００５７】
この例では、変数ｉｃが１の場合は、図１１に示すように、リンク（Ａ（１），Ｂ（１））の向きは０°となり、リンク（Ｂ（１），Ａ（２））の向きも０°となる。したがって、リンク（Ａ（１），Ｂ（１））とリンク（Ｂ（１），Ａ（２））の角度変化は０°となり、ステップＳＴ１５４ではＹＥＳと判定される。
【００５８】
上記ステップＳＴ１５４において、リンク（Ａ（ｉａ）、Ｂ（ｉａ））とリンク（Ｂ（ｉａ）、Ａ（ｉａ＋１））の角度変化＜ＳＴＲＡＩＧＨＴ＿ＴＨＲＥＳＨＯＬＤであることが判断されると、１本のリンクで曲線が近似される（ステップＳＴ１５５）。すなわち、単数直線近似部１２は、制御点Ａ（ｉａ）、Ｂ（ｉａ）およびＡ（ｉａ＋１）で作成されるベジエ曲線をリンク（Ａ（ｉａ），Ａ（ｉａ＋１））で近似する。この例では、制御点Ａ（１）、Ｂ（１）およびＡ（２）で作成されるベジエ曲線が、リンク（Ａ（１），Ａ（２））で近似される。
【００５９】
次いで、ノードの登録が行われる（ステップＳＴ１５６）。すなわち、曲線近似ノード登録部７は、単数直線近似部１２から送られてきたリンクのうち、既に登録されているＡ（１）以外のノードを曲線近似ノードとして曲線近似ノード列記憶部６に保存する。この例では、制御点Ａ（２）が保存される。その後、シーケンスはステップＳＴ１６６に進む。
【００６０】
上記ステップＳＴ１５４において、リンク（Ａ（ｉａ）、Ｂ（ｉａ））とリンク（Ｂ（ｉａ）、Ａ（ｉａ＋１））の角度変化＜ＳＴＲＡＩＧＨＴ＿ＴＨＲＥＳＨＯＬＤでないことが判断されると、シーケンスはステップＳＴ１５７に進む。この例では、次のループに入って変数ｉｃが２になると、直線判定部８は、リンク（Ａ（２），Ｂ（２））とリンク（Ｂ（２），Ａ（３））の角度変化がＳＴＲＡＩＧＨＴ＿ＴＨＲＥＳＨＯＬＤ未満か否かを調べ、リンク（Ａ（２），Ｂ（２））の向きは０°、リンク（Ｂ（２），Ａ（３））の向きは１３５°であるので、リンク（Ａ（２），Ｂ（２））とリンク（Ｂ（２），Ａ（３））の角度変化はＳＴＲＡＩＧＨＴ＿ＴＨＲＥＳＨＯＬＤ以上であると判定する。したがって、ステップＳＴ１５４ではＮＯと判定されてシーケンスはステップＳＴ１５７に進み、制御点Ａ（２）、Ｂ（２）およびＡ（３）で作成されるベジエ曲線を複数の直線で近似する処理が行われる。
【００６１】
具体的には、ステップＳＴ１５７においては、曲線上の中間点である点ＭＰ（ｉａ）が算出される。すなわち、曲線上中間点作成部９は、ベジエ曲線上の点ＭＰ（ｉａ）を下記（２）式に従って算出する。この例では、（２）式にＡ（２）＝（３０，１０），Ｂ（２）＝（５０，１０），Ａ（３）＝（１０，５０）を代入すると、曲線上の点ＭＰ（２）＝（３５，２０）となる。
2012123986.tif 000004
【００６２】
次いで、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ）との間の距離＜ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤであるか否かが調べられる（ステップＳＴ１５８）。すなわち、前半曲線近似部１０は、下記（３）式によって求められる制御点Ａ（ｉａ）と曲線上の点ＭＰ（ｉａ）との間の距離Ｄｉｓｔ１が、ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤより小さいかどうかを調べる。
【００６３】
このステップＳＴ１５８において、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ）との間の距離＜ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤであることが判断されると、１本のリンクで曲線が近似される（ステップＳＴ１５９）。すなわち、単数直線近似部１２は、制御点Ａ（ｉａ）と曲線上の点ＭＰ（ｉａ）との間のベジエ曲線を１本のリンク（Ａ（ｉａ），ＭＰ（ｉａ））で近似する。
【００６４】
次いで、ノードの登録が行われる（ステップＳＴ１６０）。すなわち、曲線近似ノード登録部７は、単数直線近似部１２から送られてきた、１本のリンクで近似されたノードを曲線近似ノード列記憶部６に保存する。その後、シーケンスはステップＳＴ１６２に進む。
【００６５】
一方、ステップＳＴ１５８において、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ）との間の距離＜ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤでないことが判断されると、すなわち、距離Ｄｉｓｔ１がＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤ以上であることが判断されると、制御点Ａ（ｉａ）と曲線上の点ＭＰ（ｉａ）との間のベジエ曲線がＳＥＰＡＲＡＴＥ＿ＮＵＭで示される本数のリンクで近似される（ステップＳＴ１６１）。
【００６６】
このステップＳＴ１６１で行われる処理の詳細を、図１４に示すフローチャートを参照しながら説明する。この処理では、まず、変数ｉｍが１に初期化される（ステップＳＴ１７１）。次いで、変数ｉｍがＳＥＰＡＲＡＴＥ＿ＮＵＭ以下であればループが開始される（ステップＳＴ１７２）。ループが開始されると、まず、曲線上のノードが算出される（ステップＳＴ１７３）。すなわち、前半曲線近似部１０は、下記（４）式に従って、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ）と間の曲線上のノードを算出する。
2012123986.tif 000005
ここで、（４）式中のｔ（ｉｍ）は（５）式に示す値であり、ＢＰ（ｉａ，ｉｍ）は制御点Ａ（ｉａ）と曲線上の点ＭＰ（ｉａ）との間のベジエ曲線上に作成されるｉｍ番目のノードである。
【００６７】
次いで、ノードの登録が行われる（ステップＳＴ１７４）。すなわち、曲線近似ノード登録部７は、前半曲線近似部１０で算出されたノードのうち、既に登録されているノード以外の曲線上のノードを、曲線近似ノード列記憶部６に登録する。次いで、変数ｉｍがインクリメントされ、以下、変数ｉｍがＳＥＰＡＲＡＴＥ＿ＮＵＭより大きくなるまでステップＳＴ１７２とステップＳＴ１７５との間の処理が繰り返される。この繰り返し処理において、変数ｉｍがＳＥＰＡＲＡＴＥ＿ＮＵＭより大きくなると、シーケンスは図１２に示すステップＳＴ１６２に進む。
【００６８】
この場合、Ｄｉｓｔ１は１１．１８であり、ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤ以下である。したがって、制御点Ａ（２）と曲線上の点ＭＰ（２）との間の曲線はリンク（Ａ（２），ＭＰ（２））で近似される。この場合、ノードの登録では、曲線上の点ＭＰ（２）が保存される。
【００６９】
ステップＳＴ１６２においては、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ＋１）との間の距離＜ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤであるか否かが調べられる。すなわち、後半曲線近似部１１は、下記（６）式に従って算出される曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ＋１）との距離Ｄｉｓｔ２が、ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤより小さいかどうかを調べる。
【００７０】
このステップＳＴ１６２において、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ＋１）との間の距離＜ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤであることが判断されると、１本のリンクで曲線が近似される（ステップＳＴ１６３）。すなわち、単数直線近似部１２は、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ＋１）との間のベジエ曲線を１本のリンク（ＭＰ（ｉａ），Ａ（ｉａ））で近似する。
【００７１】
次いで、ノードの登録が行われる（ステップＳＴ１６４）。すなわち、曲線近似ノード登録部７は、単数直線近似部１２から送られてきた１本のリンクで近似されたノードを曲線近似ノード列記憶部６に保存する。その後、シーケンスはステップＳＴ１６６に進む。
【００７２】
一方、ステップＳＴ１６２において、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ＋１）との間の距離＜ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤでない、すなわち、距離Ｄｉｓｔ２がＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤ以上であることが判断されると、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ＋１）との間のベジエ曲線がＳＥＰＡＲＡＴＥ＿ＮＵＭで示される本数のリンクで近似される（ステップＳＴ１６５）。その後、シーケンスはステップＳＴ１６６に進む。
【００７３】
上記ステップＳＴ１６５で行われる処理の詳細を、図１４に示すフローチャートを参照しながら説明する。この処理では、まず、変数ｉｍが１に初期化される（ステップＳＴ１７１）。次いで、変数ｉｍがＳＥＰＡＲＡＴＥ＿ＮＵＭ以下であればループが開始される（ステップＳＴ１７２）。ループが開始されると、まず、曲線上のノードが算出される（ステップＳＴ１７３）。すなわち、前半曲線近似部１０は、上記（４）式に従って、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ）と間の曲線上のノードを算出する。
2012123986.tif 000006
ここで、（４）式中のｔ（ｉｍ）は（７）式に示す値であり、このときのＢＰ（ｉａ，ｉｍ）は曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ＋１）との間のベジエ曲線上に作成されるｉｍ番目のノードである。
【００７４】
次いで、ノードの登録が行われる（ステップＳＴ１７４）。すなわち、曲線近似ノード登録部７は、後半曲線近似部１１で算出されたノードのうち、既に登録されているノード以外の曲線上のノードを、曲線近似ノード列記憶部６に登録する。次いで、変数ｉｍがインクリメントされ、以下、変数ｉｍがＳＥＰＡＲＡＴＥ＿ＮＵＭより大きくなるまでステップＳＴ１７２とステップＳＴ１７５との間の処理が繰り返される。その後、シーケンスはステップＳＴ１６６に進む。
【００７５】
この場合、Ｄｉｓｔ２は２６．９であり、ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤ以上である。したがって、曲線上の点ＭＰ（２）と制御点Ａ（ｉａ＋１）との間の曲線はＳＥＰＡＲＡＴＥ＿ＮＵＭ個のリンクで近似される。具体的には、まず、ｉｍ＝１のノードが算出される。（７）式より、ｔ（１）＝０．７５となり、ＢＰ（２，１）＝（２６．２５，３２．５）となる。その後、ＢＰ（２，１）が曲線近似ノード列記憶部６に保存される。次に、ＢＰ（２，２）が算出される。同様に、（７）式で求めたｔ（２）＝１より、ＢＰ（２，２）＝（１０，５０）を算出した後、ＢＰ（２，２）が曲線近似ノード列記憶部６に保存される。
【００７６】
ステップＳＴ１６６では、変数ｉａがインクリメントされ、以下、変数ｉａが「間引き後の道路ノード数−２」より大きくなるまでステップＳＴ１５３とステップＳＴ１６６との間の処理が繰り返される。このようにして、制御点列から作成された曲線を直線近似した曲線近似ノードが曲線近似ノード列記憶部６に逐次保存される。
【００７７】
なお、前半曲線近似部１０と後半曲線近似部１１は、ｔ（ｉｍ）の算出方法以外は同じ処理であるので、前半曲線近似部１０のＭＰ（ｉａ）と制御点Ａ（ｉａ）との間の距離がＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤ以上の場合と、後半曲線近似部１１のＭＰ（ｉａ）と制御点Ａ（ｉａ＋１）との間の距離がＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤ以上の場合の処理は同じである。
【００７８】
以上の曲線を近似した直線の作成処理が終了すると、次いで、図５のフローチャートに示すように、文字列データが取得される（ステップＳＴ１５）。すなわち、文字列配置データ取得部２は、文字列配置データ記憶部１から文字列配置データを読み出し、１つの文字列を構成する複数の文字と、各文字の縦幅および横幅を取得する。この場合、文字列『Ｓｔｒｉｎｇ』の文字『Ｓ』、『ｔ』、『ｒ』、『ｉ』、『ｎ』、『ｇ』、ならびに、『Ｓｔｒｉｎｇ』中の各文字の縦幅および横幅が取得される。
【００７９】
次いで、曲線近似ノード列が取得される（ステップＳＴ１６）。すなわち、曲線近似ノード列取得部１３は、曲線近似ノード列記憶部６から曲線近似ノード列を取得する。この場合、上述した処理において登録されたノードＰ”（１）＝（０，１０）、Ｐ”（２）＝（３０，１０）、Ｐ”（３）＝ＭＰ（２）＝（３５，２０）、Ｐ”（４）＝ＢＰ（２，１）＝（２６．２５，３２．５）およびＰ”（５）＝ＢＰ（２，２）＝（１０，５０）が取得される。図１５は、取得された曲線近似ノード列と、道路ノード列の関係を示す。
【００８０】
次いで、文字列の配置が行われる（ステップＳＴ１７）。すなわち、文字列配置算出部１４は、文字列を配置する。ここで、文字列配置処理の詳細を、図１６に示すフローチャートを参照しながら説明する。
【００８１】
文字列配置処理では、まず、パラメータｉｐ＝１、ｉｓ＝１およびｒａｎｇｅ＝０に初期化される（ステップＳＴ１８１）。次いで、パラメータｉｐが「曲線近似ノード列の数−１」以下であればループが開始される（ステップＳＴ１８２）。ループが開始されると、次いで、このループ内において、さらに無限ループが開始される（ステップＳＴ１８３）。無限ループが開始されると、次いで、リンクの向きθ’が算出される（ステップＳＴ１８４）。すなわち、リンク角度算出部１７は、リンク（Ｐ”（ｉｐ），Ｐ”（ｉｐ＋１））の向きθ’を算出する。この例では、リンク（Ｐ”（１），Ｐ”（２））の向きθ’＝０°となる。
【００８２】
次いで、ｉｓ番目の文字（以下、「文字ｉｓ」という）の配置が行われる（ステップＳＴ１８５）。すなわち、文字配置部１８は、リンクの向きθ’および文字間隔ｒａｎｇｅに基づき文字ｉｓの配置を決める。ここで、文字ｉｓの配置を決める文字配置処理の詳細を、図１７に示すフローチャートを参照しながら説明する。
【００８３】
文字配置処理では、まず、ｉｓ＝１であるか否かが調べられる（ステップＳＴ２００）。すなわち、初期文字判定部２３は、配置する文字を示すパラメータｉｓが１であるか否か、つまり１番目の文字であるか否かを判定する。このステップＳＴ２００において、ｉｓ＝１であることが判断されると、文字ｉｓを配置する処理に移行する。この例では、初期状態ではｉｓ＝１であるので、文字ｉｓを配置する処理に移行する。
【００８４】
文字ｉｓを配置する処理では、文字配置位置決定部２４は、ノードＰ”（１）に文字ｉｓを配置し、文字リンク内として文字配置処理を終了する。より詳しくは、まず、文字ｉｓの左下座標ＬＤ（ｉｓ）がノードＰ”（１）に設定される（ステップＳＴ２０１）。すなわち、文字配置位置決定部２４は、文字ｉｓの左下座標ＬＤ（ｉｓ）をノードＰ”（１）に設定する。
【００８５】
次いで、ＬＤ（ｉｓ）に文字ｉｓが配置される（ステップＳＴ２０２）。すなわち、文字配置位置決定部２４は、文字ｉｓの左下座標ＬＤ（ｉｓ）に文字ｉｓを配置する。ここで、文字配置とは、文字ｉｓの左下座標ＬＤ（ｉｓ）をノードＰ”（１）に設定した後、文字ｉｓの左上座標ＬＴ（ｉｓ）、右下座標ＲＤ（ｉｓ）および右上座標ＲＴ（ｉｓ）に、下記（８）式で求めた値を設定する処理をいう。なお、（８）式中のＷ（ｉｓ）およびＨ（ｉｓ）は文字ｉｓの横幅および縦幅をそれぞれ示す。この例では、ＬＤ（１）＝（０，１０），ＬＴ（１）＝（０，２０），ＲＤ（１）＝（５，１０），ＲＴ（１）＝（５，２０）となる。
2012123986.tif 000007
【００８６】
上記ステップＳＴ２００において、ｉｓ＝１でないことが判断されると、文字ｉｓ−１の左下座標ＬＤ（ｉｓ−１）からｒａｎｇｅだけ離れた位置にある左下座標ＬＤ（ｉｓ）が算出される（ステップＳＴ２０３）。次いで、文字ｉｓの左下座標ＬＤ（ｉｓ）がリンク内であるかどうかが調べられる（ステップＳＴ２０４）。このステップＳＴ２０４において、文字ｉｓの左下座標ＬＤ（ｉｓ）がリンク内であることが判断されると、文字ｉｓの左下座標ＬＤ（ｉｓ）に文字ｉｓが配置される（ステップＳＴ２０５）。すなわち、文字配置位置決定部２４は、文字ｉｓの左下座標ＬＤ（ｉｓ）に文字ｉｓを配置し、文字リンク内として文字配置処理を終了する。
【００８７】
ステップＳＴ２０４において、文字ｉｓの左下座標ＬＤ（ｉｓ）がリンク内でないことが判断されると、文字ｉｓの左下座標ＬＤ（ｉｓ）からノードＰ（ｉｐ＋１）までの距離がｒａｎｇｅとして設定される（ステップＳＴ２０６）。その後、文字リンク外として文字配置処理は終了する。
【００８８】
上述した文字配置処理が終了すると、次いで、図１６に示すように、文字ｉｓがリンク外であるかどうかが調べられる（ステップＳＴ１８６）。すなわち、文字リンク外判定部１９は、文字配置位置決定部２４における配置結果が文字リンク外であるかどうかを判定する。このステップＳＴ１８６において、文字ｉｓがリンク内であることが判断されると、文字ｉｓ−１との重複判定が行われる（ステップＳＴ１８７）。すなわち、重複判定部２０は、文字ｉｓと文字ｉｓ−１とが重複しているか否かを判定する。
【００８９】
このステップＳＴ１８７において、重複なしと判断されると、次いで、ｒａｎｇｅが文字ｉｓの横幅に設定される（ステップＳＴ１８８）。すなわち、パラメータ更新部２１は、ｒａｎｇｅを文字ｉｓの横幅に設定する。次いで、ｉｓに１が加えられる（ステップＳＴ１８９）。すなわち、パラメータ更新部２１は、ｉｓに１を加える。この例では、ｒａｎｇｅ＝５，ｉｓ＝２となる。
【００９０】
次いで、ｉｓ＝文字数であるかどうかが調べられる（ステップＳＴ１９０）。すなわち、文字数判定部２２は、ｉｓが文字数になったかどうかを調べる。このステップＳＴ１９０において、ｉｓ＝文字数であることが判断されると、文字列配置可として文字列配置処理は終了する。一方、ステップＳＴ１９０において、ｉｓ＝文字数でないことが判断されると、シーケンスはステップＳＴ１９１に進み、無限ループ中である旨が判断される。したがって、以後はステップＳＴ１８３とステップＳＴ１９１との間の処理、つまり、文字配置部１８による文字ｉｓの配置が繰り返される。
【００９１】
上記ステップＳＴ１８６において、文字ｉｓがリンク外であることが判断されると、ｒａｎｇｅがノードＰ”（ｉｐ＋１）と左下座標ＬＤ（ｉｓ）との間の距離に設定される（ステップＳＴ１９３）。すなわち、パラメータ更新部２１は、ｒａｎｇｅをノードＰ”（ｉｐ＋１）と左下座標ＬＤ（ｉｓ）との間の距離に設定する。その後、シーケンスはステップＳＴ１９４に進み、無限ループを抜け出す。以後、ステップＳＴ１９４においてはｉｐがインクリメントされ、ステップＳＴ１８２とステップＳＴ１９４との間の処理が繰り返される。
【００９２】
上記無限ループ内の２回目の処理では、ｉｓ＝２≠文字数であるので、文字配置部１８は文字ｉｓを配置する処理に移る。この処理では、上記ステップＳＴ２００において、ｉｓ＝１でないことが判断される。この場合、ｉｓ＝２であるので、文字左下座標算出部２５により、文字ｉｓの左下座標ＬＤ（ｉｓ）が求められる。すなわち、文字左下座標算出部２５は、文字ｉｓ−１の左下座標ＬＤ（ｉｓ−１）よりｒａｎｇｅだけ離れた位置を、下記（９）式で求め、文字ｉｓの左下座標ＬＤ（ｉｓ）として設定する。この場合、θ’＝０°，ｒａｎｇｅ＝５であるので、ＬＤ（２）＝ＬＤ（１）＋（ｒａｎｇｅ，０）＝（５，１０）となる。
2012123986.tif 000008
【００９３】
文字２（２番目の文字）の左下座標ＬＤ（２）は、リンク（Ｐ”（１），Ｐ”（２））上であるので、文字配置位置決定部２４は、上記と同様にして左下座標ＬＤ（２）以外の左上座標ＬＴ（２）、右下座標ＲＤ（２）および右上座標ＲＴ（２）を算出し、その後、文字リンク内として処理を終了する。この場合、ＬＴ（２）＝（５，２０），ＲＤ（２）＝（１０，１０），ＲＴ（２）＝（１０，２０）となり、文字リンク内で処理は終了する。
【００９４】
その後、ステップＳＴ１８６において、文字リンク外判定部１９で文字ｉｓがリンク内であることが判定され、次いで、ステップＳＴ１８７において、重複判定部２０で文字ｉｓ−１との重複が判定される。この場合、図１８に示すように、文字ｉｓ−１の右辺（ＲＴ（１），ＲＤ（１））と文字ｉｓの左辺（ＬＴ（２），ＬＤ（２））は重複する。したがって、ステップＳＴ１８７においては、重複ありと判断され、ｒａｎｇｅにＳＴＥＰ＿ＳＩＺＥが加えられる（ステップＳＴ１９２）。その後、シーケンスはステップＳＴ１８５に戻り、再度、文字配置部１８で文字が配置される。この場合、ｒａｎｇｅ＝５＋１＝６となる。
【００９５】
この文字を再度配置する処理においては、上記と同様に、文字配置部１８は文字２を配置する。まず、初期文字判定部２３にて、ｉｓ＝１であるかを判定する。ｉｓ≠１であるので、文字左下座標算出部２５で文字２の左下座標ＬＤ（２）を算出する。この場合、θ’＝０°、ｒａｎｇｅ＝６であるので、ＬＤ（２）＝ＬＤ（１）＋（ｒａｎｇｅ，０）＝（６，１０）となる。（６，１０）はリンク（Ｐ”（１），Ｐ”（２））上であるので、文字配置位置決定部２４にて、上記と同様にしてＬＴ（２），ＲＤ（２），ＲＴ（２）が算出される。この場合、ＬＴ（２）＝（６，２０），ＲＤ（２）＝（１１，１０），ＲＴ（２）＝（１１，２０）となり、文字リンク内で処理を終了する。
【００９６】
次に、重複判定部２０にて、文字ｉｓと文字ｉｓ−１の重複が判定される。この場合、図１９に示すように、文字２と文字１は重複しないので、パラメータ更新部２１でパラメータを更新する処理に移る。上記と同様にしてパラメータが更新されると、ｒａｎｇｅ＝５，ｉｓ＝３となる。その後、上記と同様にして文字数判定部２２にてｉｓ＝文字数か否かが判定される。この場合、ｉｓ≠文字数であるので、文字列を配置する処理に移る。
【００９７】
以下同様にして文字３、４および５を配置すると、図２０に示すような文字列が配置される。文字３の外接矩形はＬＤ（３）＝（１２，１０）、ＬＴ（３）＝（１２，２０）、ＲＤ（３）＝（１７，１０）およびＲＴ（３）＝（１７，２０）となり、文字４の外接矩形はＬＤ（４）＝（１８，１０）、ＬＴ（４）＝（１８，２０）、ＲＤ（４）＝（２３，１０）およびＲＴ（４）＝（２３，２０）となり、文字５の外接矩形はＬＤ（５）＝（２４，１０）、ＬＴ（５）＝（２４，２０）、ＲＤ（５）＝（２９，１０）およびＲＴ（５）＝（２９，２０）となる。
【００９８】
次に、文字６がリンク（Ｐ”（１），Ｐ”（２））に配置される。まず、初期文字判定部２３にてｉｓ＝１か否かが判定される。この場合、ｉｓ＝６であるので、文字左下座標算出部２５にて文字の左下座標が算出される。上記と同様にして文字左下座標が算出されると、左下座標ＬＤ（６）＝（３４，１０）となる。左下座標ＬＤ（６）はリンク（Ｐ”（１），Ｐ”（２））外であるので、ｒａｎｇｅが左下座標ＬＤ（６）からノードＰ”（２）との間の距離４、ｉｐが１から２に更新され、文字リンク外で処理を終了する。その後、文字リンク外で処理を終了したので、次のリンクに文字が配置される。この場合、リンク（Ｐ”（２），Ｐ”（３））に文字６が配置される。上述した処理と同様の処理より文字を配置すると、文字６の外接矩形はＬＤ（６）＝（３４．０２，１８．０５）、ＬＴ（６）＝（２５．０５，２２．５２）、ＲＤ（６）＝（３６．２６，２２．５２）およびＲＴ（６）＝（２７．３１，２６．９９）となる。図２１は、文字列『Ｓｔｒｉｎｇ』を配置した結果を示す。以上のようにして、文字列が道路リンク上に配置される。
【００９９】
以上説明したように、道路リンクから作成した曲線を近似した直線上に文字列を配置することにより、従来に較べて文字配置角度変化が少なくなるように、文字列を配置することができる。その結果、従来に較べて文字角度変化を低減できるので、文字列を容易に認識することができる。また、道路リンクから作成した曲線を複数の直線に近似するように構成したので、文字の位置を決める際に曲線上の距離計算を省くことができ、特許文献１に開示された技術に比べて高速に文字の位置を決めることができる。
【０１００】
なお、本願発明はその発明の範囲内において、実施の形態の任意の構成要素の変形、もしくは実施の形態の任意の構成要素の省略が可能である。
【産業上の利用可能性】
【０１０１】
この発明は、文字列の可読性を向上させるとともに、文字の位置決めを高速に行うことができるので、カーナビゲーションシステムまたは携帯機器などで行われる地図表示に好適である。
【符号の説明】
【０１０２】
１  文字列配置データ記憶部、２  文字列配置データ取得部、３  道路ノード列間引き部、４  制御点列作成部、５  曲線近似部、６  曲線近似ノード列記憶部、７  曲線近似ノード登録部、８  直線判定部、９  曲線上中間点作成部、１０  前半曲線近似部、１１  後半曲線近似部、１２  単数直線近似部、１３ａ  文字列配置処理部、１３  曲線近似ノード列取得部、１４  文字列配置算出部、１５  文字列配置登録部、１６  出力文字列配置記憶部、１７  リンク角度算出部、１８  文字配置部、１９  文字リンク外判定部、２０  重複判定部、２１  パラメータ更新部、２２  文字数判定部、２３  初期文字判定部、２４  文字配置位置決定部、２５  文字左下座標算出部、２６  次文字配置距離更新部。
【図１】
2012123986.tif 000009
【図２】
2012123986.tif 000010
【図３】
2012123986.tif 000011
【図４】
2012123986.tif 000012
【図５】
2012123986.tif 000013
【図６】
2012123986.tif 000014
【図７】
2012123986.tif 000015
【図８】
2012123986.tif 000016
【図９】
2012123986.tif 000017
【図１０】
2012123986.tif 000018
【図１１】
2012123986.tif 000019
【図１２】
2012123986.tif 000020
【図１３】
2012123986.tif 000021
【図１４】
2012123986.tif 000022
【図１５】
2012123986.tif 000023
【図１６】
2012123986.tif 000024
【図１７】
2012123986.tif 000025
【図１８】
2012123986.tif 000026
【図１９】
2012123986.tif 000027
【図２０】
2012123986.tif 000028
【図２１】
2012123986.tif 000029
【手続補正書】
【提出日】平成25年4月11日(2013.4.11)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、地図上に道路名称等の文字列を配置する文字列配置装置に関する。
【背景技術】
【０００２】
従来、道路名称等の文字列を、文字列の配置を開始するノード（以下、「配置開始ノード」という）から、道路線（以下、「道路ノード列」という）に沿って文字列を配置する文字列配置機能を搭載したカーナビゲーションシステムが知られている（例えば、特許文献１〜特許文献３参照）。この文字列配置機能を用いれば、道路と平行に文字が配置されるので、２つのリンクに跨った文字列を配置する場合、道路リンクの角度変化（以下、「道路角度変化」という）と、文字の配置角度の変化（以下、「文字角度変化」という）が等しくなる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−７６５９３号公報
【特許文献２】特開２０００−２９４５０号公報
【特許文献３】特開平６−２５９５２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述した従来の文字列配置装置における文字列配置機能を用いて表示された文字列は、道路角度変化と文字角度変化が等しいので、道路角度変化が大きくなるに連れて文字角度変化も大きくなり、文字列の可読性が低下するという問題がある。
【０００５】
この発明は、この問題を解決するためになされたものであり、文字列の可読性を向上させた文字列配置装置を提供することを課題とする。
【課題を解決するための手段】
【０００６】
この発明に係る文字列配置装置は、文字列を道路に沿って配置するための文字列配置データを取得する文字列配置データ取得部と、文字列配置データ取得部で取得された文字列配置データに含まれる道路ノード列から制御点列を作成する制御点列作成部と、制御点列作成部で作成された制御点列による曲線を直線で近似したノード列を作成する曲線近似部と、曲線近似部で作成されたノード列を曲線近似ノード列として保存する曲線近似ノード列記憶部と、曲線近似ノード列記憶部に保存された曲線近似ノード列に基づき文字列の配置処理を行う文字列配置処理部を備えている。
【発明の効果】
【０００７】
この発明に係る文字列配置装置によれば、道路リンクから作成した曲線上に文字列を配置することにより文字角度変化を小さくできるので、文字列の可読性を向上させることができる。
【図面の簡単な説明】
【０００８】
【図１】この発明の実施の形態１に係る文字列配置装置の構成を示すブロック図である。
【図２】この発明の実施の形態１に係る文字列配置装置の曲線近似部の詳細な構成を示すブロック図である。
【図３】この発明の実施の形態１に係る文字列配置装置の文字列配置算出部の詳細な構成を示すブロック図である。
【図４】この発明の実施の形態１に係る文字列配置装置の文字配置部の詳細な構成を示すブロック図である。
【図５】この発明の実施の形態１に係る文字列配置装置の動作を示すフローチャートである。
【図６】この発明の実施の形態１に係る文字列配置装置において処理対象とされる道路ノード列中のノードとリンクの関係の例を示す図である。
【図７】この発明の実施の形態１に係る文字列配置装置の道路ノード列間引き部で行われる道路ノード列の間引き処理を示すフローチャートである。
【図８】この発明の実施の形態１に係る文字列配置装置において行われた間引き処理後の道路ノード列中のノードとリンクの関係の例を示す図である。
【図９】この発明の実施の形態１に係る文字列配置装置における間引き処理後に処理対象とされる道路ノード列中のノードとリンクの関係の例を示す図である。
【図１０】この発明の実施の形態１に係る文字列配置装置の制御点列作成部で行われる制御点列の作成処理を示すフローチャートである。
【図１１】この発明の実施の形態１に係る文字列配置装置の制御点列作成部で行われる制御点列の作成処理で求められた制御点列の例を示す図である。
【図１２】この発明の実施の形態１に係る文字列配置装置の曲線近似部で行われる曲線近似ノード列の作成処理を示すフローチャートである。
【図１３】この発明の実施の形態１に係る文字列配置装置で行われる曲線近似ノード列の作成処理を説明するための説明図である。
【図１４】この発明の実施の形態１に係る文字列配置装置で行われる曲線近似ノード列の作成処理の一部を詳細に示すフローチャートである。
【図１５】この発明の実施の形態１に係る文字列配置装置で曲線近似後に取得される曲線近似ノード列と道路ノード列の関係を示す図である。
【図１６】この発明の実施の形態１に係る文字列配置装置の文字列配置算出部で行われる文字列配置処理を示すフローチャートである。
【図１７】この発明の実施の形態１に係る文字列配置装置の文字配置部で行われる文字配置処理の詳細を示すフローチャートである。
【図１８】この発明の実施の形態１に係る文字列配置装置で行われる文字の配置処理を説明するための図である。
【図１９】この発明の実施の形態１に係る文字列配置装置で行われる文字の配置処理を説明するための図である。
【図２０】この発明の実施の形態１に係る文字列配置装置で行われる文字の配置処理により配置された文字列を説明するための図である。
【図２１】この発明の実施の形態１に係る文字列配置装置で行われる文字の配置処理により配置された文字列を説明するための図である。
【発明を実施するための形態】
【０００９】
以下、この発明の実施の形態を、図面を参照しながら詳細に説明する。
実施の形態１．
図１は、この発明の実施の形態１に係る文字列配置装置の構成を示すブロック図である。この文字列配置装置は、文字列配置データ記憶部１、文字列配置データ取得部２、道路ノード列間引き部３、制御点列作成部４、曲線近似部５、曲線近似ノード列記憶部６および文字列配置処理部１３ａを備えており、さらに、文字列配置処理部１３ａは、曲線近似ノード列取得部１３、文字列配置算出部１４、文字列配置登録部１５および出力文字列配置記憶部１６を備えている。
【００１０】
文字列配置データ記憶部１は、文字列配置データを記憶する。文字列配置データは、文字列を構成する複数の文字、各文字の縦幅および横幅、文字列が沿う道路ノード列および文字列の配置開始ノードを表すデータを含む。文字列配置データ記憶部１に記憶されている文字列配置データは、文字列配置データ取得部２によって読み出される。
【００１１】
文字列配置データ取得部２は、文字列配置データ記憶部１から文字列配置データを読み出して取得する。この文字列配置データ取得部２で取得された文字列配置データは、道路ノード列間引き部３に送られる。
【００１２】
道路ノード列間引き部３は、文字列配置データ取得部２から送られてきた文字列配置データに含まれる道路ノード列を構成するノードの一部を間引きする。この道路ノード列間引き部３でノードの一部が間引きされた後の道路ノード列は、制御点列作成部４に送られる。この道路ノード列間引き部３における間引きによって、文字列の軌跡を滑らかにすることができる。
【００１３】
制御点列作成部４は、道路ノード列間引き部３から送られてきた、文字列が沿う道路ノード列から曲線を生成するための制御点列を作成する。この制御点列作成部４で作成された制御点列は、曲線近似部５に送られる。
【００１４】
曲線近似部５は、制御点列作成部４から送られてきた制御点列から曲線を作成し、この作成した曲線を直線近似してノード列を生成する。この曲線近似部５で生成されたノード列は、曲線近似ノード列として曲線近似ノード列記憶部６に送られる。この曲線近似部５において道路リンクから作成される曲線を直線で近似することにより、文字配置を高速化することができる。この曲線近似部５の詳細については後述する。
【００１５】
曲線近似ノード列記憶部６は、曲線近似部５から送られてきた曲線近似ノード列を保存する。この曲線近似ノード列記憶部６に保存されている曲線近似ノード列は、曲線近似ノード列取得部１３によって読み出される。曲線近似ノード列取得部１３は、曲線近似ノード列記憶部６から曲線近似ノード列を読み出して取得する。この曲線近似ノード列取得部１３で取得された曲線近似ノード列は、文字列配置算出部１４に送られる。
【００１６】
文字列配置算出部１４は、曲線近似ノード列取得部１３から送られてきた曲線近似ノード列に基づき文字列の配置位置を算出する。この文字列配置算出部１４によって算出された文字列の配置位置は、文字列配置登録部１５に送られる。この文字列配置算出部１４の詳細については後述する。
【００１７】
文字列配置登録部１５は、文字列配置算出部１４から送られてきた文字列の配置位置を、該文字列配置算出部１４から送られてきた判定結果が既定の文字数に達したことを示している場合に、出力文字列配置記憶部１６に登録する。出力文字列配置記憶部１６は、文字列配置登録部１５によって登録された文字列の配置位置を記憶する。
【００１８】
次に、上述した曲線近似部５の詳細を説明する。図２は、曲線近似部５の詳細な構成を示すブロック図である。曲線近似部５は、曲線近似ノード登録部７、直線判定部８、曲線上中間点作成部９、前半曲線近似部１０、後半曲線近似部１１および単数直線近似部１２を備えている。
【００１９】
曲線近似ノード登録部７は、後半曲線近似部１１または単数直線近似部１２から送られてきた曲線近似ノード列を曲線近似ノード列記憶部６に登録する。直線判定部８は、制御点列作成部４から送られてきた制御点列から作成される曲線が直線で近似できるか否か、換言すれば、直線に近いか否かを判定する。この直線判定部８において直線に近くないことが判断されるとシーケンスは曲線上中間点作成部９での処理に移り、直線に近いことが判断されると単数直線近似部１２での処理に移る。
【００２０】
曲線上中間点作成部９は、制御点列作成部４から送られてきた制御点列から作成される曲線上の中間点を作成する。この曲線上中間点作成部９で作成された中間点は、前半曲線近似部１０および後半曲線近似部１１に送られる。前半曲線近似部１０は、制御点列作成部４から送られてきた制御点列から作成される曲線のうち、曲線上中間点作成部９から送られてきた中間点より前の曲線を直線で近似する。この前半曲線近似部１０における直線近似によって作成されたノード列は、後半曲線近似部１１に送られる。
【００２１】
後半曲線近似部１１は、制御点列作成部４から送られてきた制御点列から作成される曲線のうち、曲線上中間点作成部９から送られてきた中間点より後の曲線を直線で近似する。この後半曲線近似部１１における直線近似によって作成されたノード列は、前半曲線近似部１０から送られてくるノード列に繋げられ、曲線近似ノード列として曲線近似ノード登録部７に送られる。
【００２２】
単数直線近似部１２は、制御点列作成部４から送られてきた制御点列から作成される曲線を１本の直線で近似する。この単数直線近似部１２において直線近似によって作成されたノード列は、曲線近似ノード列として曲線近似ノード登録部７に送られる。
【００２３】
次に、上述した文字列配置算出部１４の詳細を説明する。図３は、文字列配置算出部１４の詳細な構成を示すブロック図である。文字列配置算出部１４は、リンク角度算出部１７、文字配置部１８、文字リンク外判定部１９、重複判定部２０、パラメータ更新部２１および文字数判定部２２を備えている。
【００２４】
リンク角度算出部１７は、曲線近似ノード列取得部１３から送られてくる曲線近似ノード列に基づいて、各ノードにおいてリンクが形成する角度（以下、「リンク角度」という）を算出する。このリンク角度算出部１７で算出されたリンク角度は、文字配置部１８に送られる。
【００２５】
文字配置部１８は、リンク角度算出部１７から送られてきたリンク角度に基づき文字を配置する。この文字配置部１８で配置された文字は、文字リンク外判定部１９に送られる。この文字配置部１８の詳細は、後述する。文字リンク外判定部１９は、文字配置部１８から送られてきた文字がリンク外であるか否かを判定する。この文字リンク外判定部１９における判定結果は、重複判定部２０に送られる。
【００２６】
重複判定部２０は、文字リンク外判定部１９から送られてくる判定結果に基づき、文字同士が重複するか否かを判定する。この重複判定部２０における判定結果は、パラメータ更新部２１に送られる。パラメータ更新部２１は、重複判定部２０から送られてきた判定結果に従って、文字列配置に使用されるパラメータを更新する。このパラメータ更新部２１で更新されたパラメータは、文字数判定部２２に送られる。
【００２７】
文字数判定部２２は、パラメータ更新部２１から送られてきたパラメータを参照し、既定の文字数に達したか否かを判定する。この文字数判定部２２における判定結果は、文字列配置登録部１５に送られる。
【００２８】
次に、上述した文字配置部１８の詳細を説明する。図４は、文字配置部１８の詳細な構成を示すブロック図である。文字配置部１８は、初期文字判定部２３、文字配置位置決定部２４、文字左下座標算出部２５および次文字配置距離更新部２６を備えている。
【００２９】
初期文字判定部２３は、リンク角度算出部１７から送られてくるリンク角度に基づいて配置された文字が文字列中の１番目の文字であるか否かを判定する。この初期文字判定部２３における判定結果は、文字配置位置決定部２４および文字左下座標算出部２５に送られる。
【００３０】
文字配置位置決定部２４は、初期文字判定部２３から送られてきた判定結果に応じて、または、文字左下座標算出部２５で算出された文字の左下座標に応じて文字の配置位置を決める。この文字配置位置決定部２４で決められた配置位置は、文字配置位置決定部２４または文字左下座標算出部２５に送られる。
【００３１】
文字左下座標算出部２５は、初期文字判定部２３から送られてきた判定結果に応じて、文字の左下座標を算出する。文字左下座標算出部２５で算出された文字の左下座標は、文字配置位置決定部２４または次文字配置距離更新部２６に送られる。次文字配置距離更新部２６は、文字左下座標算出部２５で算出された文字の左下座標に基づき、次の文字までの距離を決め、文字間隔を更新する。この次文字配置距離更新部２６で更新された文字間隔は、文字リンク外判定部１９に送られる。
【００３２】
次に、上記のように構成される実施の形態１に係る文字列配置装置の動作を説明する。図５は、文字列配置装置の動作を示すフローチャートである。
【００３３】
実施の形態１では、一例として、文字列配置データは、文字列『Ｓｔｒｉｎｇ』中の各文字の横幅、縦幅および文字列『Ｓｔｒｉｎｇ』が沿う道路ノード列を含み、文字列『Ｓｔｒｉｎｇ』中の各文字の縦幅は１０、横幅は５であり、文字列『Ｓｔｒｉｎｇ』が沿う道路ノード列はＰ（１）＝（０，１０）、Ｐ（２）＝（５，１０）、Ｐ（３）＝（１０，１０）、Ｐ（４）＝（５０，１０）およびＰ（５）＝（１０，５０）であり、文字列の配置を開始するノードはＰ（１）＝（０，１０）であるものとして説明する。
【００３４】
また、詳細は後述するが、曲線を直線近似する場合のリンクの本数を示すＳＥＰＡＲＡＴＥ＿ＮＵＭは２であり、１本のリンクで曲線を近似するか複数のリンクで曲線を近似するか否かの判断に用いられる距離の境界であるＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤは１５であり、１本のリンクで曲線を近似するか複数のリンクで曲線を近似するか否かの判断に用いられる角度変化の境界であるＳＴＲＡＩＧＨＴ＿ＴＨＲＥＳＨＯＬＤは１０であり、間引きの可否を判断する距離の境界であるＣＵＬＬＩＮＧ＿ＴＨＲＥＳＨＯＬＤは１０であり、ｒａｎｇｅの増分であるＳＴＥＰ＿ＳＩＺＥは１であるものとする。図６は、道路ノード列中のノードとリンクの関係の例を示している。
【００３５】
文字列配置装置の動作が開始されると、まず、文字列データが取得される（ステップＳＴ１１）。すなわち、文字列配置データ取得部２は、文字列配置データ記憶部１から文字列配置データを読み出し、文字列が沿う道路ノード列と文字列の配置開始ノードを取得する。この例では、文字列『Ｓｔｒｉｎｇ』が沿う道路ノード列と、文字列『Ｓｔｒｉｎｇ』の配置を開始するノードが取得される。
【００３６】
次いで、道路ノード列の間引きが行われる（ステップＳＴ１２）。すなわち、道路ノード列間引き部３は、滑らかな曲線を作成するために、文字列配置データ取得部２で取得された文字列配置データに含まれる道路ノード列を構成するノードの一部を間引きする。ここで、道路ノード列間引き部３で行われる道路ノード列の間引き処理の詳細を、図７に示すフローチャートを参照しながら説明する。
【００３７】
道路ノード列の間引き処理では、道路ノード列に含まれるノードが順々に走査され、以下の３つの条件の全て満たすノードが道路ノード列から間引かれる。
（１）ノードが道路ノード列の配置開始ノードまたは配置終了ノードでない
（２）前のノードを間引きしていない
（３）前のノードとの距離がＣＵＬＬＩＮＧ＿ＴＨＲＥＳＨＯＬＤ以下である
【００３８】
道路ノード列の間引き処理が開始されると、まず、変数ｉｒが１に初期化される（ステップＳＴ１２１）。次いで、変数ｉｒが道路ノード数以下であればループが開始される（ステップＳＴ１２２）。ループが開始されると、まず、ノードＰ（ｉｒ）は配置開始ノードまたは配置終了ノードであるかどうかが調べられる（ステップＳＴ１２３）。すなわち、道路ノード列間引き部３は、文字列配置データ取得部２から送られてきた文字列配置データに含まれる道路ノード列の中のノードＰ（ｉｒ）が配置開始ノードまたは配置終了ノードであるかどうかを調べる。このステップＳＴ１２３において、ノードＰ（ｉｒ）は配置開始ノードまたは配置終了ノードであることが判断されると、上記３つの条件のうちの（１）が満たされないのでノードＰ（ｉｒ）の間引きは行われず、シーケンスはステップＳＴ１２７に進む。
【００３９】
上記ステップＳＴ１２３において、ノードＰ（ｉｒ）は配置開始ノードまたは配置終了ノードでないことが判断されると、次いで、ノードＰ（ｉｒ−１）が間引きされたかどうかが調べられる（ステップＳＴ１２４）。すなわち、道路ノード列間引き部３は、１つ前のノードＰ（ｉｒ−１）を間引きしたかどうかを調べる。このステップＳＴ１２４において、ノードＰ（ｉｒ−１）が間引きされたことが判断されると、上記３つの条件のうちの（２）が満たされないのでノードＰ（ｉｒ）の間引きは行われず、シーケンスはステップＳＴ１２７に進む。
【００４０】
上記ステップＳＴ１２４において、ノードＰ（ｉｒ−１）が間引きされていないことが判断されると、次いで、ノードＰ（ｉｒ−１）とノードＰ（ｉｒ）との距離がＣＵＬＬＩＮＧ＿ＴＨＲＥＳＨＯＬＤ以下であるかどうかが調べられる（ステップＳＴ１２５）。すなわち、道路ノード列間引き部３は、前のノードＰ（ｉｒ−１）と現在のノードＰ（ｉｒ）との間の距離がＣＵＬＬＩＮＧ＿ＴＨＲＥＳＨＯＬＤ（この例では１０）以下であるかどうかを調べる。このステップＳＴ１２５において、ノードＰ（ｉｒ−１）とノードＰ（ｉｒ）との距離がＣＵＬＬＩＮＧ＿ＴＨＲＥＳＨＯＬＤ以下でないことが判断されると、上記３つの条件のうちの（３）が満たされないのでノードＰ（ｉｒ）の間引きは行われず、シーケンスはステップＳＴ１２７に進む。
【００４１】
一方、ステップＳＴ１２５において、ノードＰ（ｉｒ−１）とノードＰ（ｉｒ）との距離がＣＵＬＬＩＮＧ＿ＴＨＲＥＳＨＯＬＤ以下であることが判断されると、上記３つの条件の全てが満たされた旨が認識され、次いで、ノードＰ（ｉｒ）の削除が行われる（ステップＳＴ１２６）。すなわち、道路ノード列間引き部３は、文字列配置データ取得部２から送られてきた文字列配置データに含まれる道路ノード列の中のノード（ｉｒ）を間引きする。その後、シーケンスはステップＳＴ１２７に進む。ステップＳＴ１２７では、変数ｉｒがインクリメントされ、以下、変数ｉｒが道路ノード数より大きくなるまでステップＳＴ１２２とステップＳＴ１２７との間の処理が繰り返される。
【００４２】
以上の繰り返し処理により、ノードＰ（１）〜Ｐ（５）は次のように処理される。まず、ノードＰ（１）の間引きの可否が検討される。ここで、ノードＰ（１）は道路ノード列の配置開始ノードであるので、間引きされない。次に、ノードＰ（２）の間引きの可否が検討される。ここで、ノードＰ（２）は道路ノード列の配置開始ノードまたは配置終了ノードでなく、前のノードＰ（１）は間引きされておらず、且つ、ノードＰ（１）とノードＰ（２）との間の距離は５でありＣＵＬＬＩＮＧ＿ＴＨＲＥＳＨＯＬＤである１０以下である。したがって、上記３つの条件の全てが満たされるので、ノードＰ（２）は間引きされる。
【００４３】
次に、ノードＰ（３）の間引きの可否が検討される。ここで、ノードＰ（３）は道路リンクの配置開始ノードまたは配置終了ノードではないが、前のノードＰ（２）が間引きされているので、ノードＰ（３）は間引きされない。以下同様にして、ノードＰ（４）以降も処理される。
【００４４】
以上の処理の結果、図８に示すように、ノードＰ（２）が間引かれた道路ノード列、つまり、ノードＰ（１）、Ｐ（３）、Ｐ（４）およびＰ（５）で構成される道路ノード列が作成される。ここで、図９に示すように、間引き後の道路ノード列Ｐ（１）、Ｐ（３）、Ｐ（４）およびＰ（５）を、それぞれＰ’（１）、Ｐ’（２）、Ｐ’（３）およびＰ’（４）として、以降の処理を説明する。
【００４５】
以上の道路ノード列の間引き処理が終了すると、次いで、図５のフローチャートに示すように、制御点列が作成される（ステップＳＴ１３）。すなわち、制御点列作成部４は、間引き後の道路ノード列から制御点列を作成する。ここで、制御点列の作成処理の詳細を、図１０に示すフローチャートを参照しながら説明する。
【００４６】
制御点列の作成処理では、まず、制御点列Ｂ（ｉｃ）｛ｉｃ＝１，…，間引き後の道路ノード数−２｝が設定される。詳しくは、まず、変数ｉｃが１に初期化される（ステップＳＴ１３１）。次いで、変数ｉｃが「間引き後の道路ノード数−２」以下であればループが開始される（ステップＳＴ１３２）。ループが開始されると、下記（１）式に従って制御点Ｂ（ｉｃ）が計算される（ステップＳＴ１３３）。その後、シーケンスはステップＳＴ１３４に進む。
2012123986.tif 000030
ここで、ｉｃ＝１，…，間引き後の道路ノード数−２である。
【００４７】
ステップＳＴ１３４では、変数ｉｃがインクリメントされ、以下、変数ｉｃが「間引き後の道路ノード数−２」より大きくなるまでステップＳＴ１３２とステップＳＴ１３４との間の処理、つまりステップＳＴ１３３の処理が繰り返される。
【００４８】
以上の繰り返し処理においては、間引き後の道路ノード数＝４であり、制御点Ｂ（１）＝Ｐ’（２）＝（１０，１０）および制御点Ｂ（２）＝Ｐ’（３）＝（５０，１０）が得られる。
【００４９】
次いで、制御点列Ａ（ｉｃ）｛ｉｃ＝１，…，間引き後の道路ノード数−１｝が設定される。詳しくは、まず、変数ｉｃが１に初期化される（ステップＳＴ１３５）。次いで、変数ｉｃが「間引き後の道路ノード数−１」以下であればループが開始される（ステップＳＴ１３６）。ループが開始されると、まず、変数ｉｃが１であるかどうかが調べられる（ステップＳＴ１３７）。このステップＳＴ１３７において、変数ｉｃが１であることが判断されると、次いで、制御点Ａ（ｉｃ）＝Ｐ’（ｉｃ）が設定される（ステップＳＴ１３８）。その後、シーケンスはステップＳＴ１４２に進む。
【００５０】
上記ステップＳＴ１３７において、変数ｉｃが１でないことが判断されると、次いで、変数ｉｃが「道路ノード数−１」であるかどうかが調べられる（ステップＳＴ１３９）。このステップＳＴ１３９において、変数ｉｃが「道路ノード数−１」であることが判断されると、制御点Ａ（ｉｃ−１）＝Ｐ’（ｉｃ）に設定される（ステップＳＴ１４０）。その後、シーケンスはステップＳＴ１４２に進む。
【００５１】
一方、ステップＳＴ１３９において、変数ｉｃが「道路ノード数−１」でないことが判断されると、制御点Ａ（ｉｃ）＝（Ｂ（ｉｃ−１）＋Ｂ（ｉｃ））／２に設定される（ステップＳＴ１４１）。その後、シーケンスはステップＳＴ１４２に進む。ステップＳＴ１４２では、変数ｉｃがインクリメントされ、以下、変数ｉｃが「間引き後の道路ノード数−１」より大きくなるまでステップＳＴ１３６とステップＳＴ１４２との間の処理が繰り返される。
【００５２】
以上の繰り返し処理により、制御点Ａ（ｉｃ）は、以下に示すように、変数ｉｃの値によって設定値が変化する。まず、ｉｃ＝１の場合、制御点Ａ（ｉｃ）にノードＰ’（１）が設定され、変数ｉｃが「道路ノード数−１」の場合、制御点Ａ（ｉｃ−１）にノードＰ’（ｉｃ）が設定される。変数ｉｃが１でも「間引き後の道路ノード数−１」でもない場合、制御点Ａ（ｉｃ）に制御点Ｂ（ｉｃ）とＢ（ｉｃ−１）の中点が設定される。
【００５３】
以上の処理の結果、まず、制御点Ａ（１）が設定される。制御点Ａ（１）は、ｉｃ＝１であるので、ノードＰ’（１）が設定される。次に、制御点Ａ（２）が設定される。制御点Ａ（２）は、ｉｃ≠１，３であるので、制御点Ｂ（１）とＢ（２）の中点（３０，１０）となる。その後、制御点Ａ（３）が設定される。制御点Ａ（３）は、ｉｃ＝３であるので、ノードＰ’（４）が設定される。このようにして、図１１に示すように、制御点列Ａ（１）、Ａ（２）およびＡ（３）と、制御点列Ｂ（１）およびＢ（２）が求められる。
【００５４】
以上の制御点列の作成処理が終了すると、次いで、図５のフローチャートに示すように、曲線を近似した直線が作成される（ステップＳＴ１４）。すなわち、曲線近似部５は、制御点列から、曲線を近似した直線を作成する。ここで、曲線近似部５で行われる曲線を近似した直線（以下、曲線近似ノード列）の作成処理の詳細を、図１２に示すフローチャートを参照しながら説明する。
【００５５】
曲線近似ノード列の作成処理では、まず、変数ｉａが１に初期化される（ステップＳＴ１５１）。次いで、ノードの登録が行われる（ステップＳＴ１５２）。すなわち、曲線近似ノード登録部７は、制御点Ａ（１）を曲線近似ノード列記憶部６に保存する。この場合、Ａ（１）＝（０，１０）が曲線近似ノード列記憶部６に保存される。
【００５６】
次いで、変数ｉａが「間引き後の道路ノード数−２」以下であればループが開始される（ステップＳＴ１５３）。ループが開始されると、リンク（Ａ（ｉａ）、Ｂ（ｉａ））とリンク（Ｂ（ｉａ）、Ａ（ｉａ＋１））の角度変化＜ＳＴＲＡＩＧＨＴ＿ＴＨＲＥＳＨＯＬＤであるか否かが調べられる（ステップＳＴ１５４）。すなわち、直線判定部８は、制御点Ａ（ｉａ）、Ｂ（ｉａ）およびＡ（ｉａ＋１）によって作成される２次ベジエ曲線（以後、単に「ベジエ曲線」という）が直線で近似できるか否かを判定する。具体的には、まず、リンク（Ａ（ｉａ），Ｂ（ｉａ））とリンク（Ｂ（ｉａ），Ａ（ｉａ＋１））の角度変化がＳＴＲＡＩＧＨＴ＿ＴＨＲＥＳＨＯＬＤ未満か否かを判定する。なお、変数ｉａは制御点列のインデックスを示し、リンク（Ａ（ｉａ），Ｂ（ｉａ））とリンク（Ｂ（ｉａ），Ａ（ｉａ＋１））の角度変化θは、図１３に示すように、リンク（Ａ（ｉａ），Ｂ（ｉａ））の向きとリンク（Ｂ（ｉａ），Ａ（ｉａ＋１））の向きの差分の絶対値である。ここで、リンク（Ａ（ｉａ），Ｂ（ｉａ））の向きは、ｘ軸を０°、ｙ軸を９０°とした時の偏角である。
【００５７】
この例では、変数ｉｃが１の場合は、図１１に示すように、リンク（Ａ（１），Ｂ（１））の向きは０°となり、リンク（Ｂ（１），Ａ（２））の向きも０°となる。したがって、リンク（Ａ（１），Ｂ（１））とリンク（Ｂ（１），Ａ（２））の角度変化は０°となり、ステップＳＴ１５４ではＹＥＳと判定される。
【００５８】
上記ステップＳＴ１５４において、リンク（Ａ（ｉａ）、Ｂ（ｉａ））とリンク（Ｂ（ｉａ）、Ａ（ｉａ＋１））の角度変化＜ＳＴＲＡＩＧＨＴ＿ＴＨＲＥＳＨＯＬＤであることが判断されると、１本のリンクで曲線が近似される（ステップＳＴ１５５）。すなわち、単数直線近似部１２は、制御点Ａ（ｉａ）、Ｂ（ｉａ）およびＡ（ｉａ＋１）で作成されるベジエ曲線をリンク（Ａ（ｉａ），Ａ（ｉａ＋１））で近似する。この例では、制御点Ａ（１）、Ｂ（１）およびＡ（２）で作成されるベジエ曲線が、リンク（Ａ（１），Ａ（２））で近似される。
【００５９】
次いで、ノードの登録が行われる（ステップＳＴ１５６）。すなわち、曲線近似ノード登録部７は、単数直線近似部１２から送られてきたリンクのうち、既に登録されているＡ（１）以外のノードを曲線近似ノードとして曲線近似ノード列記憶部６に保存する。この例では、制御点Ａ（２）が保存される。その後、シーケンスはステップＳＴ１６６に進む。
【００６０】
上記ステップＳＴ１５４において、リンク（Ａ（ｉａ）、Ｂ（ｉａ））とリンク（Ｂ（ｉａ）、Ａ（ｉａ＋１））の角度変化＜ＳＴＲＡＩＧＨＴ＿ＴＨＲＥＳＨＯＬＤでないことが判断されると、シーケンスはステップＳＴ１５７に進む。この例では、次のループに入って変数ｉｃが２になると、直線判定部８は、リンク（Ａ（２），Ｂ（２））とリンク（Ｂ（２），Ａ（３））の角度変化がＳＴＲＡＩＧＨＴ＿ＴＨＲＥＳＨＯＬＤ未満か否かを調べ、リンク（Ａ（２），Ｂ（２））の向きは０°、リンク（Ｂ（２），Ａ（３））の向きは１３５°であるので、リンク（Ａ（２），Ｂ（２））とリンク（Ｂ（２），Ａ（３））の角度変化はＳＴＲＡＩＧＨＴ＿ＴＨＲＥＳＨＯＬＤ以上であると判定する。したがって、ステップＳＴ１５４ではＮＯと判定されてシーケンスはステップＳＴ１５７に進み、制御点Ａ（２）、Ｂ（２）およびＡ（３）で作成されるベジエ曲線を複数の直線で近似する処理が行われる。
【００６１】
具体的には、ステップＳＴ１５７においては、曲線上の中間点である点ＭＰ（ｉａ）が算出される。すなわち、曲線上中間点作成部９は、ベジエ曲線上の点ＭＰ（ｉａ）を下記（２）式に従って算出する。この例では、（２）式にＡ（２）＝（３０，１０），Ｂ（２）＝（５０，１０），Ａ（３）＝（１０，５０）を代入すると、曲線上の点ＭＰ（２）＝（３５，２０）となる。
2012123986.tif 000031
【００６２】
次いで、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ）との間の距離＜ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤであるか否かが調べられる（ステップＳＴ１５８）。すなわち、前半曲線近似部１０は、下記（３）式によって求められる制御点Ａ（ｉａ）と曲線上の点ＭＰ（ｉａ）との間の距離Ｄｉｓｔ１が、ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤより小さいかどうかを調べる。
【００６３】
このステップＳＴ１５８において、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ）との間の距離＜ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤであることが判断されると、１本のリンクで曲線が近似される（ステップＳＴ１５９）。すなわち、単数直線近似部１２は、制御点Ａ（ｉａ）と曲線上の点ＭＰ（ｉａ）との間のベジエ曲線を１本のリンク（Ａ（ｉａ），ＭＰ（ｉａ））で近似する。
【００６４】
次いで、ノードの登録が行われる（ステップＳＴ１６０）。すなわち、曲線近似ノード登録部７は、単数直線近似部１２から送られてきた、１本のリンクで近似されたノードを曲線近似ノード列記憶部６に保存する。その後、シーケンスはステップＳＴ１６２に進む。
【００６５】
一方、ステップＳＴ１５８において、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ）との間の距離＜ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤでないことが判断されると、すなわち、距離Ｄｉｓｔ１がＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤ以上であることが判断されると、制御点Ａ（ｉａ）と曲線上の点ＭＰ（ｉａ）との間のベジエ曲線がＳＥＰＡＲＡＴＥ＿ＮＵＭで示される本数のリンクで近似される（ステップＳＴ１６１）。
【００６６】
このステップＳＴ１６１で行われる処理の詳細を、図１４に示すフローチャートを参照しながら説明する。この処理では、まず、変数ｉｍが１に初期化される（ステップＳＴ１７１）。次いで、変数ｉｍがＳＥＰＡＲＡＴＥ＿ＮＵＭ以下であればループが開始される（ステップＳＴ１７２）。ループが開始されると、まず、曲線上のノードが算出される（ステップＳＴ１７３）。すなわち、前半曲線近似部１０は、下記（４）式に従って、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ）と間の曲線上のノードを算出する。
2012123986.tif 000032
ここで、（４）式中のｔ（ｉｍ）は（５）式に示す値であり、ＢＰ（ｉａ，ｉｍ）は制御点Ａ（ｉａ）と曲線上の点ＭＰ（ｉａ）との間のベジエ曲線上に作成されるｉｍ番目のノードである。
【００６７】
次いで、ノードの登録が行われる（ステップＳＴ１７４）。すなわち、曲線近似ノード登録部７は、前半曲線近似部１０で算出されたノードのうち、既に登録されているノード以外の曲線上のノードを、曲線近似ノード列記憶部６に登録する。次いで、変数ｉｍがインクリメントされ、以下、変数ｉｍがＳＥＰＡＲＡＴＥ＿ＮＵＭより大きくなるまでステップＳＴ１７２とステップＳＴ１７５との間の処理が繰り返される。この繰り返し処理において、変数ｉｍがＳＥＰＡＲＡＴＥ＿ＮＵＭより大きくなると、シーケンスは図１２に示すステップＳＴ１６２に進む。
【００６８】
この場合、Ｄｉｓｔ１は１１．１８であり、ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤ以下である。したがって、制御点Ａ（２）と曲線上の点ＭＰ（２）との間の曲線はリンク（Ａ（２），ＭＰ（２））で近似される。この場合、ノードの登録では、曲線上の点ＭＰ（２）が保存される。
【００６９】
ステップＳＴ１６２においては、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ＋１）との間の距離＜ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤであるか否かが調べられる。すなわち、後半曲線近似部１１は、下記（６）式に従って算出される曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ＋１）との距離Ｄｉｓｔ２が、ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤより小さいかどうかを調べる。
【００７０】
このステップＳＴ１６２において、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ＋１）との間の距離＜ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤであることが判断されると、１本のリンクで曲線が近似される（ステップＳＴ１６３）。すなわち、単数直線近似部１２は、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ＋１）との間のベジエ曲線を１本のリンク（ＭＰ（ｉａ），Ａ（ｉａ））で近似する。
【００７１】
次いで、ノードの登録が行われる（ステップＳＴ１６４）。すなわち、曲線近似ノード登録部７は、単数直線近似部１２から送られてきた１本のリンクで近似されたノードを曲線近似ノード列記憶部６に保存する。その後、シーケンスはステップＳＴ１６６に進む。
【００７２】
一方、ステップＳＴ１６２において、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ＋１）との間の距離＜ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤでない、すなわち、距離Ｄｉｓｔ２がＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤ以上であることが判断されると、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ＋１）との間のベジエ曲線がＳＥＰＡＲＡＴＥ＿ＮＵＭで示される本数のリンクで近似される（ステップＳＴ１６５）。その後、シーケンスはステップＳＴ１６６に進む。
【００７３】
上記ステップＳＴ１６５で行われる処理の詳細を、図１４に示すフローチャートを参照しながら説明する。この処理では、まず、変数ｉｍが１に初期化される（ステップＳＴ１７１）。次いで、変数ｉｍがＳＥＰＡＲＡＴＥ＿ＮＵＭ以下であればループが開始される（ステップＳＴ１７２）。ループが開始されると、まず、曲線上のノードが算出される（ステップＳＴ１７３）。すなわち、前半曲線近似部１０は、上記（４）式に従って、曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ）と間の曲線上のノードを算出する。
2012123986.tif 000033
ここで、（４）式中のｔ（ｉｍ）は（７）式に示す値であり、このときのＢＰ（ｉａ，ｉｍ）は曲線上の点ＭＰ（ｉａ）と制御点Ａ（ｉａ＋１）との間のベジエ曲線上に作成されるｉｍ番目のノードである。
【００７４】
次いで、ノードの登録が行われる（ステップＳＴ１７４）。すなわち、曲線近似ノード登録部７は、後半曲線近似部１１で算出されたノードのうち、既に登録されているノード以外の曲線上のノードを、曲線近似ノード列記憶部６に登録する。次いで、変数ｉｍがインクリメントされ、以下、変数ｉｍがＳＥＰＡＲＡＴＥ＿ＮＵＭより大きくなるまでステップＳＴ１７２とステップＳＴ１７５との間の処理が繰り返される。その後、シーケンスはステップＳＴ１６６に進む。
【００７５】
この場合、Ｄｉｓｔ２は２６．９であり、ＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤ以上である。したがって、曲線上の点ＭＰ（２）と制御点Ａ（ｉａ＋１）との間の曲線はＳＥＰＡＲＡＴＥ＿ＮＵＭ個のリンクで近似される。具体的には、まず、ｉｍ＝１のノードが算出される。（７）式より、ｔ（１）＝０．７５となり、ＢＰ（２，１）＝（２６．２５，３２．５）となる。その後、ＢＰ（２，１）が曲線近似ノード列記憶部６に保存される。次に、ＢＰ（２，２）が算出される。同様に、（７）式で求めたｔ（２）＝１より、ＢＰ（２，２）＝（１０，５０）を算出した後、ＢＰ（２，２）が曲線近似ノード列記憶部６に保存される。
【００７６】
ステップＳＴ１６６では、変数ｉａがインクリメントされ、以下、変数ｉａが「間引き後の道路ノード数−２」より大きくなるまでステップＳＴ１５３とステップＳＴ１６６との間の処理が繰り返される。このようにして、制御点列から作成された曲線を直線近似した曲線近似ノードが曲線近似ノード列記憶部６に逐次保存される。
【００７７】
なお、前半曲線近似部１０と後半曲線近似部１１は、ｔ（ｉｍ）の算出方法以外は同じ処理であるので、前半曲線近似部１０のＭＰ（ｉａ）と制御点Ａ（ｉａ）との間の距離がＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤ以上の場合と、後半曲線近似部１１のＭＰ（ｉａ）と制御点Ａ（ｉａ＋１）との間の距離がＳＥＰＡＲＡＴＥ＿ＴＨＲＥＳＨＯＬＤ以上の場合の処理は同じである。
【００７８】
以上の曲線を近似した直線の作成処理が終了すると、次いで、図５のフローチャートに示すように、文字列データが取得される（ステップＳＴ１５）。すなわち、文字列配置データ取得部２は、文字列配置データ記憶部１から文字列配置データを読み出し、１つの文字列を構成する複数の文字と、各文字の縦幅および横幅を取得する。この場合、文字列『Ｓｔｒｉｎｇ』の文字『Ｓ』、『ｔ』、『ｒ』、『ｉ』、『ｎ』、『ｇ』、ならびに、『Ｓｔｒｉｎｇ』中の各文字の縦幅および横幅が取得される。
【００７９】
次いで、曲線近似ノード列が取得される（ステップＳＴ１６）。すなわち、曲線近似ノード列取得部１３は、曲線近似ノード列記憶部６から曲線近似ノード列を取得する。この場合、上述した処理において登録されたノードＰ”（１）＝（０，１０）、Ｐ”（２）＝（３０，１０）、Ｐ”（３）＝ＭＰ（２）＝（３５，２０）、Ｐ”（４）＝ＢＰ（２，１）＝（２６．２５，３２．５）およびＰ”（５）＝ＢＰ（２，２）＝（１０，５０）が取得される。図１５は、取得された曲線近似ノード列と、道路ノード列の関係を示す。
【００８０】
次いで、文字列の配置が行われる（ステップＳＴ１７）。すなわち、文字列配置算出部１４は、文字列を配置する。ここで、文字列配置処理の詳細を、図１６に示すフローチャートを参照しながら説明する。
【００８１】
文字列配置処理では、まず、パラメータｉｐ＝１、ｉｓ＝１およびｒａｎｇｅ＝０に初期化される（ステップＳＴ１８１）。次いで、パラメータｉｐが「曲線近似ノード列の数−１」以下であればループが開始される（ステップＳＴ１８２）。ループが開始されると、次いで、このループ内において、さらに無限ループが開始される（ステップＳＴ１８３）。無限ループが開始されると、次いで、リンクの向きθ’が算出される（ステップＳＴ１８４）。すなわち、リンク角度算出部１７は、リンク（Ｐ”（ｉｐ），Ｐ”（ｉｐ＋１））の向きθ’を算出する。この例では、リンク（Ｐ”（１），Ｐ”（２））の向きθ’＝０°となる。
【００８２】
次いで、ｉｓ番目の文字（以下、「文字ｉｓ」という）の配置が行われる（ステップＳＴ１８５）。すなわち、文字配置部１８は、リンクの向きθ’および文字間隔ｒａｎｇｅに基づき文字ｉｓの配置を決める。ここで、文字ｉｓの配置を決める文字配置処理の詳細を、図１７に示すフローチャートを参照しながら説明する。
【００８３】
文字配置処理では、まず、ｉｓ＝１であるか否かが調べられる（ステップＳＴ２００）。すなわち、初期文字判定部２３は、配置する文字を示すパラメータｉｓが１であるか否か、つまり１番目の文字であるか否かを判定する。このステップＳＴ２００において、ｉｓ＝１であることが判断されると、文字ｉｓを配置する処理に移行する。この例では、初期状態ではｉｓ＝１であるので、文字ｉｓを配置する処理に移行する。
【００８４】
文字ｉｓを配置する処理では、文字配置位置決定部２４は、ノードＰ”（１）に文字ｉｓを配置し、文字リンク内として文字配置処理を終了する。より詳しくは、まず、文字ｉｓの左下座標ＬＤ（ｉｓ）がノードＰ”（１）に設定される（ステップＳＴ２０１）。すなわち、文字配置位置決定部２４は、文字ｉｓの左下座標ＬＤ（ｉｓ）をノードＰ”（１）に設定する。
【００８５】
次いで、ＬＤ（ｉｓ）に文字ｉｓが配置される（ステップＳＴ２０２）。すなわち、文字配置位置決定部２４は、文字ｉｓの左下座標ＬＤ（ｉｓ）に文字ｉｓを配置する。ここで、文字配置とは、文字ｉｓの左下座標ＬＤ（ｉｓ）をノードＰ”（１）に設定した後、文字ｉｓの左上座標ＬＴ（ｉｓ）、右下座標ＲＤ（ｉｓ）および右上座標ＲＴ（ｉｓ）に、下記（８）式で求めた値を設定する処理をいう。なお、（８）式中のＷ（ｉｓ）およびＨ（ｉｓ）は文字ｉｓの横幅および縦幅をそれぞれ示す。この例では、ＬＤ（１）＝（０，１０），ＬＴ（１）＝（０，２０），ＲＤ（１）＝（５，１０），ＲＴ（１）＝（５，２０）となる。
2012123986.tif 000034
【００８６】
上記ステップＳＴ２００において、ｉｓ＝１でないことが判断されると、文字ｉｓ−１の左下座標ＬＤ（ｉｓ−１）からｒａｎｇｅだけ離れた位置にある左下座標ＬＤ（ｉｓ）が算出される（ステップＳＴ２０３）。次いで、文字ｉｓの左下座標ＬＤ（ｉｓ）がリンク内であるかどうかが調べられる（ステップＳＴ２０４）。このステップＳＴ２０４において、文字ｉｓの左下座標ＬＤ（ｉｓ）がリンク内であることが判断されると、文字ｉｓの左下座標ＬＤ（ｉｓ）に文字ｉｓが配置される（ステップＳＴ２０５）。すなわち、文字配置位置決定部２４は、文字ｉｓの左下座標ＬＤ（ｉｓ）に文字ｉｓを配置し、文字リンク内として文字配置処理を終了する。
【００８７】
ステップＳＴ２０４において、文字ｉｓの左下座標ＬＤ（ｉｓ）がリンク内でないことが判断されると、文字ｉｓの左下座標ＬＤ（ｉｓ）からノードＰ（ｉｐ＋１）までの距離がｒａｎｇｅとして設定される（ステップＳＴ２０６）。その後、文字リンク外として文字配置処理は終了する。
【００８８】
上述した文字配置処理が終了すると、次いで、図１６に示すように、文字ｉｓがリンク外であるかどうかが調べられる（ステップＳＴ１８６）。すなわち、文字リンク外判定部１９は、文字配置位置決定部２４における配置結果が文字リンク外であるかどうかを判定する。このステップＳＴ１８６において、文字ｉｓがリンク内であることが判断されると、文字ｉｓ−１との重複判定が行われる（ステップＳＴ１８７）。すなわち、重複判定部２０は、文字ｉｓと文字ｉｓ−１とが重複しているか否かを判定する。
【００８９】
このステップＳＴ１８７において、重複なしと判断されると、次いで、ｒａｎｇｅが文字ｉｓの横幅に設定される（ステップＳＴ１８８）。すなわち、パラメータ更新部２１は、ｒａｎｇｅを文字ｉｓの横幅に設定する。次いで、ｉｓに１が加えられる（ステップＳＴ１８９）。すなわち、パラメータ更新部２１は、ｉｓに１を加える。この例では、ｒａｎｇｅ＝５，ｉｓ＝２となる。
【００９０】
次いで、ｉｓ＝文字数であるかどうかが調べられる（ステップＳＴ１９０）。すなわち、文字数判定部２２は、ｉｓが文字数になったかどうかを調べる。このステップＳＴ１９０において、ｉｓ＝文字数であることが判断されると、文字列配置可として文字列配置処理は終了する。一方、ステップＳＴ１９０において、ｉｓ＝文字数でないことが判断されると、シーケンスはステップＳＴ１９１に進み、無限ループ中である旨が判断される。したがって、以後はステップＳＴ１８３とステップＳＴ１９１との間の処理、つまり、文字配置部１８による文字ｉｓの配置が繰り返される。
【００９１】
上記ステップＳＴ１８６において、文字ｉｓがリンク外であることが判断されると、ｒａｎｇｅがノードＰ”（ｉｐ＋１）と左下座標ＬＤ（ｉｓ）との間の距離に設定される（ステップＳＴ１９３）。すなわち、パラメータ更新部２１は、ｒａｎｇｅをノードＰ”（ｉｐ＋１）と左下座標ＬＤ（ｉｓ）との間の距離に設定する。その後、シーケンスはステップＳＴ１９４に進み、無限ループを抜け出す。以後、ステップＳＴ１９４においてはｉｐがインクリメントされ、ステップＳＴ１８２とステップＳＴ１９４との間の処理が繰り返される。
【００９２】
上記無限ループ内の２回目の処理では、ｉｓ＝２≠文字数であるので、文字配置部１８は文字ｉｓを配置する処理に移る。この処理では、上記ステップＳＴ２００において、ｉｓ＝１でないことが判断される。この場合、ｉｓ＝２であるので、文字左下座標算出部２５により、文字ｉｓの左下座標ＬＤ（ｉｓ）が求められる。すなわち、文字左下座標算出部２５は、文字ｉｓ−１の左下座標ＬＤ（ｉｓ−１）よりｒａｎｇｅだけ離れた位置を、下記（９）式で求め、文字ｉｓの左下座標ＬＤ（ｉｓ）として設定する。この場合、θ’＝０°，ｒａｎｇｅ＝５であるので、ＬＤ（２）＝ＬＤ（１）＋（ｒａｎｇｅ，０）＝（５，１０）となる。
2012123986.tif 000035
【００９３】
文字２（２番目の文字）の左下座標ＬＤ（２）は、リンク（Ｐ”（１），Ｐ”（２））上であるので、文字配置位置決定部２４は、上記と同様にして左下座標ＬＤ（２）以外の左上座標ＬＴ（２）、右下座標ＲＤ（２）および右上座標ＲＴ（２）を算出し、その後、文字リンク内として処理を終了する。この場合、ＬＴ（２）＝（５，２０），ＲＤ（２）＝（１０，１０），ＲＴ（２）＝（１０，２０）となり、文字リンク内で処理は終了する。
【００９４】
その後、ステップＳＴ１８６において、文字リンク外判定部１９で文字ｉｓがリンク内であることが判定され、次いで、ステップＳＴ１８７において、重複判定部２０で文字ｉｓ−１との重複が判定される。この場合、図１８に示すように、文字ｉｓ−１の右辺（ＲＴ（１），ＲＤ（１））と文字ｉｓの左辺（ＬＴ（２），ＬＤ（２））は重複する。したがって、ステップＳＴ１８７においては、重複ありと判断され、ｒａｎｇｅにＳＴＥＰ＿ＳＩＺＥが加えられる（ステップＳＴ１９２）。その後、シーケンスはステップＳＴ１８５に戻り、再度、文字配置部１８で文字が配置される。この場合、ｒａｎｇｅ＝５＋１＝６となる。
【００９５】
この文字を再度配置する処理においては、上記と同様に、文字配置部１８は文字２を配置する。まず、初期文字判定部２３にて、ｉｓ＝１であるかを判定する。ｉｓ≠１であるので、文字左下座標算出部２５で文字２の左下座標ＬＤ（２）を算出する。この場合、θ’＝０°、ｒａｎｇｅ＝６であるので、ＬＤ（２）＝ＬＤ（１）＋（ｒａｎｇｅ，０）＝（６，１０）となる。（６，１０）はリンク（Ｐ”（１），Ｐ”（２））上であるので、文字配置位置決定部２４にて、上記と同様にしてＬＴ（２），ＲＤ（２），ＲＴ（２）が算出される。この場合、ＬＴ（２）＝（６，２０），ＲＤ（２）＝（１１，１０），ＲＴ（２）＝（１１，２０）となり、文字リンク内で処理を終了する。
【００９６】
次に、重複判定部２０にて、文字ｉｓと文字ｉｓ−１の重複が判定される。この場合、図１９に示すように、文字２と文字１は重複しないので、パラメータ更新部２１でパラメータを更新する処理に移る。上記と同様にしてパラメータが更新されると、ｒａｎｇｅ＝５，ｉｓ＝３となる。その後、上記と同様にして文字数判定部２２にてｉｓ＝文字数か否かが判定される。この場合、ｉｓ≠文字数であるので、文字列を配置する処理に移る。
【００９７】
以下同様にして文字３、４および５を配置すると、図２０に示すような文字列が配置される。文字３の外接矩形はＬＤ（３）＝（１２，１０）、ＬＴ（３）＝（１２，２０）、ＲＤ（３）＝（１７，１０）およびＲＴ（３）＝（１７，２０）となり、文字４の外接矩形はＬＤ（４）＝（１８，１０）、ＬＴ（４）＝（１８，２０）、ＲＤ（４）＝（２３，１０）およびＲＴ（４）＝（２３，２０）となり、文字５の外接矩形はＬＤ（５）＝（２４，１０）、ＬＴ（５）＝（２４，２０）、ＲＤ（５）＝（２９，１０）およびＲＴ（５）＝（２９，２０）となる。
【００９８】
次に、文字６がリンク（Ｐ”（１），Ｐ”（２））に配置される。まず、初期文字判定部２３にてｉｓ＝１か否かが判定される。この場合、ｉｓ＝６であるので、文字左下座標算出部２５にて文字の左下座標が算出される。上記と同様にして文字左下座標が算出されると、左下座標ＬＤ（６）＝（３４，１０）となる。左下座標ＬＤ（６）はリンク（Ｐ”（１），Ｐ”（２））外であるので、ｒａｎｇｅが左下座標ＬＤ（６）からノードＰ”（２）との間の距離４、ｉｐが１から２に更新され、文字リンク外で処理を終了する。その後、文字リンク外で処理を終了したので、次のリンクに文字が配置される。この場合、リンク（Ｐ”（２），Ｐ”（３））に文字６が配置される。上述した処理と同様の処理より文字を配置すると、文字６の外接矩形はＬＤ（６）＝（３４．０２，１８．０５）、ＬＴ（６）＝（２５．０５，２２．５２）、ＲＤ（６）＝（３６．２６，２２．５２）およびＲＴ（６）＝（２７．３１，２６．９９）となる。図２１は、文字列『Ｓｔｒｉｎｇ』を配置した結果を示す。以上のようにして、文字列が道路リンク上に配置される。
【００９９】
以上説明したように、道路リンクから作成した曲線を近似した直線上に文字列を配置することにより、従来に較べて文字配置角度変化が少なくなるように、文字列を配置することができる。その結果、従来に較べて文字角度変化を低減できるので、文字列を容易に認識することができる。また、道路リンクから作成した曲線を複数の直線に近似するように構成したので、文字の位置を決める際に曲線上の距離計算を省くことができ、特許文献１に開示された技術に比べて高速に文字の位置を決めることができる。
【０１００】
なお、本願発明はその発明の範囲内において、実施の形態の任意の構成要素の変形、もしくは実施の形態の任意の構成要素の省略が可能である。
【符号の説明】
【０１０１】
１  文字列配置データ記憶部、２  文字列配置データ取得部、３  道路ノード列間引き部、４  制御点列作成部、５  曲線近似部、６  曲線近似ノード列記憶部、７  曲線近似ノード登録部、８  直線判定部、９  曲線上中間点作成部、１０  前半曲線近似部、１１  後半曲線近似部、１２  単数直線近似部、１３ａ  文字列配置処理部、１３  曲線近似ノード列取得部、１４  文字列配置算出部、１５  文字列配置登録部、１６  出力文字列配置記憶部、１７  リンク角度算出部、１８  文字配置部、１９  文字リンク外判定部、２０  重複判定部、２１  パラメータ更新部、２２  文字数判定部、２３  初期文字判定部、２４  文字配置位置決定部、２５  文字左下座標算出部、２６  次文字配置距離更新部。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
文字列を道路に沿って配置するための文字列配置データを取得する文字列配置データ取得部と、
前記文字列配置データ取得部で取得された文字列配置データに含まれる道路ノード列から制御点列を作成する制御点列作成部と、
前記制御点列作成部で作成された制御点列による曲線を直線で近似したノード列を作成する曲線近似部と、
前記曲線近似部で作成されたノード列を曲線近似ノード列として保存する曲線近似ノード列記憶部と、
前記曲線近似ノード列記憶部に保存された曲線近似ノード列に基づき文字列の配置処理を行う文字列配置処理部
とを備えた文字列配置装置。
【請求項２】
文字列配置データ取得部で取得された文字列配置データに含まれる道路ノード列を構成するノードの一部を間引きする道路ノード列間引き部を備え、
制御点列作成部は、前記道路ノード列間引き部で間引きされた後の道路ノード列から制御点列を作成する
ことを特徴とする請求項１記載の文字列配置装置。
【請求項３】
曲線近似部は、
制御点列作成部で作成された制御点列による曲線を直線で近似できるか否かを判定する直線判定部と、
前記直線判定部において直線で近似できないことが判定された場合に、前記制御点列作成部で作成された制御点列による曲線上の中間点を作成する曲線上中間点作成部と、
前記制御点列作成部からの制御点列による曲線のうち、前記曲線上中間点作成部で作成された中間点より前の曲線を直線で近似して作成されたノード列を出力する前半曲線近似部と、
前記制御点列作成部からの制御点列による曲線のうち、前記曲線上中間点作成部で作成された中間点より後の曲線を直線で近似して作成されたノード列を、前記前半曲線近似部で直線を近似して作成されたノード列に繋げて出力する後半曲線近似部と、
前記直線判定部において直線で近似できることが判定された場合に、前記制御点列作成部で作成された制御点列による曲線を１本の直線で近似して作成されたノード列を出力する単数直線近似部と、
前記後半曲線近似部からのノード列、または、前記単数直線近似部からのノード列を曲線近似ノード列として曲線近似ノード列記憶部に登録する曲線近似ノード登録部
とを備えたことを特徴とする請求項１または請求項２に記載の文字列配置装置。
【請求項４】
文字列配置処理部は、
曲線近似ノード列記憶部から文字列が沿うノード列を取得する曲線近似ノード列取得部と、
前記曲線近似ノード列取得部で取得された曲線近似ノード列に基づき文字列の配置位置を算出する文字列配置算出部と、
文字列の配置位置を保存する出力文字列配置記憶部と、
前記文字列配置算出部で算出された文字列の配置位置を前記出力文字列配置記憶部に登録する文字列配置登録部
とを備えたことを特徴とする請求項１または請求項２に記載の文字列配置装置。
【請求項５】
文字列配置算出部は、
曲線近似ノード列取得部で取得された曲線近似ノード列に基づいて、各ノードにおいてリンクにより形成されるリンク角度を算出するリンク角度算出部と、
前記リンク角度算出部において算出されたリンク角度に基づき文字を配置する文字配置部と、
前記文字配置部で配置された文字がリンク外であるか否かを判定する文字リンク外判定部と、
前記文字リンク外判定部でリンク外でないことが判定された場合に文字同士が重複するか否かを判定する重複判定部と、
前記重複判定部での判定結果に応じてパラメータを更新するパラメータ更新部と、
前記パラメータ更新部で更新されたパラメータに基づき既定の文字数に達したか否かを判定し、既定の文字数に達したことが判定された場合に処理を終了させる文字数判定部
とを備えたことを特徴とする請求項４記載の文字列配置装置。
【請求項６】
文字配置部は、
リンク角度算出部で算出されたリンク角度に基づき配置された文字が文字列中の１番目の文字であるか否かを判定する初期文字判定部と、
前記初期文字判定部における判定結果に応じて、文字の左下座標を算出する文字左下座標算出部と、
前記初期文字判定部による判定結果または文字左下座標算出部で算出された文字の左下座標に応じて文字の配置位置を決める文字配置位置決定部と、
前記文字左下座標算出部で算出された文字の左下座標に基づき次の文字までの距離を決める次文字配置距離更新部
とを備えたことを特徴とする請求項５記載の文字列配置装置。
【国際調査報告】
2012123986.tif 000036
2012123986.tif 000037
2012123986.tif 000038
2012123986.tif 000039