(57)【要約】【課題】記憶するフォントデータのデータ量を削減する。【解決手段】フォントデータを複数組み合わせて新たなフォントデータを生成する生成部と、フォントデータとフォントのコードとを対応付けて記憶する記憶部と、外部からフォントデータを取得し前記記憶部に記憶させる取得記憶制御部と、外部から取得した前記コードに応じて、前記記憶部に記憶されているフォントデータに基づく印刷を実行させる印刷制御部とを備え、前記取得記憶制御部は、前記生成部が生成可能なフォントデータについては外部から取得しないか又は前記記憶部に記憶させない印刷制御装置。【選択図】図４
2018039202.tif 000002
【特許請求の範囲】
【請求項１】
フォントデータを複数組み合わせて新たなフォントデータを生成する生成部と、
フォントデータとフォントのコードとを対応付けて記憶する記憶部と、
外部からフォントデータを取得し前記記憶部に記憶させる取得記憶制御部と、
外部から取得した前記コードに応じて、前記記憶部に記憶されているフォントデータに基づく印刷を実行させる印刷制御部とを備え、
前記取得記憶制御部は、前記生成部が生成可能なフォントデータについては外部から取得しないか又は前記記憶部に記憶させないことを特徴とする印刷制御装置。
【請求項２】
前記取得記憶制御部は、前記生成部が生成可能なフォントデータの外部から前記印刷制御装置への送信を禁止し、前記生成部が生成したフォントデータを前記記憶部に記憶させることを特徴とする請求項１に記載の印刷制御装置。
【請求項３】
前記取得記憶制御部は、前記生成部が生成可能なフォントデータの外部から前記印刷制御装置への送信を禁止し、前記生成部が生成したフォントデータを前記記憶部に記憶させないことを特徴とする請求項１に記載の印刷制御装置。
【請求項４】
前記取得記憶制御部は、外部から取得したフォントデータのうち前記生成部が生成可能なフォントデータを除いたフォントデータを前記記憶部に記憶させ、前記生成部は、外部から取得した前記コードに応じて、前記記憶部に記憶されているフォントデータに基づいてフォントデータを生成することを特徴とする請求項１に記載の印刷制御装置。
【請求項５】
前記取得記憶制御部は、前記生成部が生成可能なフォントデータに対応するコードに替えて当該フォントデータを生成するための複数のフォントデータに対応する複数のコードを含む印刷指示を外部から前記印刷制御装置へ送信させることを特徴とする請求項１〜請求項４のいずれかに記載の印刷制御装置。
【請求項６】
前記生成部が生成可能なフォントデータに対応するコードが外部から送信された場合と、当該フォントデータを生成するための複数のフォントデータに対応する複数のコードが当該外部から送信された場合とで、同一のフォントデータを当該外部に返信することを特徴とする請求項１〜請求項５のいずれかに記載の印刷制御装置。
【請求項７】
通信装置と、当該通信装置と通信を行う印刷制御装置とを含む印刷制御システムであって、
前記印刷制御装置は、フォントデータを複数組み合わせて新たなフォントデータを生成する生成部と、フォントデータとフォントのコードとを対応付けて記憶する記憶部と、前記通信装置からフォントデータを取得し前記記憶部に記憶させる取得記憶制御部と、外部から取得した前記コードに応じて、前記記憶部に記憶されているフォントデータに基づく印刷を実行させる印刷制御部とを備え、
前記通信装置は、前記生成部が生成可能なフォントデータを除いたフォントデータを前記印刷制御装置へ送信し、
前記取得記憶制御部は、前記通信装置から送信されたフォントデータを取得することを特徴とする印刷制御システム。
【請求項８】
出力制御プログラムであって、
フォントデータを複数組み合わせて新たなフォントデータを生成する生成機能と、
外部からフォントデータを取得し、フォントデータとフォントのコードとを対応付けて記憶する記憶部に当該取得したフォントデータを記憶させる取得記憶制御機能と、
外部から取得したフォントのコードに応じて、前記記憶部に記憶されているフォントデータに基づく出力を実行する出力制御機能と、をコンピューターに実行させ、
前記取得記憶制御機能は、前記生成機能が生成可能なフォントデータについては外部から取得しないか又は前記記憶部に記憶させないことを特徴とする出力制御プログラム。
【請求項９】
フォントデータを複数組み合わせて新たなフォントデータを生成する生成工程と、
外部からフォントデータを取得し、フォントデータとフォントのコードとを対応付けて記憶する記憶部に当該取得したフォントデータを記憶させる取得記憶制御工程と、
外部から取得したフォントのコードに応じて、前記記憶部に記憶されているフォントデータに基づく印刷を実行する印刷制御工程と、を含み、
前記取得記憶制御工程では、前記生成工程で生成可能なフォントデータについては外部から取得しないか又は前記記憶部に記憶させないことを特徴とする印刷物生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷制御装置、印刷制御システム、出力制御プログラムおよび印刷物生成方法に関する。
【背景技術】
【０００２】
複数の文字や記号を組み合わせて１つの文字を生成することや、そのように生成された文字を、合字（または、リガチャ）と呼ぶ。合字は、例えば、フランス語、ベトナム語、アラビア語、タイ語などの様々な言語において使用される概念である。
【０００３】
また、合字に関連する技術として、特許文献１（段落００５７）や特許文献２が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００‐２０７３９２号公報
【特許文献２】特開平８‐２０２３３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
合字を出力（印刷や表示）するまでの情報処理、通信処理、記憶処理等の様々な工程において、処理負担の軽減、高速化（短時間化）、データ量の削減、といったことが求められていた。
【０００６】
本発明は上述した少なくとも一つの課題に対して有用な印刷制御装置、印刷制御システム、出力制御プログラムおよび印刷物生成方法を提供する。
【課題を解決するための手段】
【０００７】
本発明の態様の１つは、印刷制御装置は、フォントデータを複数組み合わせて新たなフォントデータを生成する生成部と、フォントデータとフォントのコードとを対応付けて記憶する記憶部と、外部からフォントデータを取得し前記記憶部に記憶させる取得記憶制御部と、外部から取得した前記コードに応じて、前記記憶部に記憶されているフォントデータに基づく印刷を実行させる印刷制御部とを備え、前記取得記憶制御部は、前記生成部が生成可能なフォントデータについては外部から取得しないか又は前記記憶部に記憶させない。
【０００８】
当該構成によれば、印刷制御装置は、生成部が生成可能なフォントデータ（合字のフォントデータ）については、外部から取得しないか又は記憶部に記憶させない。外部から取得しないか又は記憶部に記憶させないとは、外部から取得しないし記憶部に記憶させない場合と、外部から取得はするが記憶部に記憶させない場合と、外部から取得しないが記憶部に記憶させる場合と、を含む意味である。これにより、フォントデータのやり取りに必要な通信負担を軽減したり、記憶部に記憶させるデータ量を削減したり、記憶処理に要する時間を短縮したりすることができる。
【０００９】
本発明の態様の１つは、前記取得記憶制御部は、前記生成部が生成可能なフォントデータの外部から前記印刷制御装置への送信を禁止し、前記生成部が生成したフォントデータを前記記憶部に記憶させるとしてもよい。あるいは、前記取得記憶制御部は、前記生成部が生成可能なフォントデータの外部から前記印刷制御装置への送信を禁止し、前記生成部が生成したフォントデータを前記記憶部に記憶させないとしてもよい。これら構成によれば、フォントデータのやり取りに必要な通信負担を軽減したり、記憶部に記憶させるデータ量を削減したり、記憶処理に要する時間を短縮したりすることができる。
【００１０】
本発明の態様の１つは、前記取得記憶制御部は、外部から取得したフォントデータのうち前記生成部が生成可能なフォントデータを除いたフォントデータを前記記憶部に記憶させ、前記生成部は、外部から取得した前記コードに応じて、前記記憶部に記憶されているフォントデータに基づいてフォントデータを生成するとしてもよい。
当該構成によれば、記憶部に記憶させるデータ量を削減したり、記憶処理に要する時間を短縮したりすることができる。
【００１１】
本発明の態様の１つは、前記取得記憶制御部は、前記生成部が生成可能なフォントデータに対応するコードに替えて当該フォントデータを生成するための複数のフォントデータに対応する複数のコードを含む印刷指示を外部から前記印刷制御装置へ送信させるとしてもよい。
当該構成によれば、印刷制御装置は、前記外部の処理負担を減らすことができる。
【００１２】
本発明の態様の１つは、印刷制御装置は、前記生成部が生成可能なフォントデータに対応するコードが外部から送信された場合と、当該フォントデータを生成するための複数のフォントデータに対応する複数のコードが当該外部から送信された場合とで、同一のフォントデータを当該外部に返信するとしてもよい。
当該構成によれば、印刷制御装置は、自身が前記生成部を有する旨を的確に外部に知らせることができる。
【００１３】
本発明の技術的思想は、印刷制御装置というカテゴリー以外によっても実現される。例えば、当該装置が実行する工程を含んだ方法（印刷制御方法、印刷物生成方法）や、これら工程をコンピューターに実行させるプログラム（出力制御プログラム）を夫々に発明として捉えることが可能である。
また本発明の態様の１つとして、通信装置と、当該通信装置と通信を行う印刷制御装置とを含む印刷制御システムであって、前記印刷制御装置は、フォントデータを複数組み合わせて新たなフォントデータを生成する生成部と、フォントデータとフォントのコードとを対応付けて記憶する記憶部と、前記通信装置からフォントデータを取得し前記記憶部に記憶させる取得記憶制御部と、外部から取得した前記コードに応じて、前記記憶部に記憶されているフォントデータに基づく印刷を実行させる印刷制御部とを備え、前記通信装置は、前記生成部が生成可能なフォントデータを除いたフォントデータを前記印刷制御装置へ送信し、前記取得記憶制御部は、前記通信装置から送信されたフォントデータを取得するとしてもよい。むろん、当該システムに含まれる通信装置も、一つの発明として成立する。
【図面の簡単な説明】
【００１４】
【図１】第１実施形態のシステムの構成を簡易的に示す図。
【図２】フォントデータ登録処理（第１実施例）を示すフローチャート。
【図３】図３Ａは複数の要素と合字との関係性の一例を示す図、図３Ｂは複数の要素と合字との関係性の他の例を示す図。
【図４】フォントデータ登録処理（第２実施例）を示すフローチャート。
【図５】文字レンダリング処理を示すフローチャート。
【図６】第２実施形態のシステムの構成を簡易的に示す図。
【図７】デバイスへの文字コード送信処理を示すフローチャート。
【図８】事前コード変換処理を示すフローチャート。
【図９】記号対応コードテーブルを示す図。
【図１０】インデックステーブルを示す図。
【図１１】置換テーブルの一部分を示す図。
【図１２】文字合成機能の有無確認処理を示すフローチャート。
【発明を実施するための形態】
【００１５】
以下、各図を参照しながら本発明の実施形態を説明する。なお各図は、本実施形態を説明するための例示に過ぎない。
【００１６】
１．第１実施形態：
１‐１．システムの概略説明：
図１は、本実施形態にかかるシステム１の主要な構成をブロック図により例示している。システム１を、印刷制御システム、出力制御システム、合字出力システム、等と呼んでもよい。システム１は、例えば、ホスト１０とデバイス２０とを含んで構成される。デバイス２０は、出力装置である。出力装置の具体例には、プリンター、画像表示装置、プロジェクター等が該当する。プリンターは、少なくとも印刷機能を有する装置である。従って、プリンター（デバイス２０）は、印刷機能に加え、スキャナーやファクシミリ等の複数の機能を有する複合機であってもよい。
【００１７】
ホスト１０は、デバイス２０に対して後述するようにフォントデータ等を送信する通信装置である。ホスト１０は、例えば、サーバー、パーソナルコンピューター、スマートフォン、タブレット型端末、携帯電話機等によって実現される。システム１を構成するホスト１０とデバイス２０とは、有線あるいは無線により通信可能に接続している。ホスト１０とデバイス２０とは、ネットワーク（インターネットやＬＡＮ）を介して接続していてもよい。
【００１８】
図１の例では、ホスト１０は、制御部１１、記憶部１２、表示部１３、操作受付部１４等を含んでいる。制御部１１は、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭ等を有するＩＣや、その他の記憶媒体等により構成される。制御部１１では、ＣＰＵが、ＲＯＭ等に保存されたプログラム１６に従った演算処理を、ＲＡＭ等をワークエリアとして用いて実行する。また、ホスト１０は、外部（デバイス２０等）との通信のための各種通信規格に対応した通信インターフェイス（ＩＦ）１５を適宜（例えば複数）有する。
【００１９】
記憶部１２には、フォントデータ１２ｆや文字合成対応表１２ｔ等が記憶されている。フォントデータ１２ｆや文字合成対応表１２ｔについては後述する。記憶部１２は、制御部１１の一部であってもよい。表示部１３は、視覚的情報を表示するための手段であり、例えば、液晶ディスプレイ（ＬＣＤ）や、有機ＥＬディスプレイ等により構成される。表示部１３は、ディスプレイと、当該ディスプレイを駆動するための駆動回路とを含む構成であってもよい。
【００２０】
操作受付部１４は、ユーザーによる操作を受け付けるための手段であり、例えば、物理的なボタンや、タッチパネルや、マウスや、キーボード等によって実現される。むろん、タッチパネルは、表示部１３の一機能として実現されるとしてもよい。また、表示部１３および操作受付部１４を含めて操作パネル等と呼ぶことができる。
【００２１】
一方、デバイス２０は、制御部２１、記憶部２２、表示部２３、操作受付部２４、出力部２５等を含んでいる。制御部２１は、例えば、ＣＰＵ、ＲＯＭ、ＲＡＭ等を有するＩＣや、その他の記憶媒体等により構成される。制御部２１では、ＣＰＵが、ＲＯＭ等に保存されたプログラム２７に従った演算処理を、ＲＡＭ等をワークエリアとして用いて実行する。記憶部２２には、本実施形態にかかるフォントデータ登録処理により、フォントデータ等が記憶される。文字や記号毎のフォントデータは、文字コード（例えばユニコード）に一対一で対応付けられているため、記憶部２２は、フォントデータとフォントのコード（文字コード）とを対応付けて記憶するとも言える。記憶部２２は、制御部２１の一部であってもよい。
【００２２】
プログラム２７は、例えば、出力制御プログラムに該当する。制御部２１は、プログラム２７を実行することにより、レンダリング部２１ａ、取得記憶制御部２１ｂ、出力制御部２１ｃ等の各種機能を実現する。デバイス２０は、外部（ホスト１０等）との通信のための各種通信規格に対応した通信ＩＦ２６を適宜（例えば複数）有する。表示部２３および操作受付部２４については、表示部１３および操作受付部１４の前記説明を準用することができる。
【００２３】
出力部２５は、デバイス２０が有する出力機能（印刷機能や画像表示機能や画像投射機能など）を具体的に実現するための機構である。例えば、デバイス２０がインクジェットプリンターであれば、出力部２５は、液体吐出を行う印字ヘッドや、印字ヘッドを搭載して一定方向へ移動するキャリッジや、用紙等の印刷媒体を搬送する搬送機構等を有する。また、デバイス２０がレーザープリンターであれば、出力部２５は、印刷媒体の搬送、ドラムの帯電、レーザー照射、ドラムへのトナーの塗布、トナーの印刷媒体への転写、転写したトナーの印刷媒体への定着、といった各工程を実行するプリンターエンジンを有する。デバイス２０がプリンターであるとき、これを印刷装置あるいは印刷制御装置等と呼んでもよい。また、プリンター（デバイス２０）が実現する工程を含む方法を、印刷制御方法、印刷物生成方法等と呼ぶ。なお、デバイス２０が画像表示装置である場合は、出力部２５と表示部２３は実質的に同じ部位である。
【００２４】
１‐２．フォントデータ登録処理の第１実施例：
デバイス２０は、文字の出力に必要なフォントデータを記憶部２２に記憶する。フォントデータとは、文字（書体）を画像で表現するためのデータであり、このようなフォントデータは、例えば、ホスト１０からデバイス２０へ送信されたデータである。また、記憶部２２が記憶するフォントデータは、随時（例えば、ホスト１０を操作するユーザーの任意のタイミングで）追加される。フォントデータの形式には、ビットマップフォント形式やアウトラインフォント形式等がある。
【００２５】
図２は、ホスト１０（制御部１１）がプログラム１６を実行することにより実現する、デバイス２０へのフォントデータ登録処理（第１実施例）を、フローチャートにより示している。
ステップＳ１００では、制御部１１は、デバイス２０に対して、文字合成機能の有無を問い合わせる。デバイス２０の制御部２１（レンダリング部２１ａ）は、基本的機能として文字レンダリング機能を有する。文字レンダリング機能とは、１つの指定された文字コードに応じて１つの文字をフォントデータに基づいて描画（レンダリング）する機能である。さらに、文字合成機能とは、指定された文字コードに応じて文字を描画する際に、複数の文字コードがそれぞれ対応する複数のフォントデータを合成して１つの文字（合字）のフォントデータを生成し描画する画像処理機能である。
【００２６】
図３Ａおよび図３Ｂはそれぞれ合字の例を示している。本実施形態では、合字を説明する際、便宜上、要素１と要素２が合成されて合字が得られる、と表現する。この表現に倣って図３Ａを説明すると、「Ａ」という文字（要素１）と「Ｅ」という文字（要素２）が
2018039202.tif 000003
【００２７】
つまり、デバイス２０は文字合成機能を有する場合、要素１に対応する文字コードおよび要素２に対応する文字コードを外部から入力すると、要素１のフォントデータと要素２のフォントデータとに基づいて文字を合成し、この合成した文字（合字）を描画することができる。デバイス２０の機種やバージョンにもよるが、ここではレンダリング部２１ａは文字合成機能を有していると仮定して説明を続ける。レンダリング部２１ａは、フォントデータを複数組み合わせて新たなフォントデータを生成する生成部に該当する。
【００２８】
制御部１１は、通信ＩＦ１５を介してデバイス２０に対し、文字合成機能有無の問い合わせを送信する。当該問い合わせを、通信ＩＦ２６を介して受信したデバイス２０の制御部２１は、自身が文字合成機能を有しているか否かを判断し、その結果を、通信ＩＦ２６を介してホスト１０へ返信する。制御部２１は、レンダリング部２１ａを有していることから、文字合成機能を有する旨の通知をホスト１０へ返信する。
【００２９】
制御部１１は、前記問い合わせへの返信として、デバイス２０から文字合成機能を有する旨の通知を受けた場合には（ステップＳ１１０において“Ｙｅｓ”）ステップＳ１２０へ進む。一方、前記問い合わせへの返信として、デバイス２０から文字合成機能を有さない旨の通知を受けた場合には（ステップＳ１１０において“Ｎｏ”）ステップＳ１４０へ進む。
【００３０】
ステップＳ１２０では、制御部１１は、当該フォントデータ登録処理においてデバイス２０へ登録する予定のフォントデータ群（フォントデータ１２ｆ）の中から、デバイス２０の文字合成機能（レンダリング部２１ａ）が生成可能なフォントデータを削除する。デバイス２０の文字合成機能（レンダリング部２１ａ）が生成可能なフォントデータとは、合字のフォントデータである。ステップＳ１２０では、制御部１１は、文字合成対応表１２ｔを参照して当該削除の処理を行う。文字合成対応表１２ｔは、上述したような要素１，２と合字との対応関係（文字コードの変換関係）を定めたテーブルである。例えば、図
2018039202.tif 000004
【００３１】
制御部１１は、文字合成対応表１２ｔに規定されている合字の文字コード（例えば、１ＥＡ６）を抽出し、この文字コードに対応する合字のフォントデータがフォントデータ１２ｆに含まれている場合には、当該合字のフォントデータをフォントデータ１２ｆから削除する。
【００３２】
次にステップＳ１３０では、制御部１１は、文字合成対応表１２ｔを、通信ＩＦ１５を介して、前記文字合成機能有無の問い合わせ先のデバイス２０へ送信する。
そしてステップＳ１４０では、制御部１１は、現在のフォントデータ１２ｆを、通信ＩＦ１５を介して、前記文字合成機能有無の問い合わせ先のデバイス２０へ送信する。現在のフォントデータ１２ｆとは、ステップＳ１２０を経ている場合には当然、合字のフォントデータが削除された後のフォントデータ１２ｆ（以下、合字削除後フォントデータ１２ｆ´）である。一方、ステップＳ１１０において“Ｎｏ”と判定した場合の、現在のフォントデータ１２ｆは、このような合字のフォントデータの削除がされていないフォントデータ１２ｆ（合字削除前フォントデータ１２ｆ）である。
【００３３】
このようにホスト１０は、デバイス２０が文字合成機能を有する場合には文字合成対応表１２ｔおよび合字削除後フォントデータ１２ｆ´をデバイス２０へ送信し、デバイス２０が文字合成機能を有さない場合には合字削除前フォントデータ１２ｆをデバイス２０へ送信する。なお、ステップＳ１２０を経てステップＳ１３０，Ｓ１４０へ進む場合には、ホスト１０は、文字合成対応表１２ｔおよび合字削除後フォントデータ１２ｆ´を実質的に同時に送信してもよいし、合字削除後フォントデータ１２ｆ´の送信後に文字合成対応表１２ｔを送信してもよい。
【００３４】
デバイス２０側では、通信ＩＦ２６を介してホスト１０から文字合成対応表１２ｔおよび合字削除後フォントデータ１２ｆ´を受信した場合には、取得記憶制御部２１ｂが、当該受信した文字合成対応表１２ｔおよび合字削除後フォントデータ１２ｆ´を記憶部２２に記憶させる。一方、通信ＩＦ２６を介してホスト１０から合字削除前フォントデータ１２ｆを受信した場合には、取得記憶制御部２１ｂが、当該受信した合字削除前フォントデータ１２ｆを記憶部２２に記憶させる。取得記憶制御部２１ｂは、このようにホスト１０から受信したデータについては、記憶部２２に現在記憶されているデータに追加して記憶させる。
【００３５】
１‐３．フォントデータ登録処理の第２実施例：
図４は、デバイス２０（制御部２１）がプログラム２７を実行することにより実現する、デバイス２０へのフォントデータ登録処理（第２実施例）を、フローチャートにより示している。上述した第１実施例は、ホスト１０がデバイス２０に記憶させるフォントデータに関する取捨選択を実行するものであったが、当該第２実施例で説明するように、デバイス２０自身がこのようなフォントデータに関する取捨選択を実行するとしてもよい。
【００３６】
制御部２１は、例えば、通信ＩＦ２６を介してホスト１０からフォントデータを提供したい旨の通知を受信した場合に、図４のフローチャートを開始する。
ステップＳ２００では、制御部２１は、自身が文字合成機能を有するか否かを判定し、文字合成機能を有する場合には（ステップＳ２００において“Ｙｅｓ”）ステップＳ２１０へ進む。一方、制御部２１は、文字合成機能を有さない場合には（ステップＳ２００において“Ｎｏ”）ステップＳ２３０へ進む。当該第２実施例においても、制御部２１（レンダリング部２１ａ）は、文字レンダリング機能に加え、文字合成機能を有していると仮定して説明を続ける。
【００３７】
ステップＳ２１０では、取得記憶制御部２１ｂが、ホスト１０からフォントデータ１２ｆ（合字削除前フォントデータ１２ｆ）および文字合成対応表１２ｔを取得する。取得記憶制御部２１ｂは、通信ＩＦ２６を介してホスト１０に対してフォントデータ１２ｆおよび文字合成対応表１２ｔの送信を要求する。ホスト１０は、この要求に応じてフォントデータ１２ｆ（合字削除前フォントデータ１２ｆ）および文字合成対応表１２ｔを、通信ＩＦ１５を介してデバイス２０へ送信する。これにより、取得記憶制御部２１ｂは、ホスト１０からフォントデータ１２ｆおよび文字合成対応表１２ｔを取得することができる。
【００３８】
ステップＳ２２０では、取得記憶制御部２１ｂは、ステップＳ２１０でホスト１０から取得したフォントデータ１２ｆ（合字削除前フォントデータ１２ｆ）の中からレンダリング部２１ａが生成可能なフォントデータを削除する。つまり、当該第２実施例では、第１実施例で説明済みのステップＳ１２０（図２）と同様の処理を、ステップＳ２２０において取得記憶制御部２１ｂが実行する。この結果、取得記憶制御部２１ｂがステップＳ２１０でホスト１０から取得したフォントデータ１２ｆ（合字削除前フォントデータ１２ｆ）から、合字削除後フォントデータ１２ｆ´が得られる。
【００３９】
一方、ステップＳ２３０では、取得記憶制御部２１ｂが、ホスト１０からフォントデータ１２ｆ（合字削除前フォントデータ１２ｆ）を取得する。取得記憶制御部２１ｂは、通信ＩＦ２６を介してホスト１０に対してフォントデータ１２ｆの送信を要求する。ホスト１０は、この要求に応じてフォントデータ１２ｆ（合字削除前フォントデータ１２ｆ）を、通信ＩＦ１５を介してデバイス２０へ送信する。これにより、取得記憶制御部２１ｂは、ホスト１０からフォントデータ１２ｆを取得することができる。
【００４０】
ステップＳ２２０の後のステップＳ２４０では、取得記憶制御部２１ｂは、ステップＳ２２０で得た合字削除後フォントデータ１２ｆ´およびステップＳ２１０でホスト１０から取得した文字合成対応表１２ｔを記憶部２２に記憶させる。一方、ステップＳ２３０の後のステップＳ２４０では、取得記憶制御部２１ｂは、ステップＳ２３０でホスト１０から取得した合字削除前フォントデータ１２ｆを記憶部２２に記憶させる。取得記憶制御部２１ｂは、ステップＳ２４０では、記憶部２２に新たに記憶させるデータを、現在記憶されているデータに追加して記憶させる。
【００４１】
このように第２実施例では、デバイス２０は、自身が文字合成機能を有する場合には文字合成対応表１２ｔおよび合字削除後フォントデータ１２ｆ´を記憶し、自身が文字合成機能を有さない場合には合字削除前フォントデータ１２ｆを記憶する。
【００４２】
１‐４．文字合成を伴う文字レンダリング処理：
図５は、デバイス２０（制御部２１）がプログラム２７を実行することにより実現する、文字レンダリング処理を簡易的にフローチャートにより示している。この文字レンダリング処理は、上述の第１実施例または第２実施例のいずれかが実行されたことを前提として実行される。
【００４３】
制御部２１は、通信ＩＦ２６を介して外部（例えばホスト１０）から文字コードを含む出力指示を入力したことを契機として文字レンダリング処理を開始する。文字コードを含む出力指示とは、具体的には、文字列の印刷指示等である。
ステップＳ３００では、制御部２１は、自身が文字合成機能を有するか否かを判定し、文字合成機能を有する場合には（ステップＳ３００において“Ｙｅｓ”）ステップＳ３１０へ進む。一方、制御部２１は、文字合成機能を有さない場合には（ステップＳ３００において“Ｎｏ”）ステップＳ３５０へ進む。
【００４４】
ステップＳ３１０では、レンダリング部２１ａは、前記出力指示に含まれる１つの文字コードに注目し、注目の文字コードを、記憶部２２に記憶されている文字合成対応表１２ｔ内で検索する。そして、レンダリング部２１ａは、当該検索の結果、注目の文字コードが、文字合成対応表１２ｔに規定されているいずれかの合字の文字コードに一致する場合には（ステップＳ３２０において“Ｙｅｓ”）、ステップＳ３３０へ進む。一方、当該検索の結果、注目の文字コードが、文字合成対応表１２ｔに規定されているいずれの合字の文字コードにも一致しない場合は（ステップＳ３２０において“Ｎｏ”）、ステップＳ３４０へ進む。
【００４５】
ステップＳ３３０では、レンダリング部２１ａは、注目の文字コードを、記憶部２２に記憶されている文字合成対応表１２ｔを参照して複数の文字コードへ分解する。例えば、注目の文字コードが、ある合字に対応する上述の１ＥＡ６であれば、この文字コードを、文字合成対応表１２ｔに従って、要素１の文字コード（００Ｃ２）と要素２の文字コード（０３００）とに分解する。このように合字の文字コードを要素１，２の文字コードへ分解する処理は、文字コードの逆変換とも言える。
【００４６】
ここで、ステップＳ３１０〜Ｓ３３０を実行する理由を説明する。制御部２１（レンダリング部２１ａ）が文字合成機能を有する場合、つまりステップＳ３００において“Ｙｅｓ”の判定がなされる場合は、上述の第１実施例または第２実施例の説明から判るように、デバイス２０の記憶部２２には、合字のフォントデータが記憶されない（合字削除後フォントデータ１２ｆ´が記憶されている）。このように合字のフォントデータを保有していない状態では、デバイス２０は、外部から合字の文字コード（例えば、１ＥＡ６）を入力しても、当該合字の文字コードが直接対応するフォントデータに基づく描画をすることはできない。そのため、レンダリング部２１ａは、入力した合字の文字コードを一旦分解して、記憶部２２に記憶されている合字削除後フォントデータ１２ｆ´に含まれている要素１，２のフォントデータに対応する複数の文字コードを得るようにしている。すなわち、デバイス２０は、文字合成機能を有する場合、このようなステップＳ３１０〜Ｓ３３０の実行に際して必要になる文字合成対応表１２ｔを、予めホスト１０から取得しているのである。
【００４７】
ステップＳ３４０では、レンダリング部２１ａは、文字レンダリング機能により文字レンダリングを実行する。このとき、レンダリング部２１ａは、必要に応じて文字合成機能により文字合成も併せて実行する。つまり、ステップＳ３３０後のステップＳ３４０においては、レンダリング部２１ａは、ステップＳ３３０のコード分解によって得られた要素１，２の各文字コード（例えば、００Ｃ２、０３００）が各々対応する２つのフォントデータを記憶部２２から読み出し、当該読み出した２つのフォントデータを合成して１つの文字（合字）を描画する。
【００４８】
また、ステップＳ３２０から進んだステップＳ３４０においては、基本的には、１つの文字コードに対応する１つのフォントデータを記憶部２２から読み出して１つの文字を描画する文字レンダリングを行う。ただし、上述したような要素１，２に該当する２つの文字コードが連続する場合には、それら要素１，２の各文字コード（例えば、００Ｃ２、０３００）が各々対応する２つのフォントデータを記憶部２２から読み出し、当該読み出した２つのフォントデータを合成して１つの文字（合字）を描画する。図５では詳細は省いているが、ステップＳ３１０〜Ｓ３４０の処理は、前記出力指示に含まれる文字コードのそれぞれを順次注目の文字コードとし、複数回実行することになる。
【００４９】
一方、ステップＳ３００において“Ｎｏ”と判定して進んだステップＳ３５０では、レンダリング部２１ａは、文字レンダリング機能により文字レンダリングを実行する。この場合、レンダリング部２１ａは、文字合成機能を有していないため、入力した１つの文字コードに対応するフォントデータを記憶部２２から読み出して文字を描画する文字レンダリングを、１つ１つの文字コードを対象として繰り返し行う。なお、レンダリング部２１ａが文字合成機能を有さない場合は、上述の第１実施例または第２実施例の説明から判るように、デバイス２０の記憶部２２には、合字のフォントデータが記憶される（合字削除前フォントデータ１２ｆが記憶されている）。従って、ステップＳ３５０では、入力された文字コードが合字の文字コード（例えば、１ＥＡ６）であっても、その文字コードに対応する合字のフォントデータを記憶部２２から読み出して描画することができる。
【００５０】
ステップＳ３４０またはステップＳ３５０の後のステップＳ３６０では、出力制御部２１ｃが出力部２５を制御することにより、ステップＳ３４０またはステップＳ３５０で描画された文字（文字列）を出力させる。例えば、デバイス２０がプリンターであれば、出力制御部２１ｃは、前記描画された文字（文字列）の印刷媒体への印刷を出力部２５に実行させる。この意味で、レンダリング部２１ａおよび出力制御部２１ｃは、外部から取得した文字コードに応じて、記憶部２２に記憶されているフォントデータに基づく印刷を実行させる印刷制御部であるとも言える。あるいは、デバイス２０が画像表示装置やプロジェクターであれば、出力制御部２１ｃは、前記描画された文字（文字列）の所定画面への表示やスクリーンへの投射を出力部２５に実行させる。
【００５１】
１‐５．第１実施形態のまとめ：
このように第１実施形態によれば、ホスト１０は、デバイス２０が文字合成機能を有する場合には、合字のフォントデータを除いた合字削除後フォントデータ１２ｆ´をデバイス２０へ送信し記憶させる（第１実施例）。あるいは、デバイス２０は、自身が文字合成機能を有する場合には、外部から取得したフォントデータ１２ｆから合字のフォントデータを除いた合字削除後フォントデータ１２ｆ´を記憶する（第２実施例）。つまり、デバイス２０は、フォントデータを複数組み合わせて新たなフォントデータを生成する生成部（レンダリング部２１ａ）と、フォントデータと文字コードとを対応付けて記憶する記憶部２２と、外部からフォントデータを取得し記憶部２２に記憶させる取得記憶制御部２１ｂと、外部から取得した文字コードに応じて、記憶部２２に記憶されているフォントデータに基づく印刷を実行させる印刷制御部とを備え、取得記憶制御部２１ｂは、生成部が生成可能なフォントデータ（合字のフォントデータ）については外部から取得しないか又は記憶部２２に記憶させない。これにより、記憶部２２におけるフォントデータの記憶処理に要する時間を短縮したり、記憶部２２に記憶させるフォントデータのデータ量を削減したりすることができる。また、外部（例えばホスト１０）がデバイス２０へフォントデータを送信する際に予め合字のフォントデータを除いておくことで、外部とデバイス２０との間の通信負担を軽減し、当該通信に要する時間を短縮することができる。
【００５２】
また上述の第１実施例によれば、ホスト１０は、合字のフォントデータを除いた合字削除後フォントデータ１２ｆ´をデバイス２０へ送信することから、これは、取得記憶制御部２１ｂ（デバイス２０）は、生成部が生成可能なフォントデータ（合字のフォントデータ）の外部からデバイス２０への送信を禁止する、とも表現できる。具体的には、ステップＳ１００（図２）におけるホスト１０からデバイス２０への文字合成機能有無の問い合わせに対する、デバイス２０からホスト１０への返信のうち、文字合成機能を有する旨の通知が、前記禁止の指示に実質的に該当する。つまり、ホスト１０は、デバイス２０から文字合成機能を有する旨の通知（＝合字のフォントデータをデバイス２０へ送信することを禁止する旨の指示）を受けた場合に、ステップＳ１２０（図２）以降の処理に進む。このような構成によれば、外部からデバイス２０へ送信されるフォントデータのデータ量自体を削減することができる。
【００５３】
取得記憶制御部２１ｂ（デバイス２０）は、上述のように生成部が生成可能なフォントデータ（合字のフォントデータ）の外部からデバイス２０への送信を禁止した上で、生成部が生成したフォントデータを、記憶部２２に記憶させるとしてもよいし、記憶させないとしてもよい。上述したようにステップＳ３４０（図５）では、レンダリング部２１ａ（生成部）は、文字レンダリング機能により文字レンダリングを実行し、また必要に応じて文字合成機能により文字合成も実行する。そこで、取得記憶制御部２１ｂは、ステップＳ３４０でレンダリング部２１ａが文字合成機能により生成した合字のフォントデータを、その後に再び利用可能なように記憶部２２に記憶させるとしてもよい。あるいは逆に、記憶部２２における記憶容量の確保という目的の下、取得記憶制御部２１ｂは、ステップＳ３４０でレンダリング部２１ａが文字合成機能により生成した合字のフォントデータを、図５のフローチャート後、記憶部２２に記憶させずに破棄するとしてもよい。
【００５４】
また上述の第２実施例によれば、取得記憶制御部２１ｂは、外部から取得したフォントデータのうち生成部が生成可能なフォントデータ（合字のフォントデータ）を除いたフォントデータを記憶部２２に記憶させる。そして、レンダリング部２１ａ（生成部）は、外部から取得した文字コードに応じて、記憶部２２に記憶されているフォントデータに基づいてフォントデータ（合字のフォントデータ）を生成する。これにより、記憶部２２におけるフォントデータの記憶処理に要する時間を短縮したり、記憶部２２に記憶させるフォントデータのデータ量を削減したりすることができる。
【００５５】
２．第２実施形態：
２‐１．システムの概略説明：
次に、第２実施形態を説明する。第２実施形態は、第１実施形態の内容と組み合わせて実施されてもよいし、第１実施形態とは独立して実施されてもよい。
【００５６】
図６は、第２実施形態にかかるシステム１の主要な構成をブロック図により例示している。図６に示す構成のうち図１と共通する符号が付されているものについては説明を適宜省略する。第２実施形態では、ホスト１０の制御部１１は、プログラム１６を実行することにより、コード変換部１１ａとしても機能する。
【００５７】
デバイス２０の記憶部２２には、フォントデータ１２ｆが記憶されている。このフォントデータ１２ｆは、例えば、外部（ホスト１０等）から予め送信されて記憶部２２に記憶させたものである。図６に示すフォントデータ１２ｆは、第１実施形態で説明した合字削除前フォントデータ１２ｆであるとしてもよい。第２実施形態においては、記憶部２２に記憶されるフォントデータ１２ｆには、合字のフォントデータおよび合字ではない文字や記号等のフォントデータが含まれている。
【００５８】
２‐２．事前コード変換処理を含んだ文字コード送信処理：
図７は、ホスト１０（制御部１１）がプログラム１６を実行することにより実現する、デバイス２０への文字コード送信処理を、フローチャートにより示している。
ステップＳ４００では、制御部１１は、デバイス２０に対して、文字合成機能の有無を問い合わせる。ステップＳ４００の処理は、ステップＳ１００（図２）と同じであるため説明を省略する。ただし第２実施形態では、デバイス２０の制御部２１（レンダリング部２１ａ）は、文字レンダリング機能を有するが文字合成機能は有さないという前提で説明を続ける。
【００５９】
制御部１１は、前記問い合わせへの返信として、デバイス２０から文字合成機能を有する旨の通知を受けた場合には（ステップＳ４１０において“Ｙｅｓ”）ステップＳ４３０へ進む。一方、前記問い合わせへの返信として、デバイス２０から文字合成機能を有さない旨の通知を受けた場合には（ステップＳ４１０において“Ｎｏ”）ステップＳ４２０へ進む。
【００６０】
ステップＳ４２０では、制御部１１は、描画対象文字列について事前コード変換処理を実行する。描画対象文字列とは、デバイス２０に出力（例えば印刷）させるための文字列である。描画対象文字列は、複数の文字コードの集合であると言える。事前コード変換処理では、描画対象文字列を表現する複数の文字コードの中に含まれている要素１，２の文字コードを、文字合成対応表１２ｔを参照して合字の文字コードへ変換する。
【００６１】
事前コード変換処理の具体例を、図８〜１１を用いて説明する。
図８は、ステップＳ４２０の事前コード変換処理を示すフローチャートである。図９は、発音記号の文字コードを規定した記号対応コードテーブルＴ１、図１０は、インデックスと置換テーブルの検索範囲との対応関係を規定したインデックステーブルＴ２、図１１は、文字コードの置換（変換）関係を規定した置換テーブルＴ３の一部分、をそれぞれ示している。これらテーブルＴ１，Ｔ２，Ｔ３も、文字合成対応表１２ｔの一種であり、予め記憶部１２に記憶されている。
【００６２】
図８のフローチャートは、１文字列、つまり描画対象文字列を構成する一行を処理対象の単位として、繰り返し実行される。
ステップＳ５００では、コード変換部１１ａは、現在処理対象としている文字列の中から１つの注目文字を特定する。コード変換部１１ａは、注目文字の位置を指すポインターを、現在処理対象としている文字列の中でこれまで注目文字に特定されていない文字のうち最も文字列の先頭に近い位置の文字に合わせる。そして、ポインターを合わせた位置の文字を注目文字とする。
【００６３】
ステップＳ５１０では、コード変換部１１ａは、現在のポインターの位置に＋１を加えた場合にポインターが指す位置の文字、つまり、注目文字に対して文字列の先頭から遠い側に隣接する文字を、次位置文字として特定する。
【００６４】
ステップＳ５２０では、コード変換部１１ａは、次位置文字は所定の記号に該当するか否かを判定する。ここでは一例として、所定の記号とは、発音記号であるとする。合字の概念においては、発音記号は、要素１に相当する文字に対して組み合わせられる要素２に該当する可能性が高いからである。図９に示すように、記号対応コードテーブルＴ１には、発音記号に該当する文字コードと、それら文字コードの下位１ｂｙｔｅの値とが記述されている。コード変換部１１ａは、次位置文字の文字コードが、記号対応コードテーブルＴ１に記述されている文字コードのいずれかに該当する場合に、ステップＳ５２０において“Ｙｅｓ”と判定しステップＳ５３０へ進む。一方、コード変換部１１ａは、次位置文字の文字コードが、記号対応コードテーブルＴ１に記述されている文字コードのいずれにも該当しない場合に、ステップＳ５２０において“Ｎｏ”と判定しステップＳ６００へ進む。仮に、次位置文字の文字コードが０３００であるとすると、この文字コードは、記号対応コードテーブルＴ１に０×０３００として記述されているため、ステップＳ５２０において“Ｙｅｓ”と判定することになる。
【００６５】
ステップＳ５３０では、コード変換部１１ａは、次位置文字の文字コードは、インデックステーブルＴ２（図１０）におけるインデックスとして有効か否かを判定する。インデックステーブルＴ２は、記号対応コードテーブルＴ１に記述された各文字コードの下位１ｂｙｔｅの値をインデックスとして、置換テーブルＴ３の検索範囲（置換テーブルインデックスおよびレコード数）を規定している。ただし、インデックステーブルＴ２においては、一部のインデックスに対してレコード数が０に規定されている。これは、置換テーブルＴ３の検索範囲が無い、つまり実質的に無効なインデックスであることを示している。発音記号には該当するが合字を生成するための要素２には該当しない文字コードは、その下位１ｂｙｔｅの値が、このような無効なインデックスに該当する。
【００６６】
コード変換部１１ａは、次位置文字の文字コードの下位１ｂｙｔｅの値をインデックスとしてインデックステーブルＴ２を参照したとき、このインデックスに対応するレコード数が０ではない場合に、ステップＳ５３０において“Ｙｅｓ”と判定しステップＳ５４０へ進む。一方、コード変換部１１ａは、次位置文字の文字コードの下位１ｂｙｔｅの値をインデックスとしてインデックステーブルＴ２を参照したとき、このインデックスに対応するレコード数が０である場合に、ステップＳ５３０において“Ｎｏ”と判定しステップＳ６００へ進む。上述したように、次位置文字の文字コードが０３００であるとすると、０３００の下位１ｂｙｔｅの値００をインデックスとしてインデックステーブルＴ２を参照したとき、置換テーブルインデックスは２、レコード数は３８であるから、ステップＳ５３０において“Ｙｅｓ”と判定することになる。
【００６７】
ステップＳ５４０では、コード変換部１１ａは、インデックステーブルＴ２を参照して置換テーブルＴ３の検索範囲（置換テーブルインデックスおよびレコード数）を取得する。上述したように次位置文字の文字コードが０３００であるとすると、０３００の下位１ｂｙｔｅの値００をインデックスとしてインデックステーブルＴ２を参照したとき、置換テーブルインデックスとして２、レコード数として３８、という各値を取得することができる。
【００６８】
ステップＳ５５０では、コード変換部１１ａは、前記のように取得した置換テーブルＴ３の検索範囲で、注目文字の文字コードを検索する。置換テーブルＴ３（図１１）は、置換テーブルインデックス毎に、要素１の文字コードと合字の文字コードとの関係を規定している。上述したように、置換テーブルインデックスが２、レコード数が３８であれば、コード変換部１１ａは、置換テーブルＴ３における置換テーブルインデックス“２”を検索の開始位置とし、当該開始位置を含む連続する３８個のインデックスの範囲（置換テーブルインデックス“２”〜“３９”の範囲）を対象として、要素１の文字コードの欄に注目文字の文字コードが存在するか否かを検索する。
【００６９】
コード変換部１１ａは、ステップＳ５５０の検索の結果、ヒット有り、つまり前記のように取得した置換テーブルＴ３の検索範囲で注目文字の文字コードが見つかれば、ステップＳ５６０において“Ｙｅｓ”と判定してステップＳ５７０へ進む。一方、コード変換部１１ａは、ステップＳ５５０の検索の結果がヒット有りでなければ、ステップＳ５６０において“Ｎｏ”と判定してステップＳ６００へ進む。仮に、注目文字の文字コードが、００Ｃ２であるとする。この場合、置換テーブルインデックス“２”〜“３９”の範囲を対象として、要素１の文字コードの欄を検索すると、置換テーブルインデックス“２２”の位置に、文字コード００Ｃ２が記述されているため、コード変換部１１ａは、ヒット有りと判定することになる。
【００７０】
ステップＳ５７０では、コード変換部１１ａは、注目文字の文字コードと次位置文字の文字コードとの組み合わせを、置換テーブルＴ３を参照して合字の文字コードへ置換する。上述したように、注目文字の文字コードが００Ｃ２であるとすると、置換テーブルインデックス“２２”に対応して、要素１の文字コードの欄に文字コード００Ｃ２が記述されている。そして、置換テーブルＴ３では、この置換テーブルインデックス“２２”に対応して、合字の文字コードの欄には文字コード１ＥＡ６が記述されている。従って、コード変換部１１ａは、注目文字の文字コード（００Ｃ２）と次位置文字の文字コード（０３００）との組み合わせを、合字の文字コード（１ＥＡ６）へ置換することができる。
【００７１】
ステップＳ５８０では、コード変換部１１ａは、現在のポインターに＋２を加える。現在のポインターに＋２を加えることで、現在の注目文字の隣のさらに隣の位置（現在の次位置文字に対して文字列の先頭から遠い側に隣接する位置）へ、ポインターが移動する。
【００７２】
ステップＳ５９０では、コード変換部１１ａは、現在のポインターが指す位置の文字が、現在処理対象としている文字列の最後の文字であるか否か判定し、最後の文字でなければ（ステップＳ５９０において“Ｎｏ”）、ステップＳ５００へ戻る。ステップＳ５９０からステップＳ５００へ戻ったとき、コード変換部１１ａは、現在のポインターが指す位置の文字を新たな注目文字として特定する。一方、ステップＳ５９０では、コード変換部１１ａは、現在のポインターが指す位置の文字が、現在処理対象としている文字列の最後の文字であれば（ステップＳ５９０において“Ｙｅｓ”）、図８のフローチャートを終える。
【００７３】
また、ステップＳ６００では、コード変換部１１ａは、現在のポインターに＋１を加える。現在のポインターに＋１を加えることで、現在の次位置文字へポインターが移動する。ステップＳ６１０では、コード変換部１１ａは、現在のポインターが指す位置の文字が、現在処理対象としている文字列の最後の文字であるか否か判定し、最後の文字でなければ（ステップＳ６１０において“Ｎｏ”）、ステップＳ５００へ戻る。ステップＳ６１０からステップＳ５００へ戻ったとき、コード変換部１１ａは、現在のポインターが指す位置の文字（これまでの次位置文字）を新たな注目文字として特定する。一方、ステップＳ６１０では、コード変換部１１ａは、現在のポインターが指す位置の文字が、現在処理対象としている文字列の最後の文字であれば（ステップＳ６１０において“Ｙｅｓ”）、図８のフローチャートを終える。
【００７４】
図８のフローチャート（事前コード変換処理）の処理対象となった文字列（文字コードの集合）は、順次、デバイス２０へ送信される。つまり、ステップＳ４３０（図７）では、制御部１１は、デバイス２０に対して、描画対象文字列の文字コード（これら文字コードを含んだ出力指示）を、通信ＩＦ１５を介して送信する。ステップＳ４２０（事前コード変換処理）を経ることにより、ステップＳ４３０では、要素１の文字コードと要素２の文字コードとの組み合わせに対して置き換えられた後の合字の文字コードを含んだ描画対象文字列の文字コードが、デバイス２０へ送信される。ただし、ステップＳ４１０の分岐からステップＳ４３０へ進んだ場合には、事前コード変換処理が施されていないままの描画対象文字列の文字コードが、デバイス２０へ送信される。
【００７５】
デバイス２０側では、ホスト１０から送信された描画対象文字列の文字コード（これら文字コードを含んだ出力指示）を、通信ＩＦ２６を介して受信した場合に、制御部２１が、出力指示に含まれる文字列をレンダリングして出力（印刷等）するための制御を実行する。デバイス２０（制御部２１のレンダリング部２１ａ）が文字合成機能を有していない場合は、前記出力指示には、要素１の文字コードと要素２の文字コードとの組み合わせに対して置き換えられた合字の文字コードが含まれている。従って、レンダリング部２１ａは、出力指示に含まれている合字の文字コード（例えば、１ＥＡ６）に対応するフォントデータを記憶部２２から読み出して描画することにより、合字を出力することができる。一方、デバイス２０（制御部２１のレンダリング部２１ａ）が文字合成機能を有している場合は、前記出力指示には、要素１の文字コード（例えば、００Ｃ２）と要素２の文字コード（例えば、０３００）が含まれているが、レンダリング部２１ａは、これら要素１，２の各文字コードが各々対応する２つのフォントデータを記憶部２２から読み出し、当該読み出した２つのフォントデータを合成して１つの文字（合字）を描画することができる。
【００７６】
２‐３．文字合成機能の有無確認の他の実施例：
ホスト１０（制御部１１）が、デバイス２０における文字合成機能の有無を確認する方法は、これまで説明したデバイス２０に文字合成機能の有無を問い合わせる方法以外にも、実際にデバイス２０に合字を描画させた結果を評価する方法が考えられる。
【００７７】
図１２は、ホスト１０（制御部１１）がプログラム１６を実行することにより実現する、文字合成機能の有無確認処理を、フローチャートにより示している。制御部１１は、図７に示すステップＳ４００，Ｓ４１０に替えて、図１２に示す処理を実行することができる。
【００７８】
ステップＳ７００では、制御部１１は、所定の合字の文字コード（例えば、１ＥＡ６）を指定した合字の描画指示（描画指示１）を、通信ＩＦ１５を介してデバイス２０へ送信する。描画指示１を受信したデバイス２０の制御部２１（レンダリング部２１ａ）は、描画指示１に応じて描画を試みる。つまり、レンダリング部２１ａは、描画指示１において指定されている合字の文字コードに対応するフォントデータを記憶部２２から読み出して文字（合字）を描画する。レンダリング部２１ａは、描画指示１に応じて実行した合字の描画の結果（描画結果１）を、通信ＩＦ２６を介してホスト１０へ送信する。この結果、制御部１１は、描画結果１をデバイス２０から取得する（ステップＳ７１０）。
【００７９】
ステップＳ７２０では、制御部１１は、前記所定の合字を生成するための要素１の文字コード（例えば、００Ｃ２）および要素２の文字コード（例えば、０３００）を指定した合字の描画指示（描画指示２）を、通信ＩＦ１５を介してデバイス２０へ送信する。描画指示２を受信したデバイス２０の制御部２１（レンダリング部２１ａ）は、描画指示２に応じて描画を試みる。つまり、レンダリング部２１ａは（文字合成機能を有しているのであれば）、描画指示２において指定されている要素１，２の文字コードが各々対応する２つのフォントデータを記憶部２２から読み出し、当該読み出した２つのフォントデータを合成して１つの文字（合字）を描画する。レンダリング部２１ａは、描画指示２に応じて実行した合字の描画の結果（描画結果２）を、通信ＩＦ２６を介してホスト１０へ送信する。この結果、制御部１１は、描画結果２をデバイス２０から取得する（ステップＳ７３０）。なお、ステップＳ７００，Ｓ７１０と、ステップＳ７２０，Ｓ７３０との実行順序は、図１２に示した順序と逆であってもよい。
【００８０】
ステップＳ７４０では、制御部１１は、描画結果１と描画結果２とを比較し、それらに差異が有るか否かを判定する。ステップＳ７４０における判定は、描画結果１が示す画像（文字）と描画結果２が示す画像（文字）との類否判定であるとも言える。制御部１１は、例えば、比較対象となる画像間でのドット位置の相違や高さや幅の相違などを評価し、ある基準を超える類似度が認められる場合に描画結果１と描画結果２は同一（差異無し）と判定し、当該基準を超える類似度が認められない場合に描画結果１と描画結果２に差異有りと判定する。そして、制御部１１は、差異有りと判定した場合には、デバイス２０に文字合成機能無しとみなし、ステップＳ４２０（図７）へ進む。一方、制御部１１は、差異無しと判定した場合には、デバイス２０に文字合成機能有りとみなし、ステップＳ４３０（図７）へ進む。
【００８１】
制御部１１は、ステップＳ７２０の描画指示２に対するデバイス２０からの返信、つまり描画結果２そのものをデバイス２０から取得できなかった場合にも、ステップＳ７４０において描画結果１と描画結果２に差異有りと判定する。
【００８２】
２‐４．第２実施形態のまとめ：
このように第２実施形態によれば、ホスト１０は、デバイス２０が文字合成機能を有さない場合には、描画対象文字列を表現する複数の文字コードの中に含まれている要素１，２の文字コードを合字の文字コードへ変換する事前コード変換処理を実行し、事前コード変換処理後の文字コードをデバイス２０へ送信する。この結果、デバイス２０は、自身が文字合成機能を有さない場合であっても、ホスト１０から送信された事前コード変換処理後の文字コードに基づいて合字を描画、出力することができる。
【００８３】
なお、事前コード変換処理は、ホスト１０の処理負担を増やすものである。しかし、ホスト１０は、文字コードの出力指示をデバイス２０へ送信するにあたり、デバイス２０が文字合成機能を有さない場合にのみ事前コード変換処理を実行し、デバイス２０が文字合成機能を有する場合には事前コード変換処理を実行しない。つまり第２実施形態によれば、デバイス２０の制御部２１（取得記憶制御部２１ｂ）は、生成部が生成可能なフォントデータ（合字のフォントデータ）に対応する文字コードに替えて、当該フォントデータ（合字のフォントデータ）を生成するための複数のフォントデータに対応する複数のコード（要素１，２の文字コード）を含む印刷指示を外部からデバイス２０へ送信させる、という構成を把握できる。
【００８４】
具体的には、ステップＳ４００（図７）におけるホスト１０からデバイス２０への文字合成機能有無の問い合わせに対する、デバイス２０からホスト１０への返信のうち、文字合成機能を有する旨の通知が、合字の文字コードに替えて当該合字を生成するための要素１，２の文字コードを送信させる旨の指示に実質的に該当する。つまり、ホスト１０は、デバイス２０から文字合成機能を有する旨の通知（＝合字を生成するための要素１，２の文字コードを送信させる旨の指示）を受けた場合に、ステップＳ４２０をスキップしてステップＳ４３０へ進む。かかる構成によれば、デバイス２０は、ホスト１０側の処理負担の増加を最小限に抑えることができる。
【００８５】
また、文字合成機能の有無確認処理（図１２）よれば、デバイス２０は、文字合成機能を有する場合、生成部が生成可能なフォントデータ（合字のフォントデータ）に対応する文字コードが外部から送信された場合（描画指示１を受信した場合）と、当該フォントデータ（合字のフォントデータ）を生成するための複数のフォントデータに対応する複数のコード（要素１，２の文字コード）が当該外部から送信された場合（描画指示２を受信した場合）とで、同一のフォントデータ（描画結果１および描画結果２）を当該外部に返信すると言える。かかる構成によれば、デバイス２０は、自身が文字合成機能を有する旨を的確に外部に知らせることができる。
【００８６】
３．その他の実施形態：
文字合成機能の有無確認処理（図１２）は、第１実施形態にも適用できる。つまり、制御部１１は、図２に示すステップＳ１００，Ｓ１１０に替えて、図１２に示す処理を実行する。そして、制御部１１は、ステップＳ７４０において、描画結果１と描画結果２に差異無しと判定した場合には、デバイス２０に文字合成機能有りとみなし、ステップＳ１２０へ進み、一方、描画結果１と描画結果２に差異有りと判定した場合には、デバイス２０に文字合成機能無しとみなし、ステップＳ１４０へ進む。第１実施形態は、デイバス２０が文字合成機能を有する場合には、外部からデバイス２０へ合字のフォントデータを記憶させない技術である。しかし第１実施形態は、デバイス２０の記憶部２２に予め（例えば、デバイス２０が市場へ出荷される時点で）幾つかの合字のフォントデータを含むフォントデータが記憶されている状況を否定するものではない。従って、ホスト１０がデバイス２０へフォントデータを送信するタイミング（ステップＳ１４０のタイミング）よりも前に、文字合成機能の有無確認処理（図１２）を実行することは可能である。
【００８７】
デバイス２０によるフォントデータ等のデータの取得元となる外部とは、これまで説明したホスト１０に限られず、例えば、通信ＩＦ２６に接続されたＵＳＢメモリー、ＳＤメモリーカード、ＨＤＤ等、様々な記憶手段であってもよい。また、このような外部の記憶手段もシステム１を構成する通信装置に該当する。
【符号の説明】
【００８８】
１…システム、１０…ホスト、１１…制御部、１１ａ…コード変換部、１２…記憶部、１２ｆ…フォントデータ（合字削除前フォントデータ）、１２ｆ´…合字削除後フォントデータ、１２ｔ…文字合成対応表、１３…表示部、１４…操作受付部、１５…通信ＩＦ、１６…プログラム、２０…デバイス、２１…制御部、２２…記憶部、２３…表示部、２４…操作受付部、２５…出力部、２６…通信ＩＦ、２７…プログラム（出力制御プログラム）、Ｔ１…記号対応コードテーブル、Ｔ２…インデックステーブル、Ｔ３…置換テーブル
【図１】
2018039202.tif 000005
【図２】
2018039202.tif 000006
【図３】
2018039202.tif 000007
【図４】
2018039202.tif 000008
【図５】
2018039202.tif 000009
【図６】
2018039202.tif 000010
【図７】
2018039202.tif 000011
【図８】
2018039202.tif 000012
【図９】
2018039202.tif 000013
【図１０】
2018039202.tif 000014
【図１１】
2018039202.tif 000015
【図１２】
2018039202.tif 000016