(57)【要約】【課題】基幹系システムで使用している外字フォントからビットマップフォントを抽出し、変換することによって、該外字フォントをオープン系システムで利用可能とすること。【解決手段】外字データ集合体から、一定のデータ長（ｍ）毎に並び、かつ、一定増分値を有するデータ単位を順次抽出し、前記外字データ集合体を、前記の一定のデータ長（ｍ）毎に並び、かつ、一定増分値を有するデータ単位で区切り、区切られた各々をデータ長（ｍ）の外字データと見なし、該データ長（ｍ）の外字データ各々から、所定の整数をｎ（ただしｎ×ｎ＜ｍ）として（ｍ−ｎ×ｎ＋１）個の連続したデータ長（ｎ×ｎ）のデータを外字ビットマップデータ候補として抽出し、該外字ビットマップデータ候補に基づくビットマップフォントを、操作画面上に表示及び／またはオペレータによる選択を可能としている。【選択図】図３
2010197501.tif 000002
【特許請求の範囲】
【請求項１】
外字データ集合体より外字ビットマップデータを抽出する外字ビットマップデータ抽出方法であって、外字データ集合体から、一定のデータ長（ｍ）毎に並び、かつ、一定増分値を有するデータ単位を順次抽出し、前記外字データ集合体を、前記の一定のデータ長（ｍ）毎に並び、かつ、一定増分値を有するデータ単位で区切り、区切られた各々をデータ長（ｍ）の外字データと見なし、該データ長（ｍ）の外字データ各々から、所定の整数をｎ（ただしｎ×ｎ＜ｍ）として（ｍ−ｎ×ｎ＋１）個の連続したデータ長（ｎ×ｎ）のデータを外字ビットマップデータ候補として抽出し、該外字ビットマップデータ候補に基づくビットマップフォントを、操作画面上に表示及び／またはオペレータによる選択を可能としたことを特徴とする外字ビットマップデータ抽出方法。
【請求項２】
前記外字ビットマップデータ候補に関し、それらに基づくビットマップフォントのフォント枠辺縁部に存在する黒ドットの少ないものから順に、操作画面上に順次表示及び／またはオペレータによる選択を可能としたことを特徴とする請求項１に記載の外字ビットマップデータ抽出方法。
【請求項３】
前記外字ビットマップデータ候補のうち、それらに基づくビットマップフォントのフォント枠内における黒ドットの重心位置が、該フォント枠中心に近いものから順に、操作画面上に順次表示及び／またはオペレータによる選択を可能としたことを特徴とする請求項１に記載の外字ビットマップデータ抽出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外字データファイルから、個々の外字ビットマップフォントを抽出する方法に関する発明であり、また、抽出された外字ビットマップフォントを異なる処理システム上のビットマップフォントに変換する方法に関する。
【背景技術】
【０００２】
周知のように各種情報処理環境においては１バイト系、２バイト系を問わず各種の文字は文字コードで定義されることが多い。この文字コードは文字コード体系として、例えばJIS、Shift-JIS、Unicode等で規格化されている。このため、情報処理環境が異なっても、常用される多くの文字は同じ文字として認識、処理等することができる。ところが、各種情報処理環境においては、おのおのの情報処理環境に依存する、外字と呼ばれる文字が用いられることが多い。
【０００３】
これらには、地名、人名などに用いられる、常用、当用漢字にない字体の文字、ユーザなどが独自に定義した記号、ロゴ、シンボルなどがある。前述のJIS等の規格においては文字コード表の一部が外字領域として開放されていることが多く、情報処理システムメーカやユーザが自由にこの外字領域に外字を定義して使用することができるようになっている。また、基幹系システムにおいては後述の様に、独自の定義方法で外字を定義していることも多い。
【０００４】
このように外字はその情報処理環境に依存しているため、異なる情報処理環境間で文書データ、文字データを受け渡したり変換したりする場合、外字に関わるデータも同時に受け渡したり、変換を行う必要がある場合が多い。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−２１６４５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
近年、パーソナルコンピュータの能力が著しく向上したこと、並びに、ネットワーク技術が発達し、高速、大容量の情報通信が可能となったことなどから、従来大型のホストコンピュータを中心とした、いわゆる基幹系システムで行ってきた電算業務を、ネットワークで相互に接続された個々のパーソナルコンピュータやワークステーション等に分散させて行う、いわゆるオープン系システムへの移行が進んでいる。このような流れの中で、当然、基幹系システム上のデータを、オープン系システム上のデータに変換することが必要となるが、そのときに外字の変換が問題となることが多い。
【０００７】
基幹系システムでは外字はＣＯＢＯＬなどのプログラミング言語を用い、情報処理システムメーカ独自の定義方法で定義されていることが多い。このためオープン系システムへのデータ変換に当たり、基幹系システムでの外字データを解析し、個々の外字（正しくは外字ビットマップフォント）を抽出し、その上でオープン系システム上の外字フォントに変換することが必要となる。
【０００８】
ところが、基幹系システムにおける外字データの定義方法は、メーカ外には公表されていない場合が多く、ユーザなどが独自に基幹系システム上の外字データを解析し、ビットマップフォントを抽出しなければならないという問題があった。この作業は、メーカごとに異なる定義方法で定義されていることもあり、外字から試行錯誤でビットマップフォントを抽出しており、きわめて煩雑で、手間と時間がかかるという問題もあった。
【０００９】
また、別の方法において、用紙に印刷された外字の文字イメージをスキャナ等のイメージ読み取り手段によって、イメージを取得し、取得したイメージをイメージ表示手段によって表示し、表示された文字イメージの各点を指定することによって、外字を作成する手段があるが、いずれも手間と時間がかかるという問題があった。
【課題を解決するための手段】
【００１０】
上記課題を解決するため本発明においては、外字データ集合体から、一定のデータ長（ｍ）毎に並び、かつ、一定増分値を有するデータ単位を順次抽出し、前記外字データ集合体を、前記の一定のデータ長（ｍ）毎に並び、かつ、一定増分値を有するデータ単位で区切り、区切られた各々をデータ長（ｍ）の外字データと見なし、該データ長（ｍ）の外字データ各々から、所定の整数をｎ（ただしｎ×ｎ＜ｍ）として（ｍ−ｎ×ｎ＋１）個の連続したデータ長（ｎ×ｎ）のデータを外字ビットマップデータ候補として抽出し、該外字ビットマップデータ候補に基づくビットマップフォントを、操作画面上に表示及び／またはオペレータによる選択を可能とした外字ビットマップデータ抽出方法が提供される。
【００１１】
本発明の好ましい態様においては、前記外字ビットマップデータ候補に関し、それらに基づくビットマップフォントのフォント枠辺縁部に存在する黒ドットの少ないものから順に、操作画面上に順次表示及び／またはオペレータによる選択を可能とする外字ビットマップデータ抽出方法が提供される。
【００１２】
本発明の別の好ましい態様においては、前記外字ビットマップデータ候補のうち、それらに基づくビットマップフォントのフォント枠内における黒ドットの重心位置が、該フォント枠中心に近いものから順に、操作画面上に順次表示及び／またはオペレータによる選択を可能とする外字ビットマップデータ抽出方法が提供される。
【発明の効果】
【００１３】
本発明によれば、基幹系システムで使用している独自の定義方法で定義されている外字フォントからビットマップフォントを抽出し、変換することによって、該外字フォントをパーソナルコンピュータやワークステーション等のオープン系システムで利用可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明の外字ビットマップデータ抽出及び変換方法が適用される印刷システムの構成を示す図である。
【図２】外字変換における操作の流れを示す図である。
【図３】ホスト外字ファイルの一例を示す図である。
【図４】文字コードを説明する図である。
【図５】文字コード抽出フローチャート図である。
【図６】外字変換における外字ビットマップデータ候補の表示を示す図であって、図（ａ）は正しい文字イメージであり、図（ｂ）は正しくない文字イメージである。
【図７】外字ビットマップデータ抽出方法を示す図である。
【図８】別の外字ビットマップデータ抽出方法を示す図であって、図（ａ）は左右方向重心計算による場合を示し、図（ｂ）は上下方向重心計算による場合を示す。
【図９】アプリケーションソフトウェア操作パネルを示す図である。
【図１０】本実施例の印刷システムに用いる印刷用紙の一例を示す図である。
【図１１】外字フォント変換操作パネルを示す図である。
【図１２】別のアプリケーションソフトウェア操作パネルを示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の構成について添付の図面を参照しながら詳細に説明する。
【００１６】
図１は、本発明の外字ビットマップデータ抽出および変換方法が適用される印刷システムの構成を例示するものである。
【００１７】
この印刷システムは、プリンタエンジン１とコントローラ２とクライアントコンピュータ４から構成され、クライアントコンピュータ４には、本発明による外字変換アプリケーション４１とアプリケーションソフトウェア４２が備わっている。ネットワーク３はインターネット、ローカルエリアネットワーク（ＬＡＮ）等の電子通信網であり、このネットワーク３に接続されたクライアントコンピュータ４上のアプリケーションソフトウエア４２から印刷起動された印刷データが、コントローラ２とプリンタエンジン１を用いて記録媒体に印刷される。
【００１８】
また、ネットワーク３にはホストコンピュータ５が接続されている。ホストコンピュータ５は、大規模な計算処理やネットワーク全体の管理、制御処理などを集中的に行うコンピュータである。ここでは、このホストコンピュータ５が有する外字データ集合体をホスト外字ファイル６と呼ぶこととする。
【００１９】
尚、図１に示す実施例に於いて、ホストコンピュータ５の変わりに、ホスト外字ファイル６に関わる外字データを保存するハードディスクドライブ等の外部記憶装置を接続し、該外部記憶装置からホスト外字ファイル６を得るようにしても良いし、フレキシブルディスク等の容易に移動可能な記録媒体にホスト外字ファイル６を保存し、該記録媒体をクライアントコンピュータ４に入力しても良い。
【００２０】
クライアントコンピュータ４には、プリンタエンジン１にて印刷を行うためにプリンタドライバ４３が用意されている。プリンタドライバ４３はアプリケーションソフトウエア４２で作成された印刷データをプリンタ用の制御言語データに変換する機能を持ったソフトウェアである。
【００２１】
一方、コントローラ２にはスプーラ２１とプリンタコントローラ２４が用意されている。スプーラ２１はプリンタドライバ４３から出力された制御言語データを受信、保存（スプール）、処理、スケジューリング、配布などを行うダイナミックリンクライブラリ（ＤＬＬ）の集合であり、本実施例ではパーソナルコンピュータのオペレーティングシステム（ＯＳ）の一部として提供されている機能をそのまま利用している。
【００２２】
プリンタコントローラ２４はスプーラ２１から制御言語データを受信し、プリンタエンジン用のビデオデータや動作コマンドに変換してプリンタエンジン１に送信する機能を持つソフトウェアである。プリンタコントローラ２４がプリンタエンジン１の動作コマンドを送信することにより、プリンタエンジン１の動作をコントロールする。プリンタエンジン１はプリンタコントローラ２４から送信されるビデオデータを元に記録媒体に印刷する機能を持つ印刷装置である。
【００２３】
図２は、本発明の外字変換における操作の流れを例示するものである。ホストコンピュータ５で使用しているホスト外字ファイル６は、一般にホストコンピュータ５のハードディスク等の記録媒体に保存されている。該ホスト外字ファイル６は、ハードディスク等の記録媒体の任意のフォルダにファイルとして格納されている。ファイルとは、記録媒体に記録されたデータのまとまりを示し、個々のファイルには、識別のための固有の名前（ファイル名）がつけられている。
【００２４】
外字変換における操作の流れは、まず、該ホスト外字ファイル６をフレキシブルディスクなどの移動可能な記録媒体や、ホストコンピュータ５と接続されたネットワーク３を介して、パーソナルコンピュータやワークステーション上の記録媒体へ移動または複写を行う。次に、パーソナルコンピュータやワークステーション上で、本発明の外字変換アプリケーション４１を起動し、該ホスト外字ファイル６を外字変換アプリケーション４１上に読み込む。その後、後述する方法において、変換を行い、オペレータが指示したファイルへ変換した外字フォントを出力する。
【００２５】
図３は、ホスト外字ファイル６の一例を例示するものである。多くの場合、ホスト外字ファイル６は、ファイルヘッダ情報６１と個々の外字データ６２から構成されている。ファイルヘッダ情報６１とは、ホスト外字ファイル６の先頭に存在し、当該ホスト外字ファイル６全体に関連する内容などが記述されていることが多い。外字データ６２は、ファイルに登録されている個々の外字の情報が記述されており、個々の外字データ６２は、文字コード６３、フォントヘッダ６４、外字ビットマップデータ６５、フォントフッタ６６から構成されていることが多い。
【００２６】
また、少なくとも１つのホスト外字ファイル６内においては、全ての外字データ６２は同じデータ構造で、かつ、同じデータ長を有している場合が殆どである。即ち、文字コード６３、フォントヘッダ６４、外字ビットマップデータ６５、フォントフッタ６６は、必ずしも同じデータ長とはなっていないのが普通であるが（例えば、本実施例では、文字コード６３は２バイト、外字ビットマップデータ６５は１２８バイトで構成されている）、全ての外字データ６２の文字コード６３、フォントヘッダ６４、外字ビットマップデータ６５及びフォントフッタ６６は、それぞれ一定のデータ長となっている場合が多い。
【００２７】
即ち、図３に示すように、全ての外字データ６２は同じデータ構造（それぞれ一定のデータ長の文字コード６３、フォントヘッダ６４、外字ビットマップデータ６５及びフォントフッタ６６が同じ順序で並ぶ）で、かつ、同じデータ長（以下（ｍ）とする）となっているのが一般的である。尚、フォントヘッダ６４、フォントフッタ６６双方とも、或いは片方が存在しない場合も考えられるが、その場合はそれらのデータ長を０として取り扱えばよい。
【００２８】
外字ビットマップデータ６５とは、文字の形をコンピュータ上で表現するためのデータであり、一般にはビットマップフォント形式で格納されている場合が多い。ビットマップフォントとは、文字を小さな正方形の点（ドット）の集合として表し、ある決まった数の格子（例えば縦３２個×横３２個）で、すべての文字の形状を表現するフォントを示す。
【００２９】
フォントヘッダ６４やフォントフッタ６６は、メーカやユーザが独自に個々の外字に関する情報を記録していることが多いものであるが、ここでは、一つの外字データ６２内において、文字コード６３の後ろでかつ外字ビットマップデータ６５の前に存在する全てのデータをフォントヘッダ情報と定義してもよい。また、フォントフッタ６６とは、一つの外字データ６２内において、外字ビットマップデータ６５の後ろに存在する全てのデータと定義してもよい。
【００３０】
本発明においては、まずホスト外字ファイル６から個々の外字の文字コード６３を抽出し、該抽出した文字コード６３をキーとして個々の外字ビットマップデータ６５を抽出していく。
【００３１】
図４及び図５は、本発明の外字変換における文字コード抽出方法を例示するものである。一般的なホストコンピュータ５のホスト外字ファイル６は、特に日本語環境においては文字コード６３を２バイトで表現していることが多い。以下の実施例においては文字コード６３が２バイトの例を述べるが、文字コード６３が1バイトであっても勿論本発明は適用可能である。
【００３２】
文字コード６３とは、各々の文字一つ一つに割り当てられた固有のコード（番号）のことであり、ホスト外字ファイル６内の文字コード６３は、この文字コード６３の順番に登録されているのが通例である。ここでいう順番とは、文字コード６３が各々の外字データ６２単位に＋１増加していくことを示す。例えば、ホスト外字ファイル６に登録されている最初の外字データ６２の文字コード６３が６０００であった場合、次の外字データ６２の文字コード６３が６０００＋１、すなわち、６００１と割り当てられていることを示す。
【００３３】
本実施例では、文字コード６３が＋１増加する例を示しているが、−１減少する場合も考えられ、稀ではあるが、＋Ｎまたは−Ｎなど、１以外の増減値で文字コード６３が増減する場合も考えられる。
【００３４】
前述のように、ホスト外字ファイル６は、同じデータ長（ｍ）、同じデータ構成の外字データ６２が文字コード６３の順に並んでいることが多い。すなわち、ホスト外字ファイル６全体を見れば、一定増分値を有する文字コード６３が、一定データ長（外字データ長（ｍ））毎に並んでいることになる。
【００３５】
そこで、ホスト外字ファイル６から、一定データ長（ｍ）毎に並ぶデータ単位、即ち、個々の外字データ６２の文字コード６３を検索、抽出する。
【００３６】
まず、ホスト外字ファイル６の先頭から２バイト分のデータを最初の外字データ６２の文字コード６３と見なして読み込み（この２バイトの数値を検索対象文字コードと呼ぶ）、そのコードに＋１加算した数値を次の外字データ６２の文字コード６３として、外字変換アプリケーション４１の変数に登録する。
【００３７】
次に、登録した次の外字データ６２の文字コード６３が、当該ファイル内にあるかをファイル先頭から最後まで検索する。ファイル内に次の外字データ６２の文字コード６３が見つからなければ、先に読み込んだ先頭から２バイトのデータは、文字コード６３でないと判断する。そこで、検索対象文字コードを１バイト分、後ろにシフトさせ、先頭から２バイト目と３バイト目のデータを読み込み、新たな検索対象文字コードとする。
【００３８】
その後、その文字コード６３に＋１加算した次の外字データ６２の文字コード６３を再度当該ファイルから検索する。以降、＋１加算した文字コード６３がホスト外字ファイル６のファイル内に見つかるまで、上記検索方法に基づき、文字コード６３を検索する。図４の例では、先頭から２バイト後方にデータをシフトさせ、先頭から３バイト目と４バイト目のデータが、検索対象文字コードａであったときに、加算した次の外字データの文字コードｂが検索できたことを示す。
【００３９】
加算した次の外字データ６２の文字コードｂが見つかると、検索対象文字コードａと、次の外字データ６２の文字コード間ｂのデータ長（ｍ）を算出する。図４の例では、検索対象文字コード６０００に対して、＋１加算した文字コード６００１までがデータ長（ｍ）である。整数値であるデータ長（ｍ）は、個々の外字データ６２のデータ長であり、これを外字データ長と呼ぶこととする。
【００４０】
外字データ長は、前述の通り各ホストメーカや作成した外字のバージョンなどによって異なるものの、１つのファイル内では、全て同じ長さであることが多い。よって、図４において文字コードｂからさらにデータ長（ｍ）だけ後方に６００２が、データ長（２×ｍ）後方に６００３という順に、一定データ長（ｍ）毎に、一定増加値のデータが並んでいれば、この一定増加値で並ぶデータが、個々の外字データ６２の文字コード６３である可能性が高い。
【００４１】
そのため、検索対象文字コードに対して、＋１加算したデータが当該ファイル内に見つかっても、それ以降、外字データ長（ｍ）毎に、加算した文字コード６３が見つからない場合は、これらは文字コード６３でないと判断し、再度検索対象文字コードを１バイト後ろにシフトさせ、検索対象文字コードを変更して、加算した文字コード６３を新たに検索する。
【００４２】
尚、ホスト外字ファイル６のファイルサイズをＳとしたとき、先頭の文字コード（検索対象文字コード）ａまでのデータ長をＨ（ヘッダデータ長と呼ぶ）として、該検索対象文字コードから＋１加算した文字コードｂまでのデータ長、すなわち、外字データ長をｍとした場合、登録されている外字の総数Ｚは、下記の式で表される。
外字総数Ｚ＝（ファイルサイズ（Ｓ）−ヘッダデータ長（Ｈ））／外字データ長（ｍ）
以上の方法で、すべての外字の文字コード６３が抽出され、また外字データ長（ｍ）が確定する。ここまでで、ホスト外字ファイル６を個々の外字データ６２に分割できたことになる。
【００４３】
次に、個々の外字データ６２から外字ビットマップデータ６５を抽出する第１の方法を説明する。
【００４４】
少なくとも一つのホスト外字ファイル６内においては、個々の外字データ６２は全て同じデータ長（ｍ）、かつ、同じデータ構造を有し、また、その中のフォントヘッダ６４、外字ビットマップデータ６５、フォントフッダ６６は、それぞれ一定のデータ長で同じ順序で並んでいることは先に述べた。即ち、個々の外字データ６２から外字ビットマップデータ６５を抽出するには、その前に存在するフォントヘッダ６４のデータ長が分かればよい。
【００４５】
外字データ長は（ｍ）であり、外字ビットマップデータ６５は（ｎ×ｎ）のデータ長であるから、一つの外字データ６２内における外字ビットマップデータ６５候補の総数は、
（ｍ−ｎ×ｎ＋１）であり、この候補の中から正しい外字ビットマップデータ６５を選択すればよい。これをオペレータの手作業で行う第1の方法を以下に述べる。
【００４６】
尚、ｎ（フォント枠の縦横ドット数）の値については、３２が一般的で、２４、４８も多く使われる。勿論それ以外の任意の正の整数値も理論的には可能である。
【００４７】
図６は、本発明の外字変換アプリケーション４１の操作パネル（操作画面）及び外字変換における外字ビットマップデータ６５候補の表示を例示するものである。
【００４８】
操作パネル上には、ある外字データ６２について、文字コード６３の次に存在するｎ×ｎのデータ長のデータを外字ビットマップデータ６５と見なしてその文字イメージを表示している。このビットマップデータのデータ長ｎ×ｎを外字ビットマップデータ長と呼ぶこととする。操作パネルで表示される白の部分は、データの値が０を示し、黒の部分は１であることを示す。
【００４９】
さて、文字コード６３の次バイトからのデータが、外字ビットマップデータ６５の場合は、（これはフォントヘッダ６４が存在しない場合に相当する）正しい文字イメージ（ａ）が該操作パネル上に表示される。一方、文字コード６３と外字ビットマップデータ６５の間にフォントヘッダ６４が存在する場合は、フォントヘッダ６４のデータ長だけ文字イメージがシフトされたり、あるいは無意味な白黒ドットが挿入され、該操作パネルに正しくない文字イメージ（ｂ）が表示される。
【００５０】
ここで、外字変換アプリケーション４１の操作パネル上の、左矢印ボタンもしくはキーボードの←キーを押すと、現在の外字ビットマップデータ６５候補のデータ位置より、手前に1データ長単位シフトさせた文字イメージを表示することが出来る。同様に、右矢印ボタンもしくはキーボードの→キーを押すと、現在の外字ビットマップデータ６５候補の文字イメージを表示しているデータ位置より、後方に1データ長単位シフトさせた文字イメージを表示することが出来る。このシフト操作は、1データ長単位、即ち、多くは１ビット単位にシフトできることが望ましい。
【００５１】
このように、オペレータが操作パネルを見ながら、外字変換アプリケーション４１の操作パネルに正しい文字イメージが表示される位置までキーボードやマウスを使って、データをシフトさせ、正しい文字イメージ（ビットマップフォント）を選択、決定する。操作パネルに正しい文字イメージが表示されたときの、文字コード６３と外字ビットマップデータ６５候補間のデータ長がフォントヘッダデータ長である。
【００５２】
以上のステップをまず任意の一つの外字データ６２（多くの場合、外字ファイルの先頭に存在するの外字データ）について行い、フォントヘッダデータ長を仮決めする。次に、仮決めしたフォントヘッダデータ長に基づき他の外字データ６２の文字イメージを操作パネル上に表示させ、すべて正しい文字イメージが表示されれば、フォントヘッダデータ長を仮決めした値に決定させてもよい。
【００５３】
ここで、文字コードデータ長（ｃ）、ヘッダデータ長（Ｈ）、文字コード６３から外字ビットマップデータ６５までのフォントヘッダデータ長（ｈ）、外字データ長（ｍ）、外字ビットマップデータ長（ｎ×ｎ）とすると、外字ビットマップデータ６５の位置は、以下の通りとなる。
１文字目外字ビットマップデータ先頭データ長＝Ｈ＋ｃ＋ｈ
１文字目外字ビットマップデータ終端データ長＝Ｈ＋ｃ＋ｈ＋（ｎ×ｎ）
さらに全ての外字の外字ビットマップデータ６５の位置は、以下の通りとなる。
各外字ビットマップデータ先頭データ長＝Ｈ＋ｃ＋ｈ＋ｍ×文字数
各外字ビットマップデータ終端データ長＝Ｈ＋ｃ＋ｈ＋（ｎ×ｎ）＋ｍ×文字数。
【００５４】
次に、図７は、外字ビットマップデータ６５の抽出、即ち、フォントヘッダデータ長の決定をある程度自動的に行う第２の方法を例示するものである。
【００５５】
一般にビットマップフォントであってもアウトラインフォントであっても、フォントの文字イメージは、フォント枠の中央付近に存在し、フォント枠の辺縁部には、文字のはねや払いなど、ごく一部のドットが、黒ドットとなっている程度で、辺縁部に多くの黒ドットが存在することは少ない。ところが、図６（ｂ）に示すように、フォントヘッダデータ長だけシフトされた文字イメージの場合には、フォント枠内でイメージがシフトされている為、辺縁部に黒ドットが現れることが多い。即ち、辺縁部に存在する黒ドットの数の少ないものほど、正しい文字イメージでありうる可能性が高い。
【００５６】
ここで、フォント枠の辺縁部とは、図７に示すようにｎ×ｎで示される外字ビットマップデータ６５において、上下左右の最も外側の一列（１ドット分）のエリアとする。このエリアは、外字ビットマップデータ６５内においては以下の通りとなる。
上１ドット＝１  〜  ｎ
下１ドット＝（ｎ×ｎ）−ｎ＋１  〜  （ｎ×ｎ）
左１ドット＝１＋（ｎ＋１）＋（２ｎ＋１）＋．．．＋（（ｎ−１）×ｎ＋１）
右１ドット＝ｎ＋２ｎ＋３ｎ＋．．．＋（ｎ×ｎ）
尚、本実施例では、辺縁部をフォント枠の最も外側の１ドット分としたが、２ドットや３ドットでも構わないし、また、上下方向と左右方向でその値が異なっていても構わない。
【００５７】
さて、外字ビットマップデータ６５の抽出に当たって、まず、全ての外字データ６２について未知のフォントヘッダデータ長をパラメータとして、先に示した式によって定義されるフォント枠の辺縁部に、黒ドットが最も少なくなるフォントヘッダデータ長を検索する。これは、前述のエリアに存在する黒ドット、即ち“１”のデータをカウントすればよい。
【００５８】
全ての外字データ６２について、辺縁部に黒ドットが最も少なくなるフォントヘッダデータ長が同じ（ｈ）であった場合は、これをフォントヘッダデータ長ｈと決定する。また、このときの各々の外字の文字イメージを操作パネル上に表示して、オペレータに確認させてから選択、決定出来るようにしても良い。
【００５９】
また、全ての外字データ６２に関し、最も黒ドットが少なくなるフォントヘッダデータ長が異なった場合には、最も頻度の高いフォントヘッダデータ長から優先度を設け、外字ビットマップデータ６５候補の文字イメージをその優先度の順に操作パネル上に順次表示し、オペレータが選択、確認、決定させるようにしても良い。
【００６０】
次に、図８は、外字ビットマップデータ６５の抽出をある程度自動的に行う第３の方法を例示するものである。
【００６１】
フォント枠の辺縁部ほど、黒ドットが少なく、中心近傍に黒ドットが多いことは、前の第２の方法の説明で述べている。ところが、文字イメージの中には、例えば、○（丸）や□(四角)、と言ったシンボル的なものや、○（丸）や□(四角)で囲われた文字、括弧付き文字など、も存在する。この様な文字では、正しい文字イメージでも、その辺縁部に多くの黒ドットが存在することになり、前の第２の方法が適さない場合も存在する。
【００６２】
さて、このような文字の場合でも、文字イメージはフォント枠の中央付近にあることには変わりなく、即ち、フォント枠内における文字イメージの黒ドットの重心位置は、フォント枠の中心近傍に存在する可能性が高い。そこで、フォント枠内における黒ドットの重心位置がフォント枠の可及的中心近傍となるフォントヘッダデータ長を検索すれば、正しい外字ビットマップデータ６５を抽出することが可能となる場合も考えられる。
【００６３】
図８は、その重心位置の算出方法を示す一例であって、簡単のため１２×１２の外字ビットマップデータ長で表される外字の文字イメージを示している。この時、各々の行／列に番号を付与し、表示されている黒ドットの位置に、それぞれ対応した行番号または列番号を表示する。図８（ａ）の例では、左右方向にそれぞれ１〜１２までの列番号を設け、黒ドットの位置（マス目）に、列番号を表示する。次に、それぞれの列単位に表示された列番号を加算していき、その合計値を得る。この合計値を全ての黒ドット数で割ることによって、左右方向の中心座標を得ることができる。
【００６４】
同様に、図８（ｂ）に示すとおり、行単位に登録された行番号を加算し、その合計値を全ての黒ドット数で割ることによって、上下方向の中心座標を得ることができる。
即ち以下のとおりとなる。
左右中心座標  ＝  列番号の合計値  ／  全ての黒ドット数
上下中心座標  ＝  行番号の合計値  ／  全ての黒ドット数
なお、図８の例では、黒ドットの重心位置（列、行）が（６．０、６．８）となった。このとき、フォント枠は、１２×１２であり、中心座標は（６．５、６．５）となる。すなわち、図８の例では黒ドットの重心は、フォント枠の中心から、
2010197501.tif 000003
【００６５】
第２の方法と同様に、未知のフォントヘッダデータ長をパラメータとして、このずれ量が最小となるフォントヘッダデータ長を求める。
【００６６】
全ての外字データ６２について、ずれ量が最小となるフォントヘッダデータ長が同じ（ｈ）であった場合は、これをフォントヘッダデータ長ｈと決定する。また、このときの各々の外字の文字イメージを操作パネル上に表示して、オペレータに確認させてから選択、決定出来るようにしても良い。
【００６７】
全ての外字データ６２に関し、ずれ量が最小となるフォントヘッダデータ長が異なった場合には、最も頻度の高いフォントヘッダデータ長から優先度を設け、外字ビットマップデータ６５候補の文字イメージをその優先度の順に操作パネル上に順次表示し、オペレータが選択、確認、決定させるようにしても良い。
【００６８】
次に、図９、図１０、図１１、図１２は、本発明によって変換した外字フォントの利用方法について例示するものである。
【００６９】
外字は、地名や人名に用いられるケースが多く、ここでは宛名印刷を例に示す。まず印刷データを作成するためには、外部データと呼ばれる住所、名前などの印刷情報が、記録されているデータと、図９に示すような外部データ定義体と呼ばれる外部データ内のどのレコードが住所、名前に相当するかを示すデータと、図１２に示すようなレイアウトデータと呼ばれる外部データをどの位置にどの書体で印刷するかを示すデータと、変換した外字ファイル、さらには変換した外字ファイルの文字コードが登録されている変換テーブルのデータと、これらデータを読み込み可能なアプリケーションが必要である。
【００７０】
外部データは、一般に固定長やＣＳＶのファイル形式で記述されている。ＣＳＶとは、Ｃｏｍｍａ  Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅｓの略で、データをカンマ（，）で区切り、並べたファイル形式であり、主に表計算ソフトやデータベースソフトのデータ保存方法に用いられる。一方、固定長には区切り記号がなく、それぞれ外部データ定義体によって定義された固定のデータ長によって、住所や名前が記録されている。一般にホストコンピュータ５では、固定長の外部データが多く使われている。
【００７１】
外部データ定義体に記述されている項目は、少なくともフィールド名とフィールド長が必要である。フィールド名とは、後述のレイアウトデータを作成可能なアプリケーションで利用するために、外部データの固有の項目名を意味する。フィールド長とは、各々のフィールド名が示す外部データの長さを意味し、一般的には開始位置とデータの長さ、または終了位置によって示されている。
【００７２】
外部データ定義体は、ホストコンピュータ５の記録媒体に保存されずに、印刷前に操作パネルで入力するなどの方法を取る場合もある。そのため、本実施例の印刷システムでは、該記録媒体に保存されている外部データ定義体以外に、用紙に印刷された外部データ定義体をスキャナ等のイメージ読み込み手段によって、イメージを取得し、文字認識ソフトによって、画像イメージからテキストへ変換を行い、外部データ定義体を作成することも可能である。
【００７３】
また本実施例の印刷システムでは、上記方法にて変換を行った外部データ定義体が、正しく入力されているかを確認する機能や、該定義体に不正な文字や空白がないかを確認する機能や、該定義体の文字を編集するなどの機能も備えている。
【００７４】
また、本実施例の印刷システムでは、図１０に示すように事前に印刷機等で印刷された印刷用紙７を元に、レイアウトデータを作成する機能も備えている。宛名などの印刷は、事前に印刷機で印刷された印刷用紙７に、後に住所や名前などの外部データをプリンタ等で印刷する場合が多い。また、事前に印刷機で印刷された印刷用紙７には、罫線が印刷されていることが多い。このように罫線枠内に住所、名前等の外部データを印刷する場合に、どの枠にどの外部データ定義体のフィールド名を印刷するかを指定する情報が必要であり、この情報をレイアウトデータと呼んでいる。
【００７５】
レイアウトデータ作成方法は、図１２に示す操作パネルにより、事前に印刷機で印刷された印刷用紙７をスキャナ等のイメージ読み込み手段によって、画像イメージを取得し、画像イメージの罫線を罫線認識ソフトによって、位置座標を取得し、本実施例の印刷システムのディスプレイ等に表示している。位置座標を取得した四角の枠をオブジェクトと呼ぶ。また、オブジェクトには、位置座標の情報以外に外部データ定義体の情報を設定／保存することが可能である。
【００７６】
本実施例の印刷システムでは、事前に印刷機で印刷された印刷用紙７の画像イメージと、オブジェクトの位置を示す画像イメージと、外部データ定義体のフィールド名を表示する機能を備え、外部データ定義体のフィールド名が表示されているリストから、フィールド名をマウス等で選択し、マウスをドラッグしながら、画面上に表示されているオブジェクトの位置にマウスをドロップすることによって、任意のオブジェクトに外部データ定義体を設定／保存することが可能である。また、オブジェクトの合成、分割、削除、複写、移動などの編集機能も兼ね備えている。
【００７７】
なお、外部データ定義体の作成やレイアウトデータの作成は、クライアントコンピュータ４のアプリケーションソフトウェア４１上で行われる。
【００７８】
上記レイアウトの編集完了後、印刷に使用する外字フォントを選択する。本実施例の印刷システムでは、ホストコンピュータ５のホスト外字ファイル６から、抽出したビットマップフォントをアウトラインフォントに変換を行い、同時に外字コードが記述された変換テーブルを作成する。変換テーブルには、ホスト外字ファイル６に記述されている文字コード６３と、変換後に登録された文字コードが記述されている。
【００７９】
一般に、各フォントには外字が使用できる領域が準備されているが、各々のホストコンピュータ５やオペレーティングシステムによって、使用可能な外字領域の番号が異なるため、変換テーブルを使って、異なるコンピュータ、または異なるオペレーティングシステムの環境での外字の印刷を実現している。
【００８０】
このように本発明によれば、基幹系システムのホスト外字ファイルから、文字コードとビットマップフォントを抽出し、オープン系システムのパーソナルコンピュータやワークステーション等で使用可能な外字フォント（図１１）へ容易に変換することが可能である。
【符号の説明】
【００８１】
１．プリンタエンジン
２．コントローラ
３．ネットワーク
４．クライアントコンピュータ
５．ホストコンピュータ
６．ホスト外字ファイル
７．印刷用紙
２１．スプーラ
２４．プリンタコントローラ
２５．ビデオボード
４１．外字変換アプリケーション
４２．アプリケーションソフトウェア
６１．ファイルヘッダ情報
６２．外字データ
６３．文字コード
６４．フォントヘッダ
６５．外字ビットマップデータ
６６．フォントフッタ
【図１】
2010197501.tif 000004
【図２】
2010197501.tif 000005
【図３】
2010197501.tif 000006
【図４】
2010197501.tif 000007
【図５】
2010197501.tif 000008
【図６】
2010197501.tif 000009
【図７】
2010197501.tif 000010
【図８】
2010197501.tif 000011
【図９】
2010197501.tif 000012
【図１０】
2010197501.tif 000013
【図１１】
2010197501.tif 000014
【図１２】
2010197501.tif 000015