(57)【要約】      （修正有）【課題】イメージ化された文字についてのみ検索用の文字コードを、透明色で埋め込み、イメージ化されていない文字については、埋め込まない、ことにより検索が効率化され、ＯＣＲを行うための画像データの取得が不要となる文書生成装置、文書生成アプリケーションおよびプリンタドライバを提供する。【解決手段】文字がイメージ化されるかを判定し、イメージ化される場合には、透明色でイメージ化された文字と同じ描画位置に文字描画を行う。【選択図】図２
2011018201.tif 000002
【特許請求の範囲】
【請求項１】
文書の生成を行う文書生成装置であって、文字の描画を指示する文字描画指示手段と、前記指示を受けて文字を描画する文字描画手段と、文字がイメージ化されたかどうかを判定する文字イメージ化判定手段と、イメージ化された文字の描画位置を取得する描画位置取得手段と、イメージ化された文字の文字コードを取得する文字コード取得手段と、描画する際の文字色を透明色に設定する描画文字色設定手段と、前記取得した文字コードを前記取得した描画位置に前期設定した透明色で描画する透明文字描画手段と、を含む文書生成装置。
【請求項２】
イメージ化された文字が合成文字かどうかを判定する合成文字判定手段と、合成文字の中の基底文字を取得する規定文字取得手段と、合成文字の中の結合文字を取得する結合文字取得手段と、前記取得した基底文字を前記描画位置に描画する基底文字描画手段と、前記取得した結合文字を前記描画位置に重ねて描画する結合文字描画手段と、をさらに含むことを特徴とする請求項１に記載の文書生成装置。
【請求項３】
合成文字の正規結合が可能かどうかを判定する正規結合判定手段と、合成文字を正規結合する正規結合手段と、正規結合した文字を前記描画位置に描画する正規結合文字描画手段と、をさらに含むことを特徴とする請求項２に記載の文書生成装置。
【請求項４】
合成文字を描画した際、実際に文字が合成されて描画されるかどうかを判定する合成結果判定手段と、基底文字の文字幅を取得する基底文字幅取得手段と、をさらに含み、結合文字描画手段は、結合文字を前記取得した基底文字幅分ずらして描画する結合文字描画手段であることを特徴とする請求項２ないし請求項３に記載の文書生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書生に検索用の機能を埋め込む技術に関する。
【背景技術】
【０００２】
従来より、帳票等の文書をＰＤＦ等の電子文書として生成し、印刷するシステムが存在する。代表的な例として、保険代理店向けの証明書発行システムがあげられる。このシステムでは、各代理店からの要求に応じて本社のサーバで証明書を生成し、代理店へ配信し、印刷する。サーバにおいてＰＤＦなどの文書を生成する方法としては、文書生成アプリケーションからプリンタドライバを操作してファイルを生成する方法が一般的である。ＰＤＦの場合は、文書生成アプリケーションが、ＰＤＦ用プリンタドライバに描画命令を送信し、プリンタドライバがその命令に従って文字や図形を描画することでファイルが生成される。
【０００３】
このように、文書生成アプリケーションとプリンタドライバの組み合わせにより文書生成が行われるが、様々な要因により、プリンタドライバでの文字描画時に、文字がイメージ化される場合がある。
【０００４】
イメージ化について説明する前に、まず、電子文書内での通常の文字表現について説明する。通常、生成された電子文書内の文字は、文字コードとフォントによって表現される。文字コードは、ある１つの文字を表す数値である。例えば、Ｕｎｉｃｏｄｅのコード体系では「あ」という文字の文字コードは「３０４２（１６進数）」である。フォントは、サイズや色、書体、文字の形状など、体裁を決定する情報である。例えば「あ」という文字がどのような形状かがフォントに定義されている。フォントは各国語を意識した作りになっていることが多く、「あ」という文字が登録されていない欧文用のフォントも存在する。このフォントで、文字コード「３０４２（１６進数）」を表示しようとした場合、文字の形状が見つけられないため「あ」が「・（中点）」などに文字化けしてしまう。これは、指定したフォントに文字が定義されていないことが原因となる文字化けである。
【０００５】
一方、指定したフォントが文書を表示・印刷する環境に存在しないことが原因となる文字化けもある。以下、それについて説明する。通常、文書内には、ある文字をどのフォントで描画するかの指定だけが格納されている。各文字の高さや幅といった形状の情報を保持しているフォント自体は、オペレーティングシステムにデータとして配置されており、文書の表示や印刷を行う際には、その配置されているフォントが使用される。このため、文書内で指定されたフォントが、文書を表示・印刷するＰＣの環境に存在しない場合、文字の形状が取得できないため描画ができず文字化けが発生する。文書を表示・印刷するアプリケーションによっては、環境にフォントが存在しない場合、代替フォントを使用するものもあるが、指定したフォントとは別のフォントが自動的に選択されるため意図しない結果となることが多く、根本的に問題は解決しない。
【０００６】
以上で述べた文字化けの問題を解決するために、従来より、文字のイメージ化という手法がとられている。文字のイメージ化は、文書内の文字を、文字コードとフォントで表現するのではなく、ビットマップなどの画像イメージで表現する方法である。文書生成アプリケーションとプリンタドライバで文字を描画する際、指定された文字コードとフォントの情報を使って文字の形状を画像化し、文書内に埋め込む。文書生成環境に指定のフォントが存在すれば、文字をイメージ化する事ができる。文書を表示・印刷する環境に指定のフォントがない場合でも文字化けが発生しないため、環境によらず同じ表示・印刷結果を得る事が出来る。文字をイメージ化する条件は、文書生成アプリケーションやプリンタドライバの仕様によって決定される。例えば、一部の特殊なフォントを指定した場合や、ライセンスの問題で文書内にフォントを埋め込むことの出来ないフォントを指定した場合に文字がイメージ化される仕様のプリンタドライバが存在する。
【０００７】
このように、文字のイメージ化によって、どんな環境でも同様の表示・印刷結果を得られるというメリットがある。しかし、文字のイメージ化は別の問題を生み出している。それは、文書の内容を検索する際、イメージ化された文字が検索対象にならないという問題である。通常、文書内の文字の検索は、文書内に埋め込まれた文字コードを頼りに行われる。つまり「あ」という文字を検索する場合、検索ダイアログに入力された「あ」という文字の文字コードと、文書内に格納された文字コードを順に比較することで検索が行われる。文字がイメージ化されている場合には、文字コードが存在しないため検索対象とする事が出来ない。
【０００８】
この問題を解決するために、従来では、画像データをＯＣＲした結果を文書に埋め込むしか方法がなかった（例えば、特許文献１を参照）。すなわち、まず、いったん印刷したデータをスキャンしたり、表示画面をキャプチャしたりする等の方法で画像データを作成していた。その後、その画像データをＯＣＲしてテキストデータを取得し、取得したテキストデータの文字コードを、文書のイメージ化された文字の位置に透明色で埋め込むという方法が取られていた。文字コードを透明色で埋め込むことで、表示に影響を与えずに、イメージ化された文字を検索対象とする事が出来る。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００４−２８０５１４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述した従来の技術では、いったん画像データを取得する手間があった。また、ＯＣＲしてテキストデータを取得するため、データの信憑性が低下するという問題があった。このため、証明書等の帳票では従来の手法が用いられることはなかった。また、従来の技術では、スキャン等で得た画像全体に対してテキストデータの取得を行い、文書に埋め込むため、もともとの文書でイメージ化されていない文字についても検索用の文字コードが埋め込まれてしまい、非効率であった。本提案では、これらの問題を解決する。
【課題を解決するための手段】
【００１１】
上述した課題を解決するために、本発明は、文書の生成を行う文書生成装置であって、文字の描画を指示する文字描画指示手段と、前記指示を受けて文字を描画する文字描画手段と、文字がイメージ化されたかどうかを判定する文字イメージ化判定手段と、イメージ化された文字の描画位置を取得する描画位置取得手段と、イメージ化された文字の文字コードを取得する文字コード取得手段と、描画する際の文字色を透明色に設定する描画文字色設定手段と、前記取得した文字コードを前記取得した描画位置に前期設定した透明色で描画する透明文字描画手段と、を有することを特徴とする。
【発明の効果】
【００１２】
本発明によって、イメージ化された文字を検索対象とする際にかかる手間が軽減される。すなわち、ＯＣＲを行う必要がないため、ＯＣＲを行うための画像データの取得が不要になる。また、文書に埋め込む検索用の文字コードは、ＯＣＲによって画像から取得するのではなく、文書生成アプリケーションまたはプリンタドライバが保持している文字コードをそのまま使用するため、データの誤認はなくなる。また、イメージ化された文字についてのみ検索用の文字コードを埋め込むため、処理が効率化される。
【図面の簡単な説明】
【００１３】
【図１】ブロック図
【図２】実施例１の流れを示すフローチャート
【図３】実施例１で生成されたＰＤＦ文書の内部を示した概念図
【図４】実施例１で生成されるＰＤＦ文書の一例を示す図
【図５】合成文字とは何かを説明するための図
【図６】合成文字を出力したＰＤＦ文書の一例を示す図
【図７】実施例１の方法で、検索用の文字コードをＰＤＦに埋め込んだ場合の概念図
【図８】実施例２の流れを示すフローチャート
【図９】実施例２で生成されるＰＤＦ文書の一例を示す図
【図１０】正規結合とは何かについて示した概念図
【図１１】実施例３の流れを示すフローチャート
【図１２】実施例３で生成されるＰＤＦ文書の一例を示す図
【図１３】文字が合成されないでイメージ化される例を示す図
【図１４】文字が合成されないでイメージ化された場合に実施例２の処理を行った結果を示す図
【図１５】実施例４の流れを示すフローチャート
【図１６】実施例４で生成されるＰＤＦ文書の一例を示す図
【発明を実施するための形態】
【００１４】
（実施例１）
図１は本発明を実施するためのハードウェアの構成を示したブロック図である。文書生成サーバ１１は、帳票等の電子文書を生成するサーバであり、文書生成部１２と描画実行部１３とから構成される。文書生成部１２は、文書生成を制御する部分で、例えば文書生成アプリケーションである。描画実行部１３は、文書生成部１２からの指示を受け実際に文書の描画処理を行う部分で、例えばＰＤＦ用のプリンタドライバである。文書生成サーバ１１は、ＣＰＵおよびメモリ等からなる。本発明を実施するプログラムはメモリに格納されており、ＣＰＵにロードされることで実行される。
【００１５】
図２は本発明の実施の形態を示したフローチャートである。文書生成部１２と描画実行部１３が連携し、イメージ化された文字の検索用文字コードを埋め込む処理の流れを示したものである。
【００１６】
ステップ２０１において、文書生成部１２は、描画実行部１３に対して文字の描画を指示する。例えば、オペレーティングシステムはＷｉｎｄｏｗｓの場合、この指示はＧＤＩ（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）という命令によって実現される。この時、描画する文字の文字コードと描画位置が一緒に渡される。
【００１７】
ステップ２０２において、描画実行部１３は、文書生成部から送信された文字描画の指示に従って、文字を描画する。ＰＤＦ用のプリンタドライバの場合、この文字描画処理によって、文字を表現する情報をＰＤＦファイル内に埋め込む。文字を表現する情報は、先に述べた条件によって、文字コードとフォントの組み合わせだったり、イメージデータだったりする。また、本実施例では、この時点で文書全体の文字描画処理が終了するものとする。すなわち、描画実行部１３によるＰＤＦ文書の生成はこのステップ２０２で終了する。以後、検索用の文字コードをＰＤＦに埋め込む処理は文書生成部１２側で実施される。
【００１８】
ステップ２０３において、描画実行部１３は、文字がイメージ化されたかどうかを検知する。文字をイメージ化するかどうかは描画実行部１３自体が制御しているため、イメージ化されたかどうかの検知が可能である。
【００１９】
ステップ２０４において、描画実行部１３は、ステップ２０３で検知した、文字がイメージ化されたかどうかの結果を、文書生成部１２に対して送信する。送信の方法は何でも良い。文書生成部１２および描画実行部１３がそれぞれプロセスの場合は、メッセージやソケット、パイプ等のプロセス間通信を用いても良い。また、一時ファイルに検知結果を書き込んでやり取りする方法でも良い。また、イメージ化された文字が複数ある場合は、それらの情報を纏めて送信する。さらに、本実施例では、イメージ化された文字の描画位置および文字コードも合わせて送信するものとする。描画位置及び文字コードは、ステップ２０２で、描画実行部１３が文書生成部１２から受け取ったものである。
【００２０】
ステップ２０５において、文書生成部１２は、描画実行部１３から送信されたイメージ化された文字に関する情報を受信する。
【００２１】
ステップ２０６において、文書生成部１２は、ステップ２０５で受信した情報を元に、各文字がイメージ化されたかどうかを判定する。
【００２２】
ステップ２０６で、文字がイメージ化されていないと判定された場合には、処理を終了する。
【００２３】
ステップ２０６で、文字がイメージ化されたと判定された場合には、ステップ２０７において、文書生成部１２は、イメージ化された文字の描画位置を取得する。描画位置は、ステップ２０４において描画実行部１３から送信されたものを利用する。
【００２４】
ステップ２０７において、文書生成部１２は、イメージ化された文字の文字コードを取得する。文字コードは、ステップ２０４において描画実行部１３から送信されたものを利用する。
【００２５】
ステップ２０８において、文書生成部１２は、描画時の文字色を透明に設定する。検索用の文字コードを埋め込む際、通常の文字色で埋め込むと、表示や印刷をした際、イメージで埋め込まれた文字と重なってしまい、結果が汚くなる。これは、検索用の文字コードを描画する際、フォントは任意のため、イメージ化された文字の描画で指定されたフォントと異なる場合があり、描画結果が完全に重ならないことがあるためである。本実施例では、検索用の文字コードを描画する際のフォントは「ＭＳゴシック」とする。これを防止するため、本ステップで文字色を透明に設定する。
【００２６】
ステップ２１０において、文書生成部１２は、イメージ化された文字の文字コードをイメージ化された文字の描画位置に重ねて描画する。描画一及び文字コードはステップ２０７およびステップ２０８で取得したものを使う。また、描画する際のフォントはＭＳゴシックとする。
【００２７】
以上の処理によって、イメージ化された文字の検索用文字コードが透明色で埋め込まれたＰＤＦ文書が生成される。
【００２８】
図３は、図２の処理で生成されたＰＤＦ文書の内部を示した概念図である。ＰＤＦでは、あらかじめ定義された描画命令を羅列することによって描画を実現している。例えば、「Ｔｊ」という命令で文字の描画を指示する。３０１〜３０３は、検索用の文字コードを透明色で描画している部分を示したものである。３０１で文字色を透明に設定している。「Ｔｔ」は文字色を設定する命令である。３０２で文字の描画位置を設定している。「Ｔｄ」は文字の描画位置を設定する命令である。３０３で「い」という文字を描画している。「Ｔｊ」は文字を描画する命令である。
【００２９】
図４は、図２の処理で生成されたＰＤＦ文書を、表示用アプリケーション等で表示した際の状態を示した図である。ＰＤＦ文書４０１には、「あいう」という文字列が表示されている。「い」がイメージ化された文字とする。イメージ化された文字「い」の描画位置に重なって透明色で「い」が描画されている（４０２）。これにより、文字がイメージ化された場合でも文字「い」が検索対象に含まれるようになる。検索文字列として、「あいう」を指定した場合、ヒットするようになる。
【００３０】
（実施例２）
実施例１では、通常の文字がイメージ化される場合に、検索用の文字コードを透明色で埋め込んで検索可能にする例を示した。実施例２では、合成文字がイメージ化される場合について例を示す。
【００３１】
図５は、合成文字とは何かを説明するための図である。Ｕｎｉｃｏｄｅには合成文字という概念がある。これは、１つの文字を複数のパーツの組み合わせで表現する方法で、Ｕｎｉｃｏｄｅの仕様として定義されている。例えば、「は」「゜」というそれぞれの文字がＵｎｉｃｏｄｅには定義されている。文字コードは１６進数で「３０６Ｆ」「３０９Ａ」となる。これらの２つのコードを羅列することで「ぱ」という１文字を表現する。Ｕｎｉｃｏｄｅの仕様では、「３０９Ａ」が結合文字として規定されている。結合文字とは、他の文字と組み合わせることが可能な文字のことで、他の文字に結合文字を組み合わせて合成文字を表現する。一方、「は」のように、結合される側の文字を基底文字という。日本語の「ぱ」に関しては、合成文字として「３０６Ｆ」「３０９Ａ」のように表現する方法だけではなく、「ぱ」という１つの文字コードとしても定義されている（１６進数で３０７１）。合成文字としての表現「は」「゜」から１つの文字としての表現「ぱ」に変換する処理を正規結合、逆に、１つの文字から合成文字に分解する処理を正規分解という。合成文字は、日本語の「ぱ」のように合成後の文字が別途定義されている場合には存在意義が薄い。本来、ラテン文字に付加するダイアクリティカルマークのように、付加する場合の組み合わせが多く、Ｕｎｉｃｏｄｅの文字テーブルに定義するのが厳しい文字の場合に効果を発揮する。ラテン文字の他に、タイ文字やハングルなどでも合成文字の仕組みを利用して各文字を表現する。
【００３２】
図５の５０１はタイ文字の基底文字の１つを示している。５０２は同じくタイ文字の結合文字のうちに１つを示している。５０３は合成後の文字のイメージを示している。この合成後の文字はＵｎｉｃｏｄｅのテーブルには定義されていない。
【００３３】
図６は、タイ語の合成文字を、文書生成部１２および描画実行部１３で出力し生成したＰＤＦ文書である。描画実行部１３の仕様によっては、合成文字はイメージ化される場合がある。図６のタイ語の合成文字はイメージ化されているものとする。
【００３４】
図７は、実施例１の方法で、検索用の文字コードをＰＤＦに埋め込んだ場合の概念図である。タイ語の合成文字の１文字目は、Ｕｎｉｃｏｄｅの文字テーブル上の２つの文字からなっているため、描画実行部１３は、何も意識しないと、１つの文字として順に描画を行う。このため、基底文字７０１および結合文字７０２のように、検索用の透明色文字が順番に描画され、結合文字７０２が２文字目のタイ語合成文字に重なってしまう。このため、検索でヒットした際のハイライトの範囲が不正になってしまう。
【００３５】
この問題を解決するために、実施例２では、イメージ化される文字が合成文字の場合、検索用の透明文字を埋め込む際に、１文字目（基底文字）の出力位置に、２文字目（結合文字）を重ねて出力する。
【００３６】
図８は、実施例２を処理の流れを示したフローチャートである。
【００３７】
実施例１と差異がある部分のみ説明する。
【００３８】
ステップ８０１において、文書生成部１２は、検索用の文字を描画する際の文字色を透明に設定する。
【００３９】
ステップ８０２において、文書生成部１２は、描画仕様としている検索用の文字が合成文字かどうかを判定する。前期の通り、合成文字は基底文字と結合文字からなる。結合文字はＵｎｉｃｏｄｅの仕様で定義されている。文書生成部１２は、このＵｎｉｃｏｄｅの仕様に基づいた、「文字コード」と「その文字が結合文字かどうか」を示すテーブルを持っており、そのテーブルを用いてある文字（列）が合成文字かどうかを判定する。文字（列）に結合文字が含まれていれば、その文字（列）が合成文字と判断できる。
【００４０】
ステップ８０２で、描画仕様としている文字が合成文字であると判定された場合には、ステップ８０３に進む。
【００４１】
ステップ８０３において、文書生成部１２は、イメージ化された合成文字の前後２つの文字コード、つまり基底文字と結合文字の文字コードを取得する。前後２つの文字コードは、描画実行部１３より送信されているものとする。
【００４２】
ステップ８０４において、文書生成部１２は、１つ目の文字（基底文字）を透明色で描画位置に描画する。
【００４３】
ステップ８０５において、文書生成部１２は、２つ目の文字（結合文字）を、基底文字と同じ位置に透明色で重ねて描画する。
【００４４】
ステップ８０２で、描画仕様としている文字が合成文字でないと判定された場合には、ステップ８０６に進む。
【００４５】
ステップ８０６において、文書生成部１２は、イメージ化された文字の文字コードを取得する。文字コードは、描画実行部から送信されているものとする。
【００４６】
ステップ８０７において、文書生成部１２は、イメージ化された文字の文字コードを描画位置に描画する。
【００４７】
図９は、実施例２で生成されるＰＤＦの一例である。９０１と９０２は、完全に重ねると下の文字が見えないため図の表現上はずらしてあるが、実際は完全に重なっている。このように、基底文字９０１と結合文字９０２を重ねて描画することによって、検索にヒットした際のハイライト表示が正常になる。
【００４８】
実施例２では、結合文字が１文字の場合で説明したが、結合文字が２文字以上の場合も同様に基底文字と重ねて描画することで問題を解決できる。
【００４９】
（実施例３）
ＰＤＦ等の文書内の文字を検索する際、検索したい文字列を指定するにあたっては、「は」「゜」といった合成文字で指定する場合も、「ぱ」という正規結合後の文字で指定する場合もある。実施例２のように、基底文字と結合文字を検索用の透明文字として埋め込んだ場合、「は」「゜」という合成文字を検索したい文字列とした場合には検索がヒットするが、「ぱ」という正規結合後の文字で検索を行った場合にはヒットしない。
【００５０】
この問題を解決するために、実施例３では、正規結合後の文字がＵｎｉｃｏｄｅに定義されている場合には、正規結合後の文字を検索用に透明文字として埋め込む例を示す。
【００５１】
図１０は、正規結合とは何かについて示した概念図である。１００１は基底文字である。１００２は結合文字である。１００３は基底文字と結合文字を合成した結果の文字で、Ｕｎｉｃｏｄｅに定義されている。基底文字１００１と結合文字１００２を、結合済みの文字１００３に置き換える処理のことを正規結合という。
【００５２】
図１１は、実施例３の処理の流れを示すフローチャートである。
【００５３】
実施例２と差異がある部分のみ説明する。
【００５４】
ステップ１１０１において、文書生成部１２は、描画しようとしている合成文字が正規結合可能かどうかを判定する。例えば、２文字の合成文字が正規結合可能かどうかは、Ｕｎｉｃｏｄｅの仕様に照らし合わせれば判定する事が出来る。本実施例では、合成文字と正規結合後の文字の組み合わせを、ファイルやデータベースなどで保持しているものとする。文書生成部１２は、保持している情報を元に正規結合可能かどうかを判定する。
【００５５】
ステップ１１０１で、合成文字が正規結合可能と判定された場合には、ステップ１１０２に進む。
【００５６】
ステップ１１０２において、文書生成部１２は、合成文字を正規合成する。具体的には、描画する文字コードの置換になる。例えば、「は」「゜」を「ぱ」二世紀合成する場合は、「３０６Ｆ」「３０９Ａ」という文字コードを「３０７１」に置き換える処理になる。
【００５７】
ステップ１１０３において、文書生成部１２は、正規合成された文字コードを透明文字で描画位置に描画する。先ほどの例で言えば、「３０７１」という文字コードを埋め込む。
【００５８】
ステップ１１０１で、合成文字が正規結合不可能と判定された場合には、ステップ１１０４に進む。以降の処理は、実施例２と同様である。
【００５９】
図１２は、実施例３で生成されたＰＤＦの一例を示す概念図である。１２０１のように、正規結合後の文字「ぱ」が透明色で埋め込まれている。これにより、検索の際「ぱ」という文字を指定した場合でも検索にヒットするようになる。
【００６０】
（実施例４）
描画実行部１３で合成文字を出力する際、文字が合成されない状態でイメージ化されてしまう場合がある。図１３は、その状態を示した概念図である。本来は、イメージ化される場合でも「ぱ」という１文字としてイメージ化されるはずだが、オペレーティングシステムやフォントの制限で文字を合成できない場合がある。この場合、合成されないままイメージ化されてしまう。
【００６１】
このような、文字が合成されないままイメージ化される場合に、実施例２と同様の方法で検索用の透明文字を埋め込むと、図１４のようになってしまう（図１４でも、都合上１４０１と１４０２の表示をずらしている）。すなわち、検索用の透明文字である基底文字１４０１と結合文字１４０２を重ねて埋め込むため、実際に表示される文字とずれてしまう。実際に表示される文字は、結合されていない合成文字のため、結合文字１４０２の位置がずれ、検索にヒットした際のハイライト表示が不正になってしまう。実施例４ではこの問題を解決する例を示す。
【００６２】
図１５は、実施例４の処理の流れを示すフローチャートである。
【００６３】
実施例３と差異がある部分のみ説明する。
【００６４】
ステップ１５０１において、文書生成部１２は、描画しようとする合成文字が描画の際に実際に合成されるかどうかを判定する。実際に合成されるかどうかはオペレーティングシステムやフォントなどの条件による。合成されるかどうかは、描画命令の戻り値として取得できる。例えば、ある文字（列）を描画しようとした場合、実際に何文字になるかが描画命令の戻り値で取得できる。
【００６５】
ステップ１５０１で、合成文字が実際に合成されると判定された場合には、ステップ１５０２に進む。以降の処理は実施例３と同じである。
【００６６】
ステップ１５０１で、合成文字が実際には合成されないと判定された場合には、ステップ１５０３に進む。
【００６７】
ステップ１５０３において、文書生成部１２は、合成文字の１つ目（基底文字）を透明文字で指定の描画位置に描画する。
【００６８】
ステップ１５０４において、文書生成部１２は、合成文字の１つ目（基底文字）の文字幅を取得する。文字幅の取得はオペレーティングシステムの機能と使って、フォントから取得することが可能である。
【００６９】
ステップ１５０５において、文書生成部１２は、合成文字の２つ目（結合文字）を、透明文字で基底文字の文字幅分ずらして描画する。
【００７０】
図１６は、実施例４で生成されるＰＤＦの一例である。合成文字が合成されないでイメージ化された場合でも、基底文字用の透明文字１６０１と結合文字用の透明文字１６０２を、それぞれ実際に描画される文字の上に重ねて埋め込むことで、検索にヒットした際のハイライト表示を正常にすることができる。
【図１】
2011018201.tif 000003
【図２】
2011018201.tif 000004
【図３】
2011018201.tif 000005
【図４】
2011018201.tif 000006
【図５】
2011018201.tif 000007
【図６】
2011018201.tif 000008
【図７】
2011018201.tif 000009
【図８】
2011018201.tif 000010
【図９】
2011018201.tif 000011
【図１０】
2011018201.tif 000012
【図１１】
2011018201.tif 000013
【図１２】
2011018201.tif 000014
【図１３】
2011018201.tif 000015
【図１４】
2011018201.tif 000016
【図１５】
2011018201.tif 000017
【図１６】
2011018201.tif 000018