JPH11512543A - ユニコード・コンバータ - Google Patents

ユニコード・コンバータ

Info

Publication number
JPH11512543A
JPH11512543A JP9512113A JP51211397A JPH11512543A JP H11512543 A JPH11512543 A JP H11512543A JP 9512113 A JP9512113 A JP 9512113A JP 51211397 A JP51211397 A JP 51211397A JP H11512543 A JPH11512543 A JP H11512543A
Authority
JP
Japan
Prior art keywords
character
string
source
code
characters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP9512113A
Other languages
English (en)
Other versions
JP4584359B2 (ja
Inventor
エドバーグ,ピーター,ケイ.
マコンネル,ジョン,アイ.
タン,ユン−フォン,フランク
ダニエルズ,アンドリュー,エム.
Original Assignee
アップル コンピュータ インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US08/527,831 external-priority patent/US5682158A/en
Priority claimed from US08/527,438 external-priority patent/US5793381A/en
Priority claimed from US08/527,837 external-priority patent/US5784071A/en
Priority claimed from US08/527,827 external-priority patent/US5784069A/en
Application filed by アップル コンピュータ インコーポレイテッド filed Critical アップル コンピュータ インコーポレイテッド
Priority claimed from PCT/US1996/014667 external-priority patent/WO1997010556A1/en
Publication of JPH11512543A publication Critical patent/JPH11512543A/ja
Application granted granted Critical
Publication of JP4584359B2 publication Critical patent/JP4584359B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Document Processing Apparatus (AREA)

Abstract

(57)【要約】 ユニコード・コンバータが開示されている。さらに具体的には、ラウンドトリップ忠実度を備えると共に、その結果の文字コードが他のプラットフォームと互換性をもつことを保証し、文字をソース文字コード化からターゲット文字コードに変換するとき方向および/またはコンテキストを考慮に入れ、変換のために受信したソース文字列が、そのソース文字列が変換対象のソース文字列を格納している入力バッファの長さを越えたときでも別のターゲット文字コード化に正確に変換されることを保証するコード変換および/または切り捨て処理手法が開示されている。このコード変換システムは単一のソース文字列または文字の列を単一のターゲット文字列またはターゲット文字のシーケンスにマッピング(対応づけること)する機能を備えている。ラウンドトリップ忠実度により、ソース・テキストはターゲット・テキストに変換し、再びオリジナル・ソース・テキストに戻るように変換できるので、標準ターゲット文字の使用を最大限にし、プライベート文字の使用を最小限にすることによって互換性を保証している。コード変換は他の文字セットからユニコード文字に変換したり、ユニコード文字から他の文字セットに変換したりするとき利用すると、特に便利である。変換される文字の方向(向き)を判断することにより、および/または文字のコンテキストを判断することにより、コード変換システムは判断または解決された文字の方向を利用してターゲット文字コード化への正しいマッピングが得られることを保証する。切り捨て処理手法は入力バッファに置かれているソース文字列の一部を切り捨てて、切り捨てられた部分が、ソース文字列の中の後続文字に影響されることなくターゲット文字コード化に変換されることを可能にするように作用する。

Description

【発明の詳細な説明】 ユニコード・コンバータ 説明 技術分野 本発明は記述または表示されるテキストの文字コード間で変換を行うシステム に関し、さらに具体的には、ある文字セットと別の文字セット間で変換を行うコ ード・コンバータに関する。背景技術 コンピュータや他のエレクトロニック・デバイスはテキストを使用してユーザ と対話するのが一般的である。テキストはモニタや他のタイプの表示デバイスか ら表示されるのが普通である。テキストはコンピュータや他のエレクトロニック ・デバイスの内部ではディジタル形式で表現しなければならないので、文字セッ ト・コード化を使用しなければならない。一般的には、文字セット・コード化は 文字セットの各文字を固有のディジタル表現でコード化するように働く。文字( コード化される)は文字、数字および種々のテキスト・シンボルに対応し、コン ピュータや他のエレクトロニック・デバイスで使用される数値コードが割り当て られている。コンピュータや他のエレクトロニック・デバイスで使用されている 最もよく知られた文字セットは情報交換用米国標準コード(American National S tandard Code for Information Exchange - ASCII)である。ASCIIは そのコード化のために7ビット・シーケンスを使用している。他の国では、異な る文字セットが使用されている。ヨーロッパでは、支配的な文字コード化標準は 国際標準化機構(International Standards Organization - ISO)によって開 発されたISO 8859−X、特にISO 8859−1(「Latin−1 」と呼ばれている)である。日本では、支配的な文字コード化標準はJIS X 0208であり、ここでJISとは日本情報標準(Japanese Information Standa rd)のことであり、日本標準協会(Japan Standards Association - JSA)によって開発されたものである。その他の既存文字セッ トの例としては、Mac(登録商標)OS Standard Romanコー ド化(Apple Computer,Inc 開発)、Shift−JIS(日本)、Big5( 台湾)、その他多くがある。 ビジネスとネットワークのグローバル化に伴い、コンピュータや他のエレクト ロニック・デバイスが複数の文字コード化を処理する能力をもつことが重要にな っている。例えば、同じコンピュータやエレクトロニック・デバイスは、コンピ ュータや他のエレクトロニック・デバイスと異なる言語で対話することを望んで いる異なる国籍の人達で使用されることがある。このような各言語では、異なる 文字セット・コード化が必要になるのが通常である。しかし、文字セットは同じ 言語の場合でも、異なることがある。 もう1つの要求は、ある文字セット・コードから別の文字セット・コード化へ の変換ができることである。例えば、ISO 8859−1を使用するフランス のユーザは、電子メール・メッセージをISO 8859−8を使用するイスラ エルのユーザにフランス語で送りたい場合がある。送信者と受信者は異なる文字 セット・コード化を使用しているので、メッセージの中の非ASCII文字は、 イスラエルのユーザには誤って伝えられることになる。理想的なことは、コンピ ュータまたはエレクトロニック・デバイスの1つがある文字セットから別の文字 セットに変換することである。このことは、限られた範囲でいくつかの文字セッ ト間ですでに達成されているが、最新のコンピュータやエレクトロニック・デバ イスでもほとんど不可能である。コード変換を困難にしているのは、異なる文字 標準が多数存在し、各国の標準が矛盾し、または不統一であることがよくあるた めである。 Unicode(登録商標)標準(以下では、単にユニコードまたはユニコー ド標準という)は国際的文字コード化標準となるために開発されたものである。 ユニコード標準の設計者はより効率的で、柔軟性のある文字識別方法を必要とし て、提供したものである。ユニコード標準には、1990年12月31以前に承 認され、公表されたすべての主要国際標準のすべての文字が含まれている他に、 以前の標準になかった他の文字も含まれている。これらの文字は重複することな くユニコード標準にコード化されている。ユニコード標準に含まれるコードは1 6ビット(または2バイト)幅である。 ユニコード標準などの文字セット標準はコード変換を容易にし、テキスト・デ ータに働きかける有用なプロセスのインプリメンテーションを可能にしている。 例えば、上記の例によれば、フランス国内のコンピュータや他のエレクトロニッ ク・デバイスはユニコード文字を送信することができ、イスラエル国内のコンピ ュータや他のエレクトロニック・デバイスは受信したユニコード文字を、イスラ エル国内のコンピュータや他のエレクトロニック・デバイスと互換性のあるヘブ ライ語の文字に変換することができる。 以下では、ユニコード標準の概要について説明する。なお、ユニコード標準の 詳細は、例えば、「The Unicode Standard,Worldwide Character Encoding,Ve rsion 1.0,Addision-Wesley 1991 」に記載されている(バージョン1.1にも 詳細が記載されている)。これらのどちらのバージョンも、その全体は引用によ り本明細書の一部を構成するものである。 ユニコード・コード化方式の設計は方向性を除き、基本的テキスト処理アルゴ リズムの設計から独立している。ユニコード・インプリメンテーションは適当な テキスト処理および/またはレンダリング・アルゴリズムを含んでいるものと想 定されている。便宜上、ユニコード標準のすべてのコードは言語および機能のカ テゴリ別に分類されているが、ユニコード標準のすべてのコードは等しくアクセ ス可能になっている。「ユニコード標準のコード・スペースは6つのゾーンに分 割されている。すなわち、一般的スクリプト(アルファベットおよび相対的に小 さな文字セットをもつ他のスクリプト)、シンボル(記号)、CJK(中国語、 日本語および朝鮮語)補足文字、CJK表意文字、プライベート使用および互換 性である。一般的スクリプト・ゾーンはラテン、キリル、ギリシア、ヘブライ、 アラビア、デーヴァナーガリーおよびタイなどのアルファベットまたは音節スク リプトを含んでいる。シンボル・ゾーンは句読点、数学、化学、読者の注意をひ く記号などの、様々な種類の文字を含んでいる。CJK補足ゾーンは句読点、シ ンボル、カナ文字、Bopomofo文字、および単一および複合ハングル文字 を含んでいる。CJK表意文字ゾーンには、20,000個以上の表意文字また は他のスクリプトからの文字のためのスペースが用意されている。プライベート 使用ゾーンはユーザまたはベンダ固有のグラフィック文字を定義するために使用 される。互換性ゾーンはユニコード・コード化で他の規範的表現をもつ、幅広く 使用されている企業および国内標準からの文字を含んでいる。」(上記標準バー ジョン1.0の13ベージから引用)。 ユニコード標準は文字特性と制御文字を含んでいる。文字特性はユニコード・ コード化に含まれるコード・ポイントに関する意味論的知識を必要とする解析、 ソート、および他のアルゴリズムで利用すると便利である。ユニコード標準で指 定されている文字特性には、ディジット、数字、スペース文字、非スペース・マ ーク、および方向がある。ユニコード文字は文字特性に基づいてグループ化され ている。ディジット、数字およびスペース文字は周知である。非スペース・マー ク・グループは非スペース・マークを収容し、方向グループは方向文字を収容し ている。 非スペース・マーク(例えば、ギリシアとローマ・スクリプトにおけるアクセ ント・マーク、アラビアとデーヴァナーガリーにおける母音マーク)は最終的に レンダリングされたテキストには線形的に現れない。ユニコード文字コード・シ ーケンスでは、このような文字はすべて、その文字で修正されたベース文字、ま たはその後に音声順に分節される文字のあとに置かれている(例えば、ローマ文 字の“A”は事前構成形式でストアされないとき“A′”としてストアされる) 。これらの文字(つまり、非スペース・マーク)はレンダリングされるとき、そ の前に置かれたベース文字に対してなんらかの方法で位置付けられることを目的 とし、これらの文字自体はスペース位置を占めない。制御文字はユニコード標準 でコード化されているが、制御文字自体はグラフィック文字ではない。これらの 制御文字は、例えば、水平タブを示したり、フォーマッティング属性または構造 などのテキストに関する追加情報を提供したり、方向性フォーマッティングによ って制御したりするために使用される。ユニコード標準は双方向文字配列も用意 しているので、ユニコード・コード化方式には、方向の変更を指定する文字も含 まれている。例えば、ギリシア語、ローマ語およびタイ語では、左から右への方 向が支配的になっているのに対し、アラビア語とヘブライ語では、右から 左への方向が支配的になっている。制御文字を使用して方向を変更することは、 例えば、左から右への文字を右から左への順序で表示したいときに、ユーザまた はシステムによって要求されることがある。 従来のコード・コンバータには、1つの問題がある。それは、コンバータが1 つのソース文字しか1つのターゲット文字に変換できないことである。この種の 変換はある種の文字セットでは有効に働くが、多数の非スペース文字セットを含 むある種の文字セット(例えば、ユニコード)の場合や、通常他の文字と関連づ けられていないマークを結合するときに十分ではない。また、従来のコード・コ ンバータは複数の文字に関連するシンボル、合字(ligature)または表意文字との 間で変換できる機能を備えていない。 その結果として、従来のコード・コンバータにはラウンドトリップ忠実度(rou nd trip fidelity)がない。ラウンドトリップ忠実度とは、コード・コンバータ が変換し、そのあと変換を戻してオリジナルの入力文字列を再現できる能力のこ とである。これが重要になるのは、コード・コンバータをある文字コードから別 の文字コードに変換するときのハブとして使用するときである。 従って、複数のソース文字から単一ターゲット文字へ、あるいは単一ソース文 字から複数のターゲット文字へ変換して、ラウンドトリップ文字コード変換の忠 実度を保証するようなコード・コンバータが望まれている。 従来のコード・コンバータには、もう1つ問題がある。それは、ソース文字セ ットの文字をターゲット文字セットの文字に変換するとき方向を考慮に入れない ことである。方向を考慮に入れないと、ある文字は左から右へ配列されるのに対 し、他の文字は右から左へ配列されるので変換にエラーを生じることになる。こ れが起こる代表例として、ある与えられたソース・コード化に対して2つの等価 文字をもつターゲット文字に変換し、違いが方向だけのときである。このような 場合には、正しいターゲット文字をマッピングするために、ソース文字の方向が 分かっていなければならない。また、従来のコード・コンバータが不十分である のは、左から右へ配列されている(方向性)言語だけでなく、右から左へ配列さ れている言語にも対応する文字を含んでいるある種の文字セット(例えば、ユニ コード)を取り扱えるだけの柔軟性がないためである。例えば、文字の配列ま たは方向性がユニコード文字列内で変化するようなユニコード文字は、従来のコ ード・コンバータが文字列全体の方向が一定であることを前提としているので従 来のコード・コンバータでは正しく変換されないことになる。 従って、文字の方向を考慮に入れながら、ソース文字セットの文字をターゲッ ト文字セットの文字に変換することができるようなコード・コンバータが望まれ ている。 ある種の従来のコード・コンバータには、以下のようなとき起こる別の問題が ある。ネットワークからテキストを受信するとき、そのテキストに関連するデー タはデータ・ブロックで到着するのが代表的である。データが完全な形で受信さ れるのは、データを構成するすべてのブロックが受信されたあとだけである。受 信データはバッファに置かれ、そこでデータは文字コードの変換を待っている。 しかし、バッファは、多くの場合、データ・ストリーム全体を格納する能力もな ければ、その1ブロックさえも格納する能力をもっていないこともある。いずれ の場合も、スキャナ408によって後でテキスト要素と判断されるはずのものの 途中でバッファの終わり(つまり、バッファ内の最後の文字)が現れることがあ る。テキスト要素の途中でバッファの終わりが現れると、スキャナ408は、後 続文字が最後のテキスト要素に影響したり、その一部であることがあるので最後 のテキスト要素を正しく得ることができなくなる。 大部分のコード・コンバータには、別の問題がある。それは、あるソース文字 セットの文字をあるターゲット文字セットの文字に変換するときコンテキストを 考慮に入れないことである。ある種の文字セット(例えば、ユニコード)では、 文字セットにはコンテキスト表現形式が異なるごとに別々の文字コードが含まれ ているの対し、別の時では、単一文字コードだけが用意され、コンテキストは表 現形式を判断するために使用されている。しかし、従来のコード・コンバータは コードをそのコンテキストに従って変換することができない。コンテキスト・ベ ースのコード変換が特に問題となるのは、変換の対象となる文字セット(例えば 、ユニコード)が文字コンテキストを受け入れるために、いくつかの手法を組み 合わせて利用するときである。 従って、文字のコンテキストを考慮に入れながら、ソース文字セットの文字を ターゲット文字セットの文字に正確かつ柔軟に変換できるようなコード・コンバ ータが望まれている。発明の概要 概要を説明すると、本発明はコード変換および/または切り捨て処理手法に関 するものである。 本発明の第1側面では、コード変換手法によれば、ラウンドトリップ忠実度が 得られると共に、その結果の文字コードが他のプラットフォームと互換性をもつ ことが保証される。コード変換システムは単一ソース文字または文字シーケンス を単一ターゲット文字またはターゲット文字シーケンスのどちらかにマッピング する能力をもっている。ラウンドトリップ忠実度によれば、ソース・テキストは ターゲット・テキストに変換し、その後オリジナル・ソース・テキストに再び戻 るように変換することが可能である。互換性は標準ターゲット文字の使用を最大 限にし、プライベート文字の使用を最小限にすることにより保証される。コード 変換は他の文字セットからユニコード文字へ、ユニコード文字から他の文字セッ トへ変換するとき利用すると、特に便利である。ユニコード文字シーケンスをタ ーゲット文字セット内の単一文字にマッピングすることは、従来は提供されてい なかった。本発明は、オペレーションだけでなく、データ保管においても大幅な 柔軟性が得られる強力な解決法を提供している。本発明は様々な態様で実現する ことができる。つまり、方法、装置またはシステムとして実現することもコンピ ュータ可読メディア上に実現することも可能である。 ソース文字列をターゲット文字列に変換する方法としては、本発明の第1側面 による本発明の実施例は、第1文字コード化をもつソース文字列を受信し、ソー ス文字列をテキスト要素に順次に分割し(各テキスト要素はソース文字列の1つ または複数の文字を含んでいる)、テキスト要素の各々ごとに第2文字コード化 に関連する変換コードをマッピング・テーブルで調べ(ルックアップ)、テキス ト要素の変換コードを結合して第2文字コード化のターゲット文字列を形成する オペレーションを実行する。 さらに、本発明の第1側面によれば、マッピング・テーブルにはレギュラ・ マッピングとフォールバック・マッピングを含めることが可能であり、ルックア ップ・オペレーションは、レギュラ・マッピングを使用するテキスト要素の変換 コードがマッピング・テーブルにないとき、フォールバック・マッピングを使用 するテキスト要素の各々の変換コードを判断することが可能である。また、好ま しいことは、文字の各々にそれぞれに関連する文字クラスをもたせ、少なくとも その一部がソース文字列内の文字の文字クラスに基づいてソース文字列の分割が 行われるようにすることである。 ソース文字列をターゲット文字列に変換するコード変換システムとしては、本 発明の第1側面による本発明の実施例は、第1文字コード化をもつソース文字列 を第2文字コード化をもつターゲット文字列に変換することを制御するコンバー タ、ソース文字列をテキスト要素(各テキスト要素はソース文字列の1つまたは 複数の文字を含んでいる)に分割するスキャナ、ソース・コード化のテキスト要 素に対するターゲット・コード化をストアしておくマッピング・テーブルおよび テキスト要素の各々ごとに第2文字コード化に関連する変換コードをマッピング ・テーブルで調べる(ルックアップ)ルックアップ・テーブルとを含んでいる。 本発明の第1側面によるコード変換システムには、さらに、フォールバック・ ハンドラとスキャナ・テーブルを含めることが可能である。フォールバック・ハ ンドラは、ルックアップ・ハンドラが1つまたは複数のテキスト要素の変換コー ドを提供することができないような、特殊な場合にフォールバック変換コードを 提供する。フォールバック変換コードはテキスト要素内の文字と正確には等価で はないが、類似したグラフィック外観をもつターゲット・コード化内の1つまた は複数のコード・ポイントを含んでいる。スキャナ・テーブルは、入力文字列内 の個別文字を現在のテキスト要素内に含めるべきか、それとも新しい次のテキス ト要素を開始すべきかをスキャナが判断するのを支援するものである。 入力文字列をスキャンするスキャニング・システムとしては、本発明の第1側 面による本発明の実施例は、入力文字を入力文字列から取得する入力デバイス( 入力文字列は文字コード化をもち、入力文字列の各文字は文字クラスをもってい る)、入力文字の属性を提供する属性テーブルおよびステート・マシンの次の 状態と次のアクションの両方を、入力文字の次の状態とステート・マシンの現在 状態に従って判断するステート・マシンを含んでいる。スキャニング・システム は入力文字列の入力文字を現在のテキスト要素内に含めるべきか、現在のテキス ト要素を終わらせて次のテキスト要素を開始させるかを、ステート・マシンが判 断したアクションに基づいて判断する。好ましくは、属性には、入力文字の文字 クラスが含まれおり、ステート・マシンは入力文字の文字クラスとステート・マ シンの現在状態に基づいて次の状態と次のアクションを判断する。 ソース文字列をターゲット文字列に変換するためのプログラム命令を収めてお くコンピュータ可読メディアとしては、本発明の第1側面による本発明の実施例 は、第1文字コード化をもつソース文字列を受信することをコンピュータに実行 させるように構成されたコンピュータ可読コード、ソース文字列をテキスト要素 (各テキスト要素はソース文字列の1つまたは複数の文字を含んでいる)に分割 することをコンピュータに実行させるように構成されたコンピュータ可読コード 、テキスト要素の各々ごとに第2文字コード化に関連する変換コードを調べる( ルックアップ)ことをコンピュータに実行させるように構成されたコンピュータ 可読コード、およびテキスト要素の変換コードを結合して第2文字コード化のタ ーゲット文字列を形成することをコンピュータに実行させるように構成されたコ ンピュータ可読コードを含んでいる。 本発明の第2側面では、コード変換システムはソース文字コード化からの文字 をターゲット文字コード化に変換するとき方向を考慮に入れる。 本発明の第2側面によるコード変換システムは単一ソース文字または文字シー ケンスを単一ターゲット文字またはターゲット文字シーケンスのどちらかにマッ ピングする能力を備えている。変換される文字の方向を判断または解明すること により、コード変換システムは判断または解明された文字の方向を利用して、タ ーゲット文字・コード化への正しいマッピングが利用されることを保証する。従 って、本発明によれば、ソース文字列内の文字の方向性が変化したときでも正し いコード変換が達成される。本発明は様々な態様で実現することが可能である。 方法、装置またはシステムとして実現することも、コンピュータ可読メディア上 に実現することも可能である。 ソース文字列をターゲット文字列に変換するコード変換システムとしては、本 発明の第2側面による本発明の実施例は、ソース文字コード化をもつ入力文字列 をターゲット文字コード化をもつターゲット文字列(入力文字列は複数の文字を 含んでいる)に変換することを制御するコンバータ、入力文字列内の文字を判断 するスキャナ、ソース・コード化の文字に対するターゲット・コード化をストア しておくマッピング・テーブル、および入力文字列内の文字の各々ごとにターゲ ット文字コード化に関連する変換コードを、入力文字列内の文字の方向とソース ・コード化に基づいてマッピング・テーブルで調べるルックアップ・ハンドラを 含んでいる。好ましくは、スキャナはさらに入力文字列をテキスト要素(各テキ スト要素は入力文字列の1つまたは複数の文字を含んでいる)に分割し、スキャ ナはテキスト要素の方向を判断し、マッピング・テーブルはソース・コード化に 対するターゲット・コード化をストアしており、ルックアップ・ハンドラはテキ スト要素の各々ごとにターゲット文字コード化を、テキスト要素内の文字の方向 とソース・コード化に基づいて調べる。この実施例には、前記ルックアップ・ハ ンドラが1つまたは複数の変換コードを提供できないような、特定な場合にはフ ォールバック変換コードを提供するフォールバック・ハンドラを含めることも可 能である。 ソース文字列をターゲット文字列に変換する方法としては、本発明の第2側面 による本発明の実施例は、第1文字コード化をもつソース文字列を受信し(ソー ス文字列は複数のソース文字を含んでいる)、ソース文字列のソース文字の方向 を判断し、ソース文字の各々ごとに第2文字コード化に関連する変換コードを、 第1文字コード化と判断された方向に基づいてマッピング・テーブルで調べ、ソ ース文字の変換コードを結合して第2文字コード化のターゲット文字列を形成す るオペレーションを実行する。 ソース文字列をターゲット文字列に変換するためのプログラム命令を収めてお くコンピュータ可読メディアとしては、本発明の第2側面による本発明の実施例 は、第1文字コード化をもつソース文字列を受信することをコンピュータに実行 させるように構成されたコンピュータ可読コード、ソース文字列内のソース文字 の各々の方向を判断し、ソース文字列をテキスト要素(各テキスト要素はソース 文字列の1つまたは複数の文字を含んでいる)に分割することをコンピュータに 実行させるように構成されたコンピュータ可読コード、テキスト要素の各々ごと に第2文字コード化に関連する変換コードを調べることをコンピュータに実行さ せるように構成されたコンピュータ可読コード、およびテキスト要素の変換コー ドを結合して第2文字コード化のターゲット文字列を形成することをコンピュー タに実行させるように構成されたコンピュータ可読コードを含んでいる。 本発明の第3側面では、コード変換システムはソース文字コード化からの文字 をターゲット文字コード化に変換するときコンテキストを考慮に入れる。 本発明の第3側面によるコード変換システムは単一ターゲット文字またはター ゲット文字シーケンスを単一ターゲット文字またはターゲット文字シーケンスの どちらかに変換する能力を備えている。変換される文字のコンテキストを判断す ることにより、コード変換システムは判断された文字のコンテキストを利用して ターゲット文字コード化への正しいマッピングが利用されることを保証する。従 って、本発明によれば、文字のコンテキストが異なるターゲット・コード化に導 くときでも正しいコード変換が達成される。本発明は様々な態様で実現すること が可能である。方法、装置またはシステムとして実現することも、コンピュータ 可読メディア上に実現することも可能である。 ソース文字列をターゲット文字列に変換するコード変換システムとしては、本 発明の第3側面による本発明の実施例は、ソース文字コード化をもつ入力文字列 (入力文字列は複数の文字を含んでいる)をターゲット文字コード化をもつター ゲット文字列に変換することを制御するコンバータ、入力文字列内の文字の各々 のコンテキストを判断するスキャナ、ソース・コード化の文字に対するターゲッ ト・コード化をストアしておくマッピング・テーブル、および入力文字列内の文 字の各々ごとにターゲット文字コード化に関連する変換コードを、コンテキスト と入力文字列内の文字のソース・コード化に基づいて前記マッピング・テーブル で調べるルックアップ・ハンドラを含んでいる。好ましくは、スキャナはさらに 入力文字列をテキスト要素(各テキスト要素は入力文字列の1つまたは複数の文 字を含んでいる)に分割する。この実施例には、ルックアップ・ハンドラが1つ または複数のテキスト要素の変換コードを提供できないような、特定の場合には フォールバック変換コードを提供するフォールバック・ハンドラを含めることも 可能である。 ソース文字列をターゲット文字列に変換するコード変換システムとしては、本 発明の第3側面による本発明の実施例は、ソース文字コード化をもつソース文字 列をターゲット文字コード化をもつターゲット文字列に変換することを制御する コンバータ手段、ソース内の文字の各々のコンテキストを判断するステート・マ シン、ソース文字コード化の文字に対するターゲット文字コード化をストアして おくマッピング手段、およびソース文字列内の文字の各々ごとにターゲット文字 コード化に関連する変換コードを前記マッピング手段で調べるルックアップ・ハ ンドラ手段を含んでいる。 ソース文字列をターゲット文字列に変換する方法としては、本発明の第3側面 による本発明の実施例は、第1文字コード化をもつソース文字列を受信し(ソー ス文字列は複数のソース文字を含んでいる)、ソース文字列のソース文字の各々 のコンテキストを判断し、ソース文字の各々ごとに第2文字コード化に関連する 変換コードを、第1文字コード化とソース文字について判断されたコンテキスト に基づいてマッピング・テーブルで調べ、ソース文字の変換コードを結合して第 2文字コード化のターゲット文字列を形成するオペレーションを実行する。 ソース文字列をターゲット文字列に変換するためのプログラム命令を収めてお くコンピュータ可読メディアとしては、本発明の第3側面による本発明の実施例 は、第1文字コード化をもつソース文字列を受信することをコンピュータに実行 させるように構成されたコンピュータ可読コード、ソース文字列内のソース文字 の各々のコンテキストを判断し、ソース文字列をテキスト要素(各テキスト要素 はソース文字列の1つまたは複数の文字を含んでいる)に分割することをコンピ ュータに実行させるように構成されたコンピュータ可読コード、テキスト要素の 各々ごとに第2文字コード化に関連する変換コードを調べることをコンピュータ に実行させるように構成されたコンピュータ可読コードおよびテキスト要素の変 換コードを結合して第2文字コード化のターゲット文字列を形成することをコン ピュータに実行させるように構成されたコンピュータ可読コードを含んでいる。 本発明の第4側面では、切り捨て処理手法は、変換のために受信されたソース 文字列が、そのソース文字列が変換のためにソース文字列を格納している入力バ ッファの長さを越えたときでも、異なるターゲット文字コード化に正確に変換さ れることを保証する。 本発明の第4側面による切り捨て処理は、入力バッファに置かれているソース 文字列の一部を切り捨て、その切り捨てられた部分がソース文字列内の後続文字 に影響されることなくターゲット文字コード化に変換されるように作用する。当 然のことながら、入力バッファに置かれていて、切り捨てが行われた後のソース 文字列の部分(切り捨てられた部分)は最大限にしておくと、コード変換が効率 よく行えるようになる。本発明は、入力ソース文字列がネットワーク経由で受信 されるデータであるときに特に便利である。例えば、データはインターネット経 由で電子的に転送されるテキスト・データにすることができる。いずれの場合も 、本発明は種々の態様で実現することが可能である。方法、装置またはシステム として実現することも、コンピュータ可読メディア上に実現することも可能であ る。 ソース文字列をターゲット文字列に変換するコード変換システムとしては、本 発明の第4側面による本発明の実施例は、第1文字コード化をもつソース文字列 を第2文字コード化をもつターゲット文字列に変換することを制御するコンバー タ、ソース文字列の一部を一度に受け入れるバッファ(ソース文字列は1つまた は複数の文字を含んでいる)、ソース文字列の一部を切り捨てるトランケータ、 ソース文字列の切り捨てられた部分をテキスト要素(各テキスト要素はソース文 字列の切り捨てられた部分の1つまたは複数の文字を含んでいる)に分割するス キャナ、ソース・コード化のテキスト要素に対するターゲット・コード化をスト アしておくマッピング・テーブル、およびテキスト要素の各々ごとに第2文字コ ード化に関連する変換コードをマッピング・テーブルで調べるルックアップ・ハ ンドラを含んでいる。 ソース文字列を切り捨ててターゲット文字列に文字変換するための第1方法と しては、本発明の第4側面による本発明の実施例は、ソース文字列のバッファ部 分をバッファに受け入れ(ソース文字列は2つ以上のバッファ部分を含んでい る)、ソース文字列の後続バッファ部分に影響されることなくターゲット文字列 に変換することができる、ソース文字列のバッファ部分のサブパートを判断し、 ソース文字列のバッファ部分のサブパートをターゲット・コード化に変換するオ ペレーションを実行する。好ましくは、第1方法は、変換対象となるバッファ部 分の残余部分がサブパートと一緒になったときバッファ部分に等しい場合には、 その残余部分を次のバッファ部分またはそのサブパートと一緒に格納するオペレ ーションも実行する。 ソース文字を切り捨ててターゲット文字列に文字変換するための第2方法とし ては、本発明の第4側面による本発明の実施例は、ソース文字列の一部をバッフ ァに受け入れ、ソース文字列のその部分内のテキスト要素(各テキスト要素はソ ース文字列の1つまたは複数の文字を含んでいる)を判断し、テキスト要素が完 成しているかどうかを判断し、テキスト要素が完成しているときソース文字列の 切り捨てられた部分にテキスト要素を挿入し、ソース文字列の部分が完全に考慮 されるまでテキスト要素の判断を繰り返し、そのあと文字変換のためにソース文 字列の切り捨てられた部分を出力するオペレーションを実行する。好ましくは、 この第2方法は、バッファに受け入れられたソース文字列の次の部分と一緒に使 用するために、ソース文字列の残余部分を格納しておくオペレーションも実行す る。 ソース文字列をターゲット文字列に変換するためのプログラム命令を格納して おくコンピュータ可読メディアとしては、本発明の第4側面による本発明の実施 例は、第1文字コード化をもつソース文字列の一部をバッファに受け入れること をコンピュータに実行させるように構成されたコンピュータ可読コード、ソース 文字列の一部を切り捨てることをコンピュータに実行させるように構成されたコ ンピュータ可読コード、ソース文字列の切り捨てられた部分をテキスト要素(各 テキスト要素はソース文字列の切り捨てられた部分の1つまたは複数の文字を含 んでいる)に分割することをコンピュータに実行させるように構成されたコンピ ュータ可読コード、テキスト要素の各々ごとに第2文字コード化に関連する変換 コードを調べることをコンピュータに実行させるように構成されたコンピュータ 可読コード、およびテキスト要素の変換コードを結合して第2文字コード化の ターゲット文字列を形成することをコンピュータに実行させるように構成された コンピュータ可読コードを含んでいる。 本発明のその他の側面および利点は、本発明の原理を例示している添付図面を 参照して以下に詳述している説明の中で明らかにする。図面の簡単な説明 本発明の理解を容易にするために、以下では、添付図面を参照して本発明を詳 しく説明する。なお、図面において、類似する構成要素は類似の参照符号を付け て示されている。 図1は、本発明による代表的なコンピュータ・システムを示すブロック図であ る。 図2は、ユニコード文字コード化のフォーマットを示す図である。 図3は、ソース文字列を受信し、ターゲット文字列を出力する本発明による基 本的ユニコード・コード変換システムを示すブロック図である。 図4は、本発明の実施例によるユニコードからのコード変換システムの実施例 を示すブロック図である。 図5は、ユニコード・コード変換システムのマッピング・テーブルの好ましい 配列を示す概略図である。 図6Aは、本発明の実施例によるユニコード・コード変換システムを利用する アプリケーション・プログラムによって実行される処理を示すフローチャートで ある。 図6Bは、本発明の実施例による切り捨て処理を示すフローチャートである。 図7は、本発明の実施例によるユニコード・コンバータ処理を示すフローチャ ートである。 図8は、本発明の実施例による更新オフセット処理を示すフローチャートであ る。 図9Aおよび図9Bは、本発明の実施例による次のテキスト要素処理を示すフ ローチャートである。 図10A、図10Bおよび図10Cは、本発明の実施例による次のテキスト要 素処理を示すフローチャートである。 図11は、本発明の実施例によるスキャナを示すブロック図である。 図12は、図10に示す属性テーブルの好ましいフォーマットを示す概略図で ある。 図13は、本発明の実施例による属性ルックアップ処理を示すフローチャート である。 図14Aおよび図14Bは、本発明の好適実施例による次のアクションを判断 するためにスキャナによって利用されるスキャナ・テーブルを示す概略図である 。 図15は、本発明の実施例による好ましいレイアウトと、スキャナ・テーブル にストアされる情報の両方を表しているテーブルである。 図16Aおよび図16Bは、本発明の好適実施例による好ましいレイアウトと 、スキャナ・テーブルにストアされる情報の両方を表しているテーブルである。 図17Aは、本発明の実施例による方向解明処理を示すフローチャートである 。 図17Bないし図17Dは、本発明による双方向状態テーブルの好ましいレイ アウトを表しているテーブルである。 図18は、本発明の実施例による初期方向処理を判断するためのフローチャー トである。 図19は、本発明の実施例によるルックアップ・テキスト要素処理を示すフロ ーチャートである。 図20は、本発明の実施例によるチェーン・フォーマット処理を示すフローチ ャートである。 図21は、本発明の実施例による範囲フォーマット処理を示すフローチャート である。 図22は、本発明の実施例によるリスト・フォーマット処理を示すフローチャ ートである。 図23Aおよび図23Bは、本発明の実施例によるセグメント配列フォーマッ ト処理を示す図である。 図24は、本発明の実施例による変形リスト・サーチ処理を示すフローチャー トである。 図25Aおよび図25Bは、本発明の実施例による変形リスト処理に関連する テーブルとデータ・フォーマットを示す概略図である。 図26A、図26Bおよび図26Cは、本発明の実施例による出力シーケンス へのルックアップ・ターゲットのマッピング処理を示すフローチャートである。 図27は、本発明の実施例による本発明の処理に従うフォールバック・ハンド リング処理を示すフローチャートである。 図28は、本発明の実施例によるデフォルト処理を示すフローチャートである 。 図29は、本発明の実施例によるユニコードへのコード変換の実施例を示すブ ロック図である。発明の最良の実施形態 以下、図1ないし図29を参照して本発明の実施例について説明する。なお、 この分野の精通者ならば理解されるように、これらの図を参照して以下に詳述す る説明は本発明の理解を容易にすることを目的とし、本発明は以下に説明する実 施例に限定されるものではない。 本発明の第1側面によるコード変換システムはソース文字を異なるコード化の ターゲット文字に変換するものである。本発明によるコード変換システムはラウ ンドトリップ忠実度を備えていると共に、その結果の文字コードが他のプラット フォームと互換性をもつことを保証する。コード変換システムは単一ソース文字 または文字シーケンスを単一ターゲット文字またはターゲット文字シーケンスの どちらかにマッピングする機能を備えている。ラウンドトリップ忠実度により、 ソース・テキストはターゲット・テキストに変換し、そのあとオリジナル・ソー ス・テキストに戻すように再変換することができる。その結果の文字コードが他 のプラットフォームと互換性をもつことは、標準ターゲット文字の使用を最大限 にし、プライベート文字の使用を最小限にすることによって保証される。コード 変換システムは他の文字セットからユニコード文字に変換し、ユニコード文字を 他の文字セットに変換するときに利用すると、特に便利である。ユニコード文字 シーケンスをターゲット文字セット内の単一文字にマッピングすることは従来に はなかったものである。 コード変換システムはコンピュータ・システムや他のエレクトロニック・デバ イスにしてこれらのコード変換オペレーションを行うことができる。このコンピ ュータ・システムは必要とする目的だけに使用するように構築することも、コン ピュータ・プログラムに従って動作する汎用コンピュータにすることも可能であ る。以下に説明する処理はどのコンピュータ・システムや他のエレクトロニック ・デバイスにも適用可能である。具体的には、種々の汎用コンピューティング・ マシンは以下に教示する説明に従って書かれたソフトウェアと共に使用すること ができるが、もっと特殊化されたエレクトロニック・デバイスを構築すると、必 要とするオペレーションを実行できるので好都合である。 本発明の第2側面によるコード変換システムはソース文字コード化からの文字 をターゲット文字コード化に変換するとき方向を考慮に入れる。このコード変換 システムは単一ソース文字または文字シーケンスを単一ターゲット文字またはタ ーゲット文字シーケンスにマッピングする機能を備えている。変換される文字の 方向を判断または解明することにより、コード変換システムは判断または解明さ れた文字の方向を利用してターゲット文字コード化への正しいマッピングが得ら れることを保証する。従って、本発明によれば、ソース文字列内の文字の方向が 変化するときでも正しいコード変換が達成される。 本発明がアラビアまたはヘブライ・ベースの文字セットが使用されるときに特 に便利であるのは、これらの文字が右から左への方向をもっているからである。 本発明によれば、どちらかの方向を取り扱うときの柔軟性が得られるだけでなく 方向を途中で変更できるという機能も得られる。方向を途中で変更できることは アラビア文字および/またはヘブライ文字が左から右への方向が最も普通である 他の文字セットと一緒に使用されるような場合に重要である。異なる方向をもつ 文字の使用例として、スペース文字がある。ユニコードでは、コード化は1つだ けであり、固有の方向をもっていない。他方、MacArabicでは、左から 右へのスペース文字と右から左へのスペース文字の2種類がある。 変換されるソース文字の方向を判断または解明することは、方向解明手法によ って達成されるが、この手法についてはソース文字を異なるコード化のターゲッ ト文字に変換するコード変換システムと関連づけて以下で詳しく説明する。 本発明の第3側面によるコード変換システムはソース文字コード化からの文字 をターゲット文字コード化に変換するときコンテキストを考慮に入れる。このコ ード変換システムは単一ソース文字または文字シーケンスを単一ターゲット文字 またはターゲット文字シーケンスのどちらかにマッピングする機能を備えている 。文字のコンテキストを判断することにより、コード変換システムは判断された 文字のコンテキストを利用してターゲット・コード化への正しいマッピングが得 られることを保証する。従って、本発明によれば、文字のコンテキストがターゲ ット・コード化へのマッピングに影響するときでも正しいコード変換が達成され る。 ある種の文字セットでは、文字が使用されているコンテキストによって文字が 異なる表現形態をもつことになる。これらの文字の表現形態は絵文字(glyphs)で ある。異なる表現形態は表示されるとき異なって現れる。文字が使用されている コンテキストによって表現形態が決まる。アラビア文字はそのコンテキストに応 じて異なる表現形態をもつ言語である。 アラビア・スクリプトはアラビア語を書くために使用される。アラビア・スク リプトはその印刷形体においても筆写体(カーシブ)である。その結果として、 同じ文字はそれが隣の文字とどのように結合されるかに応じて異なった形体で書 かれることがある。このような文字の例として、アラビア文字“HEH”(ユニ コード文字ではu0647とコード化される)がある。例えば、ユニコードでの アラビア文字はDOSアラビア文字の4つの異なる表現形態の1つをコンテキス トに応じてマッピングされる場合がある。その結果、本発明によるコード変換シ ステムはユニコード・ストリーム内のアラビア文字のコンテキストを判断し、正 しいマッピングが得られるように動作する。 変換されるソース文字のコンテキストの判断はコンテキスト処理によって達成 されるが、このコンテキスト処理はソース文字を異なるコード化のターゲット文 字に変換するコード変換システムと関連づけて以下で詳しく説明する。 本発明の第2および第3側面によれば、コード変換システムはソース文字を異 なるコード化のターゲット文字に変換する。本発明によるコード変換システムは ラウンドトリップ忠実度を提供すると共に、その結果の文字コードが他のプラッ トフォームと互換性をもつことを保証する。コード変換システムは単一ソース文 字または文字シーケンスを単一ターゲット文字またはターゲット文字シーケンス のどちらかにマッピングする機能を備えている。ラウンドトリップ忠実度による と、ソース・テキストはターゲット・テキストに変換し、そのあとオリジナル・ ソース・テキストに戻るように再変換することができる。その結果の文字コード と他のプラットフォームとの互換性は標準ターゲット文字の使用を最大限にし、 プライベート文字の使用を最小限にすることによって保証される。コード変換シ ステムは他の文字セットからユニコード文字に変換し、ユニコード文字を他の文 字セットに変換するときに利用すると、特に便利である。ユニコード文字シーケ ンスをターゲット文字セット内の単一文字にマッピングすることは従来にはなか ったものである。 コード変換システムはコンピュータ・システムや他のエレクトロニック・デバ イスにしてこれらのコード変換オペレーションを行うことができる。このコンピ ュータ・システムは必要とする目的だけに使用するように構築することも、コン ピュータ・プログラムに従って動作する汎用コンピュータにすることも可能であ る。以下に説明する処理はどのコンピュータ・システムや他のエレクトロニック ・デバイスにも適用可能である。具体的には、種々の汎用コンピューティング・ マシンは以下に教示する説明に従って書かれたソフトウェアと共に使用すること ができるが、もっと特殊化されたエレクトロニック・デバイスを構築すると、必 要とするオペレーションを実行できるので好都合である。 本発明の第4側面では、切り捨て処理手法は変換のために受信されたソース文 字列が、そのソース文字列が変換のためにソース文字列を格納している入力バッ ファの長さを越えたときでも、異なるターゲット文字コード化に正確に変換され ることを保証する。切り捨て処理手法は入力バッファに置かれているソース文字 列の一部を切り捨てて、切り捨てられた部分がソース文字列内の後続文字に影響 されることなくターゲット文字コード化に変換されるように作用する。当然のこ とであるが、入力バッファに置かれていて、切り捨てられた後のソース文字列の 部分(切り捨てられた部分)を最大限にすると、コード変換を効率よく実行する ことができる。 本発明による切り捨て処理手法はソース文字を異なるコード化のターゲット文 字に変換するコード変換システムと関連づけて以下で詳しく説明する。 図1は本発明による代表的なコンピュータ・システム100を示すブロック図 である。コンピュータ・システム100は中央処理ユニット(CPU)102を 装備し、このCPUは双方向にランダムアクセス・メモリ(RAM)102と、 単方向にリードオンリ・メモリ(ROM)106と結合されている。代表例とし て、RAM104はプログラミング命令とデータを格納し、この中には現在CP U102上で実行中のプロセスに対する他のデータや命令のほかに、以下で説明 するテーブルが含まれている。代表例として、ROM106はコンピュー タ・システムがその機能を実行するために使用する基本的操作命令、データおよ びオブジェクトを格納している。そのほかに、ハードディスク、CD ROM、 磁気光学(フロプチカル)ドライブ、テープ・ドライブなどの大量記憶装置10 8は双方向にCPU102と結合されている。大量記憶装置108は一般的にC PUによって活発に使用されることがない追加のプログラミング命令、データお よびテキスト・オブジェクトを収容しているが、アドレス空間は例えば仮想メモ リなどのためにCPUによってアクセス可能である。上述したコンピュータの各 々はさらに入出力ソース110を含んでおり、その代表例として、キーボードや ポインタ・デバイス(例えば、マウスやスタイラス)などの入力メディアがある 。コンピュータ・システム100はデータと命令を転送できるネットワーク接続 112を含むこともできる。追加の大量記憶装置(図示せず)をネットワーク接 続112を経由してCPU102に接続することも可能である。コンピュータ・ システム100はさらに、コンピュータ・システム100によって生成または表 示されたテキストおよびイメージ(画像など)を見るための表示スクリーン11 4を含んでいる。 CPU102はオペレーティング・システム(図示せず)と一緒になって、コ ンピュータ・コードを実行するように動作する。コンピュータ・コードはRAM 104、ROM106、または大量記憶装置108に置いておくことができる。 また、コンピュータ・コードはポータブル・プログラム・メディア116に置い ておき、必要時にコンピュータ・システム100にロードまたはインストールす ることも可能である。ポータブル・プログラム・メディア116の例としては、 CD−ROM、PCカード・デバイス、RAMデバイス、フロッピディスク、磁 気テープなどがある。I.定義 1.コード・ポイント:コード・ポイントとは、特定のコード化におけるビッ ト・パターンである。通常、ビット・パターンは1または2バイト以上の長さに なっている。ユニコードのコード・ポイントは常に16ビットまたは2バイトで ある。 2.コード化:コード化とは、文字セットとコード・ポイントのセットとを1 対1で対応づけたもの(マッピング)である。例えば、ASCIIコード化はa −z、A−Z、および0−9を含むセットをコード・ポイントx00−x7Fに 対応づけている。 3.テキスト要素:テキスト要素は特定のオペレーションで1つの単位として 扱われる1つまたは2つ以上のコード・ポイントのシーケンスである。例えば、 LATIN CAPITAL LETTER Uとその後に続くNON−SPA CING DIAERESISは本発明によるコード変換オペレーションの対象 となるテキスト要素である(例えば、この例では、2つの隣り合う文字)。 4.絵文字:文字を可視的に表現した表示形態。例えば、イタリックの“a” とローマン字の“a”は同じ基礎文字を表現する2つの異なる絵文字である。 5.表現形態:表現形態はコンテキストに応じてその可視形体を変化させる絵 文字である。ある種のコード化はコンテキストから独立している抽象文字だけを マッピングするのに対し、他のコード化は表現形体だけをマッピングする。例え ば、“fi”のような合字は、LATIN CAPITAL LETTER F とその後に続くLATIN CAPITAL LETTER Iの文字シーケン スの表現形態である。 6.フォールバック:フォールバックはソース・コードに正確に等価ではない が、オリジナルの情報の一部を残しているターゲット・コード化内の1つまたは 能なフォールバックである。 7.デフォルト:デフォルトはターゲット・コード化内にソース・コード・ポ イントに類似したものがないとき使用されるターゲット・コード化内の1つまた は2つ以上のコード・ポイントのシーケンスである。II .ユニコード・コンバータ 本発明による一般的変換手法はソース文字を異なるコード化のターゲット文字 に変換する。好ましくは、ソース文字またはターゲット文字のどちらかはユニ コード文字になっている。 ユニコード標準は開発されたいくつかの文字コード化を汎用国際的文字コード 化標準に統一化したものである。図2はユニコード文字コード化のフォーマット を示す図である。具体的には、ユニコード標準に用意されているコードは、図2 に示すフォーマット200で示すように16ビット幅になっている。本明細書で は、ユニコード文字は頭にuを付けた16進数で表され(例えば、u001)、 他のコード化内の文字は頭にxを付けた16進数で表されている(例えば、x4 1は1バイト文字を表し、x8140は2バイト文字を表している)。 図3は、ソース文字列302を受信し、ターゲット文字列304を出力する本 発明による基本的ユニコード・コード変換システム300を示すブロック図であ る。ユニコード・コード変換システム300はソース文字列302の文字を、タ ーゲット・ストリーム内にあって、文字コード化がソース文字列で使用されたコ ード化と異なっている1つまたは複数の文字に変換するように動作する。好まし くは、ユニコード・コード変換システム300はユニコードから異なるターゲッ ト・コード化に変換するか(ユニコードから)、あるいは異なるソース・コード から変換する(ユニコードへ)。 図4は本発明によるユニコード・コード変換システム400の実施例を示すブ ロック図である。本発明の第4側面では、トランケータ407とバッファ405 が存在し、適用されているが、第1、第2または第3側面では、これらは必ずし も存在する必要がないので、必ずしも適用されるとは限らない。 本発明の第1、第2および第3側面によれば、ユニコード・コード変換システ ム400はユニコード文字列404を受信し、ターゲット文字列406を出力す るユニコードからのコンバータ402を含んでいる。ユニコードからのコンバー タ402は本発明に従ってコード変換プロセスを実行する。その際に、ユニコー ドからのコンバータ402はスキャナ408とやりとりする。スキャナ408は スキャナ・テーブル408と一緒に使用されて、ユニコード文字列をスキャンし テキスト要素を特定する。そのあと、ユニコードからのコンバータ402はルッ クアップ・ハンドラ412を使用して、スキャナ408によって特定されたテキ スト要素のターゲット・コード化内の1つまたは複数の文字を調べる。ルック アップ・ハンドラ412はマッピング・テーブル14を使用してテキスト要素の ターゲット・コード化内の1つまたは複数の文字を取得する。さらに、ユニコー ドからのコンバータ402はフォールバック・ハンドラ416を使用することも 可能である。フォールバック・ハンドラ416はマッピング・テーブル414と 一緒に使用され、ルックアップ・ハンドラ412がテキスト要素のターゲット・ コード化内の1つまたは複数の文字を特定できなかった場合に、ターゲット・コ ード化内にあって、テキスト要素のフォールバック・マッピングとして使用でき る1つまたは複数の文字を特定するように動作する。状態管理機構(state admin istrator)418は変換の現在状態に関する情報を維持し、あるいはストアして いる。この情報の例としては、シメトリック・スワッピングのコンテキスト、方 向および状態がある。 本発明の第4側面によれば、ユニコード・コード変換システム400はユニコ ード文字列404を受信し、ターゲット文字列406を出力するユニコードから のコンバータ402を含んでいる。ユニコード文字列はバッファ405にストア される。トランケータ407はバッファ405にストアされたユニコード文字列 404の長さを切り捨てて、正確な変換が行われることを保証する。 ユニコードからのコンバータ402はコード変換の全体的オペレーションを制 御する。その際に、ユニコードからのコンバータ402はスキャナ408とやり とりする。スキャナ408はスキャナ・テーブル408と一緒に使用されて、切 り捨てられたユニコード文字列404(トランケータ407から与えられたもの )をスキャンしテキスト要素を特定する。そのあと、ユニコードからのコンバー タ402はルックアップ・ハンドラ412を使用して、スキャナ408によって 特定されたテキスト要素のターゲット・コード化内の1つまたは複数の文字を調 べる。ルックアップ・ハンドラ412はマッピング・テーブル14を使用してテ キスト要素のターゲット・コード化内の1つまたは複数の文字を取得する。さら に、ユニコードからのコンバータ402はフォールバック・ハンドラ416を使 用することも可能である。フォールバック・ハンドラ416はマッピング・テー ブル414と一緒に使用され、ルックアップ・ハンドラ412がテキスト要素の ターゲット・コード化内の1つまたは複数の文字を特定できなかった 場合に、ターゲット・コード化内にあって、テキスト要素のフォールバック・マ ッピングとして使用できる1つまたは複数の文字を特定するように動作する。状 態管理機構(state administrator)418は変換の現在状態に関する情報を維持 し、あるいはストアしている。この情報の例としては、シメトリック・スワッピ ングのコンテキスト、方向および状態がある。この種の情報は、切り捨てられた ユニコード文字列がブロックの終わりで終わっていない非ブロック区切り変換を 行うとき必要になるものである。そのような場合には、変換の現在状態に関する 情報をストアしておくと、コード変換プロセスは入力文字列404がバッファ4 05のサイズよりも大きいときでも、正確なコード変換を行うことができる。A.スキャナおよびスキャナ・テーブル スキャナ408はスキャナ・テーブル410と一緒に使用されて、ユニコード 文字列404をスキャンし、ルックアップ・ハンドラ412が必要とする次のテ キスト要素と追加情報を戻す。追加情報には、方向情報、コンテキスト情報、お よび種々の状態インジケータの1つまたは2つ以上が含まれている。以下では、 スキャナ408の一般的オペレーションについて説明する。スキャナ408は入 力ユニコード文字列404の文字をスキャンして行く。ターゲット・コード化の ために方向情報が必要であれば、テキスト要素内の各文字ごとに文字方向が取得 される。また、ターゲット・コード化のために文字コンテキスト情報が必要であ れば、テキスト要素内の各文字ごとに文字コンテキスト情報が取得される。その あと、スキャナ408が文字の各々をスキャンしていくとき、スキャナ408は スキャナ・テーブル410に入っている情報に従って文字に対するアクションを とる。スキャナ408がどのようなアクションをとるかは、状態と文字クラスに 基づいて判断される。スキャナ408がとることができるアクションとしては、 現在の文字にマークを付けること、シメトリック・スワッピング・ビットをセッ トまたはクリアすること、テキスト要素のコンテキスト形式を記録すること、テ キスト要素が再配列を必要とすることを示すフラグをセットすること、テキスト 要素の終わりを示すこと、などがある。シメトリック・スワッピング・ビット、 コンテキストおよび方向はスキャナの状態に関する情報として状態管理機構41 8によってセーブされる。戻す前に、スキャナ408はテキスト要素のコンテキ スト情報をセーブしておく。スキャナ408はテキスト要素(入力文字列内の各 テキスト要素)とその属性を返却する。属性には次のものがある。方向、クラス 、優先順位、シメトリック・スワッピング状態、サブセットおよびコンテキスト である。スキャナ408がテキスト要素を判断したあと、文字を標準形順序に再 配列する必要が起こる場合がある。1つの例として、テキスト要素内の文字の再 配列はユニコードで定義されている標準形順序になっていない非スペース・マー クがテキスト要素に含まれているときに行われる。 好ましくは、スキャナ408はスキャナ・テーブル410と一緒に、並列に動 作するペアのステート・マシンとして実現されている。第1ステート・マシンは 文字方向を解明し、第2ステート・マシンは該当する場合には、テキスト要素と 文字形式コンテキスト情報を計算し、シメトリック・スワッピング状態も記録し ておく。別々になった2つのステート・マシンを使用すると、ユニコード・コー ド変換システム400の設計と保守が容易化される。第1および第2ステート・ マシンは状態とクラスによってインデックスされる2次元配列(またはテーブル )として実現することができる。スキャナ408がとるべきアクションが文字方 向によって決まる場合には、ステート・マシン・エントリは各方向についてスキ ャナ408がとるべき該当アクションを収めている別のテーブルまでのインデッ クスである。 スキャナ408の機能は入力ユニコード文字列404をテキスト要素に変換し 、テキスト要素とその属性を戻すことである。スキャナ408はテキスト要素の ある種の特性をセーブしておく必要があり、そうすれば、ターゲット・コード化 で正しく変換されることになる。すなわち、特性には、方向、コンテキストおよ びシメトリック・スワッピング状態がある。しかし、スキャナ408は、そのオ ペレーションが特定のターゲット・コード化から独立しているので、どのような ターゲット・コード化であるかを知っている必要はない。それにもかかわらず、 ユニコード変換システム400は、テイスト要素の定義(つまり、チャンク行動 )が、スキャナ・テーブル410を変更するだけでターゲット・コード化と 共に変化できるように実現されていることが好ましい。 文字の方向性は文字を表示するために使用される。例えば、アラビアまたはヘ ブライ文字が表示スクリーンに表示されるとき、これらは右から左への順序にな っている。大部分のユニコード文字は黙示的方向をもっている(ユニコード・バ ージョン1.0の407ページ(セクション4.6)および611ページ(付録 A)を参照)。ユニコード標準に用意されている暗黙的方向クラスとその値には 次のものがある。左から右へ(0)、右から左へ(1)、ヨーロッパ数字(2) 、ヨーロッパ数字セパレータ(3)、ヨーロッパ数字ターミネータ(4)、アラ ビア数字(5)、共通数字セパレータ(6)、ブロック・セパレータ(7)、セ グメント・セパレータ(8)、ホワイトスペース(9)およびその他の数字であ る。スキャナ408はテキスト要素の文字の方向クラスを調べる。次に、その方 向クラスはテキスト要素の方向を解明するために使用される。また、方向性をオ ーバライドまたは埋め込ませる特殊なユニコード文字もある。これらの特殊なユ ニコード文字はスキャナ408によって単一文字テキスト要素として扱われる。 テキスト要素を形成するときスキャナ408が従う基本的ルールがいくつかあ る。ベース・ルールでは、適用されるルールがなければ、テキスト要素は単一ユ ニコード文字とされる。別のルールでは、ベース文字に続く非スペースまたは結 合マークはそのベース文字と一緒に単一テキスト要素として分類される。さらに 別のルールでは、シンボル(つまり、朝鮮ハングル・ジャモス文字)、合字また は表意文字に関連する文字が見つかると、これらはテキスト要素に結合される。 さらに別のルールでは、フラクション・スラッシュの両側が1つまたは複数の1 0進数のシーケンスで囲まれていると、これらは数字フラクション・テキスト要 素として結合される。 以下では、非スペースまたは結合マークに関するルールについて詳しく説明す る。ユニコード標準によれば、非スペース・マークはベース文字のあとに置かれ ている。従って、ベース文字のあとに置かれた非スペース文字はベース文字を含 むテキスト要素の一部となる(ユニコード標準バージョン1.0、403ページ (セクション4.3)を参照)。例えば、単一の非スペース文字の後に非スペー ス文字でない文字が続いているときは、その非スペース文字は直前の文字と一緒 にテキスト要素として結合される。その場合、テキスト要素の長さは2であり、 テキスト要素の属性はベース文字によって定義されている。前に置かれた文字が なければ、非スペース文字は単一テキスト要素として渡されるだけである。複数 の非スペース文字もこのようにして結合することができる。 以下では、朝鮮ハングル・ジャモス文字について詳しく説明する。各ハングル 文字は暗黙値を持ち、これは次のクラスの1つになっている。Choseong (初期)、Jungseong(中間)またはJongseong(最終)であ る。ユニコード標準バージョン1.1(セクション5)はこれらの文字のコード と許容される組み合わせをリストしている。スキャナ408はこれらの文字の許 容される組み合わせに従って朝鮮ジャモス文字をグループ化する。入力が許容さ れない組み合わせのときは、スキャナ408は文字を単一テキスト要素として返 却する。前述したように、ハングル分節のあとに結合マークが付いているときは 、その結合マークはハングル分節のテキスト要素内に挿入される。 次に、数字フラクションに関するルールについて詳しく説明する。スキャナ4 08は最初にフラクション・スラッシュ数字の各文字を、それらが単一文字テキ スト要素であるものとして取り扱う。しかし、完全なフラクション・スラッシュ ・シーケンスが見つかったときは、スキャナ408はそのシーケンスに関連する 文字を単一テキスト要素になるように結合する。ディジットが結合マークと一緒 に見つかったときは、そのディジットと結合マークはフラクション・スラッシュ の一部となることができないが、ディジットと結合マークは一緒にテキスト要素 を形成することができる。 非スペース文字を除き、すべてのアラビア文字は単一テキスト要素としてスキ ャナ408を通過する。アラビア形式のシェーピング状態文字も、単一テキスト 要素としてスキャナを通過する。方向フォーマッティング・コードは単一テキス ト要素としてスキャナ408を通過する。B.ルックアップ・ハンドラ、マッピング・テーブルおよびフォールバック・ハ ンドラ マッピング・テーブル414は1つまたは複数のユニコード文字の入力シーケ ンスをターゲット・コード化における1つまたは複数の出力シーケンスと突き合 わせるためにルックアップ・ハンドラ412によって使用される。ユニコード・ シーケンス(つまり、テキスト要素)自体のほかに、入力シーケンスに関するあ る種の追加情報が得られ(例えば、方向、今テキスト、シメトリック・スワッピ ング状態、垂直形式要求、フォールバック要求、許容範囲、変種)、ある種のテ ーブルはこの情報を利用している。好ましくは、マッピング・テーブル414は フォールバック・ハンドラ416が必要とするデータもストアしているが、別の テーブルを用意してフォールバック・ハンドラ416に使用させることも可能で ある。 図5はユニコード・コード変換システム400のマッピング・テーブル414 の好ましい配列を示す概略図である。マッピング・テーブル414は好ましくは ヘッダ部分500を含み、マッピング・テーブル414のデータのセグメントは テキスト要素内の文字数に基づいて分割されている。ヘッダ部分500の内容は 以下で詳しく説明する。図5に示すマッピング・テーブル414は1からN文字 までのテキスト要素のコード化をサポートしている。ルックアップ・ハンドラ4 12が1文字テキスト要素のターゲット・コード化を探すためにマッピング・テ ーブル414をサーチするとき、マッピング・テーブル414のセグメント50 2が使用される。同様に、テキスト要素が2文字幅であれば、セグメント504 が使用され、テキスト要素がN文字幅であれば、セグメント506が使用される 。図4と図5は単一マッピング・テーブル414を示しているが、ユニコード・ コード変換システム400は複数の異なるマッピング・テーブル414を使用す る。つまり、各ターゲット文字セットごとに1つのマッピング・テーブルを使用 する。各マッピング・テーブルは複数のサブテーブルを含んでいる。 マッピング・テーブル414はサイズと全体的変換速度要件を考慮に入れて設 計されている。マッピング・テーブル414はルックアップ時間を重大に低下さ せることなく可能な限り小さくしておくべきであり、ルックアップ時間はテーブ ル・サイズを大幅に大きくすることなく可能な限り高速にしておくべきである。 ユニコード・コード変換システム400は複数のテーブル・フォーマットをサポ ートしているので、各サブテーブルごとに異なるフォーマットにすることが可能 である。そのようにすると、速度とサイズのトレードオフを特定のテーブルに合 わせて必要時に調整することができる。好ましくは、マッピング・テーブル41 4の設計は単一ユニコード文字からターゲット・コード化内の単一文字にマッピ ングするのを可能な限り高速化するものでなければならないが、これは最も普通 の使い方であるからである。 マッピング・テーブル414の設計は、テーブルがフォールバック・ハンドラ 416の要求の少なくとも一部をサポートし、複数のマッピング許容範囲をサポ ートし、複数のターゲット文字セットの変種をサポートするようになっている。 テーブル・フォーマットは1つまたは複数のユニコード文字シーケンスをゼロま たは1個以上の文字の出力シーケンスにマッピングすることもできる。マッピン グ・テーブル414は単一入力シーケンスに対して起こり得る複数の出力シーケ ンスを指定することが可能であり、特定の出力シーケンスは方向、コンテキスト およびシメトリック・スワッピング状態などの属性によって判断される。本発明 の第3側面に関しては、中心となるのは出力シーケンスの1つをコンテキストに 基づいて選択することである。マッピング・テーブルは容易に拡張することがで きるので、ユニコード・コード変換システム400のコード化の振舞を容易にカ ストマイズすることができる。 マッピング・テーブル414が必要とする情報には次のものがある。スキャナ 408からのテキスト要素(つまり、結合マークを標準形順序にして変換される 入力文字シーケンス)、垂直形式が使用可能なときに水平形式の代わりに使用す るかどうか、解明されたテキスト要素の方向、テキスト要素の文字形式コンテキ スト情報(初期、中間、最終、または隔離)、シメトリック・スワッピングの現 在状態、どのレベルのルックアップを起動させるかの情報(許容レベル(厳格ま たは緩和)とフォールバック(オンまたはオフ))、および特定のコード化変種 の識別子である。ルックアップ・レベルに関する情報はコールまたはユニコード ・コード変換システム400をコールするアプリケーション・プログラムから 与えられる。方向およびコンテキストが重要でない言語または文字では、解明さ れた方向とコンテキスト情報は必要でない。 変種の定義、ユニコード・シーケンスからターゲット・シーケンスへの実際の マッピング、およびこれらにアクセスするために使用されるテーブル・フォーマ ットはマッピング・テーブル414の設計によって変更可能である。従って、正 確性および若干であるが、パフォーマンスとサイズとのトレードオフはマッピン グ・テーブル414の設計に大きく依存している。好ましいことは、マッピング ・テーブル414が厳格および緩和マッピング、フォールバック・マッピング、 およびデフォルト・マッピングをサポートすることである。 厳格マッピングはラウンドトリップ忠実度が保証されるコード変換である。ユ ニコードからターゲット文字セットへの厳格マッピングはその文字セットからユ ニコードへのユニコードへのマッピングとは逆である。ユニコードからターゲッ ト文字セットへの緩和マッピングはターゲット文字セット内の文字の定義または 隔離された用途の範囲に属する追加マッピングである。緩和マッピングは正しく マッピングされるように見えるが、若干のあいまいさがある。例えば、多くの文 字セットでは、単一文字は、明示的定義、あいまいな定義、または確立された用 法のいずれかによって複数の意味を持つことがある。例えば、Shift−JI S文字x8161は2つの意味を持つように規定されている。すなわち、「2重 垂直線」と「平行」である。これらの意味の各々は異なるユニコード文字u20 16「2重垂直線」とu2225「に平行」に対応している。Shift−JI Sからユニコードにマッピングするときは、コード変換システムはこれらのユニ コード文字の1つ、つまり、2重垂直線を選択しなければならない。ユニコード からShift−JISにマッピングするときは、コード変換システムは両方の ユニコード文字を同一Shift−JIS文字にマッピングすることができ、そ のようにするのが通常である。しかし、これらのユニコードからのマッピングの 1つだけはユニコードへのマッピングとは逆になっている。 厳格マッピングと緩和マッピングの比較例 ・ ユニコードu000DがASCIIx0D「キャリッジリターン」に厳格 にマッピングされていれば、ユニコードu2029「パラグラフ・セパ レータ」はASCIIx0Dにゆるやかにマッピングすることができ る。 ・ ユニコードu002D「ハイフン−マイナス」がASCIIx2D「ハイ フン−マイナス」に厳格にマッピングされていれば、ユニコード u2010「ハイフン」とu2212「マイナス記号」は ASCIIx2Dにゆるやかにマッピングすることができる。 ・ ユニコードu00EO「グラーブ付きのラテン小文字A」が ISO 8859−1xEO「アクサングラーブ付きの小文字a」に厳格 にマッピングされていれば、2文字のユニコード・シーケンス u0061+u0300「ラテン小文字A」+「結合アクサングラーブ」 はISO 8859−1xEOにゆるやかにマッピングすることができ る。 ・ Shift−JISは半幅文字と全幅文字を区別しているので、 Shift−JISの緩和マッピングもこれらを区別しておかなければな らない。つまり、ユニコードuFF40「全幅アクサングラーブ」は Shift−JISx814D「アクサングラーブ(全幅)に厳格にマッ ピングされており、これはShift−JISx60「アクサングラー ブ(半幅)と区別されている。ユニコード・シーケンスu3000+ u0300「表意文字スペース」+「結合アクサングラーブ」は Shift−JISx814Dにゆるやかにマッピングすることができ る。しかし、ユニコード・シーケンスu0020+u0300「スペー ス」+「結合アクサングラーブ」はShift−JISx814Dにゆる やかにマッピングしてはならない。これはShift−JISx60に マッピングされるべきである。 本発明の第1側面によれば、ユニコードからある種の他の文字にマッピングし 再び元に戻すマッピング(ラウンドトリップ・マッピング)は、他の文字への厳 格なマッピングが存在しているユニコード文字だけを使用するとき可能である。 さらに、本発明の第1から第5までの側面によれば、フォールバック・マッピ ングはユニコード文字の意味または同一性を保存していないユニコードからのマ ッピングである。つまり、これらはユニコード文字(または文字シーケンス)を その定義または用途がユニコード文字の意味または用途を含んでいないターゲッ ト文字セット内の文字(または文字シーケンス)にマッピングする。これに対し て、フォールバック・マッピングによると、ユニコード文字(または文字シーケ ンス)に最も近く対応しているターゲット・コード化内の文字(または文字シー ケンス)が得られる。 フォールバック・マッピングの例 ・ ユニコード文字u0300「結合アクサングラーブ」はフォールバック・ マッピングとしてASCIIx60「アクサングラーブ[スペース])に マッピングすることができる。違いは、ユニコード文字が結合マーク(非 スペース)であるのに対し、ASCII文字はスペース・マークであるこ とである。 ・ ユニコード文字u01C0「ラテン文字デンタル・クリック」はフォール バック・マッピングとしてASCIIx7C「垂直線」にマッピングする ことが可能である。 ・ ユニコード文字u2001「EM QUAD」はフォールバック・マッピ ングとしてASCIIx20「スペース」にマッピングすることが可能で ある。 従って、上記の例に示すように、フォールバック・マッピングはユニコード文 字(またはシーケンス)にグラフィックが近似しているターゲット文字(または シーケンス)を生成するために使用される。 パフォーマンス上の理由により(つまり、コード化をマッピング・テーブルか ら得るときの速度)、マッピング・テーブル414までのインデックスにはいく つかのフォーマットがある。可能とされるフォーマットには、セグメント・フォ ーマット、リスト・フォーマット、範囲フォーマット、チェーン・フォーマット がある。文字シーケンスの長さが異なるごとに、別々のインデックスを設けるこ とが好ましい。その結果として、セグメント502、504、506の各々に関 連するインデックスは異なるフォーマットにすることができ、各インデックスの 先頭の情報はそのフォーマットを指定している。フォーマットに関係なく、各イ ンデックスは最終的には、入力シーケンスを直接に出力シーケンスにマッピング するか、あるいは出力シーケンスが長ければ、対応する出力シーケンスのロケー ションを指定しているオフセットにマッピングする。 マッピング・テーブル414までのインデックスのチェーン・フォーマットに ついては、以下で詳しく説明する。チェーン・フォーマットでは、セクションの 先頭がチェックされ、それがチェーン・フォーマット・テーブルのチェーン・ヘ ッダであるか、他のフォーマットであるかが判断される。チェーン・フォーマッ トは複数のインデックス・テーブルのチェーンを指定し、各々は異なるフォーマ ットになっている場合がある。必要とするマッピングが最初のインデックス・テ ーブルに見つからなければ、ルックアップ・ハンドラ412は2番目のインデッ クス・テーブルを調べ、以下同様である。チェーン・フォーマットは、例えば、 あるインデックス・フォーマット(これは空間的および/または時間的に効率的 である)が入力シーケンスのすべてではないが、大部分をマッピングすることが できるのに対し、別の非効率なインデックス・フォーマットは少数の残りのシー ケンスを処理できるときに利用すると、便利である。チェーン・メカニズムがな いと、インデックス・シーケンスのすべてに非効率のフォーマットを使用しなけ ればならないことになる。チェーン・フォーマットは変種と許容レベルが異なる たびに、異なるサブテーブルが必要になるときにも便利である。チェー ン内の各サブテーブルは、現在取り扱われているマッピング許容範囲と変種に基 づいてそれを含めるか、除外させるビット・フラグをもっている。本発明の第2 、第3および第4側面によれば、ルックアップ・ハンドラ412がターゲット・ コード化のマッピング・テーブル414をサーチするときは、含められたサブテ ーブルだけが考慮される。 さらに、本発明の第1から第4までの側面によれば、各サブテーブルに関連す るこれらのビット・フラグはサブテーブル・マスクを形成している。また、呼び 出し側要求(例えば、コード化の変種と許容範囲)と判断された属性(例えば、 解明された方向とコンテキスト)は選択マスクを形成している。サブテーブル・ マスクと選択マスク内のビット割当ては同じである。従って、特定のサブテーブ ルを含めるかどうかの判断はサブテーブル・マスクと選択マスクのビットワイズ ANDをとり、そのあと結果をサブテーブル・マスクと比較することによって行 われる。ビットワイズANDの結果がサブテーブルのサブテーブル・マスクと同 じであれば、そのサブテーブルが含められる。そうでなければ、それは含められ ない。 マッピング・テーブル414のヘッダ500は好ましくは次のものを収めてい る。 ・ 一般的識別情報−フォーマット、長さ、チェックサムおよびバージョン。 ・ 最小ターゲット文字サイズ(バイト数)(文字サイズともいう)。 ・ 一般的フラグ(例えば、そのルップアップ・テーブルが方向またはコンテ キスト・データを必要としているかどうか)。 ・ そのテーブルによって処理される最大入力シーケンス長、および1からこ の最大長までの入力シーケンス長を処理するテーブルを指定しているオフ セット/長さのペアのリスト。 ・ そのユニコードからのマッピングのデフォルト・フォールバック文字また は文字シーケンス。 ・ そのテーブルによってサポートされる変種のカウントとリスト。各変種ご とに、1つまたは2つ以上の関連ビット・マスクが指定される。単一の変 種に複数のビット・マスクがある場合は、属性情報(方向、コンテキス ト、および垂直形式の要求)はどのビット・マスクが使用されるかを判断 するために使用される。ビット・マスクで「1」にセットされたビットは 異なる変種をサポートするために種々のサブテーブルをオンにするために 使用される。 ・ 可能とされる4つの許容範囲設定値(厳格/緩和、フォールバック・オ ン/オフ)の各々に関連する追加のビット・マスクのセット。該当する許 容範囲レベル・マスクは変種マスクとORがとられて、サブテーブルを使 用可能または使用禁止にするために使用されるビット・マスクを形成す る。C.コード変換処理 以下では、ユニコード・コード変換システム400の好適実施例によって実行 される処理について詳しく説明する。 図6Aはユニコード・コード変換システム400を利用するアプリケーション (つまり、呼び出し側アプリケーション・プロセスまたはプログラム)によって 実行される処理600を示すフローチャートである。具体的には、図6Aはユニ コードからの処理に関係しているが、当然に理解されるように、類似のオペレー ションを実行して他方の方向に変換することも可能である(ユニコードへの処理 )ユニコードからのコンバータ402は全体的変換プロセスを制御する。 最初に、処理600は新しい状態インスタンスと変換のための制御情報を作成 し、初期化する(602)。処理600はインスタンスを設定するので、複数の スキャン・オペレーションを進行中にし、そのインスタンスによって区別するこ とが可能である。次に、切り捨てが必要であるかどうかの判断604が行われる 。切り捨てが必要な場合には、トランケータ407が起動される(606)。切 り捨てが必要になるのは、入力データ・ストリームが、変換のためのデータを収 めている受入れバッファ405の容量を越えたときである。切り捨てが必要でな ければ、あるいは切り捨てが必要な場合には、ブロック606に続いて、ユニコ ードからのコンバータ402がコールされ(608)ユニコード文字列404を 変換する。ユニコードからのコンバータ402の機能は、テキスト要素を取得 し、そのためのターゲット・マッピングを調べることである。これについては、 以下で詳しく説明する。変換機能から戻ると、処理600はユニコードからのコ ンバータ402からターゲット文字列406を受け取る。 次に、処理600は変換が失敗したかどうかを判断する。変換が失敗していれ ば、エラーが処理される(614)。他方、変換が正常に行われていれば、変換 が完了したかどうかの判断616が行われる。ユニコード文字列404の文字が ターゲット・コード化に変換されたとき変換は完了する。変換が完了していれば 、処理600は完了し、ターゲット文字列406はコード変換を要求したプロセ スまたはアプリケーションに利用可能にされる。さらに、処理600は状態イン スタンスと変換のための制御情報を破棄する(618)。他方、変換がまだ完了 していないと判断616されたときは、処理600は変換が完了するか、エラー が起こるまでブロック604〜616を繰り返す。 図6Bは本発明の第4側面による切り捨て処理620を示すフローチャートで ある。切り捨て処理620は図6Aのブロック606で起動され、トランケータ 407によって実行される。 切り捨て処理620は出力長をゼロ(0)に初期化する(622)。出力長は バッファの実効長、つまり、バッファの切り捨てられた長さに一致している。次 に、次のテキスト要素が取得される(624)。次のテキスト要素の取得(62 4)に関連する処理はスキャナ408によって行われるが、これについては図9 A〜図9Cを参照して以下で詳しく説明する。次に、テキスト要素がバッファの 物理的長さ(バッファ長)を越える可能性があるかどうかの判断626が行われ る。テキスト要素がバッファ長を越える可能性がなければ、出力長はそのテキス ト要素を含むように更新される(628)。ここでは、実効長はテキスト要素が バッファ長を越える可能性がない限り、テキスト要素単位で大きくなる。ブロッ ク628に続いて、考慮すべき追加テキストがバッファに残っているかどうかの 判断630が行われる。考慮すべき追加テキストがバッファに残っていれば、処 理はループしてブロック624に戻り、切り捨て処理620を繰り返す。他方、 考慮すべき追加テキストがバッファに残っていないか、あるいはテキスト要素が バッファ長を越える可能性があるとブロック626で判断されていれば、 出力長が戻される(632)。戻された出力長(632)はバッファの実効長( つまり切り捨てられた長さ)であるので、バッファは実効的にテキスト要素の終 わり(つまり、バッファ内のテキストの最後のテキスト要素)で終了する。 以上のようにして、切り捨て処理はバッファの実効長(つまり、切り捨てられ た長さ)を判断する。これはバッファの切り捨てられた部分とも呼ばれる。切り 捨ての後バッファに残っている余分のテキストは残余部分と呼ばれる。残余部分 は入力ソース文字列の次のバッファ部分にキャリーオーバされ、その部分と一緒 に考慮される。この処理はテキスト要素が正しく判断されることを保証する。 以下は切り捨て処理の使い方の例である。 例:“...ABCD`EFG...” バッファに置かれている部分が“D”の直後で終わっていれば、切り捨て 処理はバッファに置かれている部分を切り捨てて、切り捨てられた長さが“C” のあとで終わるようにする。バッファに置かれた部分を切り捨てる必要があるの は、そのようにしないと、テキスト要素“D”がそのあとに置かれた結合マーク “`”から切り離されることになるからである。切り離されると、テキストはタ ーゲット・コード化に正しく変換されないことになる。残余部分は“D`”であ り、次の部分にキャリーオーバされ、“D`EFG..”となる。 図7はユニコード・コンバータ処理700を示すフローチャートである。ユニ コード・コンバータ処理700は図6Aのブロック608で実行されるオペレー ションと関連づけられている。 ユニコード・コンバータ処理700は判断702から始まる。この判断702 は変換すべきテキストがあるかどうかを判断する。変換すべきテキストがなけれ ば、ユニコード・コンバータ処理700は戻るだけである(または完了する)。 他方、変換すべきテキストがあれば(つまり、ユニコード文字列404が完全に 処理されていなければ)、処理700が続けられる。まず、オフセットがオフセ ット配列に対して更新される(704)。オフセット配列入力文字列に関連する オフセット(ポインタ)の配列であり、フォント変更、ライン中断、言語変更 などのある種の変更が、呼び出し側アプリケーションが有意と判断している入力 文字列404内のどこで行われたかを示している。オフセット配列の更新704 は、異なる文字長に合わせてオフセット(ポインタ)を調節することにより行わ れる。例えば、入力ユニコード文字列404のユニコード文字は2バイト長であ るのに対し、ASCIIのターゲット・コード化に関連する文字のサイズは1バ イト長である。ここでは、オフセット配列の更新704はオフセットがターゲッ ト・コード化内の対応する文字を指すようにオフセットを更新する。実際には、 入力文字列内のオフセットはコード化が異なっている出力文字列にマッピングさ っる。次に、次のテキスト要素が取得される(706)。スキャナ408はスキ ャナ・テーブル410はユニコード文字列404からのテキスト要素を判断する 。次のテキスト要素の取得706は以下で詳しく説明する。次に、取得されたテ キスト要素はマッピング・テーブル414で調べられ(708)、ターゲット・ コード化内のテキスト要素の変換コードが得られる。このルックアップはマッピ ング・テーブル414を使用してルックアップ・ハンドラ412によって行われ る。変換コートのルックアップ708についても以下で詳しく説明する。 次に、テキスト要素の変換コードが見つかったかどうかの判断710が行われ る。変換コードが見つかったときは、ユニコード文字列404とターゲット文字 列406の入力位置ポインタと出力位置ポインタがそれぞれ更新される(712 )。入力位置ポインタは入力文字列404がどれだけ変換されたかを示している 。出力位置ポインタはターゲット文字列406の長さを示している。ブロック7 12に続いて、処理700はユニコード・コンバータ処理700の先頭に戻り、 変換すべきユニコード文字列404の次のテキスト要素(存在する場合)が処理 できるようにする。 しかるに、変換コードがマッピング・テーブル414に見つからないと判断7 10が判断したときは、呼び出し側(例えば、呼び出し側アプリケーション)が フォールバック処理を要求していたかどうかの判断714が行われる。呼び出し 側がフォールバック処理を要求していれば、フォールバック処理が実行される( 716)。フォールバック処理はフォールバック・ハンドラ416によっ て実行される。これは以下で詳しく説明する。他方、呼び出し側がフォールバッ ク処理を要求していなければ、テキスト要素がルックアップ・ハンドラ412に よってターゲット・コード化に変換できなかったのでエラーが通知される(71 8)。ブロック716と718に続いて、ユニコード文字列404とターゲット 文字列406の入力位置ポインタと出力位置ポインタがそれぞれ更新され(70 2)、そのあと処理はユニコード・コンバータ処理700の先頭に戻り、変換す べきユニコード文字列4040の次のテキスト要素(存在する場合)が処理でき るようにする。 図8はオフセット更新処理800を示すフローチャートである。オフセット更 新処理800はオフセット配列が更新される図7のブロック704と関連してい る。 オフセット更新処理800は現在入力位置がオフセット配列にあるかどうかを 判断802することから始まる。現在入力位置がオフセット配列にあれば、オフ セット配列の内容がブロック804に続いて現在出力位置長さに従って更新され る(804)、オフセット更新処理800から戻る。他方、現在入力位置がオフ セット配列にないときは、更新すべきオフセットがないのでオフセット更新処理 800から戻る判断802が行われるだけである。 図9Aおよび図9Bは本発明の第1、第2および第4側面による次のテキスト 要素処理900を示すフローチャートである。次のテキスト要素処理900は次 のテキスト要素を取得するとき図7のブロック706で実行されるオペレーショ ンを具体化したものである。好ましくは、次のテキスト要素処理900はスキャ ナ・テーブル410を使用してスキャナ408によって行われる。 次のテキスト要素処理900は状態と再配列フラグを初期化(902)するこ とから始まる。次に、マッピング・テーブル414が方向情報を必要としている かどうかの判断904が行われる。マッピング・テーブル414が方向情報を必 要としていれば、ユニコード文字列404の方向が解明される(906)。本発 明の第2側面では、マッピング・テーブル414が方向情報を必要としていれば 、ユニコード文字列404の次の入力文字の方向が解明される(906)。方向 が解明されると(906)、あるいは方向が必要でない場合には判断904の 後で、文字のコンテキストに基づく判断908が行われる。ユニコード文字列4 04内の文字のコンテキストがコード変換(マッピング)に影響する可能性があ るときは、コンテキストが解明される(910)。ブロック910に続いてまた は判断908に続いて、コンテキストが重要でないときは、ユニコード文字がユ ニコード文字列404から取得される(912)。ここでは、ユニコード文字列 404内の次の文字が取得される。次に、取得されたユニコード文字の属性が調 べられる(914)。属性ルックアップ914は図11〜図13を参照して以下 で詳しく説明する。次に、次のテキスト要素処理900のアクションが判断され る(916)。アクションの判断916は図14A、図14Bおよび図15を参 照 て以下で詳しく説明する。 次に、アクションが“END”であるかどうかの判断918が行われる。アク ションが“END”でなければ、アクションは少なくとも“ADVANCE”で ある。アクションが“ADVANCE”であるときは、アクションが“MARK ”でもあるかどうかの判断920が行われる。アクションが“MARK”でもあ るときは、文字がテキスト要素に挿入される(922)。さらに、“MARK” アクションがとられると双方向状態がセーブされる(924)。双方向状態は方 向性埋め込みスタックと双方向ステート・マシンの現在状態を含んでいる。ブロ ック924に続いてまたはアクションが“MARK”でもないときは判断ブロッ ク920に続いて、アクション修飾子に基づいてスイッチ・オペレーションが実 行される。アクション修飾子はアクションの一部であり、“S”、“ISS”、 “ASS”などの修飾子を含んでいる。アクションはどのアクション修飾子もも たないこともできる。アクション修飾子が“S”であるときは、再配列フラグが セットされる(928)。再配列フラグ(セットされたときは)はテキスト要素 内の文字を再配列する必要がないことを示している。アクション修飾子が“IS S”(つまり、シメトリック・スワッピング禁止)であるときは、スワップ・フ ラグがオフにセットされる(930)。アクション修飾子が“ASS”(つまり 、スワッピング禁止活動化)であるときは、スワップ・フラグがオンにセットさ れる(932)。スワップ・フラグはシメトリック・スワッピングが必要かどう かを示している。スイッチ926は拡張 エリア934を使用して追加のアクション修飾子を含むように容易に適応させる ことができる。拡張エリア934を使用すると、ユーザはスキャナ408の振舞 を変更することができる。また、アクション修飾子がなければ、次のテキスト要 素処理900はアクション修飾子に関連するどのオペレーションも実行しない。 アクション修飾子オペレーションに続いて、現在文字インデックスが更新される (936)。現在文字インデックスは次のテキスト要素処理900を実行すると きソース文字列をスキャンしていくために使用されるソース文字列を指すポイン タである。次に、次のテキスト要素処理900はブロック904から始まるオペ レーションを繰り返す。処理はアクションが“END”であると判断918が判 断するまでループしてブロック904−936を繰り返す。アクションが“EN D”であると、判断918は判断ブロック938を実行させる。判断ブロック9 38は再配列フラグがセットされているかどうかを判断する。再配列フラグがセ ットされていれば(ブロック928)、テキスト要素内の文字は再配列される( 940)。再配列は異種の文字クラスの加重値を提供する優先順位属性を使用し て行うことが好ましい。再配列フラグがセットされていない場合にはブロック9 38に続いて、再配列フラグがセットされている場合にはブロック940に続い て、次のテキスト要素処理900は完了し、ユニコード・コンバータ処理700 に戻る。 図10A、図10Bおよび図10Cは本発明の第3側面による次のテキスト要 素処理900を示すフローチャートである。次のテキスト要素処理900は次の テキスト要素を取得するとき図7のブロック706によって実行されるオペレー ションを具体化したものである。好ましくは、次のテキスト要素処理900はス キャナ・テーブル410を使用してスキャナ408によって実行される。 次のテキスト要素処理900は状態と再配列フラグを初期化(952)するこ とから始まる。次に、マッピング・テーブル414が方向情報を必要としている かどうかの判断954が行われる。マッピング・テーブル414が方向情報を必 要としていれば、ユニコード文字列404の次の入力文字の方向が解明される( 956)。次に、ユニコード文字がユニコード文字列414から取得される(9 58)。ここでは、ユニコード文字列404内の次の文字が取得される (958)。次に、取得されたユニコード文字の属性が調べられる(960)。 属性ルックアップ960は図11〜図13を参照して以下で詳しく説明する。次 に、次のテキスト要素処理900のアクションと次の状態が判断される(962 )。アクションと次の状態の判断は図14A、図14B、図16Aおよび図16 Bを参照して以下で詳しく説明する。 次に、アクションが“END”であるかどうかの判断964が行われる。アク ションが“END”でなければ、アクションは少なくとも“ADVANCE”で ある。アクションが“ADVANCE”であるときは、アクションが“MARK ”でもあるかどうかの判断966が行われる。アクションが“MARK”でもあ るときは、文字がテキスト要素に挿入される(968)。さらに、“MARK” アクションがとられると双方向状態がセーブされる(970)。双方向状態は方 向性埋め込みスタックと双方向ステート・マシンの現在状態を含んでいる。ブロ ック970に続いてまたはアクションが“MARK”でもないときは判断ブロッ ク966に続いて、アクション修飾子に基づいてスイッチ・オペレーション97 2が実行される。アクション修飾子はアクションの一部であり、“S”、“IS S”、“ASS”などの修飾子を含んでいる。アクションはどのアクション修飾 子ももたないこともできる。アクション修飾子が“S”であるときは、再配列フ ラグがセットされる(974)。再配列フラグ(セットされたときは)はテキス ト要素内の文字を再配列する必要がないことを示している。アクション修飾子が ”ISS”(つまり、シメトリック・スワッピング禁止)であるときは、スワッ プ・フラグがオフにセットされる(976)。アクション修飾子が”ASS”( つまり、スワッピング禁止活動化)であるときは、スワップ・フラグがオンにセ ットされる(980)。スワップ・フラグはシメトリック・スワッピングが必要 かどうかを示している。スイッチ972は拡張エリア980を使用して追加のア クション修飾子を含むように容易に適応させることができる。拡張エリア980 を使用すると、ユーザはスキャナ408の振舞を変更することができる。また、 アクション修飾子がなければ、次のテキスト要素処理900はアクション修飾子 に関連するどのオペレーションも実行しない。アクション修飾子オペレーション に続いて、現在文字インデッ クスが更新される(982)。現在文字インデックスは次のテキスト要素処理9 00を実行するときソース文字列をスキャンしていくために使用されるソース文 字列を指すポインタである。次に、次のテキスト要素処理900はブロック95 4から始まるオペレーションを繰り替えす。処理はアクションが“END”であ ると判断964が判断するまでループしてブロック954〜982を繰り返す。 アクションが“END”であると、判断964はコンテキスト処理984を実行 させる。コンテキスト処理984のあと、判断ブロック986は再配列フラグが セットされているかどうかを判断する。再配列フラグがセットされていれば(ブ ロック974を参照)、テキスト要素内の文字は再配列される(988)。再配 列は異種の文字クラスの加重値を提供する優先順位属性を使用して行うことが好 ましい。再配列フラグがセットされていない場合にはブロック986に続いて、 再配列フラグがセットされている場合にはブロック988に続いて、次のテキス ト要素処理900は完了し、ユニコード・コンバータ処理700に戻る。 次に、図9Cを参照してコンテキスト処理984について説明する。コンテキ スト処理984はここで説明している実施例では、スキャナ・テーブル410を 使用するスキャナ408によって実現されている。コンテキスト処理984は判 断985から始まり、アクションがEndOutputXn(つまり、単独コン テキスト)であるかどうかが判断される。そうであれば、コンテキスト・マスク がセットされ(986)、コンテキストが単独であることを示し、コンテキスト 処理984は完了し、戻る。他方、アクションがEndOutputXnでなけ れば、アクションがEndOutputXl(つまり、初期コンテキスト)であ るかどうかが判断987で判断される。そうであれば、コンテキスト・マスクが セットされ(988)、コンテキストが初期であることを示し、コンテキスト処 理984は完了し、戻る。他方、アクションがEndOutputXlでなけれ ば、アクションがEndOutputXr(つまり、終了コンテキスト)である かどうかが判断989される。そうであれば、コンテキスト・マスクがセットさ れ(990)、コンテキストが初期であることを示し、コンテキスト処理984 は完了し、戻る。他方、アクションがEndOutputXrでなければ、アク ションがendOutputXm(つまり、中間コンテキスト)であるかどうか の判断991が行われる。そうであれば、コンテキスト・マスクがセットされ( 992)、コンテキストが初期であることを示し、コンテキスト処理984は完 了し、戻る。アクションがEndOutputXmでないと判断991されたと きは、テキスト要素は関連するコンテキストをもっていないので、コンテキスト ・マストは「無視」にセットされる(993)。 以上のように、コンテキスト処理984は上記実施例では、テキスト要素とコ ンテキストが一緒に判断されるように実現されている。どちらの判断も、スキャ ナ408とスキャナ・テーブル410によって先読みスキャンニングを利用して テキスト要素が完成し、入力テキスト・ストリーム内のテキスト要素の内容が分 かるようにしている。コンテキスト・マスクに入っているコンテキスト情報は、 マッピング・テーブル414とやりとりして、判断されたコンテキストをもつテ キスト要素の正しいターゲット・コード化を探すときにルックアップ・ハンドラ 412によって使用される。コンテキスト処理のオペレーションの詳細は図16 Aと図16Bを参照して以下で説明する。 図11はスキャナ408を示すブロック図である。特に、スキャナ408は属 性ハンドラ1000とテキスト要素ハンドラ1002を含んでいる。テキスト要 素ハンドラ1002は図9Aと図9Bおよび図10A〜図10Cを参照して上述 した次のテキスト要素処理900を実行する。属性ハンドラ1000は属性テー ブル1004とやりとりして、次のテキスト要素処理900が必要とするユニコ ード文字の属性を取得する(図9Aのブロック914と図10Aのブロック96 0を参照)。属性には次のものがある。つまり、方向、クラス、優先順位、シメ トリック・スワッピング、サブセットおよびコンテキストである。方向属性は方 向を解明するとき使用される(図9Aのブロック914および図10Aと図17 Aのブロック956を参照。クラス属性はアクション(例えば、ADVANCE 、END)を判断するためにスキャナ408によって使用される。優先順位属性 はテキスト要素内の文字を記録するために使用される(図9Bのブロック940 と図10Aのブロック988を参照)。シメトリック・スワッピング属性はシメ トリック・スワッピングが必要であるかどうかを判断するために使用される。コ ンテキスト属性はコンテキストを解明するときに使用される (図9Aのブロック910を参照)。 図12は図11の属性テーブル1004の好ましいフォーマットを示す概略図 である。属性テーブル1004はヘッダ部分1100、範囲テーブル部分110 2、および属性テーブル部分1104を含んでいる。ヘッダ部分1100は次の ものに関する情報を含んでいる。つまり、各テーブルの総テーブル・サイズ、チ ェックサム値、バージョン、オフセットおよび要素の数である。範囲テーブル部 分1102内の要素は属性が共通にグループ化されている範囲を示し、各グルー プごとに、属性テーブル部分1104の該当部分を指すポインタをもっている。 属性テーブル1004の範囲テーブル部分1102のフォーマットは、例えば、 各エントリごとに、範囲値の開始、範囲値の終了、および範囲に関連するデータ ・ワードを含んでいる。属性テーブル1004の構成は属性情報のコンパクトな ストアを容易にしている。別のストア構成も可能であるが、データ・ストアのコ ンパクトさから見たとき非効率的である。 図13は属性ルップアップ処理1200を示すフローチャートである。属性ル ックアップ処理1200は属性ハンドラ1000によって実行され、図9Aのブ ロック914または図10Aのブロック960で次のテキスト要素処理900に よって開始される。 属性ルックアップ処理1200は属性テーブル1004の範囲テーブル部分1 102内の範囲を使用してバイナリ・サーチから開始される。該当の範囲がバイ ナリ・サーチで見つかると、その範囲に関連するデータ・ワードが範囲テーブル 部分1102から取得される(1204)。好ましくは、データ・ワードの最初 のビットは間接ビットである。次に、データ・ワードの間接ビットがセットされ ているかどうかの判断1206が行われる。データ・ワードの間接ビットがセッ トされていない場合は、データ・ワード自体は現在の文字の属性を収めているの で、データ・ワードは属性として戻される(1208)。他方、データ・ワード の間接ビットがセットされていれば、属性は、範囲テーブル部分1102から取 得されたデータ・ワードを属性テーブル部分1104までのインデックスまたは オフセットとして使用して属性テーブル部分1104から取得される。従って、 この場合のデータ・ワードは範囲内の各文字の属性を収めている配列ま でのインデックスまたはオフセットである。ブロック1208または1210に 続いて、属性ルックアップ処理1200は完了し、戻る。 図14Aと図14Bは次のアクションを判断するためにスキャナ408によっ て使用されるスキャナ・テーブル1300(410)に関連する概略図である。 次のアクションの判断は次のテキスト要素処理900(図9A)のブロック91 6によって起動されるか、ブロック962(図10A)によって起動される。図 14Aは本発明で使用されるスキャナ・テーブル1300の好ましいフォーマッ トを示す図である。スキャナ・テーブル1300は「現在状態」を1つのインデ ックスとして、「クラス」を別のインデックスとしてもつ2次元配列である。「 クラス」はクラス属性を指している。これらのインデックスはスキャナ・テーブ ル1300内の代表的な要素1302を選択する。図14Bはスキャナ・テーブ ル1300の代用的な要素1302を示す図である。代表的な要素1302はス キャナ408の次の状態を収めている次の状態部分1304を含み、アクション 部分1306はスキャナ408のアクションを示している。実際には、スキャナ 408はスキャナ・テーブル1300と一緒になって、スキャナをどのように動 作させるかを判断するステート・マシンを実現している。 スキャナ・テーブル1300は異種の文字コード化に関する異なる次の状態と アクションを収めている。 本発明の第1、第2および第4側面によれば、図15は好ましいレイアウトと スキャナ・テーブル1300にストアされる情報の両方を示しているテーブル1 400である。このテーブルに関連する表記は次の通りである。 文字クラス: CC −制御文字 OS −他のスペース NS −非スペース LD −ラテン・ディジット FS −フラクション・スラッシュ JL(f)−ジャモス先頭子音(フィラー) JV(f)−ジャモス母音(フィラー) JT −ジャモス・トレーラ NU −有効なユニコード文字でない ISS −シメトリック・スワッピング禁止 ASS −シメトリック・スワッピング活動化 次の状態: 状態0 −終了。テキスト要素を戻すべきかどうかを、2重および半分音符号 の状態に基づいて判断する。 状態1 −開始状態 状態2 −非スペース(分音符号)の追加 状態3 −数値フラクションの有無チェック 状態7 −朝鮮語ジャモス アクション: Adv −[ADVANCE]次の文字へ進む(現在文字は現在テ キスト要素(TE)に含まれている場合と含まれていな い場合がある) AdvMark −[ADVANCE+MARK]現在文字に最終文字の マークを付け次の文字へ進む AdvMarkS −[ADVANCE+MARK+S]現在文字に最終文字 のマークを付け次の文字へ進み、再配列フラグをセット する AdvMarkASS −[ADVANCE+MARK+ASS]現在文字に 最終文字のマークを付け次の文字へ進み、シメトリッ ク・マッピングを活動化する AdvMarkISS −[ADVANCE+MARK+ISS]現在文字に 最終文字のマークを付け次の文字へ進み、シメトリッ ク・マッピングを禁止する End −テキスト要素を最終のマークを付けた文字で終了する 注意:すべての機能は再配列フラグがセットされているかをチェックして確かめ 、非スペース文字を開始ポインタから始めて再配列する。再配列する必要のある 非スペース・マークのセットは複数存在することがあるので、文字列全体をチェ ックするのが最良の方法である。もちろん、文字を再配列すると、再配列フラグ はクリアされる。 本発明の第3側面によれば、図16Aと図16Bは好ましいレイアウトと情報 の両方を示すテーブル1400であり、情報はソース文字列内のテキスト要素と そのコンテキストの両方の判断を容易にするためにスキャナ・テーブル410に ストアされるものである。このテーブルに関連する表記は次のとおりである。 文字クラス: CC −制御文字 OS −他のスペース NS −非スペース LD −ラテン・ディジット FS −フラクション・スラッシュ DD −二重分音符号 HD −半分音符号 CH −ジャモス先頭子音(フィラー) JO −ジャモス母音(フィラー) JV −ジャモス子音トレーラ NU −有効なユニコード文字でない ISS −シメトリック・マッピング禁止 ASS −シメトリック・マッピング活動化 HH −高ハーフゾーン LH −低ハーフゾーン V −Virama ZWNJ −ゼロ幅の非ジョインダ R −右リンク D −2重リンク C −リンクを引き起こす T −透過 次の状態: 状態0 −終了。テキスト要素を戻すべきかどうかを2重分音符号と半分音 符号に基づいて判断する 状態1 −開始状態 状態2 −非スペース(分音符号)追加 状態3 −ラテン・ディジット 状態4 −ラテン・ディジット・シーケンス 状態5 −ラテン・ディジット・シーケンスとそのあとに続くフラクション ・スラッシュ 状態6 −ラテン・ディジット・シーケンス、フラクション・スラッシュ、 ラテン・ディジット・シーケンス 状態7 −Choseongシーケンス 状態8 −Choseongシーケンスとそのあとに続く Jungseongシーケンス 状態9 −Choseongシーケンス、Jungseongシーケンス、 Jongseong 状態10 −高半文字 状態11 −高半文字とそのあとに続く低半文字 状態12 −Viramaとそのあとに続くゼロ幅ジョインダまたはゼロ幅非 ジョインダ 状態13 −コンテキストの特殊開始 状態14 −右リンク文字(特殊コンテキスト状態) 状態15 −2重リンク文字(特殊コンテキスト状態) 状態16 −リンクを引き起こす文字(通常または特殊状態) 状態17 −右リンク文字(通常状態) 状態18 −2重リンク文字(通常状態) 次の開始状態:[実際は次の状態のサブセット] 開始1 −開始状態 開始13 −コンテキストの特殊開始状態 アクション: Adv −[ADVANCE]次の文字へ進む(現在文字は現在テ キスト要素(TE)に含まれている場合と含まれていな い場合がある) AdvMark −[ADVANCE+MARK]現在文字に最終文字の マークを付け次の文字へ進む AdvMarkS −[ADVANCE+MARK+S]現在文字に最終文字 のマークを付け次の文字へ進み、再配列フラグをセット する AdvMarkASS −[ADVANCE+MARK+ASS]現在文字に 最終文字のマークを付け次の文字へ進み、シメトリッ ク・マッピングを活動化する AdvMarkISS −[ADVANCE+MARK+ISS]現在文字に 最終文字のマークを付け次の文字へ進み、シメトリッ ク・マッピングを禁止する End −テキスト要素を最終のマークを付けた文字で終了する EndOutputXn −[END+単独コンテキスト]テキスト要素を終 了し、単独コンテキストであることを示す EndOutputXl −[END+初期コンテキスト]テキスト要素を終 了し、初期コンテキストであることを示す EndOutputXr −[END+終了コンテキスト]テキスト要素を終 了し、終了コンテキストであることを示す EndOutputXm −[END+中間コンテキスト]テキスト要素を終 了し、中間コンテキストであることを示す 注意:すべての機能は再配列フラグがセットされているかをチェックして確かめ 、非スペース文字を開始ポインタから始めて再配列する。再配列する必要のある 非スペース・マークのセットは複数存在することがあるので、文字列全体をチェ ックするのが最良の方法である。もちろん、文字を再配列すると、再配列フラグ はクリアされる。 以下では、スキャナ・テーブル1400の使用例を3つ示して説明する。最初 の2つの例は本発明の第1、第2、第3および第4側面に関係し、最後の例は第 3側面に関係するものである。 例1:入力文字列“AAB” 文字クラスは3文字ともOSである。最初の文字“A”が取得される。開始 状態(状態1)から始まり、最初のアクションはAdvMark、次の状態は状 態2である。これにより、最初の文字“A”が現在テキスト要素内に挿入され、 次の文字(2番目の文字“A”)が取得される。次に、状態2では、アクション はEnd、次の状態は状態0である。従って、テキスト要素は最初のテキスト要 素だけを含んでいる。同じシーケンスはこの特定入力文字列の2番目と3番目の 文字について繰り返される。このようにして、入力 文字列の文字の各々は分離しているが、隣接しているテキスト要素に割り当てら れる。 例2:入力文字列“A`B” 文字クラスは入力文字列の最初と最後の文字ではOSである。2番目の文字 の文字クラスがNSであるのは、これが結合マークであるためである。最初の文 字“A”が取得される。開始状態(状態1)から始まり、最初のアクションはA dvMark、次の状態は状態2である。これにより、最初の文字“A”が現在 テキスト要素内に挿入され、次の文字(2番目の文字“`”)が取得される。次 に、状態2では、アクションはAdvMarkS、次の状態は状態2である。こ れにより、2番目の文字“`”が現在テキスト要素に挿入される。次に、3番目 の文字が取得される。この時点の状態2のアクションはEnd、次の状態は状態 0である。従って、テキスト要素は入力文字列の1番目と2番目の文字を含んで いる。3番目の文字は例1の場合と同じように、自身のテキスト要素に置かれる 。 例3:入力文字列“OS R D OS OS”[文字間にスペースがなく、各 文字はその文字クラスで表されている。RとD文字クラスはコンテキスト・ベー スの表示形態をもつ文字を含んでいるが、OS文字クラスは含んでいない。] 最初の文字は文字クラスOSである。開始状態(状態1)から始まり、最初 のアクションはAdvMark、次の状態は2、次の開始状態は1である。これ により、最初の文字が現在テキスト要素に挿入され、2番目の文字が取得される 。2番目の文字は文字クラスRである。次に、状態2では、アクションはEnd 、次の状態は0、次の開始状態は1である。従って、最初のテキスト要素は最初 の文字だけを含み、コンテキスト・フラグは無視にセットされる。 次のテキスト要素を判断するときは、処理は2番目の文字から始まり、新し い開始状態は1になっている。この時点で、スキャナ・テーブルから得ら れるアクションはAdvMarkであり、次の状態は17、次の開始状態は13 である。これにより、2番目の文字が現在テキスト要素に挿入され、3番目の文 字が取得される。3番目の文字は文字クラスRである。次に、状態17では、ア クションはEndOutputXn、次の状態は0、次の開始状態は1である。 従って、2番目のテキスト要素は2番目の文字だけを含み、コンテキストはXn (単独)である。 次のテキスト要素を判断するときは、処理は3番目の文字から始まり、新し い開始状態は13になっている。この新しい開始状態は最後の文字についてテー ブルで示された次の開始状態である。ここでは、スキャナ・テーブルから得られ るアクションはAdvMarkであり、次の状態は15、次の開始状態は13で ある。3番目の文字は現在テキスト要素の一部であるので、4番目の文字が取得 される。4番目の文字は文字クラスOSである。次に、状態15では、アクショ ンはEndOutputXr、次の状態は0、次の開始状態は1である。従って 、3番目のテキスト要素は3番目の文字だけを含み、コンテキストはXr(終了 )である。 次のテキスト要素を判断するときは、処理は4番目の文字から始まり、新し い開始状態は13になっている。スキャナ・テーブルから得られるアクションは AdvMarkであり、次の状態は2、次の開始状態は1である。これにより、 4番目の文字が現在テキスト要素に挿入され、5番目の文字が取得される。5番 目の文字は文字クラスOSである。次に、状態2では、アクションはEnd、次 の状態は0、次の開始状態は1である。従って、4番目のテキスト要素は4番目 の文字だけを含み、コンテキスト・フラグは無視にセットされる。 図17Aは本発明の第2側面による方向解明処理1500を示すフローチャー トである。方向解明処理1500は次のテキスト要素処理900(図9A)内の ブロック906で実行される処理である。方向解明処理1500は、スキャナ4 08のために解明された方向の状態が初期状態にあるかどうかを判断する判断1 502から開始される。初期状態では、スキャナ408はテキスト要 素内の文字の方向を知らない。スキャナ408のために解明された方向の状態が 初期状態にあれば、入力文字列の初期方向が判断される(1504)。初期状態 1504の判断1504に関連する処理は図18を参照して以下で詳しく説明す る。他方、スキャナ408のために解明された方向の状態が初期状態にな説とき は、初期方向を判断する必要はない。どちらの場合も、ブロック1502または ブロック1504に続いて、ユニコード文字が入力ストリームから取得される( 1506)。次に、ユニコード文字に関連する属性が調べられる(1508)。 方向属性は方向解明処理1500を行うとき重要な属性である。方向解明処理1 500のブロック1506と1508が実行するオペレーションは次のテキスト 要素処理900のブロック912と914のそれと同じであるので、これ以上詳 しく説明することは省略する。 次に、方向、次の状態およびアクションが判断される(1510)。方向、次 の状態およびアクションは方向属性と現在状態を使用して判断され、テーブル属 性ルップアップ・プロセスを使用して方向テーブルから取得される。方向テーブ ルは方向属性と現在状態によってインデックスされる2次元配列である。インデ ックスが指している方向テーブル内の要素は文字の方向、次の状態、および方向 解明処理1500がとるべきアクションを含んでいる。方向は次のものの1つで ある。すなわち、左、右、グローバル、およびNO_OUTPUTである。取り 得るアクションは、NO_ACTION、PUSH RO、PUSH RE、P USH LE、PUSH LO、POP、およびRESETである。方向は明示 的オーバライド文字により入力文字列の中で変化することがあるので、以前の方 向は方向スタック上にストアされている。従って、「プッシュ」および「ポップ 」の使用はこの分野で周知であるスタック操作コマンドを意味する。“RO”は 右から左へのオーバライドを意味し、“LO”は左から右へのオーバライドを意 味し、“RE”は右から左への埋め込みを意味し、“LE”は左から右への埋め 込みを意味する。好ましくは、方向テーブルと方向解明処理1500はステート ・マシンとして動作する。ステート・マシンは基本的にユニコード標準バージョ ン1.0 611−621ページ(付録A)に記載されている双方向アルゴリズ ムに従って動作するが、1回のパスだけで結果が得られるのに対し、ユニ コード標準に記載されているアルゴリズムは複数のパスを必要とする。 図17B〜図17Dは本発明の第2側面による双方向アルゴリズムの好ましい インプリメンテーションによる双方向状態テーブル1511を示している。双方 向状態テーブル1511はテーブル駆動型ステート・マシンを実現している。各 カラムは単一状態である。状態はそこに記録される情報を示唆する名前が付けら れている。各行は図17B〜図17Dにまたがっており、以下に示す文字クラス 名の1つが付けられている。 LR 左から右へが主流 RL 右から左へが主流 AL アラビア文字(右から左へが主流) LRE 左から右への埋め込みマーク RLE 右から左への埋め込みマーク LRO 左から右へのオーバライド・マーク RLO 右から左へのオーバライド・マーク PDF ポップ方向フォーマット・マーク AN アラビア数字 EN ヨーロッパ数字 ET ヨーロッパ数字ターミネータ ES ヨーロッパ数字セパレータ CS 共通数字セパレータ ON その他の中立文字 BS ブロック・セパレータ 双方向状態テーブル1511の各セルは関連のアクションと出力を持つ遷移を表 している。これらのセルは新しい状態の名前、とられるオプションのアクション 、および出力(もしあれば)を収めている。新しい状態は現在のグローバル方向 に左右される場合がある。これは新しい状態名に(G)を入れることで示される 。グローバル方向が未知のときこれらの遷移の1つを行うとエラーになる。取り 得るアクションは次のとおりである。 プッシュ 新しい埋め込み状態を埋め込みスタック上にプッシュする。プッ シュされる実際の値は現れた実際の埋め込み制御によって決ま る。このインプリメンテーションでは、これを処理するアクショ ン動詞は4つある。 ポップ 現在の埋め込み状態をスタックからポップし、スタックの新しい トップを現在の埋め込み状態にする。新しい埋め込みがオーバラ イドであれば、セルに入っているターゲット状態にではなくOR 状態に遷移が行われる。 リセット 埋め込み状態をクリアし、文字を消費することなくSTARTに 移る。すなわち、エプシロン遷移を行う。リセットには出力はな い。 エラー 即時エラーを引き起こす。 出力はそれぞれ左から右へと右から左へを意味するLまたはRのどちらか、現在 のグローバル方法の出力を意味するG、または出力なしを意味する*である。マ シンには、小文字の‘s’で始まらない名前を持つ状態で入ることができる。S TART状態は新しいテキスト・ブロックを目的としている。sDIR状態はグ ローバル方向を判断するときのエントリ・ポイントとして使用される。この計算 はメイン・スキャンと同時に行うことが可能であるが、別々にすると単純化され る。 図15Aに戻って説明すると、ブロック510に続いて、アクションが“RE SET”であるかどうかの判断1512が行われる。アクションが“RESET ”であれば、処理は方向解明処理1500の先頭に戻る。そうでなければ、方向 解明処理1500が続行される。つまり、判断1512に続いて、アクションが 実行される(1514)。 次に、方向(ブロック1510で判断されたもの)が“NO_OUTPUT” であるかどうかの判断1516が行われる。方向が“NO_OUTPUT”に等 しくなければ、方向がコンテキスト(各インスタンスごとに)にセットされ(1 518)、状態が保存される(1520)。ブロック1520に続いて、方 向解明処理1500は完了し、戻る。 しかるに、出力が“NO_OUTPUT”であると判断1516で判断された ときは、入力文字列全体が処理されたかどうかの判断1522が行われる。入力 文字列全体が処理されていなければ、処理は方向解明処理1500の先頭に戻り 追加のユニコード文字を取得し、処理できるようにするが、これはテキスト要素 の方向がまだ判断されていないためである。他方、入力文字列全体が処理された と判断1522されたときは、処理がテキストの終わりまで達したかどうかが判 断1524される。つまり、ターゲット・コード化に変換すべきテキストが方向 解明処理1500によって完全に処理されたかどうかが判断される。変換すべき 追加テキストがあれば、入力文字列の現在の文字では方向が計算できなかったの でエラーになる(1528)。しかし、追加テキストがなければ、ブロック・セ パレータの方向がブロックの全体方向から判断される(1526)(1504を 参照)。ブロック1526に続いて、ブロック1518と1520が前述したよ うに実行され、そのあと方向解明処理1500は完了し、戻る。 図18は本発明の第2側面による初期方向判断処理1600を示すフローチャ ートである。初期方向判断処理1600は図17Aのブロック1504で実行さ れるオペレーションと関連している。 初期方向判断処理1600は制御フラグに基づくスイッチ・オペレーションか ら開始される。制御フラグは次の1つを示している。すなわち、NO_OUTP UT、L−to−RまたはR−to−Lである。これらの制御フラグはユニコー ド・コード変換システム400を起動するアプリケーションによってセットされ る(つまり、制御フラグはコンバータへの入力である)。制御フラグがR−to −Lを示しているときは、グローバル方向はR−to−Lにセットされる(16 04)。制御フラグがL−to−Rにセットされているときは、グローバル方向 はL−to−Rにセットされる(1606)。制御フラグがNO_OUTPUT にセットされているときは、スモール・ループが開始され、方向が判断できるま で入力文字列のユニコード文字をスキャンしていく。ループは状態を“STAR T STATE”にセット(1608)することから開始される。次に、ユニコ ード文字が入力文字列から取得される(1610)。ユニ コード文字の属性が次に調べられる(1612)。属性は図9Aのブロック91 4で使用され、図12に詳しく説明されているものと同じ方法を用いて調べられ る(1612)。次にユニコード文字の方向が属性(つまり、方向属性)を使用 して判断される(1614)。方向が“NO_OUTPUT”に等しいかどうか がの判断1616が行われる。方向が“NO_OUTPUT”であれば、入力文 字列の終わりまで達したかどうかの判断1618が行われる。入力文字列の終わ りまで達していなければ、処理は戻り、ブロック1610〜1618を繰り返す 。文字列の終わりまで達していると、判断1618は方向を見つけることなく特 殊方向スキャニング・ループを終わらせる(例えば、NO_OUTPUT)。そ うでなければ、スキャニング・ループは判断1616が方向を判断したとき終了 する。 いずれの場合も、スイッチ・オペレーション1602に関連する方向処理に続 いて、スイッチ・オペレーション1620は判断に基づいて起動される。判断さ れた方向が2NO_OUTPUT”であるときは、現在レベルは埋め込みボトム にセットされる(1622)。他方、方向がL−to−Rであれば、現在レベル はゼロにセットされ、前のレベルはボトムにセットされ、オーバライド状況は中 立にセットされる(1624)。方向がR−to−Lであるときは、現在レベル は1にセットされ、前のレベルはボトムにセットされ、オーバライド状況は中立 にセットされる(1626)。レベルとは、ユニコード標準に記載されている埋 め込みレベルのことである。初期方向判断処理1600の特殊方向スキャニング ・ループ(例えば、1610〜1618)は図18に別ループとして示されてい るが、総システム処理効率は特殊方向スキャニング・ループをメイン方向スキャ ニング・ループ内に組み入れると向上することができる。 図19はテキスト要素ルックアップ処理1630を示すフローチャートである 。テキスト要素ルックアップ処理1630はルックアップ・ハンドラ412によ って実行され、ユニコード・コンバータ処理700(図7)内のブロック708 によって起動される。 テキスト要素ルックアップ処理1630は変種リストをサーチし、実際の属性 と要求された変種に一致するエントリを見つけることから開始される。変種の サーチ1632は図24を参照して以下で詳しく説明する。次に、一致するもの が見つかったかどうかの判断1634が行われる。一致するものが見つからなけ れば、エラーになる(1636)。他方、一致するものが見つかれば、対応する ビット・マスクが変種リストから取得される(1638)。好ましくは、変種リ ストは3つのフィールド、つまり、変種識別子、属性のセット、およびビット・ マスクをもっている。変種リスト内の変種識別子と属性セットが実際の属性およ び要求された変種と一致していれば、対応するビット・マスクが変種リストから 選択される。ブロック1638に続いて、ビット・マスクは許容範囲ビット・マ スクと結合され(1640)選択フラグが得られる。選択フラグは上述したよう にマッピング・テーブル414のサブテーブルを選択するとき使用される選択マ スクを形成する。好ましくは、本発明の第2側面では、結合1640はビットワ イズ・オペレーションである。好ましくは、本発明の第1、第3および第4側面 では、結合1640はビットワイズORオペレーションである。次に、現在テキ スト要素の長さのためのテーブルがマッピング・テーブル414内にあるかどう かの判断1642が行われる。なければ、エラーになる(1644)。他方、現 在テキスト要素の長さのためにテーブルがあれば、ルックアップ・テーブルとそ のフォーマットが現在テキスト要素の長さのために取得される(1646)。次 に、スイッチ・オペレーション1648がフォーマットに基づいて実行される。 このインプリメンテーションで利用できるフォーマットはリスト、セグメント配 列、範囲およびチェーンである。フォーマットがリスト・フォーマットであれば 、リスト・フォーマット処理1650が実行される。フォーマットがセグメント 配列であれば、セグメント配列フォーマット処理1652が実行される。フォー マットが範囲であれば、範囲フォーマット処理1654が実行される。フォーマ ットがチェーンであれば、チェーン・フォーマット処理1656が実行される。 ブロック1650−1656に続いて、結果が戻され(1658)、これにより テキスト要素ルックアップ処理1630は完了する。 本発明の第1側面によれば、図20はチェーン・フォーマット処理1660を 示すフローチャートである。チェーン・フォーマット処理1660は図19に示 すチェーン・フォーマット処理1635によって実行される処理である。 チェーン・フォーマット処理1660はチェーン内のテーブル数のチェーン・ カウントを取得する(1662)。そのあと、現在のカウントはゼロにセットさ れる(1664)。次に、現在のカウントがチェーン・カウントより大であるか 等しいかどうかの判断1666が行われる。現在のカウントがチェーン・カウン トより大または等しければ、チェーン・フォーマット処理1660は戻り(16 68)、結果が見つからなかったのでエラーを通知する。他方、現在のカウント がチェーン・カウントより大でも等しくもなければ、現在のルックアップ・テー ブルとそのフォーマットが取得される(1670)。このインプリメンテーショ ンで使用されるフォーマットは図19で使用されたものと同じである。そのあと スイッチ・オペレーション1672がフォーマットに基づいて実行される。フォ ーマットがリストであれば、リスト・フォーマット処理1674が実行される。 フォーマットがセグメント配列であれば、セグメント配列フォーマット処理16 76が実行される。フォーマットが範囲であれば、範囲フォーマット処理168 0が実行される。フォーマットがチェーンであれば、チェーン・フォーマット処 理1682が実行される。ブロック1614〜1622に続いて、現在のカウン トがインクリメントされる(1684)。次に、結果が見つかったかどうかの判 断1686が行われる。結果が見つからなければ、チェーン・フォーマット処理 1660はループして判断ブロック1666に戻り、テーブル・チェーン内の次 のルックアップ・テーブルを調べていく。しかるに、結果が見つかったと判断1 686されたときは、結果が戻され(1688)、これによりチェーン・フォー マット処理1660は完了する。 本発明の第1側面によれば、図21は範囲フォーマット処理1700を示すフ ローチャートである。範囲フォーマット処理1700は図19のブロック165 4と巣20のブロック1678によって実行される処理である。範囲フォーマッ トはデルタ値が各フィールドと関連づけられている文字の範囲リストである。 範囲フォーマット処理1700はそのサブテーブルのサブセット・フラグが選 択フラグに一致しているかどうかを判断(1702)することから始まる。選択 フラグは選択マスクに対するもので、サブセット・フラグはサブテーブル・マ スクに対するものである。一致していなければ、範囲フォーマット処理は戻り( 1704)、結果が見つからなかったことをエラー・コードで通知する。他方、 そのサブテーブルのサブセット・フラグが選択フラグに一致していることを判断 1702が示していれば、テキスト要素の長さが1より大であるかどうかの判断 1706が行われる。テキスト要素の長さが1より大であれば、このフォーマッ トは誤って選択されたことになる。この特定インプリメンテーションでのマッピ ング・テーブルの構成は範囲フォーマットが長さ1のテキスト要素だけを目的と するようになっているためである。従って、テキスト要素が1より大であれば、 ブロック1704が実行されて戻り、結果が見つからなかったことを通知する。 他方、テキスト要素の長さが1より大でなければ、範囲フォーマット処理170 0は続行される。範囲フォーマットをもつサブテーブルは範囲配列をもち、各範 囲はそれぞれに関連づけられたデルタ値をもっている。次に、範囲配列がサーチ され(1708)、変換されるユニコード文字の該当する範囲が見つけられる。 範囲が見つかったかどうかの判断1710が行われる。範囲が見つからなければ 、範囲フォーマット処理1700は戻り(1704)、結果が見つからなかった ことをエラー・コードで通知する。しかるに、結果が見つかったときは、その範 囲の対応するデルタ値が取得される(1712)。次に、このデルタ値はユニコ ード値に加えられる(1714)。そのあと、その結果は出力シーケンスにマッ ピングされる(1716)。結果を出力シーケンスにマッピングする処理は図2 2A〜図22Cを参照して以下で詳しく説明する。ブロック1716に続いて、 範囲フォーマット処理は完了し、戻る。 本発明の第1側面によれば、図22はリスト・フォーマット処理1800を示 すフローチャートである。リスト・フォーマット処理1800は図19のブロッ ク1650と図20のブロック1674によって実行される処理である。リスト ・フォーマットはテキスト要素が配列されたリストであり、この配列リストまで のインデックスiは対応するルックアップ・ターゲット・リストまでのインデッ クスである。 リスト・フォーマット処理1800はそのサブテーブルのサブセット・フラグ が選択フラグに一致しているかどうかの判断1802から始まる。一致していな ければ、リスト・フォーマット処理1800は戻り(1804)、マッピングが 見つからなかったことをエラー・コードで通知する。他方、そのサブテーブルの サブセットフラグが選択フラグに一致していれば、リスト内のテキスト要素に基 づいて最適化バイナリ・サーチが行われる(1806)。次に、サーチがリスト 内のテキスト要素を見つけたかどうかの判断1808が行われる。見つからなけ れば、再びリスト処理は戻り(1804)、マッピングが見つからなかったこと を通知する。しかし、テキスト要素が見つかれば、テキスト要素が見つかった個 所のインデックスiが取得される(1810)。このインデックスiはルックア ップ・ターゲットを取得する(1812)ために使用される。次に、ルックアッ プ・ターゲットは出力シーケンスにマッピングされる(1814)。これでリス ト・フォーマット処理は完了し、戻る。 本発明の第1側面によれば、図23Aと図23Bはセグメント配列フォーマッ ト処理1900を示している。セグメント配列フォーマット処理1900は図1 9のブロック1652と図20のブロック1676によって実行される処理であ る。セグメント配列フォーマットは第1テキスト要素配列、最終テキスト要素配 列、およびn個のオフセット配列を含んでいる。オフセット配列内のオフセット は種々のルックアップ・ターゲット・リストを指している。 セグメント配列フォーマット処理1900はそのサブテーブルのサブセット・ フラグが選択フラグに一致しているかどうかの判断1901から始まる。サブセ ット・フラグが選択フラグに一致していれば、最適化サーチが行われる(190 2)。最適化サーチは最終テキスト要素配列内にあって、探索していたテキスト 要素よりも大であるか等しい最小エントリを見つけ、そのエントリのインデック スiを取得する。次に、第1テキスト要素配列内のi番目のエントリが探索して いたテキスト要素より小であるか等しいかどうかの判断1904が行われる。そ うでなければ、セグメント配列フォーマット処理1900は戻り(1906)、 マッピングが見つからなかったことをエラー・コードで知らせる。また、判断1 901が失敗した場合には、ブロック1906も実行される。他方、最初のテキ スト要素配列内のi番目のエントリが探索していたテキスト要素より小であるか 等しいことを判断1904が示しているときは、i番目のエン トリは探索していたテキスト要素に対応することが分かる。そのあと、ルックア ップ・ターゲット・リストがオフセット配列内のi番目のエントリを通して取得 される(1908)。すなわち、オフセット配列内のi番目のエントリに入って いるオフセットはルックアップ・ターゲット・リストを示している。ルックアッ プ・ターゲット・リストまでのインデックスjが次に判断される。インデックス jは探索していたテキスト要素の値から、取得(1908)したルックアップ・ ターゲット・リスト(または範囲)内の第1テキスト要素を引いた値が与えられ る。インデックスjをもつルックアップ・ターゲットが次にルックアップ・ター ゲット・リストから取得される(1912)。次に、ルックアップ・ターゲット がゼロに等しいかどうかの判断1914が行われる。ルックアップ・ターゲット がゼロに等しければ、セグメント配列フォーマット処理は戻り、マッピングが見 つからなかったことをエラー・コードで通知する。他方、ルックアップ・ターゲ ットがゼロに等しくなければ、ルックアップ・ターゲットは出力シーケンスにマ ッピングされる(1918)。ブロック1918に続いて、セグメント配列フォ ーマット処理1900は完了し、戻る。 図24はサーチ変種リスト処理2000を示すフローチャートである。サーチ 変種リスト処理2000は図19のブロック1632によって実行される処理で ある。言い換えれば、サーチ変種リスト処理2000はマッピング・テーブル4 14を使用してルックアップ・ハンドラ412によって実行されるルックアップ ・テキスト要素処理1630の一部である。 サーチ変種リスト処理2000は変種リスト内の要素の総カウントを取得する (2002)。そのあと、現在のカウントがゼロに初期化される(2004)。 現在のカウントが総カウントより大であるか等しいかどうかの判断2006が行 われる。現在のカウントが総カウントより大または等しければ、サーチ変種リス ト処理2000は戻り(2008)、変種が見つからなかったことをエラー・コ ードで通知する。他方、現在のカウントが総カウントより大または等しくなけれ ば、変種リスト内にあって、現在のカウントに関連するエントリが実際の属性お よび要求された変種に一致しているかどうかの判断2010が行われる。一致し ていれば、変種リスト内のエントリからの変種フラグが戻される(2012)。 一致していなければ、現在のカウントはインクリメントされ(2014)、その あと処理はブロック2006に戻り、変種の1つが一致するか、あるいは変種の すべてが考慮されるまでループを続けて変種リスト内の使用可能な変種を見つけ る。 図25Aおよび図25Bは変種リスト2100を示す概略図である。図25A に示すように、変種リスト2100は変種領域2102、所望属性領域2104 および変種フラグ領域2106を含んでいる。図25Bは好ましいインプリメン テーションによる実際属性ビット・マスクを示す図である。実際属性ビット・マ スク2108は32ビット変数であり、シメトリック・スワッピング状態を示す 第1部分2110(ビット0と1)、垂直または水平形式を示す第2部分(ビッ ト2と3)、解明方向を示す第3部分(ビット8と9)、およびコンテキストを 示す第4部分(ビット16〜19)をもっている。本発明の第3側面によれば、 第4部分2116のビットはコンテキスト処理984(図10C)で判断された コンテキスト・マスクによってセットされる。さらに、本発明の第1ないし第4 側面によれば、部分内の各ビットはフラグを表している。ビットはフラグが未知 であるか、あるいはセットされていなければ、値が“0”であり、セットされて いるときは値は“1”になっている。呼び出し側は第2部分2110をセットし 、スキャナ408は第1、第2および第4部分2110、2114および211 6をセットする。 所望属性ビット・マスクは実際属性ビット・マスクと同じフォーマットである が、ビットは属性のどれが特定テーブルおよび変種の正しいマッピングを得るた めに重要であるかに応じてセットされる(これはマッピング・テーブル414の 設計によって決まる)。所望属性ビット・マスク内のビットはマッピング判断の 際に考慮される各属性には“1”がセットされ、ある部分のすべてのビットが“ 1”にセットされていれば、属性はマッピング期間には無視される。例えば、ビ ット0が“1”で、ビット1が“0”ならば、シメトリック・スワッピングはオ ンであり、マッピングが行われるとき考慮される。他方、ビット0と1が共に“ 1”であれば、シメトリック・スワッピングは完全に無視される。所望属性ビッ ト・マスクの残りの未使用ビットは“1”にセットされ、必要ならばあとで値を 割り当てることができる。以下、所望属性ビット・マスクの例をいくつか示して 説明する。 方向が左から右へであり、他の属性はいずれも重要でないとする。そうすると 所望属性ビット・マスクはxFFFFFDFFとなる。これに対して、方向が右 から左へであり、シメトリック・スワッピングがオンであるとすると、所望属性 ビット・マスクはxFFFFFEFDとなる。方向が右から左へで、シメトリッ ク・スワッピングがオフであれば、所望属性ビット・マスクはxFFFFFEF Eとなる。上記の異種所望属性ビット・マスクの各々によると、異なる変換コー ドを選択することができる。例えば、ユニコード文字u0028をMacAra bicにマッピンすると、所望属性ビット・マスクxFFFFFDFFではx2 8が、所望属性ビット・マスクxFFFFFEFDではxA8が、所望属性ビッ ト・マスクxFFFFFEFEではxA9が得られる。 本発明の第1側面によれば、図26A、図26Bおよび図26Cはルックアッ プ・ターゲットの出力シーケンスへのマッピング処理2200を示すフローチャ ートである。ルックアップ・ターゲットの出力シーケンスへのマッピング処理2 200は図22のブロック1814および図23Aのブロック1918に関連し ている。 ルックアップ・ターゲットの出力シーケンスへのマッピング処理2200は間 接が許されるかどうかの判断2202から始まる。間接が許されなければ、ルッ クアップ・ターゲットはcharsizeの断片で出力シーケンスにコピーされ る(2204)。charsizeとは、ターゲット・コード化内の文字の最小 サイズのことであり、マッピング・テーブル414のヘッダ500に指定されて いる。ブロック2204に続いて、処理200は完了し、結果が見つかったとの 通知を出して戻る(2206)。他方、間接が許されると判断2202が判断し たときは、ルップアップ・ターゲットの上位ビットが1に等しいかどうかの判断 2208が行われる。上位ビットが1に等しくなければ、第1バイトがヌル出力 シーケンス(つまり、長さが0の出力シーケンス)を示しているかどうかの判断 2210が行われる。第1バイトがx7Fを示していれば、ヌル出力シーケンス が示される(2212)(一致するものが見つかったが、文字は出力シーケンス に追加されない)。他方、第1バイトがヌル出力シーケンスを示していないとき は、charsizeの断片が出力シーケンスにコピーされる(2214)。そ の場合には、第1バイトは出力シーケンスの長さを示していることが好ましい。 ブロック2212と2214に続いて、ブロック2206が実行され、これによ り処理は完了し、結果が見つかったことを通知して戻る。 しかるに、ルックアップ・ターゲットの上位ビットが1に等しいと判断220 8が判断した場合には、ルックアップ・ターゲットは所望の出力シーケンスを間 接的に参照しているので追加の処理が必要になる。具体的には、間接シーケンス までのオフセットがルックアップ・ターゲットの残余部分を使用して指定される (2216)。ルックアップ・ターゲットの残余部分の上位ビットが1に等しい かどうかの判断2218が行われる。等しくなければ、charsizeの断片 が出力シーケンスにコピーされ(2220)、そのあと処理2200はマッピン グが見つかったとの通知を戻して(2200)完了する。他方、ルックアップ・ ターゲットの残余部分の上位ビットが1に等しいと判断されていれば(2218 )、順次チェーン内のシーケンスのカウントが取得され(2224)、リニア・ サーチがシーケンスを通るように行われ、マッピングが特定される。ブロック2 226に続いて、前述したブロック2220と2222が実行される。 図26Cは図26Bのブロック2226によって実行されるオペレーションの 詳細図である。すでに説明したように、図26Cのブロック2226はシーケン スを通るリニア・サーチを実行する。最初に、現在のカウントがゼロにセットさ れる(2228)。現在のカウントがシーケンス・カウントより大であるか均か どうかの判断2228が行われる。現在のカウントがシーケンス・カウントより 大または等しければ、ルックアップ・ターゲットの出力シーケンスへのマッピン グ処理2200はマッピングが見つからなかったとの通知と共に戻る(2232 )。他方、現在のカウントがシーケンス・カウントより大または等しくなければ 、次の出力シーケンスとそのシーケンス・マスクが取得される(2234)。シ ーケンス・マスクは複数の出力シーケンスの1つを選択するために使用されるマ スクである。次に、サブセット・フラグが使用中であるかどうかの判断2236 が行われる。サブセット・フラグが使用中でなければ、シーケンス・マスクと論 理ANDがとられた実際属性が実際属性にビットワイズに等しいかどうかの判断 2238が行われる。そうであれば、マッピングが見つかったので処理は上述し たブロック2220と2222を実行する。他方、サブセット・フラグが使用中 であると判断(2236)されたときは、シーケンス・マスクと論理ANDがと られた選択フラグがビットワイズにシーケンス・マスクと等しいかどうかの判断 2240が行われる。そうであれば、マッピングが見つかったので前述したブロ ック2220と2222が実行される。従って、ブロック2238と2240は 異なった方法で正しい出力シーケンスを取得する。他方、どちらかの判断ブロッ ク2238または2240が現在のシーケンスが正しいマッピングでないと示し ていれば、現在のカウントはインクリメントされ(2242)、処理はブロック 2230に戻ってチェーン内の次のシーケンスのオペレーションを続ける。 図27は本発明によるフォールバック・ハンドリング処理2300を示すフロ ーチャートである。フォールバック・ハンドリング処理2300はフォールバッ ク・ハンドラ416によって実行され、図7に示すユニコード・コンバータ処理 700のブロック716によって起動される処理である。 フォールバック・ハンドリング処理2300はフォールバック・オプションを 使用してテキスト要素を調べる(2302)。ルックアップ2302は図19を 参照して上述したテキスト要素ルックアップ処理1630に類似している。唯一 の重要な違いは、変化した選択フラグを通して追加サブセットが考慮されるよう にフォールバック・オプションがセットされていることである。次に、テキスト 要素の変換コードが見つかったかどうかの判断2304が行われる。変換コード が見つかっていれば、変換またはマッピングを取得するときにどのフォールバッ クが使用されたかを示すようにエラー・コードがセットされる(2306)。ブ ロック2306に続いて、フォールバック・ハンドリング処理2300は完了し 、戻る。 他方、判断2304が変換コードが見つからなかったと示しているときは、フ ォールバック・オプションに基づいてスイッチ・オペレーション2308が実行 される。フォールバック・オプションには、次のものがある。すなわち、デフォ ルト、呼び出し側定義、呼び出し側定義を伴うデフォルト、またはデフォルトを 伴う呼び出し側定義である。フォールバック・オプションがデフォルトであれば 、スイッチ・オペレーション2308はデフォルト処理2310を実行させる。 フォールバック・オプションが呼び出し側定義であれば、スイッチ・オペレーシ ョン2308は呼び出し側定義のオペレーションを2312を実行させる。フォ ールバック・オプションが呼び出し側定義を伴うデフォルトであれば、スイッチ ・オペレーション2308はデフォルト処理を実行させ(2314)、続いて判 断2316と呼び出し側定義の処理を実行させる(2318)。判断2316は デフォルト処理が正常に行われると、呼び出し側定義処理2318をバイパスす るように働く。フォールバック・オプションがデフォルト処理を伴う呼び出し側 定義であれば、スイッチ・オペレーション2308は呼び出し側定義処理を実行 させ(2320)、続いて判断2322とデフォルト処理をを実行させる(23 24)。判断2322は、呼び出し側定義処理2320が正常に行われたときは 、デフォルト処理2324をバイパスするように働く。スイッチ・オペレーショ ン2308に関連する処理に続いて、フォールバック処理2300がマッピング または変換コードを正常に特定していたかどうかの判断2326が行われる。フ ォールバック処理2300が失敗していれば、文字セットのデフォルト・フォー ルバック文字シーケンスが取得される(2328)。デフォルト・ フォールバック文字シーケンスとは、フォールバック・ルックアップ2302が 変換コードを特定するのに失敗したとき使用される変換コードである。好ましく は、デフォルト・フォールバック文字シーケンスはマッピング・テーブル414 のヘッダに収められている。例えば、ASCIIでは、デフォルト・フォールバ ック文字シーケンスは“?”であるのが普通である。そのあと、ブロック232 8に続いて、またはフォールバック処理がマッピングまたは変換コードを取得す るのに成功したときはブロック2326に続いて、フォールバック・オプション が使用されたことを示すエラー・コードがセットされ(2306)、フォールバ ック・ハンドリング処理2300は完了し、戻る。 図28はデフォルト処理2400を示すフローチャートである。デフォルト処 理は図27のブロック2310、2314および2324で実行される処理と関 連している。 デフォルト処理2400は最初に現在のカウントをゼロにセットする(240 2)。次に、現在のカウントがテキスト要素の長さより大であるか等しいかの判 断2404が行われる。そうであれば、デフォルト処理2400は完了し、戻る 。そうでなければ、フォールバック・フラグがセットされた単一ユニコード文字 に対してルックアップ処理が実行される(2406)。ここでは、ルックアップ はテキスト要素の個別文字に対するものであるが、以前(ブロック3202)で は、ルックアップはテキスト要素全体に対するものであった。そのあと、単一ユ ニコード文字の変換コードが見つかったかどうかの判断2408が行われる。見 つからなければ、ユニコード文字で使用でいる個別マッピングがなかったことを エラー・コードで通知してデフォルト処理2400は戻る(2410)。他方、 変換コードが見つかっていれば、現在のカウントがインクリメントされ(241 2)、処理はテキスト要素内の次のユニコード文字の処理を行うためにブロック 2404に戻る。 上述した図4〜図28はユニコードからターゲット・コード化への変換(ユニ コードから)に関するものであるが、上述したように、ユニコード・コード変換 システム300は異なるソース・コード化からユニコードに変換する(ユニコー ドへ)機能も等しく備えている。ユニコードへはユニコードからの処理と類似し ているが、実質的には複雑度が軽減されている。ユニコードへの処理はターゲッ ト・コード化を判断するときテキスト要素を探すためにスキャンしたり、複数の 文字シーケンスを調べたりする必要がないのが通常である。ユニコードへの処理 はソース文字列を個々の文字に分割し、そのあとでユニコードの対応するコード ・ポイントを見つけるだけである。しかし、文字のマッピングがそのあとに続く 文字に影響されるようなまれな場合には(例えば、デーヴァナーガリーのような インド・スクリプト)、上述したようにスキャンが行われる場合がある。 図29は本発明によるユニコード・コード変換システム2500の実施例を示 すブロック図である。ユニコード・コード変換システム2500はユニコードへ の変換を行う(つまり、ユニコードへの処理)。ユニコード・コード変換システ ム2500はユニコードへのコンバータ2502を含み、このコンバータはソー ス文字列2504を受信し、ユニコード文字列2506を出力する。ユニコード へのコンバータ2502はスキャナ2508とやりとりするユニコードへのコン バータを通してコード変換プロセスを実行する。スキャナ2508はスキャナ・ テーブル2510を使用して、ソース文字列2504をスキャンしソース文字列 2504を文字に分断する。ここでは、ユニコードからの場合と異なり、ソース 文字列は個々の文字に分割されるだけである。次に、ユニコードへのコンバータ 2502はルックアップ・ハンドラ2512を使用して個別文字を調べそのユニ コード・コード化を取得する。ルックアップ・ハンドラ2512はマッピング・ テーブル2514を使用してユニコードの文字を取得する。さらに、ユニコード へのコンバータ2502はフォールバック・ハンドラ2516を使用することも できる。フォールバック・ハンドラ2516はマッピング・テーブル2514と 一緒に動作して、ルックアップ・ハンドラ2512がユニコード文字を特定でき なかった場合に、テキスト要素のフォールバック・マッピングとして使用できる ターゲット・コード化内の1つまたは複数の文字を特定する。 スキャナ2508、スキャナ・テーブル2510、ルックアップ・テーブル2 512、マッピング・テーブル2514、フォールバック・ハンドラ2516、 状態管理機構2518は図4の対応するデバイスと類似しているが、実質的には 複雑度が軽減されている。従って、これらのデバイスはユニコードへ とユニコードからの両方の処理を実現するように設計することができる。さらに 、与えられたコンピュータ・システムや他のエレクトロニック・デバイスがユニ コードへとユニコードからの両方の処理を実行する機能を備えているときは、そ のコンピュータ・システムや他のエレクトロニック・デバイスはハブとして動作 することができる。このハブはユニコードがサポートする種々の各国語文字間で 変換を行うように動作することができる。例えば、ソースの各国語文字セットは まずユニコードに変換され、次にターゲットの各国語文字セットに変換される。 本発明の第1側面によれば、上述したテーブルは、好ましくは、上述したフォ ーマットを使用してテーブルにストアすべきデータの圧縮を行う。さらに、本発 明の第1側面によれば、圧縮を重視している。例えは、圧縮すると、属性テーブ ルは50倍(50対1)に小さくなる。しかし、本発明の第1側面によれば、こ の分野の精通者ならば理解されるように、テーブルのフォーマットは多数の形体 をとることができるので、あるテーブルは他のテーブルよりも実現が容易になる 。最も容易な実現はどの圧縮も使用しないテーブルであるが、そのためには最大 のデータ記憶装置が必要になる。さらに、本発明の第1側面によれば、テーブル は上述したインプリメンテーションで使用されているが、これらのテーブルで引 き起こされる振舞を直接にコーディングすることも可能である。しかし、直接コ ーディングはコード変換システムのオペレーションの変更を困難にするのに対し 、テーブルを使用すると、そのような変更を取り入れるためにテーブルだけを変 更するだけで済むのが普通である。 本発明の多数の特徴および利点は上述してきた説明で明らかにした通りであり 、本発明のかかる特徴と利点はすべて請求の範囲に記載されている。さらに、本 発明はこの分野の精通者が容易に理解されるように、種々態様に変更することが 可能であるので、本発明は上述してきた正確な構造とオペレーションに限定され るものではない。従って、すべての適当な変更および等価技術は本発明の範囲に 属するものである。
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 08/527,831 (32)優先日 1995年9月13日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/527,837 (32)優先日 1995年9月13日 (33)優先権主張国 米国(US) (81)指定国 EP(AT,BE,CH,DE, DK,ES,FI,FR,GB,GR,IE,IT,L U,MC,NL,PT,SE),OA(BF,BJ,CF ,CG,CI,CM,GA,GN,ML,MR,NE, SN,TD,TG),AP(KE,LS,MW,SD,S Z,UG),UA(AM,AZ,BY,KG,KZ,MD ,RU,TJ,TM),AL,AM,AT,AU,AZ ,BA,BB,BG,BR,BY,CA,CH,CN, CU,CZ,DE,DK,EE,ES,FI,GB,G E,HU,IL,IS,JP,KE,KG,KP,KR ,KZ,LC,LK,LR,LS,LT,LU,LV, MD,MG,MK,MN,MW,MX,NO,NZ,P L,PT,RO,RU,SD,SE,SG,SI,SK ,TJ,TM,TR,TT,UA,UG,US,UZ, VN (72)発明者 マコンネル,ジョン,アイ. アメリカ合衆国 94025 カリフォルニア 州 メンロパーク マッケンドリー ドラ イブ 222 (72)発明者 タン,ユン−フォン,フランク アメリカ合衆国 94082 カリフォルニア 州 サニーヴェイル イースト ホームス テッド ロード 175 アパートメント ナンバー8 (72)発明者 ダニエルズ,アンドリュー,エム. アメリカ合衆国 94025 カリフォルニア 州 メンロパーク ハイト ストリート 123 【要約の続き】 からユニコード文字に変換したり、ユニコード文字から 他の文字セットに変換したりするとき利用すると、特に 便利である。変換される文字の方向(向き)を判断する ことにより、および/または文字のコンテキストを判断 することにより、コード変換システムは判断または解決 された文字の方向を利用してターゲット文字コード化へ の正しいマッピングが得られることを保証する。切り捨 て処理手法は入力バッファに置かれているソース文字列 の一部を切り捨てて、切り捨てられた部分が、ソース文 字列の中の後続文字に影響されることなくターゲット文 字コード化に変換されることを可能にするように作用す る。

Claims (1)

  1. 【特許請求の範囲】 1.ソース文字列をターゲット文字列に変換する方法において、 (a)第1の文字コード化を有する前記ソース文字列を受け取り、 (b)前記ソース文字列をテキスト要素に順次分割し、各前記テキスト要素は 、前記ソース文字列の文字を1または複数含み、 (c)各前記テキスト要素の第2の文字コード化に関する変換コードをマッピ ング・テーブルでルックアップし、 (d)前記第2の文字コード化の前記ターゲット文字列を形成するように前記 テキスト要素の前記変換コードを結合する ことを特徴とする方法。 2.請求項1に記載の方法において、前記変換コードは、前記第2の文字コード 化における1または複数の文字からなることを特徴とする方法。 3.請求項1に記載の方法において、前記テキスト要素は、お互いに隣接し、2 個以上の文字を含む各前記テキスト要素について、前記文字は前記ソース文字列 において隣接することを特徴とする方法。 4.請求項1に記載の方法において、前記マッピング・テーブルは、レギュラ・ マッピングとフォールバック・マッピングを含み、 前記ルックアップ(c)は、前記マッピング・テーブルが、前記テキスト要素 についての前記レギュラ・マッピングを使用した変換コードを含まない場合は、 前記フォールバック・マッピングを使用して各前記テキスト要素の前記変換コー ドを決定することを特徴とする方法。 5.請求項1に記載の方法において、各前記文字は自分に関する文字クラスを有 し、 前記分割(b)は、少なくとも部分的には、前記ソース文字列中の前記文字の 前記文字クラスに基づくことを特徴とする方法。 6.請求項1に記載の方法において、前記分割(b)は、 (b1)前記ソース文字列から次のソース文字を獲得し、 (b2)獲得した前記ソース文字を現在のテキスト要素内に含めるべきか、あ るいはまた、新たな次のテキスト要素を始めるかを決定し、 (b3)前記決定(b2)に従い、獲得した前記ソース文字を前記現在のテキ スト要素内または前記新たな次のテキスト要素内に配置し、 (b4)前記ソース文字列をテキスト要素内に完全に配置するまで、(b1) から(b3)までを繰り返す ことを特徴とする方法。 7.請求項6に記載の方法において、前記決定(b2)は、 (i)前記ソース文字に関する属性をルックアップし、前記属性は少なくとも クラス・インディケータを含み、 (ii)クラス・インディケータに基づき、獲得した前記ソース文字を前記現在 のテキスト要素内に含めるべきか、あるいはまた、新たな次のテキスト要素を始 めるかを決定する ことを特徴とする方法。 8.請求項6に記載の方法において、前記決定(b2)は、 (i)前記ソース文字に関する属性をルックアップし、前記属性は少なくとも クラス・インディケータを含み、 (ii)複数の状態を有するステート・マシンを提供し、前記ステート・マシン は、前記クラス・インディケータおよび前記ステート・マシンの現在の状態に基 づき、獲得した前記ソース文字を前記現在のテキスト要素内に含めるべきか、あ るいはまた、新たな次のテキスト要素を始めるかを決定するのに使用され、 (iii)前記ステート・マシンの前記現在の状態を更新する ことを特徴とする方法。 9.請求項1に記載の方法において、前記第1の文字コード化および前記第2の 文字コード化の一つは、ユニコード標準に従うことを特徴とする方法。 10.請求項1に記載の方法において、前記結合(d)は、 (d1)前記第2の文字コード化に対するターゲット文字サイズを決定し、 (d2)ルップアップされた前記テキスト要素の前記変換コードを、前記ター ゲット文字サイズの単位で前記ターゲット文字列にコピーすることにより前記タ ーゲット文字列を形成する ことを特徴とする方法。 11.請求項10に記載の方法において、ルックアップ(c)された前記変換コ ードは、間接コード化シーケンスまでのオフセットを特定することを特徴とする 方法。 12.請求項1に記載の方法において、さらに、 (e)前記分割(b)後、前記ルップアップ(c)前に、特定の文字がテキス ト要素内に存在する場合は、各前記テキスト要素の前記特定の文字を再配列する ことを特徴とする方法。 13.請求項12に記載の方法において、前記再配列は、異なる文字クラスに対 する加重値を利用して適切に実行されることを特徴とする方法。 14.ソース文字列をターゲット文字列に変換するコード変換システムにおいて 、 第1の文字コード化を有する前記ソース文字列から第2の文字コード化を有す る前記ターゲット文字列への変換を制御するコンバータと、 前記コンバータに動作するよう結合され、前記ソース文字列をテキスト要素に 分割するスキャナであって、各前記テキスト要素は前記ソース文字列の文字を1 または複数含み、 前記ソース・コード化のテキスト要素に対するターゲット・コード化を記憶す るマッピング・テーブルと、 前記コンバータおよび前記マッピング・テーブルに動作するよう結合され、各 テキスト要素の第2の文字コード化に関する変換コードをマッピング・テーブル でルックアップするルックアップ・ハンドラと を備えることを特徴とするシステム。 15.請求項14に記載のコード変換システムにおいて、さらに、 前記コンバータに動作するよう結合され、前記ルックアップ・ハンドラが1ま たは複数のテキスト要素に対し変換コードを提供できない場合は、フォールバッ ク変換コードを提供するフォールバック・ハンドラを備え、前記フォールバック 変換コードは、前記テキスト要素内の前記文字と完全に等しいわけではないが類 似するグラフィカル外観を有する、前記ターゲット・コード化における1または 複数のコード・ポイントを含む ことを特徴とするシステム。 16.請求項15に記載のコード変換システムにおいて、さらに、 前記入力文字列中の個々の文字を現在のテキスト要素内に含めるべきか、ある いはまた、新たな次のテキスト要素を始めるかの決定について前記スキャナを支 援するスキャナ・テーブル手段 を備えることを特徴とするシステム。 17.請求項14に記載のコード変換システムにおいて、さらに、 前記スキャナに動作するよう結合され、前記入力文字列中の個々の文字を現在 のテキスト要素内に含めるべきか、あるいはまた、新たな次のテキスト要素を始 めるかの決定について前記スキャナを支援するスキャナ・テーブル を備えることを特徴とするシステム。 18.請求項17に記載のコード変換システムにおいて、前記ソース文字列の前 記文字は自分に関する文字クラスを有し、 前記スキャナ・テーブルは要素の配列を備え、前記配列は文字クラスによりイ ンデックス付けされていることを特徴とするシステム。 19.請求項14に記載のコード変換システムにおいて、前記ソース文字列中の 前記文字は、ユニコード文字であることを特徴とするシステム。 20.請求項14に記載のコード変換システムにおいて、前記ターゲット文字列 中の前記文字は、ユニコード文字であることを特徴とするシステム。 21.ソース文字列をターゲット文字列に変換するコード変換システムにおいて 、 第1の文字コード化を有する前記入力文字列から第2の文字コード化を有する 前記ターゲット文字列への変換を制御するコンバータ手段と、 前記ソース文字列をテキスト要素に分割するステート・マシンであって、各テ キスト要素は前記ソース文字列の文字を1または複数含むステート・マシン手段 と、 前記ソース・コード化のテキスト要素に対するターゲット・コード化を記憶す るマッピング手段と、 各前記テキスト要素の第2の文字コード化に関する変換コードを前記マッピン グ手段でルックアップするルックアップ・ハンドラ手段と を備えることを特徴とするシステム。 22.請求項21に記載のコード変換システムにおいて、さらに、 前記入力文字列中の個々の文字を現在のテキスト要素内に含めるべきか、ある いはまた、新たな次のテキスト要素を始めるかの決定について前記スキャナを支 援するスキャナ・テーブル手段 を備えることを特徴とするシステム。 23.請求項22に記載のコード変換システムにおいて、さらに、 前記ルックアップ・ハンドラ手段が1または複数のテキスト要素に対し変換コ ードを提供できない場合は、フォールバック変換コードを提供するフォールドバ ック・ハンドラ手段を備え、前記フォールバック変換コードは、前記テキスト要 素内の文字と完全に等しいわけではないが、類似するグラフィカル外観を有する 、前記ターゲット・コード化における1または複数のコード・ポイントを含む ことを特徴とするシステム。 24.入力文字列をスキャンするスキャニング・システムにおいて、 前記入力文字列から入力文字を獲得する入力装置であって、前記入力文字列は 文字コード化を有し、前記入力文字列の各文字は文字クラスを有する入力装置と 、 前記入力文字の属性を提供する属性テーブルと、 前記入力文字の前記属性および前記ステート・マシンの現在の状態に従って、 前記ステート・マシンの次の状態および次のアクションの両方を決定するステー ト・マシンとを備え、 前記ステート・マシンが決定した前記次のアクションに基づいて、前記スキャ ニング・システムは、前記入力文字列の前記入力文字を現在のテキスト要素内に 含めるべきか、あるいはまた、前記現在のテキスト要素を終え新たなテキスト要 素を始めるかを決定する ことを特徴とするシステム。 25.請求項24に記載のスキャニング・システムにおいて、前記属性は少なく とも前記入力文字の文字クラスを含み、 前記ステート・マシンは、前記入力文字の前記文字クラスおよび前記ステート ・マシンの前記現在の状態に従って、前記次の状態および前記次のアクションを 決定することを特徴とするシステム。 26.ソース文字列をターゲット文字列に変換するプログラム命令を含むコンピ ュータ読み取り可能な媒体において、 第1の文字コード化を有するソース文字列をコンピュータが受け取るように構 成されたコンピュータ読み取り可能なコードと、 前記ソース文字列をテキスト要素にコンピュータが分割するように構成され、 各テキスト要素は前記ソース文字列の文字を1または複数含むコンピュータ読み 取り可能なコードと、 各前記テキスト要素に対する第2の文字コード化に関する変換コードをコンピ ュータがルックアップするように構成されたコンピュータ読み取り可能なコード と、 前記第2の文字コード化の前記ターゲット文字列を形成するように前記テキス ト要素の前記変換コードをコンピュータが結合するように構成されたコンピュー タ読み取り可能なコードと を備えることを特徴とするコンピュータ読み取り可能な媒体。 27.ソース文字列をターゲット文字列に変換する方法において、 (a)第1の文字コード化を有するソース文字列を受け取り、前記ソース文字 列は複数のソース文字を含み、 (b)前記ソース文字列の前記ソース文字の方向を決定し、 (c)前記第1の文字コード化および決定された前記方向に基づき、各前記ソ ース文字に対する第2の文字コード化に関する変換コードをマッピング・テーブ ルでルックアップし、 (d)前記第2の文字コード化のターゲット文字列を形成するように、前記ソ ース文字の前記変換コードを結合する ことを特徴とする方法。 28.請求項27に記載の方法において、各ソース文字の前記方向は、左から右 への方向および右から左への方向の一つであることを特徴とする方法。 29.請求項27に記載の方法において、前記決定(b)は、 (b1)前記方向が不適切かどうかを決定し、 (b2)前記方向が適切な場合は、方向が、左から右への方向および右から左 への方向の一つを決定する ことを備えることを特徴とする方法。 30.請求項27に記載の方法において、前記決定(b)は、前記ソース文字列 の1または複数の文字の前記方向に基づき、前記ソース文字列のすべてまたは一 部の前記方向を決定することを特徴とする方法。 31.請求項27に記載の方法において、前記決定(b)は、 (i)前記ソース文字に関する属性をルックアップし、前記属性は少なくとも クラス・インディケータを含み、 (ii)前記クラス・インディケータに基づき前記ソース文字の前記方向を決定 する ことを備えることを特徴とする方法。 32.請求項27に記載の方法において、前記決定(b)は、 (i)前記ソース文字に関する属性をルックアップし、前記属性は少なくとも クラス・インディケータを含み、 (ii)複数の状態を有するステート・マシンを提供し、前記ステート・マシン は、前記クラス・インディケータおよび前記ステート・マシンの状態に基づき、 前記ソース文字の方向を決定するために使用され、 (iii)前記ステート・マシンの状態を更新する ことを備えることを特徴とする方法。 33.請求項32に記載の方法において、前記ステート・マシンは、さらに、前 記クラス・インディケータおよび前記ステート・マシンの現在の状態に基づいて 、前記ソース文字を現在のテキスト要素内に含めるべきか、あるいはまた、新 たな次のテキスト要素を始めるかを決定することを特徴とする方法。 34.請求項32に記載の方法において、前記決定(b)は、前記現在のテキス ト要素の前記方向を決定することを特徴とする方法。 35.請求項27に記載の方法において、さらに、(e)前記ソース文字列をテ キスト要素に順次分割し、各テキスト要素は前記ソース文字列の文字を1または 複数含むことを備え、 前記決定(b)は、前記テキスト要素の前記方向を決定し、 前記ルックアップ(c)は、前記テキスト要素の前記1または複数のソース文 字の前記第1の文字コード化および前記テキスト要素の前記方向に基づき、各前 記テキスト要素の第2の文字コード化に関する変換コードを前記マッピング・テ ーブルでルックアップすることを特徴とする方法。 36.請求項35に記載の方法において、前記マッピング・テーブルは、レギュ ラ・マッピングとフォールバック・マッピングを含み、 前記ルックアップ(c)は、前記マッピング・テーブルが、前記レギュラ・マ ッピングを使用する前記テキスト要素に対する変換コードを含まない場合は、前 記フォールドバック・マップングを使用して前記テキスト要素の前記変換コード を決定することを特徴とする方法。 37.請求項35に記載の方法において、各前記ソース文字は、自分に関する文 字クラスを有し、 前記分割(e)は、少なくとも部分的には、前記ソース文字列中の前記ソース 文字の前記文字クラスに基づくことを特徴とする方法。 38.請求項27に記載の方法において、前記第1の文字コード化および前記第 2の文字コード化の一つは、ユニコード標準に従うことを特徴とする方法。 39.ソース文字列をターゲット文字列に変換するコード変換システムにおいて 、 ソース文字コード化を有する入力文字列からターゲットの文字コード化を有す るターゲット文字列への前記変換を制御するコンバータであって、前記入力文字 列は複数の文字を含むコンバータと、 前記コンバータに動作するよう結合され、前記入力文字列中の前記文字の方向 を決定するスキャナと、 前記ソース・コード化の文字に対するターゲット・コード化を記憶するマッピ ング・テーブルと、 前記コンバータおよび前記マッピング・テーブルに動作するよう結合され、前 記方向および前記入力文字列中の前記文字に対する前記ソース・コード化に基づ き、前記入力文字列中の各前記文字についてのターゲット文字コード化に関する 変換コードを前記マッピング・テーブルでルックアップするルックアップ・ハン ドラと を備えることを特徴とするシステム。 40.請求項39に記載のコード変換システムにおいて、 前記スキャナは、さらに、前記入力文字列をテキスト要素に分割し、各前記テ キスト要素は前記入力文字列の文字を1または複数含み、 前記スキャナは、前記テキスト要素の前記方向を決定し、 前記マッピング・テーブルは、前記ソース・コード化のテキスト要素に対する ターゲット・コード化を記憶し、 前記ルックアップ・ハンドラは、前記方向および前記テキスト要素内の前記文 字についての前記ソース・コード化に基づき、各前記テキスト要素に対する前記 ターゲット文字コード化をルックアップすることを特徴とするシステム。 41.請求項40に記載のコード変換システムにおいて、さらに、 前記コンバータに動作するよう結合され、前記ルックアップ・ハンドラが1ま たは複数のテキスト要素に対し変換コードを提供できない場合は、フォールバッ ク変換コードを提供するフォールバック・ハンドラを備え、前記フォールバック 変換コードは、前記テキスト要素内の文字と完全に等しいわけではないが、類似 するグラフィカル外観を有する、前記ターゲット・コード化における1または複 数のコード・ポイントを含む ことを特徴とするシステム。 42.請求項41に記載のコード変換システムにおいて、さらに、 前記入力文字列の前記文字の前記方向の決定、および、前記入力文字列中の個 々の文字を現在のテキスト要素内に含めるべきか、あるいはまた、新たな次のテ キスト要素を始めるかの決定について前記スキャナを支援するスキャナ・テーブ ル手段 を備えることを特徴とするシステム。 43.請求項39に記載のコード変換システムにおいて、前記入力文字列の前記 文字は、自分に関する文字クラスを有し、 前記スキャナ・テーブルは、要素の配列を備え、前記配列は、文字クラスによ りインデックス付けされていることを特徴とするシステム。 44.請求項39に記載のコード変換システムにおいて、前記ソース文字列中の 前記文字は、ユニコード文字であることを特徴とするシステム。 45.請求項39に記載のコード変換システムにおいて、前記ターゲット文字列 中の前記文字は、ユニコード文字であることを特徴とするシステム。 46.ソース文字列をターゲット文字列に変換するコード変換システムにおいて 、 ソース文字コード化を有する前記ソース文字列からターゲット文字コード化を 有するターゲット文字列への前記変換を制御するコンバータ手段と、 前記ソース文字列中の各前記文字の方向を決定するステート・マシン手段 と、 前記ソース文字コード化の文字に対するターゲット文字コード化を記憶するマ ッピング手段と、 前記決定された方向を考慮しつつ、前記ソース文字コード化に従い、前記ソー ス文字列中の各前記文字に対するターゲット文字コード化に関する変換コードを 前記マッピング手段でルックアップするルックアップ・ハンドラ手段と を備えることを特徴とするシステム。 47.請求項46に記載のコード変換システムにおいて、前記ステート・マシン 手段は、さらに、前記ソース文字列をテキスト要素に分割し、各前記テキスト要 素は、前記ソース文字列の文字を1または複数含むことを特徴とするシステム。 48.請求項47に記載のコード変換システムにおいて、さらに、 前記ルックアップ・ハンドラ手段が1または複数のテキスト要素に対し変換コ ードを提供できない場合は、フォールバック変換コードを提供するフォールバッ ク・ハンドラ手段を備え、前記フォールバック変換コードは、前記テキスト要素 内の前記文字と完全に等しいわけではないが、類似するグラフィカル外観を有す る、前記ターゲット・コード化における1または複数のコード・ポイントを含む ことを特徴とするシステム。 49.ソース文字列をターゲット文字列に変換するプログラム命令を含むコンピ ュータ読み取り可能な媒体において、 第1の文字コード化を有するソース文字列をコンピュータが受け取るように構 成されたコンピュータ読み取り可能なコードと、 前記ソース文字列中の各前記ソース文字の方向をコンピュータが決定し、前記 ソース文字列をテキスト要素にコンピュータが分割するように構成され、各前記 テキスト要素はソース文字列の文字を1または複数含むコンピュータ読み取り可 能なコードと、 各前記テキスト要素の第2の文字コード化に関する変換コードをコンピュータ がルックアップするように構成されたコンピュータ読み取り可能なコードと、 前記第2の文字コード化のターゲット文字列を形成するように前記テキスト要 素の変換コードをコンピュータが結合するように構成されたコンピュータ読み取 り可能なコードと を備えることを特徴とするコンピュータ読み取り可能な媒体。 50.ソース文字列をターゲット文字列に変換する方法において、 (a)第1の文字コード化を有するソース文字列を受け取り、前記ソース文字 列は複数のソース文字を含み、 (b)前記ソース文字列中の各前記ソース文字のコンテキストを決定し、 (c)前記第1の文字コード化および各前記ソース文字の決定された前記コン テキストに基づき、各前記ソース文字の第2の文字コード化に関する変換コード をマッピング・テーブルでルックアップし、 (d)前記第2の文字コード化のターゲット文字列を形成するように前記ソー ス文字の前記変換コードを結合する ことを備えることを特徴とする方法。 51.請求項50に記載の方法において、各ソース文字の前記コンテキストは、 前記ソース文字列中の自分と隣接するソース文字に依存することを特徴とする方 法。 52.請求項50に記載の方法において、前記決定(b)は、 (b1)コンテキストが不適切かどうかを決定し、 (b2)コンテキストが適切な場合は、コンテキストが、初期、中間、終了ま たはアローンの一つであるかどうかを決定する ことを備えることを特徴とする方法。 53.請求項52に記載の方法において、前記決定(b2)を実行する際に、特 別なソース文字の前記コンテキストの決定に関し、隣接のソース文字が前記特別 なソース文字のコンテキストに対し影響するように、前記ソース文字列は一文字 ずつスキャンされることを特徴とする方法。 54.請求項50に記載の方法において、前記決定(b)は、 (i)前記ソース文字に関する属性をルックアップし、前記属性は少なくとも クラス・インディケータを含み、 (ii)前記クラス・インディケータに基づき、前記ソース文字の前記コンテキ ストを決定する ことを備えることを特徴とする方法。 55.請求項50に記載の方法において、前記決定(b)は、 (i)前記ソース文字に関する属性をルックアップし、前記属性は少なくとも クラス・インディケータを含み、 (ii)複数の状態を有するステート・マシンを提供し、前記ステート・マシン は前記クラス・インディケータおよび前記ステート・マシンの状態に基づき、前 記ソース文字の前記コンテキストを決定するために利用され、 (iii)前記ステート・マシンの状態を更新する ことを備えることを特徴とする方法。 56.請求項55に記載の方法において、前記ステート・マシンは、さらに、前 記クラス・インディケータおよび前記ステート・マシンの現在の状態に基づいて 、前記ソース文字を現在のテキスト要素内に含めるべきか、あるいはまた、新た な次のテキスト要素を始めるかを決定することを特徴とする方法。 57.請求項50に記載の方法において、さらに、 (e)前記ソース文字列をテキスト要素に順次分割し、各テキスト要素は前記 ソース文字列の文字を1または複数含むことを備え、 前記ルックアップ(c)は、各前記テキスト要素の前記第2の文字コード化に 関する変換コードを前記マッピング・テーブルでルックアップし、ルックアップ された変換コードの1つを選択し、前記結合(d)は、前記第2の文字コード化 による前記ターゲット文字列を形成するように前記テキスト要素に対する前記変 換コードを結合することを特徴とする方法。 58.請求項57に記載の方法において、前記マッピング・テーブルは、レギュ ラ・マッピングとフォールバック・マッピングを含み、 前記ルックアップ(c)は、前記マッピング・テーブルが、前記レギュラ・マ ッピングを使用する前記テキスト要素に対する変換コードを含まない場合は、前 記フォールバック・マッピングを使用して各前記テキスト要素の前記変換コード を決定することを特徴とする方法。 59.請求項57に記載の方法において、各前記ソース文字は、自分に関する文 字クラスを有し、 前記分割(e)は、少なくとも部分的には、前記ソース文字列中の前記ソース 文字の前記文字クラスに基づくことを特徴とする方法。 60.請求項57に記載の方法において、前記分割(e)は、 (e1)前記ソース文字列から次のソース文字を獲得し、 (e2)獲得した前記ソース文字を現在のテキスト要素内に含めるべきか、あ るいはまた、新たな次のテキスト要素を始めるかを決定し、 (e3)前記決定(e2)に従い、獲得した前記ソース文字を前記現在のテキ スト要素内または前記新たな次のテキスト要素内に配置し、 (e4)前記ソース文字列をテキスト要素内に完全に配置するまで、(e1) から(e3)までを繰り返す ことを備えることを特徴とする方法。 61.請求項60に記載の方法において、前記決定(e2)は、 (i)前記ソース文字に関する属性をルックアップし、前記属性は少なくとも クラス・インディケータを含み、 (ii)複数の状態を有するステート・マシンを提供し、前記ステート・マシン は、前記クラス・インディケータおよび前記ステート・マシンの現在の状態に基 づき、獲得した前記ソース文字を前記現在のテキスト要素内に含めるべきか、あ るいはまた、新たな次のテキスト要素を始めるかを決定するのに利用され、 (iii)前記ステート・マシンの前記現在の状態を更新する ことを備えることを特徴とする方法。 62.請求項57に記載の方法において、前記第1の文字コード化および前記第 2の文字コード化の一つは、ユニコード標準に従うことを特徴とする方法。 63.請求項57に記載の方法において、前記結合(d)は、 (d1)前記第2の文字コード化のターゲット文字サイズを決定し、 (d2)ルップアップされた前記テキスト要素の前記変換コードを前記ターゲ ット文字サイズの単位で前記ターゲット文字列にコピーすることにより前記ター ゲット文字列を形成する ことを備えることを特徴とする方法。 64.ソース文字列をターゲット文字列に変換するコード変換システムにおいて 、 ソース文字コード化を有する前記入力文字列からターゲット文字コード化を有 する前記ターゲット文字列への前記変換を制御するコンバータであって、前記入 力文字列は複数の文字を含むコンバータと、 前記コンバータに動作するよう結合され、前記入力文字列中の各前記文字のコ ンテキストを決定するスキャナと、 前記ソース・コード化の文字に対するターゲット・コード化を記憶するマッピ ング・テーブルと、 前記コンバータおよび前記マッピング・テーブルに動作するよう結合され、前 記コンテキストおよび前記入力文字列中の前記文字に対する前記ソース・コード 化に基づき、前記入力文字列中の各前記文字に対するターゲット文字コード化に 関する変換コードを前記マッピング・テーブルでルックアップするルックアップ ・ハンドラと を備えることを特徴とするシステム。 65.請求項64に記載の方法において、 前記スキャナは、さらに、前記入力文字列を前記テキスト要素に分割し、各テ キスト要素は前記入力文字列の文字を1または複数含み、 前記マッピング・テーブルは、前記ソース・コード化のテキスト要素に対する ターゲット・コード化を記憶し、 前記ルックアップ・ハンドラは、前記コンテキストおよび前記テキスト要素内 の前記文字に対する前記ソース・コード化に基づき、各テキスト要素に対する前 記ターゲット・文字コード化を選択することを特徴とする方法。 66.請求項65に記載のコード変換システムにおいて、さらに、 前記コンバータに動作するよう結合され、前記ルックアップ・ハンドラが1ま たは複数のテキスト要素に対し変換コードを提供できない場合は、フォールバッ ク変換コードを提供するフォールバック・ハンドラを備え、前記フォールバック 変換コードは、前記テキスト要素内の文字と完全に等しいわけではないが、類似 するグラフィカル外観を有する、ターゲット・コード化における1または複数の コード・ポイントを含むことを特徴とするシステム。 67.請求項66に記載のコード変換システムにおいて、さらに、 前記入力文字列中の個々の文字を現在のテキスト要素内に含めるべきか、ある いはまた新たな次のテキスト要素を始めるかの決定について前記スキャナを支援 するスキャナ・テーブル手段 を備えることを特徴とするシステム。 68.請求項64に記載のコード変換システムにおいて、前記入力文字列の前記 文字は、自分に関する文字クラスを有し、 前記スキャナ・テーブルは、要素の配列を備え、前記配列は、前記文字クラス によりインデックス付けされていることを特徴とするシステム。 69.請求項64に記載のコード変換システムにおいて、前記ソース文字列中の 前記文字は、ユニコード文字であることを特徴とするシステム。 70.請求項64に記載のコード変換システムにおいて、前記ターゲット文字列 中の前記文字は、ユニコード文字であることを特徴とするシステム。 71.ソース文字列をターゲット文字列に変換するコード変換システムにおいて 、 ソース文字コード化を有する前記ソース文字列からターゲット文字コード化を 有する前記ターゲット文字列への前記変換を制御するコンバータ手段と、 前記ソース中の各前記文字のコンテキストを決定するステート・マシン手段と 、 前記ソース文字コード化を有する文字に対するターゲット文字コード化を記憶 するマッピング手段と、 前記ソース文字列中の各前記文字についてのターゲット文字コード化に関する 変換コードを前記マッピング手段でルックアップするルックアップ・ハンドラ手 段と を備えることを特徴とするシステム。 72.請求項71に記載のコード変換システムにおいて、前記ステート・マシン 手段は、さらに、前記ソース文字列をテキスト要素に分割し、各テキスト要素は 、前記ソース文字列の文字を1または複数含むことを特徴とするシステム。 73.請求項72に記載のコード変換システムにおいて、さらに、 前記ルックアップ・ハンドラ手段が1または複数のテキスト要素に対し変換コ ードを提供できない場合は、フォールバック変換コードを提供するフォールバッ ク・ハンドラ手段を備え、前記フォールバック変換コードは、前記テキスト要素 内の前記文字と完全に等しいわけではないが、類似するグラフィカル外観を有す る、前記ターゲット・コード化における1または複数のコード・ポイントを含む ことを特徴とするシステム。 74.ソース文字列をターゲット文字列に変換するプログラム命令を含むコンピ ュータ読み取り可能な媒体において、 第1の文字コード化がなされた前記ソース文字列をコンピュータが受け取るよ うに構成されたコンピュータ読み取り可能なコードと、 前記ソース文字列中の各前記ソース文字のコンテキストをコンピュータが決定 し、前記ソース文字列をテキスト要素にコンピュータが分割するように構成され 、各テキスト要素は前記ソース文字列の文字を1または複数含むコンピュータ読 み取り可能なコードと、 各前記テキスト要素の第2の文字コード化に関する変換コードをコンピュータ がルックアップするように構成されたコンピュータ読み取り可能なコードと、 前記第2の文字コード化によるターゲット文字列を形成するように前記テキス ト要素の前記変換コードをコンピュータが結合するように構成されたコンピュー タ読み取り可能なコードと を備えることを特徴とするコンピュータ読み取り可能な媒体。 75.ソース文字列をターゲット文字列に変換するコード変換システムにおいて 、 第1の文字コード化を有する前記ソース文字列から第2の文字コード化を有す る前記ターゲット文字列への前記変換を制御するコンバータと、 前記ソース文字列の部分の1つを一度に受け取るためのバッファであって、前 記ソース文字列は部分を2つ以上含むバッファと、 前記ソース文字列の前記部分を切り捨てるトランケータと、 前記コンバータに動作するよう結合され、前記ソース文字列の切り捨てられた 部分をテキスト要素に分割するスキャナであって、各テキスト要素は、前記ソー ス文字列の前記切り捨てられた部分の文字を1または複数含むスキャナと、 前記ソース・コード化の前記テキスト要素に対するターゲット・コード化を記 憶するマッピング・テーブルと、 前記コンバータおよび前記マッピング・テーブルに動作するよう結合され、各 前記テキスト要素の第2の文字コード化に関する変換コードを前記マッピング・ テーブルでルックアップするルックアップ・ハンドラと を備えることを特徴とするシステム。 76.請求項75に記載のコード変換システムにおいて、前記トランケータは、 前記スキャナとともに、前記ソース文字列の前記部分を通してスキャンして前記 部分内の前記テキスト要素を決定し、前記切り捨てられた部分を、完全なテキス ト要素からなる前記ソース文字列の部分のサブパートとして決定することを特徴 とするシステム。 77.請求項75に記載のコード変換システムにおいて、前記トランケータは、 前記切り捨てられた部分を、前記ソース文字列の後続の部分に影響を受けること なく前記ターゲット文字列に変換できる、前記ソース文字列の部分のサブパート として決定することを特徴とするシステム。 78.請求項75に記載のコード変換システムにおいて、前記ソース文字列はテ キスト文字列であり、前記ターゲット文字列はテキスト文字列であることを特徴 とするシステム。 79.請求項75に記載のコード変換システムにおいて、さらに、 前記コンバータに操作的に接続され、前記ルックアップ・ハンドラが1または 複数のテキスト要素に対し変換コードを提供できない場合は、フォールバック変 換コードを提供するフォールバック・ハンドラを備え、前記フォールバック変換 コードは、前記テキスト要素内の前記文字と完全に等しいわけではないが、類似 するグラフィカル外観を有する、前記ターゲット・コード化における1または複 数のコード・ポイントを含む ことを特徴とするシステム。 80.請求項75に記載のコード変換システムにおいて、さらに、 前記入力文字列中の個々の文字を現在のテキスト要素内に含めるべきか、ある いはまた、新たな次のテキスト要素を始めるかの決定について前記スキャナを支 援するスキャナ・テーブル手段 を備えることを特徴とするシステム。 81.請求項75に記載のコード変換システムにおいて、さらに、 前記スキャナに動作するよう結合され、前記入力文字列中の個々の文字を現在 のテキスト要素内に含めるべきか、あるいはまた、新たな次のテキスト要素を始 めるかの決定について前記スキャナを支援するスキャナ・テーブル を備えることを特徴とするシステム。 82.請求項81に記載のコード変換システムにおいて、前記ソース文字列の前 記文字は自分に関する文字クラスを有し、 前記スキャナ・テーブルは要素の配列を備え、前記配列は文字クラスによりイ ンデックス付けされていることを特徴とするシステム。 83.請求項75に記載のコード変換システムにおいて、前記ソース文字列中の 前記文字は、ユニコード文字であることを特徴とするシステム。 84.請求項75に記載のコード変換システムにおいて、前記ターゲット文字列 中の前記文字は、ユニコード文字であることを特徴とするシステム。 85.ターゲット文字列への文字変換のためにソース文字列を切り捨てる方法に おいて、 (a)バッファ内のソース文字列のバッファ部分を受け取り、前記ソース文字 列は2個以上のバッファ部分を含み、 (b)後続の前記ソース文字列のバッファ部分に影響を受けることなくターゲ ット文字列に変換できる、前記ソース文字列の前記バッファ部分のサブパートを 決定し、 (c)前記ソース文字列の前記バッファ部分の前記サブパートをターゲット・ コード化に変換する ことを特徴とする方法。 86.請求項85に記載の方法において、さらに、 (d)次のバッファ部分またはそのサブパートとともに変換するために前記バ ッファ部分の残り部分をセーブし、前記残り部分はサブパートとともに前記バッ ファ部分と等しい ことを特徴とする方法。 87.請求項85に記載の方法において、前記ソース文字列はテキスト文字列で あり、前記ターゲット文字列はテキスト文字列であることを特徴とする方法。 88.ターゲット文字列への文字変換のためにソース文字列を切り捨てる方法に おいて、 (a)バッファ内のソース文字列の部分を受け取り、 (b)前記ソース文字列の前記部分内のテキスト要素を決定し、各前記テキス ト要素は前記ソース文字列の文字を1または複数含み、 (c)前記テキスト要素が完全かどうかを決定し、 (d)前記テキスト要素が完全であれば、前記テキスト要素を前記ソース文字 列の切り捨てられた部分内に含め、 (e)前記ソース文字列の前記部分が完全に考慮されるまで、ステップ(b) 〜(d)を繰り返し、 (f)その後、文字変換のために前記ソース文字列の前記切り捨てられた部分 を出力する ことを特徴とする方法。 89.請求項88に記載の方法において、さらに、 (g)前記バッファ内に受け取られた前記ソース文字列の次の部分とともに使 用するために、前記ソース文字列のすべての残りの部分をセーブする ことを特徴とする方法。 90.請求項89に記載の方法において、前記ソース文字列はテキスト文字列で あり、前記ターゲット文字列はテキスト文字列であることを特徴とする方法。 91.ソース文字列をターゲット文字列に変換するプログラム命令を含むコンピ ュータ読み取り可能な媒体において、 第1の文字コード化がなされた前記ソース文字列をバッファにコンピュータが 受け取るように構成されたコンピュータ読み取り可能なコードと、 ソース文字列の部分をコンピュータが切り捨てるように構成されたコンピュー タ読み取り可能なコードと、 前記ソース文字列の切り捨てられた部分をテキスト要素にコンピュータが分割 するように構成され、各前記テキスト要素は前記ソース文字列の切り捨てられた 部分の文字を1または複数含むコンピュータ読み取り可能なコードと、 各前記テキスト要素の第2の文字コード化に関する変換コードをコンピュータ がルックアップするように構成されたコンピュータ読み取り可能なコードと、 前記第2の文字コード化によるターゲット文字列を形成するように前記テキス ト要素の前記変換コードをコンピュータが結合するように構成されたコンピュー タ読み取り可能なコードと を備えることを特徴とするコンピュータ読み取り可能な媒体。 92.請求項91に記載のコンピュータ読み取り可能な媒体において、ソース文 字列の部分をコンピュータが切り捨てるように構成されたコンピュータ読み取り 可能なコードは、前記切り捨てられた部分を、後続のソース文字列の前記部分に 影響を受けることなく前記ターゲット文字列に変換できる、前記ソース文字列の 部分のサブパートとして決定することを特徴とするコンピュータ読み取り可能な 媒体。
JP51211397A 1995-09-13 1996-09-13 ユニコード・コンバータ Expired - Fee Related JP4584359B2 (ja)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US08/527,827 1995-09-13
US08/527,831 US5682158A (en) 1995-09-13 1995-09-13 Code converter with truncation processing
US08/527,438 US5793381A (en) 1995-09-13 1995-09-13 Unicode converter
US08/527,438 1995-09-13
US08/527,831 1995-09-13
US08/527,837 1995-09-13
US08/527,837 US5784071A (en) 1995-09-13 1995-09-13 Context-based code convertor
US08/527,827 US5784069A (en) 1995-09-13 1995-09-13 Bidirectional code converter
PCT/US1996/014667 WO1997010556A1 (en) 1995-09-13 1996-09-13 Unicode converter

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2007182633A Division JP2007317214A (ja) 1995-09-13 2007-07-11 ユニコード・コンバータ

Publications (2)

Publication Number Publication Date
JPH11512543A true JPH11512543A (ja) 1999-10-26
JP4584359B2 JP4584359B2 (ja) 2010-11-17

Family

ID=27504609

Family Applications (3)

Application Number Title Priority Date Filing Date
JP51211397A Expired - Fee Related JP4584359B2 (ja) 1995-09-13 1996-09-13 ユニコード・コンバータ
JP2007182633A Pending JP2007317214A (ja) 1995-09-13 2007-07-11 ユニコード・コンバータ
JP2008050694A Expired - Fee Related JP4451908B2 (ja) 1995-09-13 2008-02-29 ユニコード・コンバータ

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2007182633A Pending JP2007317214A (ja) 1995-09-13 2007-07-11 ユニコード・コンバータ
JP2008050694A Expired - Fee Related JP4451908B2 (ja) 1995-09-13 2008-02-29 ユニコード・コンバータ

Country Status (4)

Country Link
EP (1) EP0852037B1 (ja)
JP (3) JP4584359B2 (ja)
AU (1) AU7360596A (ja)
DE (1) DE69605433T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7199730B2 (en) 2003-01-24 2007-04-03 Ricoh Company, Ltd. Character string processing apparatus, character string processing method, and image-forming apparatus

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6400287B1 (en) 2000-07-10 2002-06-04 International Business Machines Corporation Data structure for creating, scoping, and converting to unicode data from single byte character sets, double byte character sets, or mixed character sets comprising both single byte and double byte character sets
US7051278B1 (en) 2000-07-10 2006-05-23 International Business Machines Corporation Method of, system for, and computer program product for scoping the conversion of unicode data from single byte character sets, double byte character sets, or mixed character sets comprising both single byte and double byte character sets
US7278100B1 (en) 2000-07-10 2007-10-02 International Business Machines Corporation Translating a non-unicode string stored in a constant into unicode, and storing the unicode into the constant
KR102489574B1 (ko) * 2022-02-09 2023-01-18 (주)큐브더모먼트 가명정보 파일을 판별하기 위한 정보집합물 내에 삽입된 서명을 포함하는 가명정보 파일의 생성 및 판별 방법, 장치 및 컴퓨터프로그램

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7199730B2 (en) 2003-01-24 2007-04-03 Ricoh Company, Ltd. Character string processing apparatus, character string processing method, and image-forming apparatus
US7477167B2 (en) 2003-01-24 2009-01-13 Ricoh Company, Ltd. Character string processing apparatus, character string processing method, and image-forming apparatus

Also Published As

Publication number Publication date
EP0852037A1 (en) 1998-07-08
JP4451908B2 (ja) 2010-04-14
JP2008192163A (ja) 2008-08-21
JP2007317214A (ja) 2007-12-06
JP4584359B2 (ja) 2010-11-17
EP0852037B1 (en) 1999-12-01
DE69605433T2 (de) 2000-07-20
DE69605433D1 (de) 2000-01-05
AU7360596A (en) 1997-04-01

Similar Documents

Publication Publication Date Title
US5682158A (en) Code converter with truncation processing
US5784069A (en) Bidirectional code converter
US5793381A (en) Unicode converter
US5784071A (en) Context-based code convertor
JP2502021B2 (ja) 多バイトデ―タ変換方法及びシステム
EP0989499A2 (en) Unicode conversion into multiple encodings
US7188115B2 (en) Processing fixed-format data in a unicode environment
US5109433A (en) Compressing and decompressing text files
JP4017659B2 (ja) テキスト入力フォント・システム
US20020184251A1 (en) Efficient collation element structure for handling large numbers of characters
US7072880B2 (en) Information retrieval and encoding via substring-number mapping
JP4451908B2 (ja) ユニコード・コンバータ
WO1997010556A1 (en) Unicode converter
WO1997010556A9 (en) Unicode converter
JP2001101172A (ja) マルチバイト・キャラクタ・コード化体系内で使用される単一バイト・キャラクタ処理の最適化の方法、システム、およびコンピュータ・プログラム製品
JP3330719B2 (ja) テキスト音声変換システム
KR100399495B1 (ko) 소스 스트링의 타겟 스트링으로의 변환 방법, 이의 컴퓨터시스템 및 프로그램 제품
KR100712001B1 (ko) 중국어 데이타 및 사용자에 의해 정정된 데이타를작성하고 사용하는 방법 및 시스템
TW561360B (en) Method and system for case conversion
KR100305466B1 (ko) 다수바이트문자스트링의컴퓨터시스템내의교환코드간의변환방법및시스템
JPH05210629A (ja) 表示制御システム
JPH09269943A (ja) 文書作成装置及びかな漢字変換方法
JP4061283B2 (ja) 字句をデータに変換する装置、方法及びプログラム
US20080177729A1 (en) Apparatus, method and computer program product for searching document
JP2005275880A (ja) 字句をデータに変換する装置、方法及びプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060529

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060711

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20061011

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070111

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070313

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20070612

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070612

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070711

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070726

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20070802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100702

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100823

RD15 Notification of revocation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7435

Effective date: 20100826

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100827

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100902

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130910

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees