(57)【要約】【課題】２バイト固定長の文字処理システムにおいてサロゲートペア文字を簡易に、且つ正確に処理することのできる文字コード処理装置を提供する。【解決手段】ユニコードの外字領域にサロゲートペア文字を登録したフォントファイルと、サロゲートペア文字を特定する４バイトのコードとフォントファイルに登録したサロゲートペア文字を特定する２バイトのコードとを対応付ける変換テーブルとを備える。そして入力文字コード列を２バイトずつ切り出して該２バイトのコードがサロゲートペア文字用のコードであるか否かを判定し、サロゲートペア文字用のコードであるときには更に次の２バイトのコードを求め（サロゲートペア文字検出手段）、これらのサロゲートペア文字を示す４バイトのコードを前記変換テーブルを参照して２バイトのコードに変換する（コード置換手段）。【選択図】図１
2009042980.tif 000002
【特許請求の範囲】
【請求項１】
ユニコードの外字領域に予め複数のサロゲートペア文字をそれぞれ割り当てたフォントファイルと、
上記各サロゲートペア文字を特定する４バイトのコードと前記フォントファイルに割り当てたサロゲートペア文字を特定する２バイトのコードとを対応付ける変換テーブルと、
入力された文字コード列を２バイトずつ切り出して該２バイトのコードがサロゲートペア文字の特定に用いられるコードであるか否かを判定し、該２バイトのコードがサロゲートペア文字の特定に用いられるコードであるとき、前記文字コード列から該コードに続く次の２バイトのコードを切り出してサロゲートペア文字を特定する４バイトのコードを求めるサロゲートペア文字検出手段と、
このサロゲートペア文字検出手段にて求められた４バイトのコードを前記変換テーブルを参照して２バイトのコードに変換して前記文字コード列中の前記サロゲートペア文字を特定する４バイトのコードを２バイトのコードに置換するコード置換手段と、
コード置換が施された文字コード列に従って前記フォントファイルを参照して文字フォントを出力する出力手段と
を具備したことを特徴とする文字コード処理装置。
【請求項２】
前記サロゲートペア文字検出手段は、前記文字コード列から２バイトずつ切り出した文字コードがサロゲートペア文字の特定に用いられるコードでない場合には、該文字コードをそのまま出力するものである請求項１に記載の文字コード処理装置。
【請求項３】
前記フォントファイルは、入力された文字コード列に出現するサロゲートペア文字を、前記ユニコードの外字領域における最後尾から降順に割り付けたものである請求項１に記載の文字コード処理装置。
【請求項４】
前記フォントファイルおよび前記変換テーブルは、予め定められた複数のサロゲートペア文字をユニコードの外字領域に割り付けて作成されるものであって、
前記文字コード列から新たなサロゲートペア文字が検出される都度、当該サロゲートペア文字を登録して更新されるものである請求項１に記載の文字コード処理装置。
【請求項５】
前記出力手段は、２バイト固定長の文字処理システムであって、
前記文字コード判定手段、前記サロゲートペア文字検出手段および前記コード置換手段は、上記２バイト固定長の文字処理システムの最上位に文字データ入力部として組み込まれるものである請求項１に記載の文字コード処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２バイト固定長の文字処理システムにおいて、サロゲートペア文字を含んで入力される文字コード列を簡易に処理することのできる文字コード処理装置に関する。
【背景技術】
【０００２】
ＵＣＳ（Universal Character Set）-２で定義される文字の集合は、全ての文字を図５(ａ)に示すよう１６ビット（２バイト）にて表現し、１つの文字コード体系にて多国語処理を可能としようとするものである。しかし［００００］〜［ＦＦＦＦ］で表される文字コード（６５,５３６文字分）にて、文字体系（言語体系）の異なる全ての文字を表現することは不可能である。そこでＵＴＦ（Unicode Trsnsformation Format）-１６においては、図５(ｂ)に示すように２文字分のコードを組（ペア）にすることで、つまり３２ビット（４バイト）を用いて１つの文字を表すサロゲートペア文字が提唱されている。
【０００３】
具体的には図６にその概念を示すように、ユニコード（Unicode）の基本文字領域ＢＭＰ（Basic Multilingual Plane）における［Ｄ８００］〜［ＤＦＦＦ］の領域をサロゲートペア文字領域として定め、［Ｄ８００］〜［ＤＢＦＦ］で示される上位２バイトコードと、［ＤＣ００］〜［ＤＦＦＦ］で示される下位２バイトコードとの組合せにより計（１,０２４×１,０２４＝１,０４８,５７６）文字をサロゲートペア文字として取り扱うことを可能としている。尚、サロゲートペア文字は（２５６×２５６）の区点によって示される面（plane）毎に６５,５３６文字ずつ、１６面に亘って管理される。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら上述したサロゲートペア文字を考慮していない従来一般的な２バイト固定長の文字処理システムにおいては、入力された文字データ列中にサロゲートペア文字を特定する４バイトのコードが含まれていても、これを単に「２バイトのコードが２つある」として認識するだけなので、いわゆる「文字化け」が生じることのみならず文字数が増える等の不具合が発生する。
【０００５】
本発明はこのような事情を考慮してなされたもので、その目的は、２バイト固定長の文字処理システムにおいて、サロゲートペア文字を含んで入力される文字コード列を「文字化け」等の不具合を招来することなしに簡易に、且つ正確に処理することのできる文字コード処理装置を提供することにある。
【課題を解決するための手段】
【０００６】
上述した目的を達成するべく本発明に係る文字コード処理装置は、２バイト固定長の文字処理システムにおいて４バイトのサロゲートペア文字を取り扱い得るようにしたものであって、
<ａ>  ユニコードの基本文字領域ＢＭＰにおける外字領域に予め複数のサロゲートペア文字をそれぞれ割り当てたフォントファイルと、
<ｂ>  上記各サロゲートペア文字を特定する４バイトのコードと前記フォントファイルに割り当てたサロゲートペア文字を特定する２バイトのコードとを相互に対応付ける変換テーブルと、
<ｃ>  入力された文字コード列を２バイトずつ切り出して該２バイトのコードがサロゲートペア文字の特定に用いられるコードであるか否かを判定し、該２バイトのコードがサロゲートペア文字の特定に用いられる［Ｄ８００］〜［ＤＢＦＦ］のコードであるとき、前記文字コード列から該コードに続く次の２バイトのコードを切り出してサロゲートペア文字を特定する４バイトのコードを求めるサロゲートペア文字検出手段と、
<ｄ>  このサロゲートペア文字検出手段にて求められた４バイトのコードを前記変換テーブルを参照して２バイトのコードに変換して前記文字コード列中の前記サロゲートペア文字を特定する４バイトのコードを２バイトのコードに置換するコード置換手段と、
<ｅ>  コード置換が施された文字コード列に従って前記フォントファイルを参照して文字フォントを出力する出力手段と
を具備したことを特徴としている。
【０００７】
ちなみに前記サロゲートペア文字検出手段は、前記文字コード列から２バイトずつ切り出した文字コードがサロゲートペア文字の特定に用いられるコードでない場合には、該文字コードをそのまま出力するように構成される。また前記フォントファイルは、好ましくは入力された文字コード列に出現するサロゲートペア文字を、前記ユニコードの外字領域における最後尾から降順に割り付けて構成される。特に前記フォントファイルおよび前記変換テーブルについては、予め沙汰攻められた出現可能性の高い複数のサロゲートペア文字、具体的にはニーズに応じて予め規定された複数のサロゲートペア文字をユニコードの外字領域に割り付けて作成しておき、前記文字コード列から新たなサロゲートペア文字が検出される都度、当該サロゲートペア文字を登録して更新することが望ましい。
【０００８】
尚、前記出力手段は、２バイト固定長の文字処理システムの一部を構築するものであれば良く、前記文字コード判定手段、前記サロゲートペア文字検出手段および前記コード置換手段については、上記２バイト固定長の文字処理システムの最上位に文字データ入力部として組み込むようにすれば良い。
【発明の効果】
【０００９】
上記構成の文字コード処理装置によれば、入力された文字コード列にサロゲートペア文字を特定する４バイトのコードが含まれるとき、この４バイトのコードを２バイトずつ確実に検出し、変換テーブルを参照して２バイトのコードに変換し、この２バイトのコードにて前記文字コード列中の該当する４バイトのコードを置換するので、２バイト固定長の文字処理システムにおいては上述したコード置換が施された文字コード列を２バイトずつ処理するだけで、文字化け等の不具合を招来することなしにその文字出力を正確に制御することができる。
【００１０】
しかも文字処理システムへの文字コード列の入力時に、その入力文字コード列に対して前述したコード置換の処理を１回実行すれば、その後は上記入力文字コード列中に含まれていたサロゲートペア文字を単に当該文字処理システムにおける外字として取り扱うことができるので、文字情報の印刷出力時等における処理負担が増えることがない。またサロゲートペア文字を外字として管理するだけなので、その管理自体も簡単である等の効果が奏せられる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の一実施形態に係る文字コード処理装置について説明する。
この文字コード処理装置は、帳票処理システム等の２バイト固定長の文字処理システムに組み込むに好適なものであって、概略的には図１に示すように２バイト固定長の文字処理システム１０に対する文字データ入力部２０として、その最上位に組み込まれる。ちなみに文字処理システム１０は、基本的には図示しない文字入力部から与えられた文字データ列や、予めデータファイル１１に格納されている文字データ列からその文字コードを２バイトずつ順に切り出し、内蔵したフォントファイル１２から上記文字コードに対応する文字フォントを求めてプリンタ１３やディスプレイ１４に出力するように構成される。この際、文字処理システム１０は文字サイズや印刷レイアウト等の制御を行うことは言うまでもない。
【００１２】
このような２バイト固定長の文字処理システム１０に対して前記文字データ入力部（文字コード処理装置）２０は、入力された文字コード列を２バイトずつ切り出して該２バイトのコードがサロゲートペア文字の特定に用いられるコードであるか否かを判定することで、サロゲートペア文字を特定する４バイトのコードを求めるサロゲートペア文字検出手段２１を備える。更に文字データ入力部２０は、後述する変換テーブル２２を参照して上記サロゲートペア文字検出手段２１にて求められた４バイトのコードに予め対応付けられた２バイトのコードを求め、この２バイトのコードにて前記４バイトのコードを置換するコード置換手段２３を備える。換言すればこのコード置換手段２３は、サロゲートペア文字を特定する４バイトのコードを、予め前記文字処理システム１０におけるフォントファイル１２の外字領域１２ａに準備したサロゲートペア文字を特定する２バイトのコードに変換する役割を担う。
【００１３】
即ち、文字データ入力部（文字コード処理装置）２０は、図２にその概念を示すようにユニコードの基本文字領域ＢＭＰを予め区画して設定したサロゲートペア文字領域［Ｄ８００］〜［ＤＦＦＦ］に含まれる上位２バイトコードと下位２バイトコードとの組によって特定される複数（１,０４８,５７６文字）のサロゲートペア文字の中の出現頻度の高い幾つかのサロゲートペア文字、或いはニーズに応じて規定された複数のサロゲートペア文字を、予め前記ユニコードの基本文字領域ＢＭＰにおける外字領域［Ｅ０００］〜［Ｆ８ＦＦ］に２バイトのコードにて特定可能な外字（サロゲート文字）として登録している。
【００１４】
そして文字データ入力部２０においては、図３に例示するようにフォントファイル１２の外字領域１２aに登録した複数の外字（サロゲート文字）をそれぞれ特定する２バイトのコードと、当該外字（サロゲート文字）に相当するサロゲートペア文字を特定する４バイトのコードとを相互に対応付けて前記変換テーブル２２に登録している。従ってこの変換テーブル２２を参照することで、４バイトのコードにて特定されるサロゲートペア文字の文字フォントを、２バイトのコードによって特定されるフォントファイル１２から求め得るようになっている。
【００１５】
尚、フォントファイル１２の外字領域１２aは、基本的にはユーザ仕様に応じた任意の外字登録に用いられるものである。ちなみにこの外字領域１２ａには、その先頭［Ｅ０００］から昇順に外字登録が行われるので、前述した複数のサロゲート文字（外字）の前記外字領域１２aへの登録については、例えば外字領域１２aの最後尾［Ｆ８ＦＦ］から降順に行うことが好ましい。
【００１６】
さて前述したサロゲートペア文字検出手段２１は、例えば図４に示す手順に従って入力された文字コード列中に含まれるサロゲートペア文字を特定する４バイトのコードの検出処理を実行する。そして前記コード置換手段２３は上記サロゲートペア文字検出手段２１による検出結果に応じてサロゲートペア文字を特定する４バイトコードを、前述した変換テーブル２２を参照して２バイトコードに変換処理している。
【００１７】
即ち、サロゲートペア文字検出手段２１は、入力された文字コード列から複数の文字コードを順に切り出す為の制御パラメータCOUNTを先ず［０］に初期設定した後〈ステップＳ１〉、この制御パラメータCOUNTに従って［COUNTバイト］目の２バイトを前記文字コード列から取り出す〈ステップＳ２〉。そして取り出した２バイトのコードについて、そのコードがサロゲートペア文字の特定に用いるコード［Ｄ８００］〜［ＤＦＦＦ］であるか否かを判定する〈ステップＳ３〉。具体的には取り出した２バイトのコードが、サロゲートペア文字の特定に用いる上位２バイトコード［Ｄ８００］〜［ＤＢＦＦ］であるか否かを判定する。
【００１８】
この判定処理によって前記２バイトのコードがサロゲートペア文字の特定に用いるコードではないと判定した場合には、前記２バイト固定長の文字処理システム１０に対して上記２バイトのコードをそのまま出力する〈ステップＳ４〉。そして前述した制御パラメータCOUNTを２バイト分増大させるべく（＋２）し〈ステップＳ５〉、前述したステップＳ２からの処理を繰り返し実行する。この制御パラメータCOUNTの増分処理によって入力文字データ列中から、そのデータが２バイトずつ順に切り出される。
【００１９】
一方、前記判定処理によって前記２バイトのコードがサロゲートペア文字の特定に用いる上位２バイトのコードであると判定された場合には、この２バイトのコードに続く次の２バイトのコードを前記文字データ列から切り出す〈ステップＳ６〉。そしてこの２バイトのコードが、サロゲートペア文字の特定に用いる下位２バイトコード［ＤＣ００］〜［ＤＦＦＦ］であるか否かを判定する〈ステップＳ７〉。
【００２０】
尚、次の２バイトのコードが上記［ＤＣ００］〜［ＤＦＦＦ］ではない場合には、前述した［Ｄ８００］〜［ＤＢＦＦ］で示されたコードがサロゲートペア文字を特定するものではなかったとして、そのコードをそのまま出力し〈ステップＳ４〉、前記制御パラメータCOUNTを（＋２）して元の処理ルーチンに復帰する〈ステップＳ５〉。この場合には、上述した次の２バイトのコードが再度切り出されることになるが、このコードは［ＤＣ００］〜［ＤＦＦＦ］ではないので〈ステップＳ３〉、そのまま出力されることになる〈ステップＳ４〉。
【００２１】
一方、前述した次の２バイトのコードが上記［ＤＣ００］〜［ＤＦＦＦ］であった場合には〈ステップＳ７〉、連続する２つの２バイトコードによって、つまり上位２バイトコード［Ｄ８００］〜［ＤＢＦＦ］、および下位２バイトコード［ＤＣ００］〜［ＤＦＦＦ］の組にてサロゲートペア文字が特定されていることになる。そこで前述した変換テーブル２２を参照し、これらの４バイトのコードに対応付けられた２バイトのコード、つまり前述した外字（サロゲート文字）を特定するコードを求める〈ステップＳ８〉。
【００２２】
そしてこの２バイトのコードを前記４バイトの文字コードに代えて前記文字処理システム１０に出力することで、前述した入力文字コード列中に含まれる４バイトのサロゲートペア文字を、２バイトの外字（サロゲート文字）に置換する〈ステップＳ９〉。このようにしてサロゲートペア文字を特定する４バイトのコードを処理した後には、前述した制御パラメータCOUNTを４バイト分増大させるべく（＋４）し〈ステップＳ１０〉、前述したステップＳ２からの処理を繰り返し実行する。この制御パラメータCOUNTの増分処理によって上述した如くコード変換されたサロゲートペア文字に続く次の２バイトのコードが前記入力文字データ列中から切り出されることになる。
【００２３】
以上の処理は入力された文字コード列を構成する複数の文字コードに対して順に実行される。この結果、２バイトのコードで示されるサロゲートペア文字以外の文字（ユニコードにおいて定義される標準的な文字等）についてはそのまま出力され、また４バイトのコードで示されるサロゲートペア文字については、２バイトの外字（サロゲート文字）に置換されて出力される。そしてこのような置換処理が施された文字コード列は、例えば前記データファイル１１に書き込まれて前述した２バイト固定長の文字処理システム１０がそのまま処理し得るデータとして用いられる。
【００２４】
かくして本発明に係る文字コード処理装置によれば、入力された文字コード列にサロゲートペア文字が含まれる場合であっても、サロゲートペア文字を特定する４バイトのコードを予めフォントファイル１２の外字領域１２ａに登録した２バイトの外字（サロゲートペア文字）として取り扱うことが可能となる。従ってプリンタ１３やディスプレイ１４に対する文字フォントの出力を簡易に、且つ正確に実行することができる。従って従来のシステムのように文字コード列中に存在するサロゲートペア文字が文字化けして出力されたり、出力文字数が増大する等の不具合を招来することがない。しかも２バイト固定長の文字処理システム１０の最上位に組み込まれた文字データ入力部１０において、入力された文字コード列に対して１回だけ前述したコード変換処理を実行するだけで良いので全システムにおける処理負担が軽く、２バイト固定長の文字処理システム１０が有する本来の機能の損なわれることがない等の効果が奏せられる。
【００２５】
尚、本発明は上述した実施形態に限定されるものではない。例えばフォントファイル１２への外字（サロゲート文字）の登録については、入力文字データ列がサロゲートペア文字が検出される都度、予め準備された文字フォントデータ中から当該サロゲートペア文字のフォントを抽出して行うようにすれば良い。また予め特定された言語での文字コード処理だけを実行することが明らかである場合には、その言語体系において用いられるサロゲートペア文字を予め求め、これをフォントファイル１２に登録しておけば十分である。この場合、サロゲートペア文字を特定する４バイトコードと外字登録するサロゲート文字の２バイトコードとの対応関係を予め標準化しておけば、コード置換処理を施してデータファイル１１に登録した文字コード列を、異なる２バイト固定長の文字処理システム１０間において共用することが可能となるので、その利便性を高めることが可能となる。
【００２６】
また上述した如く標準化した外字としてのサロゲート文字のフォントと、サロゲートペア文字を特定する４バイトコードとの関係を示す変換テーブル２２を備えた文字データ入力部（文字コード処理装置）２０とをパッケージ・ソフト化して提供するようにすれば、既存の各種の２バイト固定長の文字処理システム１０において上記パッケージ・ソフトを導入するだけでサロゲートペア文字を簡易に取り扱うことが可能となる。従って既存の２バイト固定長の文字処理システムをそのまま有効に活用することが可能となるので、その実用的利点が多大である。その他、本発明はその要旨を逸脱しない範囲で種々変形して実施することができる。
【図面の簡単な説明】
【００２７】
【図１】本発明の一実施形態に係る文字コード処理装置の概略構成を示す図。
【図２】サロゲートペア文字とユニコードの外字領域に外字として登録されるサロゲート文字との関係を示す図。
【図３】変換テーブルの構成例を示す図。
【図４】サロゲートペア文字のコード変換処理手順の例を示す図。
【図５】２バイトコードで示されるユニコード文字と４バイトコードで示されるサロゲートベア文字とを対比して示す図。
【図６】ＵＴＦ-１６で定義されるサロゲートペア文字を説明する為の図。
【符号の説明】
【００２８】
１０  ２バイト固定長の文字処理システム
１１  データファイル
１２  フォントファイル
１２ａ  外字領域
１３  プリンタ
１４  ディスプレイ
２０  文字データ入力部（文字コード処理装置）
２１  サロゲートペア文字検出手段
２２  変換テーブル
２３  文字コード置換手段
【図１】
2009042980.tif 000003
【図２】
2009042980.tif 000004
【図３】
2009042980.tif 000005
【図４】
2009042980.tif 000006
【図５】
2009042980.tif 000007
【図６】
2009042980.tif 000008