(57)【要約】【課題】指定されたフォントが存在しない場合に、単に別のフォントに置換しただけでは、指定されたフォントと変更されたフォントとの間でフォント幅が異なる場合に、描画されたテキストの文字間隔が不自然になる。【解決手段】使用要求に一致するフォントが存在しない場合に、指定された属性情報が最も近いフォントを近似フォントとして書体選択部１２３にて選択し、この選択した近似フォントを用いて文字コードと文字描画位置情報を基に、文字描画命令処理部１２１によって文字を描画する際に、文字間隔処理部１２４にて今回の描画文字と次回の描画文字との間の文字間隔を算出し、この算出結果を用いて文字間の状態を予測し、この予測結果に基づいて今回の描画文字を縮小または拡大して描画するようにする。【選択図】        図１
2004184718.tif 000002
【特許請求の範囲】
【請求項１】
任意のフォントを特定する情報とそのフォントの属性情報を基にしたフォントの使用要求に応じて、複数のフォントの中から所望のフォントを選択し、この選択したフォントを用いて文字コードおよび文字描画位置情報を基に文字を出力する画像処理装置であって、
前記複数のフォント中に前記使用要求に一致するフォントが存在する場合はそのフォントを選択し、存在しない場合は指定された属性情報が近いフォントを近似フォントとして選択する選択手段と、
前記選択手段によって選択されたフォントに対応する文字を当該フォントの文字コードおよび文字描画位置情報を基に描画する描画手段と、
前記選択手段によって前記近似フォントが選択されたとき、前記描画手段による今回の描画文字と次回の描画文字との文字間の状態を予測する予測手段と、
前記描画手段による今回の描画文字を前記予測手段の予測結果に基づいて縮小または拡大する制御手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記予測手段は、前記描画手段による今回の描画文字と次回の描画文字との間の文字間隔を算出する文字間隔算出手段を有し、この文字間隔算出手段の算出結果を前記予測結果とする
ことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記制御手段は、前記文字間隔算出手段が算出した文字間隔が基準値よりも小のとき、前記描画手段による今回の描画文字を横書きの場合は横方向に、縦書きの場合は縦方向に縮小する
ことを特徴とする請求項２記載の画像処理装置。
【請求項４】
前記制御手段は、前記文字間隔算出手段が算出した文字間隔が基準値よりも大のとき、前記描画手段による今回の描画文字を横書きの場合は横方向に、縦書きの場合は縦方向に拡大する
ことを特徴とする請求項２記載の画像処理装置。
【請求項５】
前記制御手段は、前記文字間隔算出手段が算出した文字間隔に対応した縮小率または拡大率に応じて描画文字を縮小または拡大する
ことを特徴とする請求項３または４記載の画像処理装置。
【請求項６】
前記制御手段は、同じフォントの描画時の縮小率または拡大率を、指定された文字コード列内の同じ文字コード間で等しくする
ことを特徴とする請求項５記載の画像処理装置。
【請求項７】
前記制御手段は、同じフォントの描画時の縮小率または拡大率を、同一ページ内の同じフォント属性をもつ同じ文字コード間で等しくする
ことを特徴とする請求項５記載の画像処理装置。
【請求項８】
前記制御手段は、同じフォントの描画時の縮小率または拡大率を、同一ジョブ内の同じフォント属性をもつ同じ文字コード間で等しくする
ことを特徴とする請求項５記載の画像処理装置。
【請求項９】
任意のフォントを特定する情報とそのフォントの属性情報を基にしたフォントの使用要求に応じて、複数のフォントの中から所望のフォントを選択し、この選択したフォントを用いて文字コードおよび文字描画位置情報を基に文字を出力する画像処理方法であって、
前記複数のフォント中に前記使用要求に一致するフォントが存在する場合はそのフォントを選択し、存在しない場合は指定された属性情報が近いフォントを近似フォントとして選択し、
前記近似フォントを選択したとき、今回の描画文字と次回の描画文字との文字間の状態を予測し、
この予測した文字間の状態に基づいて今回の描画文字を縮小または拡大して前記文字描画位置情報を基に描画する
ことを特徴とする画像処理方法。
【請求項１０】
前記文字間の状態の予測を、今回の描画文字と次回の描画文字との間の文字間隔を算出してこの算出結果に基づいて行う
ことを特徴とする請求項９記載の画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のフォントをあらかじめ保有しておき、これら複数のフォントの中から要求されたフォントを選択して当該フォントに対応した文字の出力処理を行う画像処理装置および画像処理方法に関し、特に要求されたフォントと同一のフォントを保有していない場合に、保有しているフォントの中から要求されたフォントに近いフォントを選択して描画することが可能な画像処理装置および画像処理方法に関する。
【０００２】
【従来の技術】
近年、文章や画像などのドキュメントを、パーソナルコンピュータやワークステーションなどのコンピュータ装置で電子的に作成し、その作成したドキュメントをコンピュータ装置と例えばネットワークを介して接続された出力装置、例えばプリンタ装置にて印刷出力する、といったことが広く行われている。
【０００３】
このようなコンピュータ装置とプリンタ装置とを備えてなる画像形成システムにおいては、一般に、ドキュメントを印刷出力するに当たって、コンピュータ装置側からプリンタ装置側に対してページ記述言語（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ；以下、「ＰＤＬ」と略す）で記述された描画命令を送出するようになっている。そして、描画命令の送出があると、プリンタ装置側において、コンピュータ装置側から受け取った描画命令を基にテキストやグラフィックスなどの図形を描画することになる。
【０００４】
テキストを描画する場合は、テキストとして描画されるフォントの属性と、テキストと、テキストの描画位置の各情報がコンピュータ装置側から指定され、これらの指定情報に基づいてプリンタ装置側にてテキスト描画を行うのが一般的である。その際、コンピュータ装置側で指定されたフォントが全てプリンタ装置に搭載されているとは限らない。
【０００５】
このように、指定されたフォントがプリンタ装置に搭載されていない場合、従来は、プリンタ装置が保有している複数のフォントの中から適当なフォントを選んで描画するようにしていた（例えば、特許文献１参照）。具体的には、複数のフォントの各々に対してそれぞれの書体名とスタイル情報（太さ・字形・ファミリ）とを対応付けて格納しておき、指定されたフォントが存在しない場合は、書体名およびスタイル情報を基に代替のフォントに置き換えて描画することで、フォントがプリンタ装置側に搭載されていない場合のテキスト描画を実現可能にしている。
【０００６】
【特許文献１】
特開平６−１３０９３０号公報
【０００７】
【発明が解決しようとする課題】
しかしながら、上述した従来技術のように、指定されたフォントが存在しない場合に、単に別のフォントに置換して描画する手法を採ると、指定されたフォントと変更されたフォントとの間でフォントの横幅または縦幅が異なる場合に、その幅の違いによって描画されたテキストの文字間隔が不自然に広くなったり、逆に狭くなったりするという不具合が発生してしまう。
【０００８】
例えば、横書きの場合に、指定されたフォントの幅が変更されたフォントの幅よりも狭いと描画された文字同士が接触し、逆に広いと文字間隔が不自然に開いて描画されてしまう。また、縦書きの場合に、指定されたフォントの高さが変更されたフォントの高さよりも低いと描画された文字同士が接触し、逆に高いと文字間隔が不自然に開いて描画されてしまう。
【０００９】
具体的には、横書きの場合を例に採ると、指定されたフォントの幅が、置き換えられたフォントの幅よりも狭い場合には、図９に示すように、文字列を描画する各々の文字の描画開始位置は元の狭いフォントを基準にして指定されるため、幅の広いフォントに置き換えられることで、元のフォント描画位置では文字同士が重なって描画されてしまっていた。ここでは、幅の狭い「へ」と「と」を幅の広いフォントに置換した場合の様子を示している。
【００１０】
一方、指定されたフォントの幅が、置き換えられたフォントの幅よりも広い場合には、図１０に示すように、文字列を描画する各々の文字の描画開始位置は元の広いフォントを基準にして指定されるため、幅の狭いフォントに置き換えられることで、元のフォント描画位置では文字間隔が不自然に広がって描画されてしまっていた。ここでは、幅の広い「へ」と「と」を幅の狭いフォントに置換した場合の様子を示している。
【００１１】
本発明は、上記課題に鑑みてなされたものであり、その目的とするところは、指定されたフォントを別のフォントに置換して描画する際に、文字間の重なりや文字間隔の狭すぎあるいは広すぎ（開きすぎ）を防止して見栄えの良い文字列の描画を可能にした画像処理装置および画像処理方法を提供することにある。
【００１２】
【課題を解決するための手段】
本発明による画像処理装置は、任意のフォントを特定する情報とそのフォントの属性情報を基にしたフォントの使用要求に応じて、複数のフォントの中から所望のフォントを選択し、この選択したフォントを用いて文字コードおよび文字描画位置情報を基に文字を出力する画像処理装置であって、前記複数のフォント中に前記使用要求に一致するフォントが存在する場合はそのフォントを選択し、存在しない場合は指定された属性情報が近いフォントを近似フォントとして選択する選択手段と、前記選択手段によって選択されたフォントに対応する文字を当該フォントの文字コードおよび文字描画位置情報を基に描画する描画手段と、前記選択手段によって前記近似フォントが選択されたとき、前記描画手段による今回の描画文字と次回の描画文字との文字間の状態を予測する予測手段と、前記描画手段による今回の描画文字を前記予測手段の予測結果に基づいて縮小または拡大する制御手段とを備える構成となっている。
【００１３】
本発明による画像処理方法は、任意のフォントを特定する情報とそのフォントの属性情報を基にしたフォントの使用要求に応じて、複数のフォントの中から所望のフォントを選択し、この選択したフォントを用いて文字コードおよび文字描画位置情報を基に文字を出力するに当たって、前記複数のフォント中に前記使用要求に一致するフォントが存在する場合はそのフォントを選択し、存在しない場合は指定された属性情報が近いフォントを近似フォントとして選択し、前記近似フォントを選択したとき、今回の描画文字と次回の描画文字との文字間の状態を予測し、この予測した文字間の状態に基づいて今回の描画文字を縮小または拡大して前記文字描画位置情報を基に描画するようにする。
【００１４】
上記構成の画像処理装置または画像処理方法において、使用要求に一致するフォントが存在しない場合に、指定された属性情報が近いフォントを近似フォントとして選択し、この選択した近似フォントを用いて文字コードと文字描画位置情報を基に文字を出力するに当たって、今回の描画文字と次回の描画文字との文字間の状態を予測し、この予測結果に基づいて、今回の描画文字に対して次回の描画文字が重なったり、文字間隔が狭くなりすぎたり、広くなりすぎないように今回の描画文字を縮小または拡大して描画する。これにより、描画後の文字列において、文字間の重なりや文字間隔の狭すぎあるいは広すぎ（開きすぎ）を防止できるため、見栄えの良い文字列の描画を実現できる。
【００１５】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。ただし、ここでは、本発明を、ドキュメントの印刷出力を行うプリンタ装置に搭載された画像処理装置および当該画像処理装置が実行する画像処理方法に適用した場合を例に挙げて説明するものとする。
【００１６】
図１は、本発明の一実施形態に係る画像処理装置の構成の概略を示すブロック図である。本実施形態に係る画像処理装置は、図示しないホストコンピュータ装置で生成されたＰＤＬを、そのコンピュータ装置からネットワーク２０を介して受信すると、受信したＰＤＬによって記述された描画コマンド（直線、曲線、フォント、ラスタ画像、塗りつぶし等の描画命令）を解釈して図形描画処理を行うとともに描画した図形のデータをバッファに格納し、描画後に生成されたラスタ状の図形データを出力する出力装置、例えば画像形成を行うプリンタエンジン３０に対して送出する機能を持っている。
【００１７】
上述した機能を実現するために、図１から明らかなように、本実施形態に係る画像処理装置１０は、入力インターフェイス（以下、インターフェイスを「Ｉ／Ｆ」と略す）１１と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１２と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１３と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１４と、プリンタエンジンＩ／Ｆ１５と、これらの構成要素を相互に接続する内部バス１６とを備えた構成となっている。
【００１８】
この画像処理装置１０において、入力Ｉ／Ｆ１１は、ホストコンピュータ装置から送出されるＰＤＬをネットワーク２０を介して受信する。ここで、入力Ｉ／Ｆ１１が受信するＰＤＬには、先述した図形描画コマンドが含まれているものとする。また、図形の描画を行う場合には、その図形の外郭データがＰＤＬとして入力Ｉ／Ｆ１１に与えられるものとする。
【００１９】
ＣＰＵ１２は、画像処理装置１０全体の動作制御の外に、入力Ｉ／Ｆ１１を介して受け取ったＰＤＬを解釈して、その解釈結果に基づいて図形の描画処理を行う。この図形の描画処理は、ＣＰＵ１２が持つ図形描画処理、ラスターイメージ描画処理および文字描画処理の各機能によって行われる。これらの処理のうち、文字描画処理を行うために、ＣＰＵ１２は、図１に示すように、文字描画命令処理部１２１、ビットマップイメージ生成部１２２、書体選択部１２３および文字間隔算出部１２４の各機能部を有している。
【００２０】
ＲＯＭ１３は、ＣＰＵ１１が描画処理を行うのに必要となる描画プログラムをあらかじめ格納している。このＲＯＭ１３内の描画プログラムを実行することにより、ＣＰＵ１１は上述した各処理、即ち図形描画処理、ラスターイメージ描画処理および文字描画処理の各機能を実現するようになっている。ＲＯＭ１３にはさらに、文字描画のための複数のフォントについてのフォントデータも格納されている。このフォントデータは、ビットマップイメージ生成部１２２によって読み出されてフォントのビットマップを作成するために使用される。
【００２１】
ＲＡＭ１４は、ＣＰＵ１１が描画処理を行う際のワークメモリとして用いられる。詳しくは、ＣＰＵ１１による描画結果が描き込まれることにより、プリンタエンジン３０に出力するための図形データを格納するページバッファ１４１を有している。ＲＡＭ１４には、後述する文字の拡縮率（拡大率・縮小率）テーブルも格納されている。
【００２２】
プリンタエンジンＩ／Ｆ１５は、ＣＰＵ１１による制御に従いつつ、ＲＡＭ１４内のページバッファ１４１に格納された図形データから展開されたラスターデータをプリンタエンジン３０に送出する。プリンタエンジン３０としては、周知の電子写真技術を利用してラスターデータを印刷出力するものであっても良く、あるいは、周知のインクジェット方式の印刷技術を利用してラスターデータを印刷出力するものであっても良い。
【００２３】
なお、本実施形態では、画像出力を行う出力装置として、ドキュメントの印刷出力を行うプリンタ装置を用いた場合を例に挙げたが、これに限られるものではなく、表示出力を行うＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）等のディスプレイ装置であっても構わない。
【００２４】
また、本実施形態においては、ホストコンピュータ装置から送出されるＰＤＬをネットワーク２０を介して受信するとしたが、ネットワーク２０を介して受信するのではなく、同一のコンピュータ上にあるアプリケーションから直接呼び出す構成であっても構わない。
【００２５】
次に、ＣＰＵ１２が持つ機能部である文字描画命令処理部１２１、ビットマップイメージ生成部１２２、書体選択部１２３および文字間隔算出部１２４の各機能の概要、換言すれば、文字描画処理における処理動作の概要について簡単に説明する。
【００２６】
ホストコンピュータ装置からネットワーク２０を経由して送られてきたＰＤＬは、図示されていない図形描画命令解釈部によって解釈されて、ＲＡＭ１４のページバッファ１４１へラスターデータとして描画される。このとき、グラフィックスやラスターイメージは、図示されていない図形描画処理部やラスターイメージ描画処理部によってラスターデータへ変換されて描画される。
【００２７】
文字描画命令処理部１２１は、ネットワーク２０を介してホストコンピュータ装置から送られてきたＰＤＬ中の文字描画命令を、図形描画命令解釈部を介して受け取り、当該文字描画命令に基づいて文字描画処理を行う。ここで、文字描画命令は、図２に示すように、フォント指定命令と文字列描画命令とから構成されている。フォント指定命令は、フォント名情報（フォント名・ファミリ名）およびフォント属性情報（太さ・傾斜・サイズ）を含んでいる。文字列描画命令は、文字列情報（文字数・描画位置・文字コード×文字数・文字描画位置×文字数）を含んでいる。
【００２８】
文字描画命令処理部１２１がフォント指定命令を受け取ると、これを受けて書体選択部１２３は、ＲＯＭ１３にあらかじめ格納されている複数のフォント（書体）の中からフォント指定命令によって指定されたフォントの選択を行う。このとき、書体選択部１２３は、複数のフォントの中に指定されたフォントが存在すれば、そのフォントをカレントフォントとして設定し、存在しないのであれば、指定された属性情報が近いフォント、好ましくは最も近いフォントを選択してカレントフォント（近似フォント）として設定する。ＲＯＭ１３に格納されるフォントデータ（図６参照）の詳細については後述する。
【００２９】
続いて、文字描画命令処理部１２１が文字列描画命令を受け取ると、これを受けてビットマップイメージ生成部１２２は、書体選択部１２３にて設定されたカレントフォントの文字コードに該当する文字のビットマップを生成し、この生成したビットマップを文字列情報中の描画位置情報に対応した文字描画位置に描画する。この際、指定されたフォントが存在せず、書体選択部１２３にて別のフォントが選択されている場合、即ちフォントが置換されている場合には、今回の描画文字と次回の描画文字との文字間の状態を予測する処理を行う。
【００３０】
ここで、「文字間の状態を予測する」とは、フォント指定命令で指定された文字を文字列描画命令に応じて描画した際の文字相互間の間隔を基準としたとき、今回の描画文字と次回の描画文字とが重なった状態にならないか、基準の状態よりも狭すぎる状態にならないか、あるいは広すぎる（開きすぎる）状態にならないかを予測することを言う。この予測を行う手段として、例えば、今回の描画文字と次回の描画文字との間の文字間隔（描画間隔）を算出する処理を行う文字間隔算出部１２４が用いられる。
【００３１】
文字間隔算出部１２４は、文字間隔を算出するとともに、この算出した文字間隔を基に今回の描画文字と次回の描画文字との文字間の状態を判定する処理を行う。すなわち、算出した文字間隔が上記基準の状態に対応する基準値に対して等しいか、小さいか、大きいかの判定を行う。基準値よりも小さい場合は、今回の描画文字に対して次回の描画文字が重なったり、文字間隔が不自然に狭すぎる状態となる。逆に、基準値よりも大きい場合は、今回の描画文字と次回の描画文字との文字間隔が不自然に広すぎる（開きすぎる）状態となる。いずれの場合も、描画後の文字列の見栄えを悪化させる要因となる。
【００３２】
文字間隔算出部１２４はさらに、文字間の状態の判定結果を基に各文字コードに対応した拡縮率を求めて、拡縮率テーブルとしてＲＡＭ１４に格納する。その後、ビットマップイメージ生成部１２２は、文字間隔算出部１２４で求めた拡縮率を基に、カレントフォントの文字コードに該当する文字のビットマップを生成し、この生成したビットマップを文字列情報中の描画位置情報に対応した文字描画位置に描画する。
【００３３】
上述した処理を全ての描画コマンドについて繰り返して実行する。そして、全ての描画コマンドの描画処理が終了したら、プリンタエンジンＩ／Ｆ１５を介してプリンタエンジン３０に出力する。以上により、１ページ分の処理が終了し、以降、ページ単位で上述した一連の処理を繰り返して実行する。
【００３４】
続いて、文字描画命令処理部１２１、書体選択部１２４および文字間隔処理部１２４の各機能部において実行される処理の具体例について説明する。
【００３５】
〔文字描画命令処理部１２１〕
先ず、文字描画命令処理部１２１の処理について詳しく説明する。図３は、文字描画命令処理部１２１の処理手順の一例を示すフローチャートである。
【００３６】
文字描画命令処理部１２１は、ネットワーク２０を介してホストコンピュータ装置から送られてきたＰＤＬ中の文字描画命令を、図示されていない図形描画命令解釈部を介して受け取ると、先ず、フォント指定命令か文字列描画命令かを判定する（ステップＳ１１）。フォント指定命令であれば、書体選択部１２３による書体（フォント）選択の処理（ステップＳ１２）に移行する。この書体選択の処理では、後で詳細に説明するように、選択したフォントをカレントフォントとして登録するとともに、フォントの置換が発生している場合には、置換前のフォント情報（フォント指定命令として指定された情報）を登録し、さらにフォント置換が発生したことを示す置換発生情報も登録しておく。
【００３７】
ステップＳ１１での判定が文字列描画命令であれば、上記置換発生情報を基にカレントフォントにフォント置換が発生しているか否かを判定する（ステップＳ１３）。フォント置換が発生していなければ、文字間の重なり、文字間隔の不自然な狭まりあるいは広がり（開き）が発生せず、文字間の状態が基準の状態にある訳であるから、カレントフォントの文字コードを取得し（ステップＳ１４）、次いでビットマップイメージ生成部１２２にてカレントフォントと文字コードに対応する文字のビットマップを生成する処理（ステップＳ１５）に移行する。ここで生成したビットマップについては、ページバッファ１４１の指定位置へ描画する（ステップＳ１６）。
【００３８】
続いて、文字列内の全ての文字の描画が終了したか否かを判定し（ステップＳ１７）、全ての文字の描画が終了していなければ、上述したステップＳ１４〜ステップＳ１６の処理を繰り返して実行する。そして、文字列内の全ての文字の描画が終了したならば、一連の文字描画命令の処理を終了する。
【００３９】
ステップＳ１３でフォント置換が発生していたと判定したならば、文字間隔算出部１２４にて今回の描画文字と次回の描画文字との文字間隔を算出して当該文字間の状態の予測、即ち文字間での重なり、文字間隔の狭まりすぎあるいは広がりすぎの状態を判定し、そその判定結果から今回の描画文字に対する拡縮率を求め、文字列の全ての文字に対して拡縮率を拡縮率テーブルとしてＲＡＭ１４に登録する処理（ステップＳ１８）に移行する。
【００４０】
ＲＡＭ１４に登録される拡縮率テーブルを図４に示す。同図から明らかなように、拡縮率テーブルは、カレントフォントに対応する置換前のフォント情報と、出現した文字コードとそれに対応する拡縮率とから構成される。拡縮率テーブルは、出現したフォントの種類分だけ存在する必要がある。この拡縮率テーブルについては、文字列描画命令単位で生成して描画終了後破棄しても良いし、ページ描画単位で生成してページ描画終了後に破棄しても良いし、ジョブ描画単位で生成して破棄しても良い。
【００４１】
拡縮率テーブルを文字列描画命令単位で生成して描画終了後破棄することで、同じフォントの描画時の拡縮率が、指定された文字コード列内の同じ文字コード間で等しくなる。拡縮率テーブルをページ描画単位で生成してページ描画終了後に破棄することで、同じフォントの描画時の拡縮率が、同一ページ内の同じフォント属性をもつ同じ文字コード間で等しくなる。拡縮率テーブルをジョブ描画単位で生成して破棄することで、同じフォントの描画時の拡縮率が、同一ジョブ内の同じフォント属性をもつ同じ文字コード間で等しくなる。
【００４２】
ここで、同じフォントの描画時の拡縮率を、指定された文字コード列内の同じ文字コード間で等しく手法を採ることにより、当該拡縮率を文字コード列ごとに更新できることになるため、拡縮率テーブルを格納するＲＡＭ１４の記憶容量が少なくて済むという利点がある。一方、同じフォントの描画時の拡縮率を、同一ジョブ内の同じフォント属性をもつ同じ文字コード間で等しくする手法を採ることにより、拡縮率テーブルを格納するＲＡＭ１４の記憶容量が多少大きくなるものの、同一ジョブ全体に亘って同じフォントの描画時の拡縮率を等しくできるため、より見栄えの良い文字列の描画が可能になるという利点がある。
【００４３】
これら２つの手法の長所、短所を考慮すると、両者の中間的な位置付けとなる手法である、同じフォントの描画時の拡縮率を、同一ページ内の同じフォント属性をもつ同じ文字コード間で等しくする手法を採るのが好ましいと考えられる。何故ならば、当該手法を採ることにより、拡縮率テーブルを格納するＲＡＭ１４の記憶容量をあまり大きくしなくとも、同じページ内において文字列単位で拡縮率がばらつかないようにすることができるため、より見栄えの良い文字列の描画が可能になる
【００４４】
ステップＳ１８の処理の終了後、カレントフォントの文字コードを取得し、さらに、ＲＡＭ１４に登録されている拡縮率テーブルから、今回の描画文字の置換前フォント情報と文字コードに合致する拡縮率を取得する（ステップＳ１９）。続いて、ビットマップイメージ生成部１２２にてカレントフォントと文字コードに対応する文字のビットマップを生成する処理（ステップＳ２０）に移行する。この処理の終了後、ビットマップイメージを生成する際に必要な文字サイズをステップＳ１９で取得した拡縮率で修正して拡縮後のビットマップを生成し、この生成したビットマップをページバッファ１４１の指定位置へ描画する（ステップＳ２１）。
【００４５】
続いて、文字列内の全ての文字の描画が終了したか否かを判定し（ステップＳ２２）、終了していなければ、ステップＳ１９〜ステップＳ２１の処理を繰り返して実行する。そして、文字列内の全ての文字の描画が終了したならば、一連の文字描画命令処理を終了する。
【００４６】
〔書体選択部１２３〕
次に、書体選択部１２３の処理について詳しく説明する。図５は、書体選択部１２３の処理手順の一例を示すフローチャートである。
【００４７】
ここでは、前提として、フォントデータは、図６に示すように、フォント名とフォントファミリ名とフォントの太さと傾きがあるか否かのフラグ（一般的に、Ｉｔａｌｉｃと呼ばれる）とで表現されるものとする。また、各々のフォント内に含まれる文字は、文字コードとその文字を描画するデータ（図中では、アウトラインデータとなっているが、ビットマップデータやストロークデータの場合も存在する）と文字の幅と高さとで構成されるものとする。さらに、複数のフォントに対応するために、フォントデータは複数存在するものとする。
【００４８】
書体選択部１２３は、先ず、フォント指定命令からフォント名を取得し（ステップＳ３１）、しかる後取得したフォント名と一致するフォント名を持つフォントデータが存在するか否かを検索する処理（ステップＳ３２）に移行する。そして、この検索処理の結果を基に、フォント名が一致したフォントがフォントデータ内に存在するか否かを判定する（ステップＳ３３）。フォント名が一致したフォントが存在するならば、フォント指定命令によって指定されたフォント名をカレントフォントとして登録し（ステップＳ３４）、次いで「フォント置換発生せず」と登録し（ステップＳ３５）、本書体選択処理を終了する。
【００４９】
一方、フォント名が一致したフォントが存在しないならば、フォント指定命令からファミリ名を取得し（ステップＳ３６）、しかる後取得したファミリ名と一致するファミリ名を持つフォントデータが存在するか否かを検索する処理（ステップＳ３７）に移行する。そして、この検索処理の結果を基に、ファミリ名が一致したフォントがフォントデータ内に存在するか否かを判定する（ステップＳ３８）。
【００５０】
ファミリ名が一致したフォントが存在したならば、ファミリ名が一致したフォントデータの中からフォント指定命令によって指定された太さおよび傾斜が等しいフォントを選択し（ステップＳ３９）、その選択したフォントをカレントフォントとして登録するとともに、置換前のフォントをカレント置換前フォントとして登録する（ステップＳ４０）。最後に、「フォント置換発生」（これは、先述した置換発生情報に相当する）と登録し（ステップＳ４１）、一連の書体選択処理を終了する。
【００５１】
ステップＳ３８において、ファミリ名が一致したフォントがフォントデータ内に存在しないと判定したならば、適当なフォントを選択し（ステップＳ４２）、しかる後ステップＳ４０に移行する。ここで、適当なフォントを選択するとしたのは、ファミリ名が一致しないフォントの場合には、どのフォントを選択しても大差ないからである。以降、選択したフォントをカレントフォントとして登録するとともに、置換前のフォントをカレント置換前フォントとして登録し（ステップＳ４０）、最後に「フォント置換発生」と登録し（ステップＳ４１）、一連の書体選択処理を終了する。
【００５２】
〔文字間隔算出部１２４〕
最後に、文字間隔算出部１２４の処理について詳しく説明する。図７は、文字間隔算出部１２４の処理手順の一例を示すフローチャートである。
【００５３】
文字間隔算出部１２４は、先ず、先述した書体選択処理で登録されたカレント置換前フォント情報とカレントフォント情報とを取得する（ステップＳ５１）。続いて、文字描画命令から今回の描画文字の文字コードと描画位置情報、さらに次回の描画文字の描画位置情報を取得する（ステップＳ５２）。この取得した描画文字の文字コードとカレント置換前フォント情報とから任意の文字の拡縮率を決定できることから、これらの情報を基に、ＲＡＭ１４に格納されている拡縮率テーブルの中に、カレント置換前フォントが一致し、かつ、文字コードが一致する計算済みの拡縮率が在るか否かを検索する（ステップＳ５３）。
【００５４】
続いて、計算済みの拡縮率の検索結果を判定し（ステップＳ５４）、今回の描画文字について拡縮率が計算されていれば、描画命令中の全ての文字について拡縮率の計算が終了したか否かを判定し（ステップＳ５５）、終了していないのであれば、ステップＳ５２に戻って再び同様の処理を実行する。今回の描画文字について拡縮率が計算されていないと判定したのであれば、以下に説明する拡縮率の計算処理を実行する。
【００５５】
図８に、拡縮率に用いられる情報の具体例を示す。図８において、「へ」が今回の描画文字、「と」が次回の描画文字となる。拡縮率の計算処理では、先ず、カレントフォントで指定されるフォントデータ内の文字コードに該当するフォントデータから文字の幅を取得する（ステップＳ５６）。これは、図８において、置換されて描画される文字の幅に相当する。続いて、今回の描画文字の描画開始位置と次回の描画文字の描画開始位置とから描画ピッチを計算する（ステップＳ５７）。通常、描画開始位置は（ｘ，ｙ）二次元座標系で与えられるので、今回の描画文字の描画開始位置を（ｘ１，ｙ１）、次回の描画文字の描画開始位置を（ｘ２，ｙ２）とすると、描画ピッチはｙ２−ｙ１で求めることができる。
【００５６】
このようにして求めた描画ピッチと、置換されて描画される文字の幅との差、即ち（描画ピッチ）−（置換されて描画される文字の幅）が、今回の描画文字と次回の描画文字との文字間隔（負を含む）に相当する。ここで、図８に示すように、描画ピッチは元々描画命令で想定された描画文字の幅と等しいと考えられるので、（描画ピッチ）−（置換前フォントに該当する文字の幅）が先述した基準の状態での文字間隔、即ちフォント指定命令で指定された文字を文字列描画命令に応じて描画した際の文字間隔と言える。この基準の状態での文字間隔は、正規の文字間隔とも言える。
【００５７】
そして、この正規の文字間隔を基準値としたときに、描画ピッチと置換されて描画される文字の幅との差、即ち今回の描画文字と次回の描画文字との文字間隔が基準値よりも小さい場合は、今回の描画文字に対して次回の描画文字が重なった状態（文字間隔が負）あるいは文字間が不自然に狭すぎる状態にあり、逆に、基準値よりも大きい場合は、今回の描画文字と次回の描画文字との文字間が不自然に広すぎる（開きすぎる）状態にあると言える。
【００５８】
次に、置換されて描画される文字の幅と、求めた描画ピッチとから文字の拡縮率を計算して求める（ステップＳ５８）。すなわち、（描画ピッチ）／（置換されて描画される文字の幅）が拡縮率となる。ここで、描画ピッチは元々描画命令で想定された描画文字の幅と等しいと考えられるので、置換されて描画される文字の幅との比を求めることにより、置換されて描画される文字が次に描画される文字と重ならない、またはそれらの文字間隔が不自然に狭すぎない、あるいは広すぎないようにする、換言すれば当該文字間隔を正規の文字間隔、即ち（描画ピッチ）−（置換前フォントに該当する文字の幅）にするための拡縮率とすることができる。
【００５９】
この拡縮率については、そのまま用いることも可能であるし、また求めた拡縮率では大きすぎる、あるいは小さすぎる場合もあり得るので、場合によっては、求めた拡縮率に対して指定されたフォントに依存する定数をかけて用いるようにしても良い。
【００６０】
続いて、求めた拡縮率を拡縮率テーブルとしてＲＡＭ１４に登録し（ステップＳ５９）、しかる後ステップＳ５５へ移行して、描画命令中の全ての文字について拡縮率の計算が終了したか否か判定し、終了していないのであれば、再び上述した一連の拡縮率の計算フローへ戻る。
【００６１】
上述したように、使用要求に一致するフォントが存在しない場合に、指定された属性情報が近いフォント、好ましくは最も近いフォントを近似フォントとして選択し、この選択した近似フォントを用いて文字コードと文字描画位置情報を基に文字を出力するに当たって、今回の描画文字と次回の描画文字との文字間の状態を予測し、この予測結果に基づいて今回の描画文字を縮小または拡大して描画することにより、描画後の文字列において、文字が相互に重なったり、文字間隔が狭すぎたりあるいは広すぎたりするのを防止できるため、見栄えの良い文字列の描画を実現できる。
【００６２】
特に、文字間の状態を予測するのに、例えば文字間隔算出部１２４を用い、当該文字間隔算出部１２４によって今回の描画文字と次回の描画文字との文字間隔を算出してこの算出結果を利用することにより、文字相互が重なる状態、文字間隔が不自然に狭すぎる状態あるいは不自然に広すぎる状態を確実に予測できるため、置換されたフォントを基に描画する文字について最適な縮小処理または拡大処理を行うことができる。
【００６３】
なお、上記実施形態において、文字描画処理の概要を説明するのに横書きの場合を例に挙げて説明したが、縦書きの場合にも適用可能である。すなわち、縦書きの場合には、文字の幅（横方向の幅）を文字の高さ（縦方向の幅）に置き換えるだけで、同様の処理を適用することができる。
【００６４】
また、上記実施形態では、文字間の状態を予測するのに、文字間隔処理部１２４を用いて今回の描画文字と次回の描画文字の文字間隔を算出してこの算出結果を基に文字間の状態を予測するとしたが、文字間隔処理部１２４を用いる手法に限られるものではなく、要は、今回の描画文字と次回の描画文字との文字間の状態を予測できるものであればその構成は問わない。
【００６５】
【発明の効果】
以上説明したように、本発明によれば、使用要求に一致するフォントが存在しない場合に、指定された属性情報が最も近いフォントを近似フォントとして選択し、この選択した近似フォントを用いて文字コードと文字描画位置情報を基に文字を出力するに当たり、今回の描画文字と次回の描画文字との文字間隔を求め、この求めた文字間隔に基づいて今回の描画文字を縮小または拡大して描画することにより、描画後の文字列において、文字間の重なりや開きすぎを防止できるため、見栄えの良い文字列の描画を実現できる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る画像処理装置の構成の概略を示すブロック図である。
【図２】文字描画命令の構成の一例を示す図である。
【図３】文字描画命令処理部の処理手順の一例を示すフローチャートである。
【図４】拡縮率テーブルの一例を示す図である。
【図５】書体選択部の処理手順の一例を示すフローチャートである。
【図６】フォントデータの一例を示す図である。
【図７】文字間隔算出部の処理手順の一例を示すフローチャートである。
【図８】拡縮率に用いられる情報の具体例を示す図である。
【図９】指定されたフォントの幅が置換されたフォントの幅よりも狭い場合の文字列の描画例を示す図である。
【図１０】指定されたフォントの幅が置換されたフォントの幅よりも広い場合の文字列の描画例を示す図である。
【符号の説明】
１０…画像処理装置、１１…入力Ｉ／Ｆ、１２…ＣＰＵ、１３…ＲＯＭ、１４…ＲＡＭ、１５…プリンタエンジンＩ／Ｆ、２０…ネットワーク、３０…プリンタエンジン、１２１…文字描画命令処理部、１２２…ビットマップイメージ生成部、１２３…書体選択部、１２４…文字間隔算出部
【図１】
2004184718.tif 000003
【図２】
2004184718.tif 000004
【図３】
2004184718.tif 000005
【図４】
2004184718.tif 000006
【図５】
2004184718.tif 000007
【図６】
2004184718.tif 000008
【図７】
2004184718.tif 000009
【図８】
2004184718.tif 000010
【図９】
2004184718.tif 000011
【図１０】
2004184718.tif 000012