(57)【特許請求の範囲】
【請求項１】
オペレーティング・システム内で使用されている基礎となるデータ・コード化体系と関連して、マルチバイト・キャラクタ・コード化体系内での単一バイト系キャラクタの処理を最適化する方法であって、
データ・ストリングを受け取るステップと、
前記データ・ストリング全体を第１の処理ルーチンに渡すステップと、
前記データ・ストリングを評価して前記データ・ストリング内のいずれかのキャラクタがホスト・フォントの除外キャラクタであるか否かを判断するステップと、
前記データ・ストリング全体を第２の処理ルーチンに転送するステップと、
前記データ・ストリング内の限定された数のキャラクタを評価して、前記データ・ストリングが基礎となる前記コード化体系の下で変換することができるか否かを判断するステップとを含み、
前記データ・ストリングを評価して前記データ・ストリング内のいずれかのキャラクタがホスト・フォントの除外キャラクタであるか否かを判断する前記ステップが、
論理和ブール演算を使用して前記データ・ストリング内のすべてのキャラクタを結合し、単一のキャラクタを形成するステップと、
前記単一のキャラクタが単一バイト系キャラクタであるか否かを判断するステップと、
前記ホスト・フォントの除外範囲を検査して前記除外範囲が単一バイト系キャラクタを含むか否かを判断するステップとをさらに含む
方法。
【請求項２】
データ・ストリングを受け取る前記ステップが、データ入力装置から前記データ・ストリングを入力するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記データ・ストリング全体を第１の処理ルーチンに渡すステップが、前記データ・ストリングを前記第１の処理ルーチンに配列として送るステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記データ・ストリングを前記第２の処理ルーチンに転送する前記ステップが、前記データ・ストリングを前記第２の処理ルーチンに配列として送るステップをさらに含む、請求項１に記載の方法。
【請求項５】
オペレーティング・システム内で使用されている基礎となるデータ・コード化体系と関連して、マルチバイト・キャラクタ・コード化体系内での単一バイト系キャラクタの処理を最適化する方法を実施するコンピュータ実行可能命令が記憶されたコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、実行されると、  データ・ストリングを受け取るステップと、
前記データ・ストリング全体を第１の処理ルーチンに渡すステップと、
前記データ・ストリングを評価して前記データ・ストリング内のいずれかのキャラクタがホスト・フォントの除外キャラクタであるか否かを判断するステップと、
前記データ・ストリング全体を第２の処理ルーチンに転送するステップと、
前記データ・ストリング内の限定された数のキャラクタを評価して、前記データ・ストリングが基礎となる前記コード化体系の下で変換することができるか否かを判断するステップと含み、
前記データ・ストリングを評価して前記データ・ストリング内のいずれかのキャラクタがホスト・フォントの除外キャラクタであるか否かを判断する前記ステップが、
論理和ブール演算を使用して前記データ・ストリング内のすべてのキャラクタを結合し、単一のキャラクタを形成するステップと、
前記単一のキャラクタが単一バイト系キャラクタであるか否かを判断するステップと、
前記ホスト・フォントの除外範囲を検査して前記除外範囲が単一バイト系キャラクタを含むか否かを判断するステップとをさらに含む
コンピュータ可読媒体。
【請求項６】
データ・ストリングを受け取る前記ステップが、データ入力装置から前記データ・ストリングを入力するステップをさらに含む、請求項５に記載のコンピュータ可読媒体。
【請求項７】
前記データ・ストリング全体を第１の処理ルーチンに渡す前記ステップが、前記データ・ストリングを前記第１の処理ルーチンに配列として送るステップをさらに含む、請求項５に記載のコンピュータ可読媒体。
【請求項８】
前記データ・ストリングを前記第２の処理ルーチンに転送する前記ステップが、前記データ・ストリングを前記第２の処理ルーチンに配列として送るステップをさらに含む、請求項５に記載のコンピュータ可読媒体。
【請求項９】
オペレーティング・システム内で使用されている基礎となるデータ・コード化体系と関連して、マルチバイト・キャラクタ・コード化体系内での単一バイト系キャラクタの処理を最適化するシステムであって、
データ・ストリングを受け取る手段と、
前記データ・ストリング全体を第１の処理ルーチンに渡す手段と、
前記データ・ストリングを評価して前記データ・ストリング内のいずれかのキャラクタがホスト・フォントの除外キャラクタであるか否かを判断する手段と、
前記データ・ストリング全体を第２の処理ルーチンに転送する手段と、
前記データ・ストリング内の限定された数のキャラクタを評価して、前記データ・ストリングが基礎となる前記コード化体系の下で変換することができるか否かを判断する手段とを含み、
前記データ・ストリングを評価して前記データ・ストリング内のいずれかのキャラクタがホスト・フォントの除外キャラクタであるか否かを判断する前記手段が、
論理和ブール演算を使用して前記データ・ストリング内のすべてのキャラクタを結合し、単一のキャラクタを形成する手段と、
前記単一のキャラクタが単一バイト系キャラクタであるか否かを判断する手段と、
前記ホスト・フォントの除外範囲を検査して前記除外範囲が単一バイト系キャラクタを含むか否かを判断する手段とをさらに含む
システム。
【請求項１０】
前記データ・ストリング全体を第１の処理ルーチンに渡す前記手段が、前記データ・ストリングを前記第１の処理ルーチンに配列として送る手段をさらに含む、請求項９に記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にはデータ処理に関し、より詳しくは、マルチバイト・キャラクタ・コード化体系内で使用される単一バイト・キャラクタ処理の最適化の方法、システム、およびコンピュータ・プログラム製品に関する。
【０００２】
【従来の技術】
コンピュータ出現以前には、言語は発話され、次に紙の上に形象として書かれた。個人は、これらの形象を認識し、音声と、それによるメッセージの意味とを再現することができる。コンピュータの出現に伴い、テキストを記憶し、再現することができるように、文字をコンピュータのメモリ内のコードとして表すことが必要になった。初期のコンピュータでは、メモリを複数のチャンク（現在、一般に「バイト」と呼ばれる）として構造化し、これらの各チャンクを使用して１キャラクタを表した。しかし、様々なコンピュータが様々なキャラクタ・コード化体系を使用したため、コンピュータ間で情報を交換するのが困難になっていた。
【０００３】
コンピュータ業界によって、１バイトの長さを８ビットとする標準が設定された。８ビット・バイトによって、２５６の異なるキャラクタをコード化することができ、これは英語の大文字を扱うには十分であり、小文字にも拡張することができた。これは、「情報交換用米国標準コード」（ASCII）と呼ばれるようになった。
【０００４】
コンピュータが世界中に普及するにつれて、コンピュータは、テキストを扱う場合に、異なる言語のテキストの認識と操作が可能であることが必要になってきた。しかし、ほとんどのコンピュータは、１カ国語で使用され、その結果、各言語用の異なるキャラクタ・セットが生じた。これは、単一言語機用にはうまく機能する。しかし、異言語を使用するマシン間で情報を共有したり送信したりする場合、同じコード・ポイント、すなわちキャラクタ・コーディング化が異なるキャラクタ・セット内の異なるキャラクタを表すことがあるという問題が生じる。
【０００５】
異なるキャラクタ・セット内の異なるキャラクタを表す同じコード・ポイントがあるという問題を解消するために、「ユニコード」や「マルチコード」などのマルチバイト・キャラクタ・コード化体系が設定された。たとえば、ユニコードは、多様な人間言語で書かれたテキストをサポートするように作成された１６ビットキャラクタ・コード化体系を使用する。マルチバイト・キャラクタ・コード化体系は、各コード・ポイントが固有のキャラクタを表すため、コンピュータ・システムがテキスト情報を曖昧さなしに交換することができるように作成されている。
【０００６】
しかし、現在、マルチバイト・キャラクタ・コード化体系で可能なすべてのキャラクタを表示することができるフォント・セットを備えることは一般的に行われていない。一般には、英語などの西欧言語用のほとんどのフォントは、合計６５５３５個のユニコード・キャラクタのうち、最初の２５６個のみを表示する。したがって、アプリケーション・プログラムが１センテンス内で複数の言語のキャラクタを使用したい場合、または、たとえば英語のテキストと数学記号とを共に含むデータ・ストリングを表示しようとする場合、単一フォント、たとえばTimes Romanではすべてのキャラクタを表示することができない。この限界を克服するために、サン・マイクロシステムズ社は、自社のＪａｖａ仮想計算機（ＪＶＭ）に複数ホスト・フォントの概念を導入している。複数ホスト・フォントの概念の実現方法を例示するために、以下のフォント・プロパティ・ファイルから抜粋した一部について検討してみる。
dialog.0=Arial,ANSI_CHARSET
dialog.1=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
dialog.3=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
#Exclusion Range info,
exclusion.dialog.0=0100-20ab,20ad-ffff
【０００７】
このフォント・プロパティ・ファイル内では、Ｊａｖａフォント・ダイアログが一連のホスト・フォント、すなわち、（上掲の例の）Arial、WindDings、およびSymbolにマップされる。特定のフォントで扱うことができないキャラクタ、たとえばArialを使用する数学記号については、その特定のフォントの除外範囲を指定する。たとえば、上掲の例では、Arialの除外範囲は0x100〜0x20abと0x20ad〜0xfffであり、フォントWingDingsとSymbolには除外範囲が指定されていない。さらに、各フォントには各キャラクタ、たとえば各ユニコード・キャラクタを、基礎となるコード化体系で理解されるバイトにマップするために使用されるコンバータが関連づけられる。一般的な方式は、第１のホスト・フォントによってユニコード・キャラクタを扱うことができない場合、すなわちサポートされていない場合、指定された第２のホスト・フォントを試み、以下同様に試みていくというものである。その目的は、マルチバイト・キャラクタ・セットを望む限り多くサポートしようと試みることである。
【０００８】
しかし、複数のホスト・フォントの導入によってパフォーマンスが大幅に低下し、テキスト・ストリングを描画する場合には特に低下する。この場合、ストリング内のすべてのキャラクタについて、検査を２回行わなければならない。第１に、そのキャラクタが指定フォントの除外キャラクタであるかどうかを判断しなければならない。第２に、除外キャラクタでない場合は、その特定のキャラクタを、ISO Latin-1などの基礎となるコード化体系にマップすることができるかどうか判断しなければならない。しかし、このような複数の検査は、それに要する時間の点で、テキスト描画のうちでも高くつく部分になっている。
【０００９】
【発明が解決しようとする課題】
本発明の目的は、マルチバイト・キャラクタ・コード化体系内での単一バイト・キャラクタの処理を最適化する方法、システム、およびコンピュータ・プログラム製品を提供することである。
【００１０】
【課題を解決するための手段】
上記の目的を達成するために、本明細書で概説し、実施される本発明により、マルチバイト・キャラクタ・コード化体系内での単一バイト・キャラクタ処理を最適化する方法、システム、およびコンピュータ・プログラム製品を開示する。この方法は、（１）データ・ストリングを受け取るステップと、（２）そのデータ・ストリング全体を第１の処理ルーチンに渡すステップと、（３）その後で、データ・ストリングを評価して、データ・ストリング内のいずれかのキャラクタがホスト・フォントの除外キャラクタであるか否かを判断するステップとを含む。この方法は、さらに、（４）データ・ストリング全体を第２の処理ルーチンに転送するステップと、（５）データ・ストリング内の限られた数のキャラクタを評価してデータ・ストリングを基礎になるコード化体系の下で変換することができるか否かを判断するステップとを含む。
【００１１】
本発明は、複数フォント環境において、データ・ストリング内の個々のキャラクタを検査して、そのキャラクタが所与のフォントの除外キャラクタであるか否かを判断した後、そのキャラクタを基礎となるコード化体系にマップ、すなわち変換することができるか否かを判断する従来の方法が、ASCIIキャラクタしか含まないデータ・ストリングには通常不要であることを認識する。一般には、必要なのは第１のホスト・フォントのみである。すなわち、ほとんどの場合、ASCIIキャラクタは除外キャラクタではなく、それらのキャラクタは基礎となるコード化体系にマップすることができる。したがって、本発明は、複数の関数呼出で各キャラクタを別々に検査するのではなく、データ・ストリング全体またはデータ・ストリング内の限られた数のキャラクタの属性を検査するという広い概念を導入する。この手法により、複数ホスト・フォント環境内で単一バイトASCIIキャラクタのみを含むデータ・ストリングの、マルチバイト・キャラクタ・コーディングを使用した効率的な処理が容易になる。
【００１２】
本発明の一実施形態では、データ・ストリングを受け取るステップは、データ入力装置からデータ・ストリングを入力するステップをさらに含む。コンピュータ・キーボードなど、データ入力が可能などのような装置でも、本発明の意図された範囲に十分に含まれることが、当業者なら容易にわかるであろう。
【００１３】
本発明の他の実施形態では、第１の処理ルーチンにデータ・ストリングを渡すステップは、第１の処理ルーチンにデータ・ストリングを配列として転送するステップをさらに含む。配列にはテーブル構造やマトリックス構造などのデータ表現が含まれることが当業者なら十分にわかるであろう。
【００１４】
本発明の他の実施形態では、第２の処理ルーチンにデータ・ストリングを転送するステップは、第２の処理ルーチンにデータ・ストリングを配列として送るステップをさらに含む。前述のように、配列にはテーブル構造などのデータ表現が含まれることが当業者なら十分にわかるであろう。
【００１５】
本発明の他の実施形態では、評価するステップは、論理和ブール演算を使用してデータ・ストリング内のすべてのキャラクタを結合して単一のキャラクタを形成し、その結果の単一のキャラクタが単一バイト・キャラクタであるか否かを判断し、ホスト・フォントの除外範囲を検査して除外範囲に単一バイト・キャラクタが含まれているか否かを判断するステップをさらに含む。
【００１６】
以上の説明では、当業者が以下の本発明の詳細な説明をよりよく理解することができるように、本発明の好ましい特徴及び代替の特徴の概略をやや大雑把に述べた。本発明の特許請求の範囲の主題を形成する本発明の他の特徴について、以下に説明する。当業者なら、本発明と同じ目的を実施するために他の構造を設計または修正する基礎として、本開示の概念および特定の実施形態を容易に使用することができることがわかるであろう。また、当業者なら、そのような同等の構成が、本発明の最も広い態様において本発明の趣旨および範囲から逸脱しないこともわかるであろう。
【００１７】
【発明の実施の形態】
図面、特に図１を参照すると、本発明の実施に適した環境を備えるコンピュータ・システム１００の実施形態の一例を示す。コンピュータ・システム１００には、処理装置１２１と、システム・メモリ１２２と、システム・メモリ１２２を処理装置１２１に結合するシステム・バス１２３とを含む従来のパーソナル・コンピュータ（ＰＣ）１２０が含まれる。例示の実施形態では、システム・メモリ１２２は、読取り専用メモリ（ＲＯＭ）１２４とランダム・アクセス・メモリ（ＲＡＭ）１２５とを含む。起動時などパーソナル・コンピュータ１２０内の各要素間での情報の転送を容易にする基本ルーチンを含む基本入力／出力システム（ＢＩＯＳ）１２６が、一般にはＲＯＭ１２４に記憶されている。
【００１８】
パーソナル・コンピュータは、ハード・ディスク・ドライブ１２７と、たとえば取外し可能ディスク１２９との間で読取りおよび書込みを行う磁気ディスク・ドライブ１２８と、たとえばＣＤ−ＲＯＭディスク１３１の読取りやその他の光媒体との間での読取りまたは書込みを行う光ディスク・ドライブ１３０とをさらに含む。ハード・ディスク・ドライブ１２７，磁気ディスク・ドライブ１２８，および光ディスク・ドライブ１３０は、それぞれハード・ディスク・ドライブ・インタフェース１３２、磁気ディスク・ドライブ・インタフェース１３３、および光ドライブ・インタフェース１３４によってシステム・バス１２３に接続されている。
【００１９】
ドライブおよびそれらに付随するコンピュータ可読媒体は、パーソナル・コンピュータ１２０に不揮発性記憶域を提供する。上述のコンピュータ可読媒体の説明ではハード・ディスク、取外し可能磁気ディスク、およびＣＤ−ＲＯＭディスクについて言及したが、コンピュータによって読取り可能な他のタイプお媒体、たとえば磁気カセット、フラッシュ・メモリ・カード、および同類のものなども、この例示の動作環境で使用可能であることが当業者なら容易にわかることに留意されたい。
【００２０】
ドライブおよびＲＡＭ１２５には、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム１３６、その他のプログラム・モジュール１３７、およびプログラム・データ１３８を含む複数のプログラム・モジュールを記憶することができる。ユーザは、キーボード１４０およびポインティング・デバイス１４２、たとえばマウスを介してパーソナル・コンピュータ１２０にコマンドと情報を入力することができる。その他のデータ入力装置として、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星アンテナ、スキャナ、または同様のものを含めることができる。データ入力装置は、一般には、システム・バス１２３に結合されたシリアル・ポート・インタフェース１４６を介して処理装置１２１に接続されるが、ゲーム・ポートやユニバーサル・シリアル・バス（ＵＳＢ）などの他のタイプのインタフェースを使用して接続することもできる。モニタ１４７またはその他のタイプの表示装置も、ビデオ・アダプタ１４８などのインタフェースを介してシステム・バス１２３に接続される。
【００２１】
パーソナル・コンピュータ１２０は、リモート・コンピュータ１４９などの１つまたは複数のリモート・コンピュータとの論理接続を使用してネットワーク環境で動作させることもできる。リモート・コンピュータ１４９は、サーバ、ルータ、対等装置、またはその他の共通ネットワーク・ノードとすることができ、一般にはパーソナル・コンピュータ１２０に関して上述した要素の一部または全部を含むが、メモリ記憶装置１５０しか図示していない。図１に示す論理接続には、ローカル・エリア・ネットワーク（ＬＡＮ）１５１およびワイド・エリア・ネットワーク（ＷＡＮ）１５２が含まれる。
【００２２】
ＬＡＮネットワーク環境で使用する場合、パーソナル・コンピュータ１２０はネットワーク・インタフェース１５３を介してＬＡＮ１５１に接続される。ＷＡＮネットワーク環境で使用する場合、パーソナル・コンピュータ１２０は、一般にモデム１５４、またはインターネットなどのＷＡＮ１５２を介した通信を確立するその他の手段を含む。モデム１５４は、内蔵または外付けとすることができ、シリアル・ポート・インタフェース１４６を介してシステム・バス１２３に接続される。ネットワーク環境では、パーソナル・コンピュータ１２０に関して図示されているプログラム・モジュールまたはその一部をリモート・メモリ記憶装置に記憶することができる。図のネットワーク接続は例示であり、コンピュータ間の通信リンクを確立するその他の手段も有利に使用可能であることは、容易にわかるであろう。
【００２３】
上述の説明は、本発明を有利に実施することができる例示のコンピューティング環境を簡単に概説することを意図したものであることに留意されたい。図の例示の環境について分散コンピューティング環境の一般的な状況内で説明したが、本発明は他の環境でも実施可能であることが当業者ならわかるであろう。分散コンピューティング環境では、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される。プログラム・モジュールは、ローカルとリモートの両方のメモリ記憶装置にロードすることができる。プログラム・モジュール、たとえばルーチン、プログラム、構成要素、およびデータ構造は、特定のタスクを実行するか、または特定の抽象データ・タイプを実現する。本発明は、オペレーティング・システム上で稼働するアプリケーション・プログラムの環境でも、パーソナル・コンピュータと共に、またはその他のプログラム・モジュールと組み合わせて、実施可能である。さらに、本発明は、ハンドヘルド装置や、マルチプロセッサ・システム、ミニコンピュータ、メインフレーム・コンピュータを含む、その他のコンピュータ・システム構成でも実施可能であることが、当業者なら容易にわかるであろう。
【００２４】
次に図２を参照すると、本発明の原理を使用するデータ表示処理システム２００の高水準ブロック図が図示されている。処理システム２００は、それぞれTimes Roman、Arial、Courierなど複数のホスト・フォント２３０ａ、２３０ｂ、２３０ｃと、ISO Latin-1などの基礎となるデータ・コード化体系２４０とに結合されたカーネル２２０を含むオペレーティング・システム２１０を含む。一般に、オペレーティング・システム２１０は、キーボードなどのデータ入力装置２５０から、モニタなどの表示装置２７０上に表示する、典型的には複数のキャラクタから成るデータ・ストリング２６０を受け取る。データ・ストリング２６０は必ずしもデータ入力装置２５０から供給される必要はなく、インターネットまたはアプリケーション・プログラムから供給されてもよいことに留意されたい。データ・ストリング２６０内のキャラクタはコード化される。すなわち、ユニコードやマルチコードなどのマルチバイト・キャラクタ・コード化体系を使用して表される。有利な実施形態では、データ・ストリング２６０内の個々のキャラクタは１６ビットで表される。
【００２５】
前述のように、現在、データ・ストリング２６０内の各キャラクタについて２回の検査を行わなければならない。まず最初に、キャラクタが指定ホスト・フォントの除外キャラクタであるか否かを判断しなければならない。キャラクタが指定ホスト・フォントの除外キャラクタでないと判断された場合、その後でそのキャラクタを基礎となるコード化体系２４０にマップすることができるか否かを調べる他の判断が行われる。これらの検査は、テキスト・ストリングを描画する時間「オーバヘッド」のかなりの部分を占める。本発明は、複数フォント環境において、データ・ストリング内の個々のキャラクタを検査してキャラクタが所与のフォントの除外キャラクタであるか否かを判断し、次に、キャラクタが基礎となるコード化体系にマップ、すなわち変換することができるか否かを判断する従来の方法が、ASCIIキャラクタのみを含むデータ・ストリングには不要であることを認識する。一般に、必要なのは第１のホスト・フォントのみである。すなわち、ほとんどの場合、ASCIIキャラクタは除外キャラクタではなく、基礎となるコード化体系にマップすることができる。
【００２６】
次に図３を参照すると、本発明の原理により、単一バイト・キャラクタの処理を最適化する方法の一実施形態を示す高水準プロセス流れ図３００が図示されている。この方法は、開始ステップ３１０から始まり、図２に示すデータ・ストリング２６０に類似したデータ・ストリングｓを表示する要求を受け取る。表示要求を受け取ると、データ・ストリング全体が第１の処理ルーチン３２０に渡され、指定されたホスト・フォントの除外キャラクタであるキャラクタがデータ・ストリングに含まれているか否かが判断される。有利な実施形態では、データ・ストリングｓは第１の処理ルーチン３２０に配列、すなわちキャラクタのテーブルとして送られる。第１の処理ルーチン３２０の２つの実施形態について、図３の参照を続けながら、図４および図５を参照して説明する。しかし、本発明の上記の実施形態およびシステムは一般に、ハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の組合せでも実施可能であることが、当業者ならわかるであろう。
【００２７】
図４を参照すると、本発明の原理による、図３に図示した第１の処理ルーチン３２０の第１の実施形態の高水準フローチャート４００が図示されている。この例示の第１の実施形態では、第１の処理ルーチン３２０について、IsExcludedAnyというソフトウェア関数呼出の状況で説明する。この関数呼出IsExcludedAnyは、開始ステップ４１０に示すように、データ・ストリングｓ全体の受領により開始される。次に、判断ステップ４２０に示すように、プロセスがデータ・ストリングｓの終わりにきたか否かを判断する。判断ステップ４２０での判断が、データ・ストリングｓの終わりである場合、偽を返すステップ４３０に制御が移る。次に、偽を返すステップ４３０に示すように、第１の処理ルーチン３２０に偽を示す標識が返される。
【００２８】
しかし、判断ステップ４２０で、データ・ストリングｓの終わりではないと判断された場合、制御は次のキャラクタを処理するステップ４４０に移る。ステップ４４０に示すように、データ・ストリングｓ内の次の未検査キャラクタが判断ステップ４５０に渡され、その未検査キャラクタが指定フォントの除外キャラクタであるか否かが判断される。この判断は、キャラクタのビット単位表現を検査して指定フォントのために定義された除外範囲内に含まれるか否かを調べることによって行われる。
【００２９】
キャラクタが除外キャラクタであると確定した場合、真を返すステップ４６０に示すように、第１の処理ルーチン３２０に真を示す標識が返される。しかし、キャラクタが除外キャラクタではないと判断された場合、制御は判断ステップ４２０に戻り、データ・ストリングの終わりを示すキャラクタに遭遇するまでこの評価プロセスを繰り返す。例示のIsExcludedAnyアルゴリズムを表１に示す。
0004056199.tif 000002
【００３０】
isExcluded関数は、当技術分野で周知の従来のアルゴリズムであり、したがって本明細書では詳述しないことに留意されたい。
【００３１】
次に図５を参照すると、本発明の原理による、図３に示す第１の処理ルーチン３２０の第２の実施形態の高水準フローチャート５００が示されている。第１の処理ルーチン３２０は、データ・ストリングｓを受け取るステップ５１０に示すように、データ・ストリングｓ全体を受け取ると開始される。次に、ステップ５２０に示すように、データ・ストリングｓ内のすべてのキャラクタが結合され、その結果単一のキャラクタが形成される。これは、論理和ブール演算を使用して、すべてのキャラクタのビット単位の論理和をとることによって行われる。
【００３２】
単一結果キャラクタの形成の次に、判断ステップ５３０に示すように、結果キャラクタを評価して単一バイト・キャラクタであるか否かを判断する。結果キャラクタが単一バイト・キャラクタではないと判断された場合、制御は真を戻すステップ５４０に移る。次に、ステップ５４０に示すように、真を示す標識が第１の処理ルーチン３２０に返される。
【００３３】
しかし、判断ステップ５３０で、結果キャラクタが単一バイト・キャラクタであると判断された場合、制御はもう一つの判断ステップ５５０に移る。判断ステップ５５０に示すように、指定ホスト・フォントのために定義された除外範囲を検査して、それらの範囲に単一バイト・キャラクタが含まれているか否かを判断する。除外範囲に単一バイト・キャラクタが含まれていると確定した場合、ステップ５４０に示すように、真を示す標識が第１の処理ルーチン３２０に返される。
【００３４】
一方、単一バイト・キャラクタが除外キャラクタに含まれていない、すなわち、除外範囲に単一バイト・キャラクタが含まれていないと判断された場合、偽を返すステップ５６０に制御が移る。次に、ステップ５６０に示すように、偽を示す標識が第１の処理ルーチン３２０に返される。
【００３５】
図３に戻って参照すると、前述のように、第１の処理ルーチン３２０の結果は真または偽の標識である。結果が真の標識だった場合、すなわちデータ・ストリングｓが除外キャラクタを含む場合、データ・ストリングｓは従来のプロセス３３０に渡される。簡単に説明すれば、図のように、従来のプロセス３３０は従来のルーチンを使用してデータ・ストリングｓを解析してサブストリングにし、各サブストリングは互換性のあるホスト・フォントによって扱われる。
【００３６】
偽の標識の場合、データ・ストリングｓ全体が第２の処理ルーチン３４０に再び転送される。有利な実施形態では、データ・ストリングｓは、配列、たとえばキャラクタのマトリックスとして第２の処理ルーチン３４０に送られる。次に、図のように、第２の処理ルーチン３４０はデータ・ストリングｓ内の限られた数のキャラクタを評価して、すべてのキャラクタが基礎となるコード化体系の下に変換可能であるか否かを判断する。第２の処理ルーチン３４０の実施例のプロセスの流れを、図３を継続して参照しながら図６を参照して、以下に述べる。
【００３７】
図６を参照すると、図３に示す第２の処理ルーチン３４０の実施形態の高水準フローチャート６００が図示されている。この例示の実施形態では、第２の処理ルーチン３４０について、CanConvertAllという関数呼出に関して説明する。このプロセスは、開始ステップ６１０に示すように、CanConvertAllが第１の処理ルーチン３２０からデータ・ストリングｓを受け取ると開始される。
【００３８】
データ・ストリングｓを受け取った後、ステップ６２０に示すように、データ・ストリングｓ内の最小値を持つキャラクタと最大値を持つキャラクタが識別される。次に、ステップ６３０に示すように識別された最小値キャラクタを評価して、その値、すなわちキャラクタのビット単位表現が、基礎となるコード化体系によって指定された範囲内にあるか否かを判断する。キャラクタが指定範囲の１つの中にない場合、偽を返すステップ６４０に制御が移り、その時点で第２の処理ルーチン３４０に偽の標識が返される。しかし、最小値キャラクタがサポートされている指定範囲の１つの中にある場合、すなわち基礎となるコード化体系によって変換可能な場合、ステップ６５０に示すようにその範囲に第１の識別子ｒ１が割り当てられる。
【００３９】
第１の識別子ｒ１の割当ての後で、ステップ６６０に示すように、識別された最大値キャラクタを評価して、その値が基礎となるコード化体系によってサポートされている範囲内にあるか否かを判断する。キャラクタの最大値が指定範囲の１つの中にない場合、偽を返すステップ６４０に制御が移り、次に、第２の処理ルーチン３４０に偽の標識を返す。しかし、最大値キャラクタが基礎となるコード化体系によってサポートされている指定範囲の１つの中にある場合、ステップ６７０に示すようにその範囲に第２の識別子ｒ２が割り当てられる。
【００４０】
第２の識別子ｒ２の割当ての後に、決定ステップ６８０に示すように、第１と第２の識別子ｒ１とｒ２をそれぞれ互いに比較する。ここで、第１と第２の識別子ｒ１とｒ２に関連づけられた特定の範囲を互いに比較し、それらが同じか否か判断する。比較の結果、第１と第２の識別子ｒ１、ｒ２が等しくない場合、すなわち最大値キャラクタと最小値キャラクタが特定の１つの範囲内にない場合、図のように、偽を返すステップ６４０に制御が移り、次に第２の処理ルーチン３４０に偽の標識が返される。一方、第１と第２の両方の識別子ｒ１、ｒ２が等しい場合、図のように、真を返すステップ６９０に制御が移り、第２の処理ルーチン３４０に真の標識が返される。
【００４１】
CanConvertAllの実施はコンバータ機能に大きく依存することに留意されたい。上述の例では、特定のコンバータについて変換可能なキャラクタの範囲が多い場合、キャラクタ・ストリング全体をCanConvertAllに渡すことができ、CanConvertAllは最小値キャラクタと最大値キャラクタのみを検査する。両方のキャラクタが１つの範囲内にある場合、他のキャラクタも変換可能であると結論づける。この場合、データ・ストリング内の他のキャラクタを明示的に検査する必要はない。
【００４２】
図３に戻って参照すると、第２の処理ルーチン３４０が偽の標識を受け取ると、データ・ストリングｓは、さらに処理するために従来のプロセス３３０に渡される（上記参照）。他方、第２の処理ルーチン３４０が真の標識を受け取った場合、すなわちデータ・ストリングｓ内のすべてのキャラクタを基礎となるコード化体系にマップすることができる場合、データ・ストリングｓは、指定されたフォントと共に、表示のために基礎となるグラフィック・ルーチン３５０に渡される。
【００４３】
要約すると、関数呼出IsExcludedAnyとCanConvertAllの結果がそれぞれ偽と真の場合、データ・ストリング内のどのキャラクタも除外されず、すべてのキャラクタを基礎となるコード化体系にマップすることができると結論づけることができる。データ・ストリング全体を「より下位レベルの」描画ルーチンにただちに渡すことができ、従来の関数、すなわちisExcludedおよびCanConvertを個々のキャラクタに繰り返し使用する必要がない。
【００４４】
本発明についてコンピュータ・システムの環境で説明したが、本発明は様々な形態のコンピュータ・プログラム製品として配布することもできることは、当業者なら容易にわかるであろうことに留意されたい。本発明は、実際に配布を行うために使用される特定のタイプの信号伝達媒体、すなわちコンピュータ使用可能媒体にはかかわらず、適用される。信号伝達媒体の例としては、フロッピィ・ディスクやハード・ディスク・ドライブなどの記録可能型媒体、ディジタルおよびアナログ通信リンクなどの伝送型媒体などがある。
【００４５】
好ましい実施形態では、本発明は、本明細書に記載の方法を実行するようにプログラムされたコンピュータ・システムで実施される。したがって、有利な一実施形態では、本明細書に記載の方法を実行する命令のセットを、ほぼ図１に示すように構成された１つまたは複数のコンピュータ・システムのＲＡＭに常駐させる。コンピュータ・システムが必要とするまで、この命令のセットは別のコンピュータ記憶装置、たとえばディスク・ドライブにコンピュータ・プログラム製品として記憶することができる。他の有利な実施形態では、このコンピュータ・プログラム製品は、他のコンピュータで記憶し、内部または外部通信ネットワーク、たとえばそれぞれＬＡＮまたはＷＡＮによってユーザのワークステーションに送ることもできる。
【００４６】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００４７】
（１）オペレーティング・システム内で使用されている基礎となるデータ・コード化体系と関連して、マルチバイト・キャラクタ・コード化体系内での単一バイト・キャラクタの処理を最適化する方法であって、
データ・ストリングを受け取るステップと、
前記データ・ストリング全体を第１の処理ルーチンに渡すステップと、
前記データ・ストリングを評価して前記データ・ストリング内のいずれかのキャラクタがホスト・フォントの除外キャラクタであるか否かを判断するステップとを含む方法。
（２）前記データ・ストリング全体を第２の処理ルーチンに転送するステップと、
前記データ・ストリング内の限定された数のキャラクタを評価して、前記データ・ストリングが基礎となる前記コード化体系の下で変換することができるか否かを判断するステップとをさらに含む、上記（１）に記載の方法。
（３）データ・ストリングを受け取る前記ステップが、データ入力装置から前記データ・ストリングを入力するステップをさらに含む、上記（１）に記載の方法。
（４）前記データ・ストリング全体を第１の処理ルーチンに渡すステップが、前記データ・ストリングを前記第１の処理ルーチンに配列として送るステップをさらに含む、上記（１）に記載の方法。
（５）前記データ・ストリングを前記第２の処理ルーチンに転送する前記ステップが、前記データ・ストリングを前記第２の処理ルーチンに配列として送るステップをさらに含む、上記（２）に記載の方法。
（６）前記データ・ストリング内の限定された数のキャラクタを評価して、前記データ・ストリングが基礎となる前記コード化体系の下で変換することができるか否かを判断する前記ステップが、
論理和ブール演算を使用して前記データ・ストリング内のすべてのキャラクタを結合し、単一のキャラクタを形成するステップと、
前記単一のキャラクタが単一バイト・キャラクタであるか否かを判断するステップと、
前記ホスト・フォントの除外範囲を検査して前記除外範囲が単一バイト・キャラクタを含むか否かを判断するステップとをさらに含む、上記（１）に記載の方法。
（７）オペレーティング・システム内で使用されている基礎となるデータ・コード化体系と関連して、マルチバイト・キャラクタ・コード化体系内での単一バイト・キャラクタの処理を最適化する方法を実施するコンピュータ実行可能命令が記憶されたコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、実行されると、
データ・ストリングを受け取るステップと、
前記データ・ストリング全体を第１の処理ルーチンに渡すステップと、
前記データ・ストリングを評価して前記データ・ストリング内のいずれかのキャラクタがホスト・フォントの除外キャラクタであるか否かを判断するステップとを実行する、コンピュータ可読媒体。
（８）前記コンピュータ実行可能命令が、
前記データ・ストリング全体を第２の処理ルーチンに転送するステップと、
前記データ・ストリング内の限定された数のキャラクタを評価して、前記データ・ストリングが基礎となる前記コード化体系の下で変換することができるか否かを判断するステップとをさらに含む、上記（７）に記載のコンピュータ可読媒体。
（９）データ・ストリングを受け取る前記ステップが、データ入力装置から前記データ・ストリングを入力するステップをさらに含む、上記（７）に記載のコンピュータ可読媒体。
（１０）前記データ・ストリング全体を第１の処理ルーチンに渡す前記ステップが、前記データ・ストリングを前記第１の処理ルーチンに配列として送るステップをさらに含む、上記（７）に記載のコンピュータ可読媒体。
（１１）前記データ・ストリングを前記第２の処理ルーチンに転送する前記ステップが、前記データ・ストリングを前記第２の処理ルーチンに配列として送るステップをさらに含む、上記（８）に記載のコンピュータ可読媒体。
（１２）前記データ・ストリング内の限定された数のキャラクタを評価して、前記データ・ストリングが基礎となる前記コード化体系の下で変換することができるか否かを判断する前記ステップが、
論理和ブール演算を使用して前記データ・ストリング内のすべてのキャラクタを結合し、単一のキャラクタを形成するステップと、
前記単一のキャラクタが単一バイト・キャラクタであるか否かを判断するステップと、
前記ホスト・フォントの除外範囲を検査して前記除外範囲が単一バイト・キャラクタを含むか否かを判断するステップとをさらに含む、上記（７）に記載のコンピュータ可読媒体。
（１３）コンピュータ使用可能媒体と、
前記媒体において実施され、オペレーティング・システム内で使用されている基礎となるデータ・コード化体系と関連して、マルチバイト・キャラクタ・コード化体系内での単一バイト・キャラクタの処理を最適化するコンピュータ可読プログラム・コード手段とを含むコンピュータプログラム製品であって、
前記コンピュータ可読プログラム・コード手段が、
データ・ストリングを受け取る手段と、
前記データ・ストリング全体を第１の処理ルーチンに渡す手段と、
前記データ・ストリングを評価して前記データ・ストリング内のいずれかのキャラクタがホスト・フォントの除外キャラクタであるか否かを判断する手段とを実行する、コンピュータ・プログラム製品。
（１４）前記コンピュータ可読プログラム・コード手段が、
前記データ・ストリング全体を第２の処理ルーチンに転送する手段と、
前記データ・ストリング内の限定された数のキャラクタを評価して、前記データ・ストリングが基礎となる前記コード化体系の下で変換することができるか否かを判断する手段とをさらに含む、上記（１３）に記載のコンピュータ・プログラム製品。
（１５）データ・ストリングを受け取る前記手段が、データ入力装置から前記データ・ストリングを入力する手段をさらに含む、上記（１３）に記載のコンピュータ・プログラム製品。
（１６）前記データ・ストリング全体を第１の処理ルーチンに渡す前記手段が、前記データ・ストリングを前記第１の処理ルーチンに配列として送る手段をさらに含む、上記（１３）に記載のコンピュータ・プログラム製品。
（１７）前記データ・ストリングを前記第２の処理ルーチンに転送する前記手段が、前記データ・ストリングを前記第２の処理ルーチンに配列として送る手段をさらに含む、上記（１４）に記載のコンピュータ・プログラム製品。
（１８）前記データ・ストリング内の限定された数のキャラクタを評価して、前記データ・ストリングが基礎となる前記コード化体系の下で変換することができるか否かを判断する前記手段が、
論理和ブール演算を使用して前記データ・ストリング内のすべてのキャラクタを結合し、単一のキャラクタを形成する手段と、
前記単一のキャラクタが単一バイト・キャラクタであるか否かを判断する手段と、
前記ホスト・フォントの除外範囲を検査して前記除外範囲が単一バイト・キャラクタを含むか否かを判断する手段とをさらに含む、上記（１３）に記載のコンピュータ・プログラム製品。
（１９）オペレーティング・システム内で使用されている基礎となるデータ・コード化体系と関連して、マルチバイト・キャラクタ・コード化体系内での単一バイト・キャラクタの処理を最適化するシステムであって、
データ・ストリングを受け取る手段と、
前記データ・ストリング全体を第１の処理ルーチンに渡す手段と、
前記データ・ストリングを評価して前記データ・ストリング内のいずれかのキャラクタがホスト・フォントの除外キャラクタであるか否かを判断する手段とを含むシステム。
（２０）前記データ・ストリング全体を第２の処理ルーチンに転送する手段と、
前記データ・ストリング内の限定された数のキャラクタを評価して、前記データ・ストリングが基礎となる前記コード化体系の下で変換することができるか否かを判断する手段とをさらに含む、上記（１９）に記載のシステム。
（２１）前記データ・ストリング全体を第１の処理ルーチンに渡す前記手段が、前記データ・ストリングを前記第１の処理ルーチンに配列として送る手段をさらに含む、上記（１９）に記載のシステム。
（２２）前記データ・ストリング内の限定された数のキャラクタを評価して、前記データ・ストリングが基礎となる前記コード化体系の下で変換することができるか否かを判断する前記手段が、
論理和ブール演算を使用して前記データ・ストリング内のすべてのキャラクタを結合し、単一のキャラクタを形成する手段と、
前記単一のキャラクタが単一バイト・キャラクタであるか否かを判断する手段と、
前記ホスト・フォントの除外範囲を検査して前記除外範囲が単一バイト・キャラクタを含むか否かを判断する手段とをさらに含む、上記（１９）に記載のシステム。
【図面の簡単な説明】
【図１】本発明の実施に適した環境を備えるコンピュータ・システムの環境の一例を示す図である。
【図２】本発明の原理を採用したデータ表示処理システムの一実施形態を示す高水準ブロック図である。
【図３】本発明の原理による、単一バイト・キャラクタの処理を最適化する方法の一実施形態を示す高水準プロセス流れ図である。
【図４】本発明の原理による、図３に示す第１の処理ルーチンの第１の実施形態を示す高水準フローチャートである。
【図５】本発明の原理による、図３に示す第１の処理ルーチンの第２の実施形態を示す高水準フローチャートである。
【図６】図３に示す第２の処理ルーチンの一実施形態を示す高水準フローチャートである。
【符号の説明】
１００  コンピュータ・システム
１２０  パーソナル・コンピュータ
１２２  システム・メモリ
１２３  システム・バス
１２４  読取り専用メモリ
１２５  ランダム・アクセス・メモリ
１２７  ハード・ディスク・ドライブ
１２８  磁気ディスク・ドライブ
１３０  光ディスク・ドライブ
１３２  ハード・ディスク・ドライブ・インタフェース
１３６  アプリケーション・プログラム
１３７  プログラム・モジュール
１３８  プログラム・データ
１４０  キーボード
１４２  ポインティング・デバイス
１４７  モニタ
１４９  リモート・コンピュータ
１５０  メモリ記憶装置
１５１  ローカル・エリア・ネットワーク
１５２  ワイド・エリア・ネットワーク
１５３  ネットワーク・インタフェース
２００  データ表示処理システム
２１０  オペレーティング・システム
２２０  カーネル
２３０ａ  ホスト・フォント
２４０  コード化体系
２６０  データ・ストリング
２７０  表示装置
【図１】
0004056199.tif 000003
【図２】
0004056199.tif 000004
【図３】
0004056199.tif 000005
【図４】
0004056199.tif 000006
【図５】
0004056199.tif 000007
【図６】
0004056199.tif 000008