(57)【要約】【課題】フォント置換して文書画像を出力する画像出力制御装置において、出力処理のパフォーマンスと、出力品質、視認性、レイアウト再現性とのバランスを採る。【解決手段】フォント変形実行指定部２８は、置換フォントのビットマップを変形するか否かの指示を受け付ける。文字描画処理制御部２０は、変形を行なう旨の指示を受け付けたときには近似フォントに対しての変形の処理を許可し、変形を行なう旨の指示を受け付けていないときには近似フォントに対しての変形の処理を不許可にする。フォントの形状変形やフォント名の変更の可否をユーザが自由に指定できるので、フォントの拡大縮小処理に代表されるフォント変形処理が頻繁に発生することを抑えることができ、出力パフォーマンスに悪影響を与えることもない。よって、出力処理のパフォーマンスと、出力品質、視認性、レイアウト再現性とのバランスを採ることができるようになる。【選択図】図２
2005111718.tif 000002
【特許請求の範囲】
【請求項１】
受け取った文書データで指定されているフォントが自装置に搭載されていないときに、自装置に搭載されているフォントに置換し、この置換したフォントのビットマップイメージに基づいて前記文書データに対応した画像を出力する画像出力制御方法であって、
前記置換したフォントのビットマップイメージを変形するか否かの指示をユーザより受け付け、
前記変形を行なう旨の指示を受け付けたときには置換するフォントである近似フォントに対して前記変形の処理を許可し、前記変形を行なう旨の指示を受け付けていないときには前記近似フォントに対して前記変形の処理を不許可にする
ことを特徴とする画像出力制御方法。
【請求項２】
受け取った文書データで指定されているフォントが自装置に搭載されていないときに、自装置に搭載されているフォントに置換し、この置換したフォントのビットマップイメージに基づいて前記文書データに対応した画像を出力する画像出力制御装置であって、
自装置において使用可能なフォントの情報を格納するフォントデータ記憶部と、
前記置換したフォントのビットマップイメージを変形するか否かの指示を受け付けるフォント変形実行指定部と、
前記フォント変形実行指定部が前記変形を行なう旨の指示を受け付けたときには置換するフォントである前記フォントデータ記憶部から読み出した近似フォントに対して前記変形の処理を許可し、前記フォント変形実行指定部が前記変形を行なう旨の指示を受け付けていないときには前記近似フォントに対して前記変形の処理を不許可にする文字描画処理制御部と
を備えたことを特徴とする画像出力制御装置。
【請求項３】
前記文字描画処理制御部は、描画する文字の状態を特定する描画文字状態特定部と、
前記描画文字状態特定部が特定した、描画される文字の状態に基づいて、実際に描画する文字の描画状態を修正する描画状態修正部と
を有することを特徴とする請求項２に記載の画像出力制御装置。
【請求項４】
前記描画文字状態特定部は、複数の文字からなる文字列について、各文字間の状態を予測する文字間状態予測部を有し、
前記描画状態修正部は、前記文字間状態予測部が予測した文字間の状態に基づいて、実際に描画する文字の描画位置を修正する文字描画位置変更部を有する
ことを特徴とする請求項３に記載の画像出力制御装置。
【請求項５】
前記文字間状態予測部は、
隣接する描画文字の間隔を算出する文字間隔算出部を有し、
当該文字間隔算出部の算出結果を前記予測した文字間の状態とする
ことを特徴とする請求項４に記載の画像出力制御装置。
【請求項６】
前記文字描画位置変更部は、前記文字間隔算出部が算出した文字間隔が所定の基準値よりも小のとき、文字の配列方向に文字描画位置を変更する
ことを特徴とする請求項５に記載の画像出力制御装置。
【請求項７】
前記フォントデータ記憶部は、フォントの各々に対してそのフォント名と文字形状に関わる属性情報とを対応付けて格納し、
前記フォント変形実行指定部は、前記文字形状に関わる属性情報に対応した文字形状の変更の指示を受け付け可能である
ことを特徴とする請求項２から６のうちの何れか１項に記載の画像出力制御装置。
【請求項８】
前記フォントデータ記憶部は、前記文字形状に関わる属性情報として、文字の太さに関する情報を格納し、
前記フォント変形実行指定部は、前記文字の太さに関する情報に対応した文字太さ変更処理の指示を受け付け可能である
ことを特徴とする請求項７に記載の画像出力制御装置。
【請求項９】
前記フォントデータ記憶部は、前記文字形状に関わる属性情報として、文字の傾きに関する情報を格納し、
前記フォント変形実行指定部は、前記文字の傾きに関する情報に対応した文字傾き変更処理の指示を受け付け可能である
ことを特徴とする請求項７または８に記載の画像出力制御装置。
【請求項１０】
前記フォントデータ記憶部は、前記文字形状に関わる属性情報として、文字の大きさに関する情報を格納し、
前記フォント変形実行指定部は、前記文字の大きさに関する情報に対応した文字サイズ変更処理の指示を受け付け可能である
ことを特徴とする請求項７から９のうちの何れか１項に記載の画像出力制御装置。
【請求項１１】
前記フォントデータ記憶部は、フォントの各々に対してそのフォント名と文字形状に関わる属性情報とを対応付けて格納し、
前記フォント変形実行指定部は、前記フォント名についての変更の可否を受け付け可能である
ことを特徴とする請求項２から１０のうちの何れか１項に記載の画像出力制御装置。
【請求項１２】
受け取った文書データで指定されているフォントが自装置に搭載されていないときに、自装置に搭載されているフォントに置換し、この置換したフォントのビットマップイメージに基づいて前記文書データに対応した画像を出力する画像出力制御方法をコンピュータにて実行するためのプログラムであって、
コンピュータを、
前記置換したフォントのビットマップイメージを変形するか否かの指示を受け付けるフォント変形実行指定部と、
前記フォント変形実行指定部が前記変形を行なう旨の指示を受け付けたときには置換するフォントである近似フォントに対して前記変形の処理を許可し、前記フォント変形実行指定部が前記変形を行なう旨の指示を受け付けていないときには前記近似フォントに対して前記変形の処理を不許可にする文字描画処理制御部と
して機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディジタル書体を表示出力あるいは印刷出力する画像出力制御方法および装置並びにプログラムに関する。より詳細には、フォントデータを自装置に予め保有しておき、受け取った文書データで指定されているフォントが自装置に搭載されていないときに、自装置に搭載されているフォントの中から適用なフォントを選択して置換して、そのフォントに対応した文字の出力処理を行なう技術に関する。
【背景技術】
【０００２】
表示装置や印刷装置などの出力装置が出力する文字などの書体には数多くの種類が存在する。一般に明朝体やゴシック体というのは書体の系統を表すものである。そして、明朝体系やゴシック体系の中に多くの書体が存在する。すなわち、同じ明朝体系の書体であっても、基本的には明朝体であるが、太さが異なっていたりデザインが異なっていたりする。そして、表示装置や印刷装置などの出力において、１つの文書中で複数の書体を使用するというケースが頻繁に発生する。
【０００３】
このため、表示装置や印刷装置の備えるフォントフォーマットは、ユーザの要求する様々な書体（フォント）に対応するために、一般に複数のフォントデータを備えている。そしてユーザは、このフォントフォーマットの備える書体を指定して画像表示や印刷を指示することにより、所望の書体による出力を得ている。
【０００４】
しかしながら、従来の表示装置や印刷装置などにおいて、文字などを印刷する場合は、指定された書体を印刷装置が必ず備えているということが前提であった。そして、ユーザの指定する書体を備えていない場合は、その書体で出力すべき部分を「空白」あるいは「ゲタマーク」で出力してしまう。たとえば、明朝Ａのみを備えるフォントフォーマットで、明朝Ｂを指定した場合などが挙げられる。
【０００５】
また、従来の出力装置では、文字などを出力する場合、指定された書体中に出力すべき文字コードに対応するデータが全て存在していなければならない。そして、ユーザの要求する文字コードに該当するデータがない場合は、やはり「空白」あるいは「ゲタマーク」が記録されてしまう。これはたとえば、漢字でＪＩＳ第１水準しかない書体指定中に、ＪＩＳ第２水準の文字を出力しようとした場合などが考えられる。
【０００６】
以上のように、従来の出力装置で出力された文書に空白やゲタマークが記録されてしまうということは致命的であり、記録媒体が無駄になるという問題がある。たとえば、フィルム出力を行なっている場合では、フィルムが無駄になる。さらに、指定書体の修正と再印刷などの「やり直し」が頻繁に必要となり、再出力のために時間を浪費するという問題がある。また、表示装置においてもある部分の文字などが「空白」や「ゲタマーク」に化けるので、実際には何が表示されるべきものなのかが判らないという問題がある。
【０００７】
たとえば、パソコンなどのコンピュータ装置で電子的に作成し、その作成したドキュメントをコンピュータ装置とたとえばネットワークを介して接続された表示装置、たとえばＰＤＡ（Personal Digital Assistant）などの携帯情報端末にて表示する、といったことが広く行なわれている。携帯情報端末は、一般的にドキュメントを作成したコンピュータ装置と同じ構成であるので、ドキュメントを表示するにはコンピュータ装置が行なうと同じ処理を行なう。その処理は、一般的に、メモリやストレージに保存されたドキュメントを解釈し、その解釈結果から描画命令を生成し、その描画命令を基にテキストやグラフィックスなどの図形を描画することになる。
【０００８】
テキストを描画する場合は、テキストとして描画されるフォントの属性と、テキストと、テキストの描画位置の各情報がドキュメントから解釈され、これらの指定情報に基づいて携帯情報端末はテキスト描画を行なうのが一般的である。
【０００９】
その際、携帯情報端末は、そのリソース、メモリ容量、あるいはストレージ容量などが制限されていることが多々あるため、ドキュメントで指定されたフォントが全て携帯情報端末に搭載されているとは限らない。
【００１０】
このように、指定されたフォントが携帯情報端末に搭載されていない場合、ある部分の文字などが「空白」や「ゲタマーク」に化けるので、実際には何が表示されるべきものなのかが判らないという問題が生じる。
【００１１】
このような問題を解決する一手法として、指定された書体を持たない場合に、書体管理テーブルを参照して、装置が保有している複数フォントの中から適当なフォントを選んで書体の置換を行ない、文字の出力を行なう技術が提案されている（たとえば特許文献１参照）。
【００１２】
【特許文献１】特開平６−１３０９３０号公報
【００１３】
この特許文献１に記載の技術では、具体的には、複数のフォントの各々に対してそれぞれの書体名とスタイル情報（太さ・字形・ファミリ）とを対応付けて格納しておき、指定されたフォントや文字コードが存在しない場合は、書体名およびスタイル情報を基に形状情報を最も良く満足するフォントを代替フォントとして選択し置換して描画することで、フォントや文字コードが装置に搭載されていない場合の文字描画を実現可能にしている。
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、特許文献１に記載の技術のように、指定されたフォントが存在しない場合に、単に別のフォントに置換して描画する手法を採ると、携帯情報端末などの差し替えるフォントが少ない環境においては、フォントの種類が少ないため、
１）指定フォントを装置搭載のフォントに置換する処理が頻繁に発生し、出力処理のパフォーマンスに悪影響を与える、つまり判定処理の処理速度が遅く、出力されるまでに時間が掛かる、
２）サイズ変更や太文字化などの文字修飾の変更を要する場合には、フォントの拡大処理や縮小処理（纏めて拡縮処理もしくは変倍処理ともいう）あるいは文字修飾処理も発生し、出力処理のパフォーマンスに一層悪影響を与える、あるいは、
３）フォントの変形処理の結果、文字品質が低下する、フォントの視認性が落ちる、あるいはレイアウトが崩れる、
４）特に、ビットマップフォントに対して変倍処理を行なう場合に２），３）の問題が大きい、
５）異なるサイズのフォントに置換するとレイアウトが崩れる、
６）異なるスタイル（太字／細字や斜体か否かなど）のフォントに置換すると視認性が低下する、
などの不都合が生じることが分かった。
【００１５】
たとえば、携帯情報端末に１つのビットマップフォントしか搭載されていない場合に、ドキュメントで指定されたフォントをそのフォントへ置換して描画する手法を採ると、指定されたフォントが変倍され出力処理パフォーマンスが劣化することや、フォントの表示品質や視認性が悪くなるように（文字の見栄えが悪く）描画されてしまうことがある。
【００１６】
図１２は、これらの問題を説明する図である。たとえば、図１２（Ａ）に示すように、“今日は”という文字を２箇所に表示する場合において、指定されたフォント名がともにゴシック体で、かつフォントサイズが８ポイントと１６ポイントである場合において、装置には明朝体の８および１６ポイントが搭載されている場合には、サイズ変更は必要ないものの、書体名の変更によるフォント変形が起こる。この場合、２つのフォントサイズの“今日は”は、視認性の落ちない描画が可能となる。
【００１７】
これに対して、指定された書体名およびサイズの何れもが装置に搭載されていなければ、書体名（フォント名）の置換と拡縮を要する。たとえば、図１２（Ｂ）に示すように、“今日は”という文字を２箇所に表示する場合において、指定されたフォント名がともにゴシック体で、かつフォントサイズが８ポイントと１６ポイントである場合において、装置には１つのサイズ（ここでは１６ポイントとする）のビットマップフォントのみが搭載されている場合には、サイズが合う１６ポイント側についてはフォント名の置換が起きても視認性良く描画されるが、サイズが合わない８ポイント側は、フォント名の置換と画像処理による縮小処理（具体的にはビットマップイメージの縮小処理）により視認性が落ちてしまう。
【００１８】
なお、図１２（Ｂ）では、文字サイズの大きい方（１６ポイント側）のビットマップフォントが装置に搭載されている事例で示したが、これとは逆に、文字サイズの小さい方（８ポイント側）のビットマップフォントが装置に搭載されている場合には、サイズが合う８ポイント側についてはフォント名の置換が起きても視認性良く描画されるが、サイズが合わない１６ポイント側については、フォント名の置換と画像処理による拡大処理（具体的にはビットマップイメージの拡大処理）により視認性が落ちてしまう。
【００１９】
また、指定フォントが、書体名（フォント名）＝ゴシック体、フォントサイズ＝１２ポイント、スタイル指定なし、書体名（フォント名）＝明朝体、フォントサイズ＝１２ポイント、スタイル指定あり（太文字化、斜体）が混在する場合に、装置には書体名（フォント名）＝明朝体、フォントサイズ＝１２ポイントのみが搭載されていて、スタイル指定については画像処理で対応するものである場合、ゴシック体で指定されている部分は、変倍処理を伴わないものの、書体名が指定とは異なるフォントで代用しなければならない。また、スタイル指定（太文字化、斜体）のある部分は、フォント名やサイズは指定されたとおりであるものの、画像処理によってスタイルを合わせなければならない。
【００２０】
このため、このケースでは、サイズには変わりがないので、図１２（Ａ）に示したケースと似通っているが、画像処理による文字変形を伴うので、装置に用意されているフォントがTrueTypeフォントなどの文字の形が輪郭線で表現されているアウトラインフォント（Outline Font）でないケースでは、フォントとして予め用意されているスタイルのものを使う場合に比べて、文字の表示品質が低下することや、フォントの視認性が落ちることが生じてしまう。
【００２１】
たとえば、アウトラインフォントであれば、フォントデータは幾つかの座標を結ぶ線のデータから成り立っており、演算による拡大や縮小が可能なため、文字サイズを変更しても、ギザギザの出ないきれいな文字として表示や印刷することができる。これに対して、ビットマップフォントの場合、アウトラインフォントに比べて高速な出力が可能であるが、文字を構成するドットの数が決まっているため、特定のサイズでは美しく出力することができるが、それ以外のサイズに拡大もしくは縮小すると、ギザギザが目立ったり、バランスが崩れたりするからである。
【００２２】
また、文書ファイルとして指定されたフォント（フォント名、フォントサイズ、フォントスタイルの何れも）が装置に存在するケースであっても、ユーザの好みに応じて出力サイズやスタイルを変えて出力する場合には、そのサイズやスタイルのフォントが装置に搭載されていなければ、画像処理により変倍して出力する必要があり、前述同様に文字の表示品質が低下することや、フォントの視認性が落ちることが生じてしまう。
【００２３】
本発明は、上記事情に鑑みてなされたものであり、受け取った文書データで指定されているフォントが自装置に搭載されていないときに、適用なフォントを選択して置換して、そのフォントに対応した文字の出力処理を行なうに際して、出力処理のパフォーマンスと、文字の出力品質、視認性、あるいはレイアウト再現性とのバランスを採ることのできる仕組みを提供することを目的とする。
【課題を解決するための手段】
【００２４】
本発明に係る画像出力制御方法は、受け取った文書データで指定されているフォントが自装置に搭載されていないときに、自装置に搭載されているフォントに置換し、この置換したフォントのビットマップイメージに基づいて文書データに対応した画像を出力する画像出力制御方法であって、置換したフォントのビットマップイメージを変形するか否かの指示をユーザより受け付け、変形を行なう旨の指示を受け付けたときには置換するフォントである近似フォントに対して変形の処理を許可し、変形を行なう旨の指示を受け付けていないときには近似フォントに対して変形の処理を不許可にすることとした。
【００２５】
つまり、従来は、置換するフォントに対してフォント変形（形状変形とフォント名の変更の何れでもよい）が強制的に発生されていたが、本発明では、このフォント変形の可否をユーザが指定できるようにした。
【００２６】
本発明に係る画像出力制御装置は、前記本発明に係る画像出力制御方法を実施するのに好適な装置であって、自装置において使用可能なフォントの情報を格納するフォントデータ記憶部と、置換したフォントのビットマップイメージを変形するか否かの指示を受け付けるフォント変形実行指定部と、フォント変形実行指定部が変形を行なう旨の指示を受け付けたときには置換するフォントであるフォントデータ記憶部から読み出した近似フォントに対して変形の処理を許可し、フォント変形実行指定部が変形を行なう旨の指示を受け付けていないときには近似フォントに対して変形の処理を不許可にする文字描画処理制御部とを備えるものとした。
【００２７】
また従属項に記載された発明は、本発明に係る画像出力制御装置のさらなる有利な具体例を規定する。さらに、本発明に係るプログラムは、本発明に係る画像出力制御装置を、電子計算機（コンピュータ）を用いてソフトウェアで実現するために好適なものである。なお、プログラムは、コンピュータ読取り可能な記憶媒体に格納されて提供されてもよいし、有線あるいは無線による通信手段を介して配信されてもよい。
【発明の効果】
【００２８】
本発明に依れば、変形を行なう旨の指示を受け付けたときには置換するフォントである近似フォントに対して変形の処理を許可し、変形を行なう旨の指示を受け付けていないときには近似フォントに対して変形の処理を不許可にすることとした。つまり、フォント変形（形状変形とフォント名の変更の何れでもよい）の可否をユーザが自由に指定できるようにした。
【００２９】
これにより、任意のフォントを特定する情報とそのフォントの属性情報を元にしたフォントの使用要求に対応して、それぞれ書体が異なる複数フォントの中から所望の書体のフォントを選択し、選択したフォントを用いて、文字コードと文字描画位置情報を元に文字を出力するに当たって、フォント変形を実行するか否か指定することにより、指定されたフォントを別のフォントに置換して描画することを抑制することで、視認性のよい文字表示とレイアウト通りの文字表示を両立させることができるようになった。
【００３０】
また、フォントの拡大縮小処理に代表されるフォント変形処理が頻繁に発生することを抑えることができ、出力パフォーマンスに悪影響を与えることもない。よって、出力処理のパフォーマンスと、出力品質、視認性、レイアウト再現性とのバランスを採ることができるようになる。加えて、常に予め決められた条件でフォント変形するのではないので、変形するか否かや、変形する際はその条件を指定することができ、使い勝手がよい。
【発明を実施するための最良の形態】
【００３１】
以下、図面を参照して本発明に係る画像出力制御装置およびその処理手順の実施形態について詳細に説明する。
【００３２】
＜システム構成の概要＞
図１は、本発明に係る画像出力制御装置の一実施形態を備えた画像処理システムの概要を示す図である。この画像処理システム１は、画像出力制御装置２とホストコンピュータ装置８とがネットワーク９により接続されて構成されている。
【００３３】
ホストコンピュータ装置８は、画像入力端末としての役割を持っており、デジタルドキュメント（以下電子ドキュメントという）ＤＯＣを作成し、また編集などの処理をする。なお、画像入力端末としては、画像出力制御装置２側で画像出力に供し得る画像情報を取得し得るものであればよく、ホストコンピュータ装置８に限らず、たとえばパソコン（パーソナルコンピュータ）、カラースキャナ、デジタルカメラ、またはハードディスク装置や光磁気ディスク装置あるいは光ディスク装置などのデータ格納装置、さらにはＦＡＸ装置など、任意数の画像入力ソースを含み得る。
【００３４】
ホストコンピュータ装置８を始めとする画像入力端末のそれぞれには、電子ドキュメントＤＯＣ作成用のアプリケーションプログラムなどが組み込まれる。ホストコンピュータ装置８側にて用意される電子ドキュメントＤＯＣを表す電子データは、アプリケーション独自のフォーマットで画像出力端末の役割を持つ画像出力制御装置２側に送信されてもよいし、画像出力制御装置２で処理可能な画像フォーマット（たとえば、ＪＰＥＧ、ＢＭＰ、ＰＮＧなど）で画像出力制御装置２に送信されてもよい。
【００３５】
画像出力制御装置２は、画像出力端末の役割を持っており、本体３の他に、画像表示システムとして稼働させるためのＣＲＴや液晶（ＬＣＤ）あるいは有機ＥＬなどで構成されるディスプレイ４と、この画像出力制御装置２を操作するためのキーボード５やマウス６などの入力指示デバイスを備えている。
【００３６】
この画像出力制御装置２は、先ず、画像表示に関わる処理を行なう機能部分として、本体３内部に、描画展開処理機能をなす機能部分（詳細は後述する）が設けられている。この描画展開処理機能部分は、描画展開したデータに基づいて可視像をディスプレイ４にて表示出力する。描画展開処理機能部分は、ディスプレイ４とともに使用される本体３の内部に、ソフトウェアあるいは専用もしくは汎用のハードウェアで組み込むとよい。
【００３７】
描画展開処理機能部分は、電子ドキュメントＤＯＣが入力されると、電子ドキュメントＤＯＣに含まれている描画コマンドに基づいて、周知技術に従って、複数、好ましくは最低３つの分解色を表すデータを生成しレンダリング（ラスタデータに展開）する。たとえばＹＣｒＣｂ表色系から、たとえばＲＧＢ表色系へのマッピングをし、表示出力用に色分解されたラスタデータを生成する。また描画展開処理機能部分は、このようなラスタデータ化の処理に際して、オペレータの好みに応じた色補正処理など、所定の出力処理を行なってもよい。この構成により、画像出力制御装置２は、描画展開処理機能部分にて信号変換処理されたカラー画像をディスプレイ４にて可視像として出力する。
【００３８】
＜画像出力制御装置の構成＞
図２は、画像出力制御装置２の詳細な構成例を示すブロック図である。
【００３９】
本実施形態の画像出力制御装置２は、ホストコンピュータ装置８などの画像入力端末においてワードプロセッサアプリケーションなどを利用して作成された電子ドキュメントＤＯＣを、そのホストコンピュータ装置８などの画像入力端末からネットワーク９を介して受信すると、受信した電子ドキュメントＤＯＣ中に記述された描画コマンド（直線、曲線、フォント、ラスタ画像、塗りつぶしなどの描画命令）を解釈して図形描画処理を行ない、描画された図形をビットマップイメージとして生成し、描画終了後に生成されたラスタ状の図形データを、ディスプレイ４にて表示するものである。
【００４０】
このために、画像出力制御装置２は、本体３内に、描画展開処理機能をなす機能部分が設けられている。本実施形態において、この描画展開処理機能部分は、ソフトウェアで組み込む構成としている。この場合、その機能を実現するプログラムコードに基づいて電子計算機（コンピュータ）を用いてソフトウェア的に実現するようになる。よって、本発明に係る画像出力制御方法や装置を、電子計算機（コンピュータ）を用いてソフトウェアで実現するために好適なプログラムあるいはこのプログラムを格納したコンピュータ読取可能な記憶媒体を発明として抽出することもできる。ソフトウェアにより実行させる仕組みとすることで、ハードウェアの変更を伴うことなく、処理手順などを容易に変更できる利点を享受できるようになる。
【００４１】
一連の表示制御処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ（組込マイコンなど）、あるいは、ＣＰＵ（Central Processing Unit ；中央処理部）、論理回路、記憶装置などの機能を１つのチップ上に搭載して所望のシステムを実現するＳＯＣ（System On a Chip：システムオンチップ）、または、各種のプログラムをインストールすることで各種の機能を実行することが可能な汎用のパーソナルコンピュータなどに、記録媒体やネットワーク９を介してインストールされる。
【００４２】
記録媒体は、コンピュータのハードウェア資源に備えられている読取装置に対して、プログラムの記述内容に応じて、磁気、光、電気などのエネルギの変化状態を引き起こして、それに対応する信号の形式で、読取装置にプログラムの記述内容を伝達できるものである。たとえば、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory ）、ＤＶＤ（Digital Versatile Disc）を含む）、光磁気ディスク（ＭＤ（Mini Disc ）を含む）、または半導体メモリなどよりなるパッケージメディア（可搬型の記憶媒体）により構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）あるいはハードディスクなどで構成されてもよい。または、ソフトウェアを構成するプログラムが、有線あるいは無線などの通信網を介して提供されてもよい。
【００４３】
たとえば、表示制御に関わる描画展開処理機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、ハードウェアにて構成する場合と同様の効果は達成される。この場合、記憶媒体から読み出されたプログラムコード自体が描画展開処理の機能を実現することになる。
【００４４】
また、コンピュータが読み出したプログラムコードを実行することにより、描画展開処理を行なう機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム；基本ソフト）などが実際の処理の一部または全部を行ない、その処理によって描画展開処理を行なう機能が実現される場合であってもよい。
【００４５】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によって描画展開処理を行なう機能が実現される場合であってもよい。
【００４６】
なお、描画展開処理を行なう機能を実現するプログラムコードを記述したファイルとしプログラムが提供されるが、この場合、一括のプログラムファイルとして提供されることに限らず、コンピュータで構成されるシステムのハードウェア構成に応じて、個別のプログラムモジュールとして提供されてもよい。以下具体的に説明する。
【００４７】
図２に示すように、画像出力制御装置２は、画像出力制御装置２全体の動作制御やその他の演算や制御の各処理機能をなすＣＰＵ１０と、不揮発性の記憶部の一例であるＲＯＭ３０と、書換可能な記憶部の一例であるＲＡＭ４０と、ディスプレイ４との間のインタフェース（Inter Face）機能をなすディスプレイＩ／Ｆ（インタフェース）部５０と、キーボード５やマウス６との間のインタフェース機能をなす入力Ｉ／Ｆ部５２と、プリンタ７との間のインタフェース機能をなすプリンタＩ／Ｆ部５４と、ネットワーク９との間のインタフェース機能をなすネットワークＩ／Ｆ部７０と、これらを互いに接続する内部バス８０とを備えている。
【００４８】
ＣＰＵ１０は、画像出力制御装置２全体の動作制御のほかに、ネットワークＩ／Ｆ部７０を介して受け取った電子ドキュメントＤＯＣを解釈して、その解釈結果に基づいて図形や文字やイメージの描画処理を行なう。この描画処理を行なうために、ＣＰＵ１０は、描画展開処理部１２と、本実施形態特有の構成である文字描画処理制御部２０とを有する。
【００４９】
描画展開処理部１２は、電子ドキュメントＤＯＣに含まれている描画コマンドを解釈する図形描画命令解釈部（電子ドキュメント解釈部）１４と、描画処理を行なう図形描画処理部１６およびラスタイメージ描画処理部１８とを有する。
【００５０】
文字描画処理制御部２０は、ネットワーク９を介してホストコンピュータ装置８から送られてきた電子ドキュメント中の文字描画命令を図形描画命令解釈部１４より受け取り、文字描画処理を行なう文字描画命令処理部２２と、カレントフォントの文字コードに該当する文字のビットマップイメージを生成するビットマップイメージ生成部２４と、書体の選択を行なう書体選択部２６と、フォント変形の実行を指示するフォント変形実行指定部２８とを有する。なお、この図では、フォント変形実行指定部２８を文字描画処理制御部２０内に取り込んでいるが、文字描画処理制御部２０とは別にフォント変形実行指定部２８を設けてもよい。
【００５１】
ＲＯＭ３０は、内部に、ＣＰＵ１０が各種処理を行なうための制御プログラムが格納されるプログラム記憶領域３２、文字描画のためのフォントデータを格納するフォントデータ記憶領域３４、およびＣＰＵ１０が各種処理を行なうために必要とするその他のデータ記憶領域を有する。
【００５２】
たとえば、ＲＯＭ３０は、ＣＰＵ１０が描画処理を行なうのに必要となる描画プログラムをプログラム記憶領域３２に予め格納している。さらに、プログラム記憶領域３２は、図示されないＯＳ（Operating Systems ；基本ソフト）やＧＵＩ（Graphical User Interface）処理などのプログラムをも格納している。ＣＰＵ１０は、ＯＳやＧＵＩ処理を利用しつつ、ＲＯＭ３０内の描画プログラムを実行することによって、上述した各部の機能を実現するようになっている。
【００５３】
ＲＡＭ４０は、ＣＰＵ１０が各種処理を実行する際のワークメモリとして用いられる作業領域であって、内部に、ドキュメント記憶領域４２、ディスプレイ４に表示するためあるいはプリンタ７にて印刷出力するためのラスタデータ（ビットマップイメージ）を格納するページバッファ４４、文字の拡縮率のを格納する拡縮率テーブル４６、および個々の文字のビットマップイメージを格納するビットマップ領域４８、あるいはその他のデータ記憶領域を有する。
【００５４】
ネットワークＩ／Ｆ部７０は、図形や文字やイメージを描画する描画コマンドが含まれている電子ドキュメントＤＯＣをホストコンピュータ装置８からネットワーク９を介して受信する。
【００５５】
たとえば、フォントデータ記憶領域３４は、ビットマップイメージ生成部２４が文字描画を行なう、すなわち文字のビットイメージデータを生成するためのフォントデータを１つもしくは複数格納している。このフォントデータは、少なくとも、フォント名（書体名）もしくはファミリ名と、文字の太さに関する情報、文字の傾きに関する情報、文字の大きさに関する情報などの、文字形状の変形に関わる仕様を示す属性情報とを含む（後述する図３を参照）。
【００５６】
書体選択部２６は、文字描画命令処理部２２により指定された文字列描画命令とフォント指定命令（後述する図３を参照）とフォントデータ記憶領域３４に格納されているフォント情報とに基づいて使用する書体を選択する。具体的には、指定された形状情報を最も良く満足する書体を代替えのフォント（近似フォント）として選択し、カレントフォントとして、ＲＡＭ４０の所定の記憶領域に格納しておく。
【００５７】
フォント変形実行指定部２８は、文字描画に際して文字サイズ変更処理（拡縮処理、変倍処理）を行なうか否か、文字太さ変更処理（太文字化処理もしくは細文字化処理）を行なうか否か、あるいは文字傾き変更処理（斜体化処理）を行なうか否か、あるいは装置が自動的に選択した置換フォントの変更の指示（以下纏めてフォント変形とも言う）をユーザから受け付け、その指示をビットマップイメージ生成部２４に通知する。
【００５８】
ビットマップイメージ生成部２４は、文字描画命令処理部２２の指令の下で、書体選択部２６で選択されたフォントデータをフォントデータ記憶領域３４から読み出して、文字列描画命令に対応する文字（記号などの事実上文字のカテゴリーに含まれるものも含む）のビットマップイメージを生成し、生成したビットマップイメージをＲＡＭ４０のビットマップ領域４８に書き込む。このとき、ビットマップイメージ生成部２４は、フォントの属性情報に従って展開文字（記号）の大きさを決定し、またフォント変形実行指定部２８から通知されたフォント変形指示情報に基づいて、必要に応じて、回転や傾斜化あるいは太文字化など、公知の画像処理技術を利用した文字変形処理を加える。
【００５９】
文字描画命令処理部２２は、フォントデータ記憶領域３４にて生成されビットマップ領域４８に格納された各文字のビットマップイメージを使用して、１画面分あるいは１ページ分のビットイメージデータを展開してページバッファ４４に格納する。
【００６０】
ディスプレイＩ／Ｆ部５０は、ＣＰＵ１０（詳しくは文字描画処理制御部２０）による制御に従いつつ、ＲＡＭ４０内のページバッファ４４に展開されたラスタデータを、ディスプレイ４に渡す。これにより、ディスプレイ４は、文字データに基づくラスタデータを表示するようになる。同様に、プリンタＩ／Ｆ部５４は、文字描画処理制御部２０による制御に従いつつ、ＲＡＭ４０内のページバッファ４４に展開されたラスタデータを、プリンタ７に渡す。これにより、プリンタ７は、文字データに基づくラスタデータに従って、所定の記録媒体上に文字を印刷出力するようになる。
【００６１】
＜文字描画命令＞
図３は、電子ドキュメントＤＯＣに含まれている文字描画命令を説明する図である。図３（Ａ）に示すように、文字描画命令は、フォント指定命令と文字列描画命令とからなる。フォント指定命令は、フォント名（書体名）およびファミリ名と言った専らフォントそのものの基本情報に関わるフォント情報と、文字の太さ、文字の傾斜、あるいは文字のサイズと言った文字の出力形態（形状）やその変形に関わる情報である属性情報（一般にスタイル情報と言われる）とからなっている。文字のサイズは、図３（Ｂ）に示すように、各々の文字の横（行）あるいは縦（列）の各方向の幅を示すものである。
【００６２】
たとえば、フォント名としては、公知のように、明朝Ａ、明朝Ｂ、ゴシックＡ、ゴシックＢ、ゴシックＣ、欧文Ｘ−Ｒｏｍａｎ、欧文Ｘ−Ｂｏｌｄ、欧文Ｘ−Ｉｔａｌｉｃ、欧文Ｙ−Ｒｏｍａｎ、欧文Ｙ−Ｉｔａｌｉｃなどが該当する。ファミリ名は、そのフォントのデザインの属する系統を表す。
【００６３】
これら各フォント名に対して属性情報が格納される。属性情報としては、前述のように、たとえば、その書体の文字幅や太さや傾きなどを表す形状情報を含む。たとえば、日本語フォントおよび欧文フォントの如何に関わらず、形状情報として文字の太さを用い、さらに欧文フォントでは、Italic／Roman （直立／傾斜）の字形情報を利用する。
【００６４】
文字列描画命令は、文字数、描画位置、文字コード配列（文字コード×文字数）、および文字描画位置配列（文字描画位置×文字数）を含む。ここで、文字数は、横（行）および縦（列）のそれぞれに文字数であり、文字コード配列および文字描画位置配列に利用される。描画位置は、図３（Ｂ）に示すように、横（行）あるいは縦（列）の各方向における各々の文字の描画開始位置を示す。ここで、横（行）について各文字の描画開始位置を結ぶ線が横方向のベースラインである。なお、図示しないが、縦（列）について各文字の描画開始位置を結ぶ線が縦方向のベースラインとなる。
【００６５】
文字コード配列は、文字列情報の中に文字コードが文字数分格納されている、という配列の意味を表わしており、文字列情報が文字数分連続で格納されていて、それだけのデータの容量が必要である、ということを表わしている。文字描画位置配列に関しても、同様に、文字特有のピッチデータ（Ｘ方向の増分）が文字数分連続で格納されている、という配列の意味を表わしている。
【００６６】
文字描画処理制御部２０は、図３に示したフォント指定命令をホストコンピュータ装置８から受け取ると、先ず書体選択部２６が書体の選択を行なう。書体選択部２６は、指定されたフォントが存在すればそのフォントをカレントフォントとしてＲＡＭ４０の所定の記憶領域に設定し、存在しないのであれば、前述のようにして適切な近似フォントに置換して、すなわち指定された形状情報を良く満足する書体のものを近似フォントとして選択してカレントフォントとしてＲＡＭ４０の所定の記憶領域に設定する。
【００６７】
続いて、文字描画命令処理部２２は、文字列描画命令を受け取ると、ビットマップイメージ生成部２４に対して、カレントフォントの文字コードに該当する文字についてビットマップイメージの生成を指示する。
【００６８】
なお、ビットマップイメージ生成部２４は、カレントフォントの文字コードに該当する文字のビットマップイメージを生成するとき、フォント変形実行指定部２８で指定された状態を元にビットマップイメージの変形を行なう。
【００６９】
続いて、ビットマップイメージ生成部２４にて描画対象の文字列のビットマップイメージが生成されビットマップ領域４８に記憶されると、文字描画命令処理部２２は、生成されたビットマップイメージを所定の文字描画位置（後述する説明を参照）に描画する。この際、文字描画命令処理部２２は、フォントの拡縮率とフォント変形実行指定部２８で指定された状態とに基づいて文字描画位置を修正する。
【００７０】
文字描画処理制御部２０は、以上の処理を全ての描画コマンドについて繰り返し実行し、全ての描画コマンドの描画が終了したら、ディスプレイＩ／Ｆ部５０部を介してディスプレイ４にラスタデータを出力して１ページ分の表示出力処理を終了させる。あるいは、プリンタＩ／Ｆ部５４を介してプリンタ７にラスタデータを出力して１ページ分の印刷出力処理を終了させる。
【００７１】
＜拡縮率テーブル＞
図４は、ＲＡＭ４０に登録される拡縮率テーブル４６の一例を説明する図である。拡縮率テーブル４６は、カレントフォントに対応する置換前のフォント指定命令、すなわち置換前のフォント情報と属性情報、並びに、出現した文字コードとそれに対応する拡縮率（変倍率）Ｌ１を含む拡縮率情報で構成されている。この拡縮率テーブル４６は、文字列描画命令単位で生成し、描画終了後破棄してもよいし、ページ描画単位で生成し、ページ描画終了後に破棄してもよいし、ジョブ描画単位で生成し、破棄してもよい。また、拡縮率情報は、出現した文字コード分だけ存在する必要がある。
【００７２】
＜フォントデータの一例＞
図５は、フォントデータの一例を示す図である。ここでは前提として、フォントデータは、フォント名とファミリ名を含むフォント情報とその属性情報を含むフォント指定情報と、文字コード、文字を構成するアウトラインデータ、および文字の幅と高さを含むフォントボディとで構成される。
【００７３】
たとえば、フォント名と、ファミリ名と、属性情報で示されるフォントの傾き指定があるか否かのフラグ（一般的にＩｔａｌｉｃと呼ばれる）と、フォントの太さ指定があるか否かのフラグ（一般的にＢｏｌｄと呼ばれる）とで表現され、各々のフォント内に含まれる文字は文字コードとその文字を描画するデータと文字の幅と高さで構成される。さらに、複数のフォントに対応するため、フォントボディは複数存在する。なお、図中では、フォントボディがアウトラインデータとなっているが、ビットマップデータやストロークデータの場合であってもよい。
【００７４】
＜書体選択部の動作の詳細＞
図６は、書体選択部２６の処理手順の詳細例を示すフローチャートである。ここでは前提として、図５に示したフォントデータを対象として処理する。
【００７５】
書体選択部２６は、先ず、フォント指定命令よりフォント名を取得する（Ｓ２００）。続いて書体選択部２６は、取得されたフォント名と一致するフォント名を持つフォントデータが存在するか否か検索し（Ｓ２０２）、検索したフォントデータについて、フォント名が一致したフォントがフォントデータ内に存在するか否か判定する（Ｓ２０４）。
【００７６】
書体選択部２６は、一致したフォントが存在したなら（Ｓ２０４−ＹＥＳ）、フォント指定命令より指定されたフォント名をカレントフォントとしてＲＡＭ４０の所定の記憶領域に登録し（Ｓ２０６）、また、フォント置換発生せずとしてＲＡＭ４０の所定の記憶領域に登録し、書体選択処理を終了する（Ｓ２０８）。
【００７７】
一方、一致したフォントが存在しないならば（Ｓ２０４−ＮＯ）、書体選択部２、フォント指定命令よりファミリ名を取得する（Ｓ２１０）。続いて書体選択部２６は、ＲＯＭ３０のフォントデータ記憶領域３４に登録されているフォントデータ内に取得されたファミリ名と一致するファミリ名を持つフォントデータが存在するか否か検索し（Ｓ２１２）、検索したフォントデータについて、ファミリ名が一致したフォントがフォントデータ内に存在するか否かを判定する（Ｓ２１４）。
【００７８】
ファミリ名が一致したフォントが存在したなら（Ｓ２１４−ＹＥＳ）、書体選択部２６は、ファミリ名が一致したフォントデータの中に、フォント指定命令より指定された太さおよび傾斜が等しいフォントが存在するか否かを判定する（Ｓ２１６）。太さおよび傾斜が等しいフォントが存在する場合には（Ｓ２１６−ＹＥＳ）、書体選択部２６は、そのフォントデータを選択する（Ｓ２１８）。一方、太さおよび傾斜が等しいフォントが存在しない場合には（Ｓ２１６−ＮＯ）、書体選択部２６は、ファミリ内で形状情報を最も良く満足する書体を選択する（Ｓ２２０）。そして、書体選択部２６は、選択したフォントをカレントフォントとしてＲＡＭ４０の所定の記憶領域に登録し（Ｓ２２２）、さらに置換前のフォントをカレント置換前フォントとしてＲＡＭ４０の所定の記憶領域に登録する。そして最後に、書体選択部２６は、フォント置換発生としてＲＡＭ４０の所定の記憶領域に登録し、書体選択処理を終了する（Ｓ２２４）。
【００７９】
一方、ファミリ名が一致したフォントがフォントデータ内に存在しない場合には（Ｓ２１４−ＮＯ）、書体選択部２６は、適当なフォントを選択する（Ｓ２３０）。ここで、「適当なフォント」とは、たとえば、形状情報を最も良く満足する書体のものである。続いて、書体選択部２６は、選択したフォントをカレントフォントとしてＲＡＭ４０の所定の記憶領域に登録し（Ｓ２２２）、さらに置換前のフォントをカレント置換前フォントとしてＲＡＭ４０の所定の記憶領域に登録する。そして最後に、書体選択部２６は、フォント置換発生としてＲＡＭ４０の所定の記憶領域に登録し、書体選択処理を終了する（Ｓ２２４）。
【００８０】
＜フォント変形実行指定部の動作の詳細＞
図７は、フォント変形実行指定部２８が利用するＧＵＩの一例を示す図である。フォント変形実行指定部２８は、図２には示さないＯＳやマルチウィンドウシステムなどのＧＵＩを利用して、電子ドキュメントＤＯＣの表示処理とは独立にフォント変形実行指定を実行する。
【００８１】
この際、フォント変形実行指定部２８は、一般的なＧＵＩ処理により、たとえば図７に示すような、“ＦｏｎｔのＢｏｌｄを実行する”、“Ｆｏｎｔのイタリックを実行する”、“Ｆｏｎｔの拡大縮小を実行する”と言った選択メニューをディスプレイ４に表示させる。ユーザは、この表示に基づき、チェックボックスへの指定により希望の条件を指示する。フォント変形実行指定部２８は、これらフォント変形に関わる可否の指示を受け付けると、ユーザより指定された状態をＲＡＭ４０の所定の記憶領域に保存する。文字描画処理制御部２０の各部（たとえばビットマップイメージ生成部２４や書体選択部２６）は、ＲＡＭ４０に保存されたフォント変形に関わるユーザ指示を電子ドキュメント表示処理の際に使用する。
【００８２】
たとえば、フォント変形実行指定部２８は、“ＦｏｎｔのＢｏｌｄを実行する”にチェックマークが付与されたことを検知すると、文字の太文字化処理を許可する旨をビットマップイメージ生成部２４に通知する。一方、チェックマークが付与されてなければ、太文字化処理を禁止する旨をビットマップイメージ生成部２４に通知する。
【００８３】
同様に、フォント変形実行指定部２８は、“Ｆｏｎｔのイタリックを実行する”にチェックマークが付与されたことを検知すると、文字の斜体化処理を許可する旨をビットマップイメージ生成部２４に通知する。一方、チェックマークが付与されてなければ、斜体化処理を禁止する旨をビットマップイメージ生成部２４に通知する。
【００８４】
また、フォント変形実行指定部２８は、“Ｆｏｎｔの拡大縮小を実行する”にチェックマークが付与されたことを検知すると、文字の変倍処理を許可する旨をビットマップイメージ生成部２４に通知する。一方、チェックマークが付与されてなければ、変倍処理を禁止する旨をビットマップイメージ生成部２４に通知する。
【００８５】
ビットマップイメージ生成部２４は、文字描画命令処理部２２の指令の下で、書体選択部２６で選択されたフォントデータをフォントデータ記憶領域３４から読み出して、文字列描画命令に対応する文字（記号などの事実上文字の範疇に含まれるものも含む）のビットマップイメージを生成し、生成したビットマップイメージをＲＡＭ４０のビットマップ領域４８に書き込む。このとき、ビットマップイメージ生成部２４は、フォントの属性情報に従って展開文字（記号）の大きさを決定し、またフォント変形実行指定部２８がユーザより受け付けたフォント変形指示情報に基づいて、必要に応じて、回転や傾斜化あるいは太文字化など、公知の画像処理技術を利用した文字変形処理を加える。
【００８６】
たとえば、電子ドキュメントＤＯＣにて指定されているフォントサイズを変更すると見難くなるケースがある。特に、ビットマップフォントのケースで顕著である。同様に、電子ドキュメントＤＯＣでは太文字化されていないのに太文字化された文字に置換して出力する、イタリック指定がないのにイタリック体の文字に置換して出力するなど、電子ドキュメントＤＯＣにて指定されているフォントデータが装置に搭載されていないときに、装置に搭載されているフォントデータの中から指定された形状情報を最も良く満足する書体を代替えのフォント（近似フォント）として使用するとしても、出力された文字の品位が崩れる。また、ＣＰＵ１０にて、自動的に近似フォントを判定する場合、判定ミスが生じることもあるし、フォント名を変えるだけでも見栄えが悪くなるケースがあり得る。
【００８７】
これに対して、本実施形態の構成では、ユーザは、拡縮処理を行なうか否か、太文字化処理を行なうか否か、斜体化処理を行なうか否かを、フォント変形実行指定部２８を通じて文字描画処理制御部２０に指示することができる。このことにより、ユーザの希望に応じて、指定されたフォントを別のフォントに置換して描画することを抑制して、視認性のよい文字表示とレイアウト通りの文字表示を両立させることができる。常に予め決められた条件で変形するのではないので、変形するか否かや、変形する際にはその条件を指定することができ、使い勝手がよい。
【００８８】
また、フォント変形実行指定部２８は、太文字化、斜体化、あるいは変倍といったフォント変形に関わる可否の指示を受け付けると、その指示を書体選択部２６にも通知するようにしてもよい。こうすることで、書体選択部２６は、電子ドキュメントＤＯＣにて指定されたフォントがフォントデータ記憶領域３４に登録されていないときに近似フォントを選択する際、予め選択候補を絞り込むことができる。なお、この図７に示したＧＵＩでは、フォント変形に対する指示とフォント選択に対する指示とが兼用されることになるが、これに限らず、それぞれを独立に指示できるような表示メニューにしてもよい。
【００８９】
たとえば、太文字化や斜体化の指定のないフォントが指定されているときに、ユーザより太文字化処理が禁止されていれば、近似フォントとしては、太字フォントを選択対象から外し、同様に、ユーザより斜体化処理が禁止されていれば、近似フォントとしては、斜体フォントを選択対象から外す。また、太文字化や斜体化が禁止されている場合において、指定されたフォントが存在しない場合に、フォントの属性情報のうち、指定されたフォントの太さや斜体を最優先として、次に、サイズを適用して、指定されたフォントに最も形状が近いフォントを近似フォントとして選択する。なお、太文字化や斜体化のないフォントが指定されている場合、近似フォントとしては、太文字化や斜体化のないフォントを選択するものとする。
【００９０】
また、変倍処理がユーザより禁止されている場合において、指定されたフォントが存在しない場合に、フォントの属性情報のうち、指定されたフォントのサイズを最優先として、次に、太さや斜体を適用し、指定されたフォントに最も形状が近いフォントを近似フォントとして選択する。
【００９１】
このように、近似フォントの選択条件をユーザにより指示できるようにすることで、ユーザの希望に応じて、指定されたフォントを別のフォントに置換して描画することを抑制して、視認性のよい文字表示とレイアウト通りの文字表示を両立させることができる。常に予め決められた条件のみで近似フォントを選択するのではなく、ユーザにより近似フォントの選択条件を指示できるので、たとえば見易さを考慮して過剰な文字変形が生じないようなフォントを近似フォントとして選択させることもでき、使い勝手がよい。
【００９２】
＜文字描画命令処理部の詳細構成例＞
図８は、文字描画命令処理部２２の詳細構成例を示すブロック図である。図示するように、文字描画命令処理部２２は、描画される文字や文字間の状態（纏めて描画文字の状態とも言う）を特定する描画文字状態特定部２２２と、描画文字状態特定部２２２が特定した描画文字の状態に基づいて、隣接する文字間の距離や各文字の傾きや太さなど、実際に描画する文字の描画状態を修正する描画状態修正部２２８とを有する。
【００９３】
なお、本明細書において、描画される文字や文字間の状態（描画文字の状態）には、メインの文字そのものやメインの文字同士の間隔の状態だけでなく、メインの文字に付与される、たとえば小さな文字と一緒に並べてレイアウトするいわゆる「ルビ」などの修飾文字や修飾文字同士の間隔も含む。
【００９４】
本実施形態においては、描画文字状態特定部２２２は、複数の文字からなる文字列について、隣接する描画文字の間隔を算出する文字間隔算出部２２６を有する文字間状態予測部２２４を備えている。文字間状態予測部２２４は、文字間隔算出部２２６が算出した算出結果を、予測した文字間の状態とする。描画状態修正部２２８は、必要に応じて、文字間状態予測部２２４が予測した文字間の状態、すなわち、文字間隔算出部２２６が算出した算出結果に基づいて、実際に描画する文字の描画状態（本例では描画位置）を修正する文字描画位置変更部２２９を有している。
【００９５】
ここで、「必要に応じて」とは、たとえば、指定されたフォントが装置に搭載されておらず、近似フォントで代用した際に、レイアウトが崩れないように、また間延びした状態とならないように、文字の重なりが生じないように、あるいは、文字列の後半部が出力エリアからはみ出さないようにする必要がある場合など、より見易いあるいは見栄えのよい状態となるようにする要求に応じることを意味する。これらの必要性の判断は、ユーザが判断して、装置に指示を与えてもよいし、予め判定条件を定義しておき、その判定条件に従って自動的に処理するようにしてもよい。
【００９６】
たとえば、電子ドキュメントＤＯＣにて指定されているフォントと異なる、装置に搭載の何れかのフォントであって、指定されたファミリ名が一致する書体（概ね、指定フォントと形状情報を比較的良く満足する書体である）、あるいはファミリ名が異なるが指定された形状情報を良く満足する書体を近似フォントとして選択して代用（代替使用）すると、場合によっては、文字サイズ、太文字化の有無、あるいは斜体化の有無が、電子ドキュメントＤＯＣで指定されたものと異なるものとなる。
【００９７】
これらの場合、描画される文字ピッチが電子ドキュメントＤＯＣで指定されたものと異なる状態となり、１つ１つの文字だけで見れば比較的見易い状態であったとしても、文字列の全体として見れば、レイアウトが崩れたり、間延びした状態となったり、文字の重なりが生じたり、あるいは、文字列の後半部が出力エリアからはみ出して出力されない（以下尻切れ出力ともいう）などの不都合が生じ得る。
【００９８】
このような場合、描画状態修正部２２８の文字描画位置変更部２２９は、より見易い状態となるように、文字間隔算出部２２６が算出した算出結果に基づいて、実際の描画時の文字ピッチを調整する。
【００９９】
本実施形態の構成では、変形を行なう旨の指示を受け付けたときには置換するフォントである近似フォントに対して変形の処理を許可し、変形を行なう旨の指示を受け付けていないときには近似フォントに対して変形の処理を不許可にする、つまり、フォント変形の可否をユーザが自由に指定できるようにすることで、表示速度を上げるという利点を得るようにしている。ただし、こうすると、ページ内でレイアウトのずれが生じ得る。
【０１００】
この問題を解決するため、文字間状態予測部２２４は、文字間隔算出部２２６により描画文字と次回の描画文字との間の文字間隔を算出し、この算出結果を今回の描画文字と次回の描画文字との文字間の状態予測の予測結果とする。そして、描画状態修正部２２８の文字描画位置変更部２２９は、文字間隔算出部２２６が算出した文字間隔が基準値よりも小のとき、今回の描画文字を横書きの場合は横方向に、縦書きの場合は縦方向に文字描画位置を変更する。
【０１０１】
ただし、このような文字描画位置の修正処理を行なうと、必要以上の文字列内レイアウトずれ（ページ内のレイアウトずれとは異なる）が発生し得る。この問題を解消するため、フォント変形実行指定部２８は、文字描画に際して、太文字化処理を行なうか否かや斜体化処理を行なうか否かを指定することで、描画位置を修正する。この指示は、文字列内レイアウトずれを自動的に判断し、その判断結果に基づいて行なってもよいし、ユーザからの要求を受けて行なうようにしてもよい。
【０１０２】
つまり、フォント置換を行なって文字描画すれば、文字の大きさが正しい大きさ（受け取ったデータで指定されている大きさ）で表示されないこととなるので、全体的なページ内のレイアウトを保つのか、局所的な文字の並び(文字列内レイアウト)を保つのか、相容れないどちらかを選ぶしかない。そこで、描画状態修正部２２８の文字描画位置変更部２２９は、文字間隔算出部２２６が算出した文字間隔が「基準位置よりも小さい」という単純な判断で、この相反する処理のうちより良い処理を選ぶことによって、中庸的な解決を見出している。
【０１０３】
より具体的に説明すると、拡大や縮小を行なわないで、装置に搭載している自前のフォント（たとえばビットマップフォント）を使用すると、本来表示されるべきであったページ内のレイアウトのピッチ位置が不明になってしまう。描画文字と次回の描画文字との間の文字間隔を算出し今回の描画文字と次回の描画文字との文字間の状態を予測して描画位置を修正するという本実施形態の手法を採らなければ、文字変形を行なわなかった場合に、小さくなったら小さくなったなりに、大きくなったら大きくなったなりにピッチが変動するだけで、他にコントロールできなくなり、たとえば本来の位置よりはみ出して描画されてしまう。これに対して、本実施形態の手法を採り描画位置を修正可能にすることで、ページ内レイアウトを保持したり、間延びを防いだり、文字の重なりを防いだり、尻切れ出力を防いだりすることができる。
【０１０４】
なお、文字間状態予測部２２４は、文字間隔算出部２２６による計算結果の他、たとえば、「等幅指定」や「均等割付け」などの隣り合う文字とは関係のないピッチ算出方法など、文字の状態や隣接するピッチ以外で文字やピッチに変化をつける要因となる文字のレイアウト系の処理を利用することで得た結果を予測結果として利用することもできる。これらは、各フォントの最大値にピッチを強制的に固定し、または文字列の表示領域の長さを文字数で割ってピッチを算出することにより、文字の間隔が均等になるような計算をする。
【０１０５】
また、たとえば、「ルビ」などで文字に特別な修飾をつける場合も、その修飾文字（前例ではルビの小文字部分）のピッチなどを考慮してメイン文字のピッチを決めなければならないので、メインの文字についてのみ隣接文字を参考にする場合と、最終的なピッチの計算が違ってくる。修飾文字のピッチなどを考慮してメイン文字のピッチを決めるようにすれば、ユーザが指定したページ内の文字レイアウトをより良く反映した形で出力ができるようになる。
【０１０６】
本実施形態では、上述のような観点から、描画文字状態特定部２２２と描画状態修正部２２８とが協働して、実際に文字描画を行なうに先立って、描画文字状態特定部２２２にて各描画対象の文字の状態を特定し、文字描画位置変更部２２９は、この描画文字状態特定部２２２が特定した描画文字の状態に基づいて、実際に描画する文字の描画状態を修正することで、レイアウトが崩れないように、また間延びした状態とならないように、文字の重なりが生じないように、あるいは、尻切れ出力がないように、それぞれの文字の描画位置、すなわち描画文字ピッチを調整する。
【０１０７】
なお上記説明では、文字間隔算出部２２６が算出した算出結果に基づいて、文字描画位置変更部２２９にて、実際の描画時の文字ピッチを調整することについて述べたが、文字の描画状態の修正の態様は、必ずしもこれに限定されない。たとえば、１つ１つの文字について、傾きの度合いや太文字化の程度が文字サイズに拘わらず同じであっても、文字サイズとの兼ね合いで見難くなることも生じる。このような場合、文字描画命令処理部２２の描画文字状態特定部２２２は、個々の文字の傾きや太字の程度を特定し、描画状態修正部２２８は、描画文字状態特定部２２２が特定した文字の傾きや太さの程度に基づいて、より見易い状態となるように、実際の描画時の文字の傾きや太さの程度を調整する。また、太文字化の程度によっては文字幅が変更される場合もある。このような場合、描画状態修正部２２８は、文字描画命令処理部２２にて太さの程度を特定し、描画状態修正部２２８にて、事前に設定した描画文字ピッチを特定した太さの程度に応じて修正すればよい。
【０１０８】
＜文字描画状態修正処理の概要＞
図９および図１０は、描画文字状態特定部２２２と描画状態修正部２２８との協働作業による、文字描画状態修正処理の概要を示す図である。ここで、図９は、電子ドキュメントＤＯＣにて指定されているフォントについて、そのフォントの属性情報として指定されているサイズよりも小さな文字サイズのフォントを近似フォントとして使用する場合を示している。これに対して、図１０は、フォントの属性情報として指定されているサイズよりも大きな文字サイズのフォントを近似フォントとして使用する場合を示している。
【０１０９】
また、何れも、図（Ａ）は、指定されている元のフォントサイズで描画する際の各文字の描画位置を示す。図（Ｂ）は、近似フォントのフォントサイズで描画する際の各文字の描画位置、すなわち予め定められている基準の文字幅に従って計算された描画位置を示す。図（Ｃ）は、近似フォントのフォントサイズで描画した図（Ｂ）に示す文字位置を、所定の条件に従って修正した際の各文字の描画位置を示す。図（Ｄ）は、拡縮率を元にした、描画位置の修正後の状態を示す。
【０１１０】
文字描画命令処理部２２は、書体選択部２６によって選択されたフォントに対応する文字を当該フォントの文字コードおよび文字描画位置情報を基に描画する。この際、先ず、文字間隔算出部２２６は、隣接する描画文字の間隔を算出する。文字間状態予測部２２４は、文字間隔算出部２２６が算出した算出結果を、予測の文字間の状態とする。
【０１１１】
近似フォントを使用せずに指定されたフォントそのものを使用できる場合には、文字間隔算出部２２６が算出した描画文字の間隔は、指定された元の文字間隔（横方向はｈｘ０、縦方向はｈｙ０）と同じになる。これに対して、近似フォントを使用する場合には、文字間隔算出部２２６が算出した描画文字の間隔は、指定された元の文字間隔と同じにはならない。
【０１１２】
そこで、近似フォントを使用する場合は、描画状態修正部２２８の文字描画位置変更部２２９は、文字間状態予測部２２４が予測した文字間の状態、すなわち、文字間隔算出部２２６が算出した算出結果に基づいて、実際に描画する文字の描画位置を、元の文字間隔（横方向はｈｘ０、縦方向はｈｙ０）で規定される描画位置とは異なる位置に修正する。
【０１１３】
たとえば、指定された文字サイズよりも小さな文字サイズのフォントを近似フォントとして使用する場合、文字描画命令処理部２２は、先ず、図９に示すように、横書きの場合、１つ前に描画する文字位置（ｘ１＠，ｙ１＠）（αは１つ前の描画対象文字の描画順；０が初期値）、横方向の文字幅ｈｘ１とし、それぞれの文字描画位置を（ｘ１＠＋ｈｘ１，ｙ１＠）に修正する。たとえば、横方向の１番目の文字については、計算された描画位置（ｘ１１，ｙ１１）は、（ｘ１０＋ｈｘ１，ｙ１０）となる。なお、見栄えのために何らかの修正項（定数ｘｃ）を加算して（ｘ１＠＋ｈｘ１＋ｘｃ，ｙ１＠）としてもよい。
【０１１４】
また図では示さないが、縦書きの場合には、１つ前に描画された文字位置（ｘ１＠，ｙ１＠）、縦方向の文字幅ｈｙ１とすると、それぞれの文字描画位置を（ｘ１＠，ｙ１＠＋ｈｙ１）とする。見栄えのために修正項（定数ｙｃ）を加算して（ｘ１＠，ｙ１＠＋ｈｙ１＋ｙｃ）としてもよい。
【０１１５】
ここで、１つ１つの文字の出力品質に問題がなくて見栄えが良く、かつ文字列の全体としても、レイアウト崩れ、間延び、文字重なり、あるいは尻切れなどに、全体としての見栄えに不都合がなければ、文字描画命令処理部２２は、このままの状態で１ページ分の描画処理を完結させてよい。
【０１１６】
たとえば、指定された文字サイズよりも小さな文字サイズのフォントを近似フォントとして使用する場合において、元の文字間隔（横方向はｈｘ０、縦方向はｈｙ０）で規定される描画位置に、近似フォントの小さな文字サイズで描画すると、レイアウト崩れ、文字重なり、あるいは尻切れなどは生じないが、サイズを小さくした分だけ間延びした状態で出力される。これに対して、図９（Ｂ）から分かるように、文字間隔算出部２２６が算出した算出結果に基づいて実際に描画する文字の描画位置を修正することで、実際に使用する文字サイズに応じて描画位置を順次変更して（適正サイズで詰めて）描画するので、間延びした状態となるのを避けることができる。
【０１１７】
なお、描画状態修正部２２８は、図９（Ｂ）に示した描画態様に限らず、所定の条件に基づいて、さらに描画位置を修正してもよい。たとえば、文字描画位置変更部２２９は、文字間隔算出部２２６が算出した文字間隔が基準値よりも小のとき、横書きの場合は横方向に、縦書きの場合は縦方向に、今回の描画文字の文字描画位置を変更する。図９（Ｃ）は、その一例を示している。
【０１１８】
ここで、「基準値」は、元の文字における隣接描画位置の描画位置を指している。たとえば、図９に書き込まれている値で言うと、２文字目の基準値は前の文字の終了座標であるｘ０１という値である。これは、後述する図１０の場合でも同様である。
文字間隔算出部２２６が算出した２文字目の開始位置の値はｘ１１になるので、「文字間隔算出部２２６が算出した文字間隔が基準値よりも小」であるのか否かに基づいて、描画位置を元の位置のものを使用するか否かを制御する。
【０１１９】
たとえば、図９（Ｃ）に示すように、文字描画位置変更部２２９は、計算した１つ前に描画された文字位置を（ｘ１ｎ−１，ｙ１ｎ−１）とし、元々指定されていた文字描画位置を（ｘ０ｎ，ｙ０ｎ）としたとき、横書きであれば、ｘ０ｎ≧ｘ１ｎ−１であれば元々の文字描画位置（ｘ０ｎ，ｙ０ｎ）の位置へ描画し、ｘ０ｎ＜ｘ１ｎ−１であれば、計算された１つ前に描画された文字位置（ｘ１ｎ−１，ｙ１ｎ−１）へ描画する。
【０１２０】
図示しないが、縦書きであれば、ｙ０ｎ≧ｙ１ｎ−１であれば元々の文字描画位置（ｘ０ｎ，ｙ０ｎ）の位置へ描画し、ｙ０ｎ＜ｙ１ｎ−１であれば、計算された１つ前に描画された文字位置（ｘ１ｎ−１，ｙ１ｎ−１）へ描画する。指定された文字サイズよりも小さな文字サイズのフォントを近似フォントとして使用する場合には、常にｘ０ｎ≧ｘ１ｎ−１あるいはｙ０ｎ≧ｙ１ｎ−１を満たすので、結局は、元々指定されていた文字描画位置に描画する。
【０１２１】
こうすることで、指定された文字サイズよりも小さな文字サイズのフォントを近似フォントとして使用する場合に拡大処理を行なわなくても、必要以上に文字ピッチが小さくなることを防ぐことができる。実際よりもページ内の狭い範囲にレイアウトが固まってしまい本来の文字位置情報が失われるという状態を防ぐことができる。
【０１２２】
図９（Ｂ）に示すようにすることで間延びした状態を防止するのがよいのか、狭い範囲にレイアウトが固まるのを防止するのがよいのか、あるいは後述する図１０（Ｃ）のように飛出しが生じないようにするのがよいのかは、ページ全体のレイアウトを考慮して決めるのがよい。たとえば、元のページ内レイアウトを頑なに守った方が局所的な文字列内の文字の並び具合よりも優先される場合も考えられる。具体的には、グラフや図などに含まれる説明文字などは、その表示される位置が意味を表わしていたりして重要だったりするので、その位置がずれるよりも文字が間延びしていた方が良い例であると言える。位置情報と見栄えのどちらが優先なのかを装置にて自動で切り替えることは不可能ではないにしても困難であるから、この切替制御はユーザの指示に従うのがよい。
【０１２３】
また、指定された文字サイズよりも大きな文字サイズのフォントを近似フォントとして使用する場合にも、同様にして描画の文字位置を修正すればよい。たとえば、文字描画命令処理部２２は、先ず、図１０（Ｂ）に示すように、横書きの場合、１つ前に描画する文字位置（ｘ１＠，ｙ１＠）（αは１つ前の描画対象文字の描画順；０が初期値）、横方向の文字幅ｈｘ１とし、それぞれの文字描画位置を（ｘ１＠＋ｈｘ１，ｙ１＠）とする。縦書きの場合にも同様にして考えればよい。
【０１２４】
ここで、１つ１つの文字の出力品質に問題がなくて見栄えが良く、かつ文字列の全体としても、レイアウト崩れ、間延び、文字重なり、あるいは尻切れなど、全体としての見栄えに不都合がなければ、文字描画命令処理部２２は、このままの状態で１ページ分の描画処理を完結させてよい。
【０１２５】
たとえば、指定された文字サイズよりも大きな文字サイズのフォントを近似フォントとして使用する場合において、元の文字間隔（横方向はｈｘ０、縦方向はｈｙ０）で規定される描画位置に、近似フォントの大きな文字サイズで描画すると、レイアウト崩れや間延びした状態などは生じないが、サイズを大きくした分だけ隣接部での文字重なりが生じ、また文字列が長いケースでは尻切れのある状態で出力され得る。
【０１２６】
これに対して、図１０（Ｂ）から分かるように、文字間隔算出部２２６が算出した算出結果に基づいて実際に描画する文字描画位置を修正することで、実際に使用する文字サイズに応じて描画位置を順次変更して（適正サイズで広げて）描画するので、文字重なりを避けることができる。ただし、この場合、描画文字ピッチを広げた分だけ、尻切れの状態が助長される。
【０１２７】
この問題を避けるには、描画状態修正部２２８は、図１０（Ｂ）に示した描画態様に限らず、所定の条件に基づいて、さらに描画位置を修正してもよい。たとえば、文字描画位置変更部２２９は、文字間隔算出部２２６が算出した文字間隔が基準値よりも小のとき、横書きの場合は横方向に、縦書きの場合は縦方向に、今回の描画文字の文字描画位置を変更する。図１０（Ｃ）は、その一例を示している。
【０１２８】
文字間隔算出部２２６が算出した２文字目の開始位置の値はｘ１１になるので、「文字間隔算出部２２６が算出した文字間隔が基準値よりも小」であるのか否かに基づいて、描画位置を元の位置のものを使用するか否かを制御する。具体的には、その文字が本来ページ内でレイアウトされる位置より右（横書きの場合）あるいは下（縦書きの場合）に飛び出してないかどうかを文字単位で判別し、必要に応じて（「基準値よりも小のとき」に相当）描画位置を元の位置に戻すことで飛出しが生じないようにする。
【０１２９】
たとえば、図１０（Ｃ）に示すように、文字描画位置変更部２２９は、計算した１つ前に描画された文字位置を（ｘ１ｎ−１，ｙ１ｎ−１）とし、元々指定されていた文字描画位置を（ｘ０ｎ，ｙ０ｎ）としたとき、横書きであれば、ｘ０ｎ≧ｘ１ｎ−１であれば元々の文字描画位置（ｘ０ｎ，ｙ０ｎ）の位置へ描画し、ｘ０ｎ＜ｘ１ｎ−１であれば、計算された１つ前に描画された文字位置（ｘ１ｎ−１，ｙ１ｎ−１）へ描画する。
【０１３０】
図示しないが、縦書きであれば、ｙ０ｎ≧ｙ１ｎ−１であれば元々の文字描画位置（ｘ０ｎ，ｙ０ｎ）の位置へ描画し、ｙ０ｎ＜ｙ１ｎ−１であれば、計算された１つ前に描画された文字位置（ｘ１ｎ−１，ｙ１ｎ−１）へ描画する。指定された文字サイズよりも大きな文字サイズのフォントを近似フォントとして使用する場合には、常にｘ０ｎ≧ｘ１ｎ−１あるいはｙ０ｎ≧ｙ１ｎ−１を満たすとは限らず、所定の文字順以降は、常にｘ０ｎ＜ｘ１ｎ−１あるいはｙ０ｎ＜ｙ１ｎ−１を満たすようになる。図示した例では、５番目以降の文字からｘ０ｎ＜ｘ１ｎ−１を満たす。
【０１３１】
このように、ｘ０ｎ≧ｘ１ｎ−１あるいはｙ０ｎ≧ｙ１ｎ−１を満たすか否かに応じて実際の文字描画位置を修正することで、概ね元の描画位置に描画するようになり、文字重なりが生じるものの、尻切れの状態を解消することができる。
【０１３２】
なお、ｘ０ｎ＜ｘ１ｎ−１の場合に、計算された１つ前に描画された文字位置（ｘ１ｎ−１，ｙ１ｎ−１）へ実際の文字描画位置を修正するのは、視認性を良くする目的で拡大縮小を行なわなかったために発生する文字のページ内レイアウト変化を防いで、より良く元のページレイアウトを保つためである。
【０１３３】
図１０（Ｃ）に示す例では、文字単位に尻切れを起こしていて異常に見えるが、文字を本来よりも大きく書いてそのまま見栄え良くつないだ場合は図１０（Ｂ）のように文字列の右の方にさらに大きな尻切れ（この例では５文字目が表示されていない）あるいはその文字列の右にある非常に重要な表示部分を覆い隠すという結果にもなり兼ねない。そのような事態を防ぐために、文字単位での尻切れや重なりを許している。個々の文字については重なりによって品質の低い出力となるが、このような品質の低い状態であっても、たとえば「□□□」のように文字として何が書かれている分らなくても「何か文字が３文字表示されている」と認識できるだけで十分意味がある場合も多く、図１０（Ｃ）のように表示される事で、この特許の全ての利点を否定しているとは思えません。
【０１３４】
また、処理対象の文字列はピッチと文字の大きさが元から奇麗に見えるように並んでいるとは限らず、元からピッチが広く空きすぎているもの、あるいは不自然にピッチが詰まっているものなど、世の中のドキュメントの中には多数のいびつな文字の大きさとピッチの関係が存在する。元々の文字に隙間がある場合は、本来よりも大きい文字を書いてもピッチはそのままにできるし、文字が元々重なって表示されている場合には、本来よりも小さい文字にしてもピッチはそのままでも問題がないという場合もある。
【０１３５】
あるいは、１つの文字列に縮小あるいは拡大がどちらか一方しか含まれていないことに限定することはできず、実際は１つの文字列に拡大と縮小が混在しているものもある。この場合は、文字列の最初の部分で文字を小さくしてピッチを詰めた分、後の方の文字列で文字を大きくした場合にピッチをつめなくて良いというような良好な結果が得られる。
【０１３６】
つまり、図９や図１０の例では、文字列の最初でも後の方でも常に条件式を同じように満たしてしまうが、一般的にはそうとは言い切れない。この点からも、本実施形態のように、元の表示位置と計算後の描画位置を比べ、「計算値が基準値（元の指定位置）よりも座標が小さい（左にある／上にある）」という判断条件式を含むことによって、その結果に基づいて実際の描画位置を修正することで、右にはみ出すことなく、かといってはみ出すのを制するあまりに文字ピッチの文字列内のレイアウトが必要以上に崩れることを防ぐことができ、全体として、良好な出力結果が得られるようになる。
【０１３７】
＜文字描画処理制御部の動作の詳細＞
図１１は、文字描画処理制御部２０における具体的な処理手順の一例を示すフローチャートである。先ず、ＣＰＵ１０は、ホストコンピュータ装置８からネットワーク９を介して画像出力制御装置２に送られてきた電子ドキュメントを、一旦ＲＡＭ４０上のドキュメント記憶領域に保持する。そして、描画展開処理部１２は、所定のタイミングで、描画コマンドを解釈し、その結果に基づいて、図形描画処理部１６とラスタイメージ描画処理部１８にて、ページバッファ４４へラスタデータとして描画する。このとき、図形描画処理部１６およびラスタイメージ描画処理部１８は、グラフィックスやラスタイメージをラスタデータへ変換することで描画する。以下、具体的に説明する。
【０１３８】
先ず、文字描画命令処理部２２は、フォント指定命令か文字列描画命令かを判定する（Ｓ３００）。フォント指定命令であったら（Ｓ３００−ＹＥＳ）、書体選択部２６は、前述の図６に示した手順に従って、そのフォント指定に応じた書体を選択し（Ｓ３０２）、選択した書体をカレントフォントとしてＲＡＭ４０の所定の記憶領域に登録しておく（Ｓ３０４）。
【０１３９】
また、文字描画命令処理部２２は、文字列描画命令の場合（Ｓ３００−ＮＯ）、カレントフォントにフォントの置換が発生しているか否かを判定する（Ｓ３１０）。フォント置換が発生していないなら（Ｓ３１０−ＮＯ）、文字描画命令処理部２２は、文字コードを取得し、これをビットマップイメージ生成部２４に設定する（Ｓ３１２）。ビットマップイメージ生成部２４は、書体選択部２６により選択・設定されたカレントフォントを用いて、フォントデータ記憶領域３４より文字コードに対応するフォントデータを得て、その文字コードに対応する文字のビットマップイメージを生成し、生成したビットマップイメージをＲＡＭ４０のビットマップ領域４８に格納する（Ｓ３１４）。この際、ビットマップイメージ生成部２４は、必要に応じて、文字サイズ、傾斜、回転などに関する情報を用いてビットイメージへの展開を実行し、ビットマップイメージを生成する。
【０１４０】
文字描画命令処理部２２は、ビットマップイメージ生成部２４にて生成されたビットマップイメージをビットマップ領域４８から読み出して、ページバッファ４４の所定位置へ描画する（Ｓ３１６）。この際、文字描画命令処理部２２は、描画した文字の描画位置と文字幅をＲＡＭ４０の所定の記憶領域に保存しておく。
【０１４１】
続いて、文字描画命令処理部２２は、文字列内の全ての文字の描画が終了したか否か判定する（Ｓ３１８）。そして、終了していないならば（Ｓ３１８−ＮＯ）、文字描画命令処理部２２とビットマップイメージ生成部２４は、ステップＳ３１２〜Ｓ３１６の処理を繰り返す。一方、終了したならば（Ｓ３１８−ＹＥＳ）、文字描画処理制御部２０は、文字描画命令処理を終了する。
【０１４２】
これに対して、フォント置換が発生していたならば（Ｓ３１０−ＹＥＳ）、先ず、文字描画命令処理部２２は、置換前のフォント情報（フォント指定命令として指定された情報）と、置換が発生したという情報をＲＡＭ４０の所定の記憶領域に登録しておく（Ｓ３２０）。この後、文字描画命令処理部２２は、各々の文字に対する拡縮率を算出し（Ｓ３２２）、全ての文字について、算出した拡縮率を拡縮率テーブル４６（図４参照）としてＲＡＭ４０に登録しておく。
【０１４３】
文字描画命令処理部２２は、拡縮率テーブル４６を生成した後、図形描画命令解釈部１４から文字コードを取得し、さらに、拡縮率テーブル４６から、今描画する文字の、置換前のフォント情報や属性情報（すなわちフォント指定命令）と、文字コードに合致する拡縮率テーブル４６に登録されている拡縮率Ｌ１とを取得し、それらをビットマップイメージ生成部２４に設定する（Ｓ３２４）。
【０１４４】
これを受けてビットマップイメージ生成部２４は、書体選択部２６により選択・設定されたカレントフォントを用いて、フォントデータ記憶領域３４より文字コードに対応するフォントデータを得て、その文字コードに対応する文字のビットマップイメージを生成を生成する（Ｓ３２６）。
【０１４５】
この際、フォント変形実行指定部２８で指定された状態（図７参照）に基づいて拡大縮小処理を行なうか否かを判断して、指示があるときにのみ対応する拡大縮小処理を行なう。具体的には、ビットマップイメージ生成部２４は、ビットマップイメージを生成する際に必要な文字サイズをステップＳ３２６で取得した拡縮率Ｌ１で修正して、実際の拡縮率Ｌ２を求める。
【０１４６】
ここで、拡縮率Ｌ１は、最初に表示するべくドキュメントに指示されているフォントをどれだけ拡縮すれば正しい大きさに出るかを表わす値である。この拡縮率Ｌ１は、元のフォントがアウトラインフォントであっても概念的な倍率は存在する。一方、拡縮率Ｌ２は、近似フォントへのフォント置換後に、近似フォントをどれだけ拡大すれば正しい画像が得られるかを表わしている。拡縮を行なわないとき拡縮率Ｌ２が１．０になる。
【０１４７】
フォント置換が発生すると、基本的には（例外もあるが）、拡縮率Ｌ１と拡縮率Ｌ２は変化するので、置換が起こった後に拡縮率Ｌ１を使うと正しい大きさの文字が得られない。拡縮率テーブル４６に登録してある拡縮率Ｌ１を修正して拡縮率Ｌ２を求めて、計算した拡縮率Ｌ２を用いて拡大縮小を行なうことにより、正しい大きさの文字を得ることができるようになる。
【０１４８】
また、文字描画命令処理部２２は、ステップＳ３２６では、文字の拡大処理や縮小処理（すなわち変倍処理）の他に、必要であれば太文字化処理や斜体化処理を行なってもよい。この際も、フォント変形実行指定部２８で指定された状態（図７参照）に基づいて太文字化処理や斜体化処理を行なうか否かを判断して、指示があるときにのみ対応する処理を行なう。
【０１４９】
次に、ビットマップイメージ生成部２４は、生成したフォントのビットマップイメージをＲＡＭ４０のビットマップ領域４８に格納する。
【０１５０】
文字描画命令処理部２２は、ビットマップイメージ生成部２４により生成されたフォントのビットマップイメージをビットマップ領域４８から読み出して、ページバッファ４４の指定位置へ描画する（Ｓ３４０）。
【０１５１】
この際、文字描画命令処理部２２は、フォント変形実行指定部２８で指定された状態（図７参照）を参照し、拡縮されていないのであれば、図９（Ｂ）や図１０（Ｂ）に示したように、１つ前に描画された文字の位置（ｘ１＠，ｙ１＠）とその文字の幅ｈｘ１，ｈｙ１から、たとえば横書きの場合は（ｘ１＠＋ｈｘ１，ｙ１＠）あるいは（ｘ１＠＋ｈｘ１＋ｘｃ，ｙ１＠）、縦書きの場合は（ｘ１＠，ｙ１＠＋ｈｙ１）あるいは（ｘ１＠，ｙ１＠＋ｈｙ１＋ｙｃ）というように、文字描画位置を求める（Ｓ３３２）。拡縮されている場合は、その文字の幅として拡縮後の文字幅を使用すればよい。
【０１５２】
続いて、文字描画命令処理部２２は、今描画する文字の位置と求められた文字描画位置を比較し（Ｓ３３４）、求められた文字描画位置に不都合がなければ（Ｓ３３２−ＹＥＳ）、求められた文字描画位置にてページバッファ４４へ文字を描画する（Ｓ３３６）。
【０１５３】
求められた文字描画位置に不都合がある場合（Ｓ３３２−ＮＯ）、文字描画命令処理部２２は、図９（Ｃ）や図１０（Ｃ）に示したようにして、ｘ０ｎ≧ｘ１ｎ−１あるいはｙ０ｎ≧ｙ１ｎ−１を満たすか否かに応じ、実際の文字描画位置を修正する（Ｓ３３８）。
【０１５４】
次に、文字描画命令処理部２２は、前述の拡縮率Ｌ２を元に指定位置を修正し（Ｓ３３９）、ページバッファ４４へ修正後の指定位置にて描画する（Ｓ３４０）。続いて、文字描画命令処理部２２は、描画した文字の描画位置と文字幅をＲＡＭ４０の所定の記憶領域に保存しておく。
【０１５５】
ここで、「拡縮率Ｌ２を元に指定位置を修正」する意義を説明すると以下の通りである。先ず、文字描画を行なうときには、図３（Ｂ）に示したように、文字の左下（ぐらい）の描画開始位置を基準に文字を書く。しかし、この描画開始位置の基準は、実際の機械の文字データのビットマップデータが格納される位置とは異なることがある。具体的には、左上位置を基準にビットマップデータが格納されていることがあり、この場合、奇麗な並びで文字が出るように描画開始位置にオフセットを加えて正しいビットマップデータの左上座標を計算しなければならない。
【０１５６】
このときに、データの中に格納されている調整座標値(この値はフォントのデータ部には示していない)と拡縮率Ｌ２を積算して、その値を基準位置に加算することで、最終的なメモリ内の位置を得る。
【０１５７】
この処理は、拡縮を行なうか、行なわないかに関わらず共通の処理になる。拡縮を行なわないときは拡縮率Ｌ２が１．０になる。たとえば、図７の「Ｆｏｎｔの拡大縮小を実行する」の画面でチェックを入れたときと、入れないときの違いは、実際には「Ｆｏｎｔの拡大縮小を実行する」がチェックされていない場合には計算する最終的な倍率であるＬ２を１．０に固定する（１．０倍にする＝拡縮を行なわない）ことで処理が実現される。
【０１５８】
この後、文字描画命令処理部２２は、文字列内の全ての文字の描画が終了したか否か判定する（Ｓ３４２）。そして、終了していないならば（Ｓ３４２−ＮＯ）、文字描画処理制御部２０は、ステップＳ３２４〜Ｓ３２８の処理を繰り返す。一方、終了したならば（Ｓ３３０−ＹＥＳ）、文字描画処理制御部２０は、文字描画命令処理を終了する。
【０１５９】
以上、説明したように、上記実施形態の画像出力制御装置２の構成およびその処理手順に依れば、任意のフォントを特定する情報とそのフォントの属性情報を元にしたフォントの使用要求に対応して、それぞれ書体が異なる複数フォントの中から所望の書体のフォントを選択し、選択したフォントを用いて、文字コードと文字描画位置情報を元に文字を出力するに際して、先ず、拡縮、太文字化、斜体化などのフォント変形を実行するか否かや、置換候補の近似フォントの選択範囲を、ユーザが指定することを可能に構成した。
【０１６０】
このことにより、ユーザの希望に応じて、指定されたフォントを別のフォントに置換して描画することを抑制して、視認性のよい文字表示とレイアウト通りの文字表示を両立させることができるようになった。常に予め決められた条件でフォント変形する、あるいは常に装置で定められているフォント置換の条件で置換するのではないので、フォント変形やフォント置換をするか否かや、変形や置換をする際にはその条件をユーザの好みに応じて自由に指定することができ、使い勝手がよい。
【０１６１】
また、指定されたフォントを別のフォントに置換して描画することを抑制することで、フォントの拡大縮小処理に代表されるフォント変形処理が頻繁に発生することを抑えることができるから、出力パフォーマンスに悪影響を与えることもない。
【０１６２】
なお、上記実施形態では、太文字化や斜体化のないフォントが指定されているい場合、近似フォントとしては、太文字化や斜体化のないフォントを近似フォントとして選択するものとし、たとえば、図７では、太文字化されていないフォントに対しての太文字化や斜体化されていないフォントに対しての斜体化の可否をユーザより受け付けるようにしていたが、これに限らず、太文字化されているフォントに対しての細字化や斜体化されているフォントに対しての正立化の可否をユーザより受け付けるようにしてもよい。
【図面の簡単な説明】
【０１６３】
【図１】本発明に係る画像出力制御装置の一時実施形態を備えた画像処理システムの概要を示す図である。
【図２】画像処理システムを構成する、画像出力制御装置の詳細な構成例を示すブロック図である。
【図３】電子ドキュメントに含まれている文字描画命令を説明する図である。
【図４】ＲＡＭに登録される拡縮率テーブルの一例を説明する図である。
【図５】フォントデータの一例を示す図である。
【図６】書体選択部の処理手順の詳細例を示すフローチャートである。
【図７】フォント変形実行指定部が利用するＧＵＩの一例を示す図である。
【図８】文字描画命令処理部の詳細構成例を示すブロック図である。
【図９】文字描画状態修正処理の概要を示す図である。（小サイズの近似フォントを使用の場合）
【図１０】文字描画状態修正処理の概要を示す図である。（大サイズの近似フォントを使用の場合）
【図１１】文字描画処理制御部における具体的な処理手順の一例を示すフローチャートである。
【図１２】従来のフォント置換における出力結果の問題点を説明する図である。
【符号の説明】
【０１６４】
１…画像処理システム、２…画像出力制御装置、３…本体、４…ディスプレイ、５…キーボード、６…マウス、７…プリンタ、８…ホストコンピュータ装置、９…ネットワーク、１０…ＣＰＵ、１２…描画展開処理機能部、１４…図形描画命令解釈部、１６…図形描画処理部、１８…ラスタイメージ描画処理部、２０…文字描画処理制御部、２２…文字描画命令処理部、２４…ビットマップイメージ生成部、２６…書体選択部、２８…フォント変形実行指定部、３０…ＲＯＭ、３２…プログラム記憶領域、３４…フォントデータ記憶領域、４０…ＲＡＭ、４２…ドキュメント記憶領域、４４…ページバッファ、４６…拡縮率テーブル、４８…ビットマップ領域、５０…ディスプレイＩ／Ｆ部、５２…入力Ｉ／Ｆ部、５４…プリンタＩ／Ｆ部、７０…ネットワークＩ／Ｆ部、８０…内部バス、２２２…描画文字状態特定部、２２４…文字間状態予測部、２２６…文字間隔算出部、２２８…描画状態修正部、２２９…文字描画位置変更部
【図１】
2005111718.tif 000003
【図２】
2005111718.tif 000004
【図３】
2005111718.tif 000005
【図４】
2005111718.tif 000006
【図５】
2005111718.tif 000007
【図６】
2005111718.tif 000008
【図７】
2005111718.tif 000009
【図８】
2005111718.tif 000010
【図９】
2005111718.tif 000011
【図１０】
2005111718.tif 000012
【図１１】
2005111718.tif 000013
【図１２】
2005111718.tif 000014