JPH07244661A - 未知のキャラクタのグリフを発生するシステム及び方法 - Google Patents
未知のキャラクタのグリフを発生するシステム及び方法Info
- Publication number
- JPH07244661A JPH07244661A JP6341035A JP34103594A JPH07244661A JP H07244661 A JPH07244661 A JP H07244661A JP 6341035 A JP6341035 A JP 6341035A JP 34103594 A JP34103594 A JP 34103594A JP H07244661 A JPH07244661 A JP H07244661A
- Authority
- JP
- Japan
- Prior art keywords
- glyph
- character
- text element
- characters
- code
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/153—Digital output to display device ; Cooperation and interconnection of the display device with other functional units using cathode-ray tubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1408—Methods for optical code recognition the method being specifically adapted for the type of code
- G06K7/143—Glyph-codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
- G06K19/06009—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking
- G06K19/06037—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking multi-dimensional coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Electromagnetism (AREA)
- Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Controls And Circuits For Display Device (AREA)
- Document Processing Apparatus (AREA)
Abstract
(57)【要約】 (修正有)
【目的】 入力コードポイントの流れに基づいて、グリ
フをレンダリングする。 【構成】 各テキストエレメントは、コードポイントで
形成され、入力テキストエレメントを表すグリフに対し
てルックアップテーブルをサーチし、それが見つからな
い場合にテキストエレメントのサブセットを整然と発生
し、そのサブセットの各々を表すグリフに対してルック
アップテーブルをサーチする。ルックアップテーブルに
表されないコードポイントに対しては、デフォールトキ
ャラクタが発生される。システムは、ユニコード分類の
ような各コードポイントの分類を使用して、その分類に
基づき未知のコードポイントを処理する。テキストエレ
メントが接合キャラクタを中間にもつ2つのキャラクタ
を含み、テキストエレメント全体がルックアップテーブ
ルに表されない場合は、2つのキャラクタが個別にレン
ダリングされるように出力される。
フをレンダリングする。 【構成】 各テキストエレメントは、コードポイントで
形成され、入力テキストエレメントを表すグリフに対し
てルックアップテーブルをサーチし、それが見つからな
い場合にテキストエレメントのサブセットを整然と発生
し、そのサブセットの各々を表すグリフに対してルック
アップテーブルをサーチする。ルックアップテーブルに
表されないコードポイントに対しては、デフォールトキ
ャラクタが発生される。システムは、ユニコード分類の
ような各コードポイントの分類を使用して、その分類に
基づき未知のコードポイントを処理する。テキストエレ
メントが接合キャラクタを中間にもつ2つのキャラクタ
を含み、テキストエレメント全体がルックアップテーブ
ルに表されない場合は、2つのキャラクタが個別にレン
ダリングされるように出力される。
Description
【0001】
【産業上の利用分野】本発明は、複数のコードポイント
より成るテキストエレメントからグリフを発生する方法
に係る。
より成るテキストエレメントからグリフを発生する方法
に係る。
【0002】
【従来の技術】コンピュータの使用が世界中で急増し、
大半の言語を表現する人々が現在では普通に文書を作成
しそしてコンピュータやワークステーションを用いて国
際通信を行うようになったために、異なる言語の話し手
間に伝えられる情報が、これら言語をレンダリングする
ためのプリンタ及びディスプレイシステムと相互に両立
することが益々重要となってきている。国際規格が開発
され、これは、まだ広範囲なものではないが、世界中の
アルファベット文書のほとんどを既にカバーしている。
この規格は、「ザ・ユニコード・スタンダード/ワール
ドワイド・キャラクタ・エンコーディング」(Addi
son−Wesley,ISBN 0−201−567
88−1)である。(本明細書で取り上げる出版物各々
は、参考として引用するものである。)ユニコードは、
これが網羅する言語のための各文字、区分符、音調記号
又はその他の特殊文字に対するエンコード手段を果たす
ものである。ユニコードについての更に別の情報は、G
アダムス著の「ユニコードの紹介(Introduct
ion to Unicode)」、マサチューセッツ
州ケンブリッジのインスティテュート・フォア・アドバ
ンスド・プロフェッショナル・スタディーズによるユニ
コード・インプレメンターズ・ワークショップ(199
2年8月6日)及びプロシーディングズ・オブ・ユニコ
ード・コンソチウム/ユニコード・インプレメンターズ
・ワークショップ(ユニコード・インク及びタリジェン
ト)に見ることができ、特に、次のワークショップ・プ
ロシーディングズに見ることができる。「非スペースマ
ーク(Non−spacingMarks)」、ユニコ
ード・インプレメンターズ・ワークショップ#2(ニュ
ーハンプシャー、メリマック、1993年3月12−1
3日);Mデービズ著の「非スペースマークを取り扱う
ための戦略(Strategies for Hand
ling Non−spacing Marks)」及
びTヤマサキ著の「プリントサーバにおけるユニコード
(Unicode on Print Server
s)」−−これらは両方とも、ユニコード・インプレメ
ンターズ・ワークショップ#3(カリフォルニア州サン
ノセ、1992年8月6−7日)。
大半の言語を表現する人々が現在では普通に文書を作成
しそしてコンピュータやワークステーションを用いて国
際通信を行うようになったために、異なる言語の話し手
間に伝えられる情報が、これら言語をレンダリングする
ためのプリンタ及びディスプレイシステムと相互に両立
することが益々重要となってきている。国際規格が開発
され、これは、まだ広範囲なものではないが、世界中の
アルファベット文書のほとんどを既にカバーしている。
この規格は、「ザ・ユニコード・スタンダード/ワール
ドワイド・キャラクタ・エンコーディング」(Addi
son−Wesley,ISBN 0−201−567
88−1)である。(本明細書で取り上げる出版物各々
は、参考として引用するものである。)ユニコードは、
これが網羅する言語のための各文字、区分符、音調記号
又はその他の特殊文字に対するエンコード手段を果たす
ものである。ユニコードについての更に別の情報は、G
アダムス著の「ユニコードの紹介(Introduct
ion to Unicode)」、マサチューセッツ
州ケンブリッジのインスティテュート・フォア・アドバ
ンスド・プロフェッショナル・スタディーズによるユニ
コード・インプレメンターズ・ワークショップ(199
2年8月6日)及びプロシーディングズ・オブ・ユニコ
ード・コンソチウム/ユニコード・インプレメンターズ
・ワークショップ(ユニコード・インク及びタリジェン
ト)に見ることができ、特に、次のワークショップ・プ
ロシーディングズに見ることができる。「非スペースマ
ーク(Non−spacingMarks)」、ユニコ
ード・インプレメンターズ・ワークショップ#2(ニュ
ーハンプシャー、メリマック、1993年3月12−1
3日);Mデービズ著の「非スペースマークを取り扱う
ための戦略(Strategies for Hand
ling Non−spacing Marks)」及
びTヤマサキ著の「プリントサーバにおけるユニコード
(Unicode on Print Server
s)」−−これらは両方とも、ユニコード・インプレメ
ンターズ・ワークショップ#3(カリフォルニア州サン
ノセ、1992年8月6−7日)。
【0003】使用できる別のコード化システムは、ユニ
バーサルストリング又は10646ストリングであり、
これは、ユニバーサル・キャラクタ・コードセットIS
O/IEC10646を含む。これについては、「情報
技術−ユニバーサル・マルチプル・オクテット・コード
・キャラクタセット」(UCS)(1993年)という
総称のもとにISO及びIECジョイント・テクニカル
・コミッティーISO/IEC JTC1により作成さ
れた「ISO/IEC国際規格10646−1(199
3年)」に規定されている。この10646コードセッ
トは、その大半がユニコードに類似しており、1064
6システムの欠点も、ユニコードに類似している。以下
の説明は、これら両方のエンコードシステム及び他のこ
のようなエンコードシステムに関する。
バーサルストリング又は10646ストリングであり、
これは、ユニバーサル・キャラクタ・コードセットIS
O/IEC10646を含む。これについては、「情報
技術−ユニバーサル・マルチプル・オクテット・コード
・キャラクタセット」(UCS)(1993年)という
総称のもとにISO及びIECジョイント・テクニカル
・コミッティーISO/IEC JTC1により作成さ
れた「ISO/IEC国際規格10646−1(199
3年)」に規定されている。この10646コードセッ
トは、その大半がユニコードに類似しており、1064
6システムの欠点も、ユニコードに類似している。以下
の説明は、これら両方のエンコードシステム及び他のこ
のようなエンコードシステムに関する。
【0004】コンピュータシステムは、ユニコード、1
0646又はその他のエンコードされたキャラクタのス
トリングを解読するときには、レンダリングプロセスを
実行してこれらのキャラクタを表示又はプリントする。
3つの従来のレンダリング手順は、カーニング(飾りひ
げ(kerning))テーブル、ルックアップテーブ
ル及びリガチャ(連字(ligature))テーブル
を個別に又はある組み合わせで使用する。レンダリング
システムへの入力は、コードポイント(即ち、キャラク
タの2進コード化表示)の流れであり、そして出力は、
各入力キャラクタコードに対するグリフ(glyph)
コードである。グリフとは、キャラクタを単一表示又は
プリントセルで表示したものであり、多数の潜在的に独
立したキャラクタの組み合わせである。例えば、7つの
異なるグリフを以下に示す。 ドポイントと、ウムラウトに対するコードポイントと、
アンダーラインに対するコードポイントとによって表さ
れる。現在のシステムでは、これら3つのコードポイン
トが組み合わされ、単一のグリフが表示される。
0646又はその他のエンコードされたキャラクタのス
トリングを解読するときには、レンダリングプロセスを
実行してこれらのキャラクタを表示又はプリントする。
3つの従来のレンダリング手順は、カーニング(飾りひ
げ(kerning))テーブル、ルックアップテーブ
ル及びリガチャ(連字(ligature))テーブル
を個別に又はある組み合わせで使用する。レンダリング
システムへの入力は、コードポイント(即ち、キャラク
タの2進コード化表示)の流れであり、そして出力は、
各入力キャラクタコードに対するグリフ(glyph)
コードである。グリフとは、キャラクタを単一表示又は
プリントセルで表示したものであり、多数の潜在的に独
立したキャラクタの組み合わせである。例えば、7つの
異なるグリフを以下に示す。 ドポイントと、ウムラウトに対するコードポイントと、
アンダーラインに対するコードポイントとによって表さ
れる。現在のシステムでは、これら3つのコードポイン
トが組み合わされ、単一のグリフが表示される。
【0005】ルックアップテーブルを使用するときに
は、レンダリングシステムは、コードポイントをテーブ
ル内のものと比較し、特定のコードポイントの組み合わ
せが見つかった場合には、出力は、単に、ルックアップ
テーブルのそのエントリーで見つかったグリフとなる。
は、レンダリングシステムは、コードポイントをテーブ
ル内のものと比較し、特定のコードポイントの組み合わ
せが見つかった場合には、出力は、単に、ルックアップ
テーブルのそのエントリーで見つかったグリフとなる。
【0006】レンダリングシステムは、更に、リガチャ
テーブルをチェックし、文字の特定の組合わせのリガチ
ャ(連字)を形成する。多くの言語(アラビア語のよう
な)は、リガチャが極めて少なく、そして英語は、「f
i」に対する「fi」、「ffi」に対する「ffi」
及び「fl」に対する「fl」のような若干のリガチャ
を有する。英語におけるこれらのリガチャは任意である
が、他のアルファベットにおいては、リガチャは、文書
言語に必要とされる特徴である。アラビア語のリガチャ
をレンダリングするコンピュータ処理及び同様の問題の
分析が、Jベッカ著の「マルチリンガル・ワードプロセ
ッシング(Multilingal Word Pro
cessing)」、サイエンティフィック・アメリカ
ン、1984年6月、及びJベッカ著の「アラビア語の
ワードプロセッシング(Arabic Word Pr
ocessing)」、コミュニケーションズ・オブ・
ザ・エイシーエム、1987年7月(第30巻、第7
号)に見られる。
テーブルをチェックし、文字の特定の組合わせのリガチ
ャ(連字)を形成する。多くの言語(アラビア語のよう
な)は、リガチャが極めて少なく、そして英語は、「f
i」に対する「fi」、「ffi」に対する「ffi」
及び「fl」に対する「fl」のような若干のリガチャ
を有する。英語におけるこれらのリガチャは任意である
が、他のアルファベットにおいては、リガチャは、文書
言語に必要とされる特徴である。アラビア語のリガチャ
をレンダリングするコンピュータ処理及び同様の問題の
分析が、Jベッカ著の「マルチリンガル・ワードプロセ
ッシング(Multilingal Word Pro
cessing)」、サイエンティフィック・アメリカ
ン、1984年6月、及びJベッカ著の「アラビア語の
ワードプロセッシング(Arabic Word Pr
ocessing)」、コミュニケーションズ・オブ・
ザ・エイシーエム、1987年7月(第30巻、第7
号)に見られる。
【0007】又、レンダリングシステムは、カーニング
テーブルもチェックし、グリフの特定の組み合わせの分
離、即ち表示又はプリントされるキャラクタ間の分離を
決定する。
テーブルもチェックし、グリフの特定の組み合わせの分
離、即ち表示又はプリントされるキャラクタ間の分離を
決定する。
【0008】上記の3つのシステムは、多数の言語を受
け入れるように組み合わせて使用することができる。ラ
テン系のアルファベットは、特に取り扱いが簡単であ
る。しかしながら、多くの言語は、文字、音調記号及び
他のキャラクタを互いに組み合わせることについて複雑
なルールを有し、これらの解決策には適していない。
け入れるように組み合わせて使用することができる。ラ
テン系のアルファベットは、特に取り扱いが簡単であ
る。しかしながら、多くの言語は、文字、音調記号及び
他のキャラクタを互いに組み合わせることについて複雑
なルールを有し、これらの解決策には適していない。
【0009】カーニング及びリガチャテーブルは、ほと
んどのシステムでは、若干小規模であり、単一の言語に
対して表されねばならないキャラクタの数千もの考えら
れる組み合わせを受け入れることができず、例えば、タ
イ語は、2700もの考えられるキャラクタの組み合わ
せがあり、これは、ルックアップテーブル、リガチャテ
ーブル又はカーニングテーブルを受け入れられないほど
大きなものにし、各々の組み合わせをチェックし得ない
ほど多くの処理時間を占有することになる。
んどのシステムでは、若干小規模であり、単一の言語に
対して表されねばならないキャラクタの数千もの考えら
れる組み合わせを受け入れることができず、例えば、タ
イ語は、2700もの考えられるキャラクタの組み合わ
せがあり、これは、ルックアップテーブル、リガチャテ
ーブル又はカーニングテーブルを受け入れられないほど
大きなものにし、各々の組み合わせをチェックし得ない
ほど多くの処理時間を占有することになる。
【0010】同様に、アラビア文字は、初期、中間及び
最終形態の少なくとも3つの異なる方法で組み合わせる
ことができ、更に、他のものは、第4の(分離した)形
態を有する。これらの文字は、筆記言語において複雑な
リガチャを形成し、一般に、異なる文字形態の各々が異
なる形状を有する。これらを全て受け入れるようにリガ
チャテーブルを構成する場合には、テーブルが非常に大
きなものとなり、28文字のアルファベットについて考
えられる全ての組み合わせを記憶するには数千ものエン
トリが必要となる。
最終形態の少なくとも3つの異なる方法で組み合わせる
ことができ、更に、他のものは、第4の(分離した)形
態を有する。これらの文字は、筆記言語において複雑な
リガチャを形成し、一般に、異なる文字形態の各々が異
なる形状を有する。これらを全て受け入れるようにリガ
チャテーブルを構成する場合には、テーブルが非常に大
きなものとなり、28文字のアルファベットについて考
えられる全ての組み合わせを記憶するには数千ものエン
トリが必要となる。
【0011】韓国語及びベトナム語のような他の言語
も、同様に、多数の複雑な文字の組み合わせを形成す
る。特にこれら言語に対する特別なテーブルを同様の挑
戦方法で形成することは、これらテーブルの標準化及び
サイズの縮小化を妨げ、相当に多くのメモリを占有し、
しかも、それらをサーチするために多大な処理時間を必
要とすることになる。従って、単一の筆記アルファベッ
ト又はキャラクタセット以上のものを処理しなければな
らないシステム、即ち実際には国際的な目的で使用され
るシステムでは、アラビア語、韓国語、タイ語、ベトナ
ム語、英語、等々の文字のあらゆる考えられる組み合わ
せをもつカーニング及びリガチャテーブルを使用するこ
とは実用的でない。国際的に機能し得るレンダリングシ
ステムは、文字の組み合わせごとにテーブルエントリを
必要とせずに、これら全てのシステムにおいてキャラク
タの表示の変更を取り扱うことができねばならない。
も、同様に、多数の複雑な文字の組み合わせを形成す
る。特にこれら言語に対する特別なテーブルを同様の挑
戦方法で形成することは、これらテーブルの標準化及び
サイズの縮小化を妨げ、相当に多くのメモリを占有し、
しかも、それらをサーチするために多大な処理時間を必
要とすることになる。従って、単一の筆記アルファベッ
ト又はキャラクタセット以上のものを処理しなければな
らないシステム、即ち実際には国際的な目的で使用され
るシステムでは、アラビア語、韓国語、タイ語、ベトナ
ム語、英語、等々の文字のあらゆる考えられる組み合わ
せをもつカーニング及びリガチャテーブルを使用するこ
とは実用的でない。国際的に機能し得るレンダリングシ
ステムは、文字の組み合わせごとにテーブルエントリを
必要とせずに、これら全てのシステムにおいてキャラク
タの表示の変更を取り扱うことができねばならない。
【0012】ユーザがテーブルの1つに特に見当たらな
いキャラクタを入力するときには、 音譜の付いた)を入力しようとしたり(これは所与のシ
ステムでは拒絶されないことがある)、又はラテンアル
ファベット以外のキャラクタにラテン式のアクセントを
もつような他のキャラクタを形成することがある。この
ような文字の一例 れは、予め定義されたアルファベットに存在しない組み
合わせである。このような特別なキャラクタは、従来の
システムでは取り扱うことができず、定義されていない
キャラクタに遭遇したときには、典型的に、未知のコー
ドポイントに対するスペース又はデフォールト記号に単
に置き換えられる。
いキャラクタを入力するときには、 音譜の付いた)を入力しようとしたり(これは所与のシ
ステムでは拒絶されないことがある)、又はラテンアル
ファベット以外のキャラクタにラテン式のアクセントを
もつような他のキャラクタを形成することがある。この
ような文字の一例 れは、予め定義されたアルファベットに存在しない組み
合わせである。このような特別なキャラクタは、従来の
システムでは取り扱うことができず、定義されていない
キャラクタに遭遇したときには、典型的に、未知のコー
ドポイントに対するスペース又はデフォールト記号に単
に置き換えられる。
【0013】
【発明が解決しようとする課題】従って、システムのテ
ーブルに予め定義されていないユーザの形成したグリフ
であっても、コードポイントを分析しそしてそのグリフ
にできるだけ近いものをレンダリングすることにより、
そのグリフを発生するシステムが要望される。これは、
特殊なキャラクタの大きなテーブルを形成せずに行わね
ばならない。より詳細には、タイ語、アラビア語、韓国
語等に見られる非常に多数のキャラクタの組み合わせを
受け入れることができる一方、リガチャ及びカーニング
テーブルのようなキャラクタテーブルのサイズを最小に
するシステムが要望される。
ーブルに予め定義されていないユーザの形成したグリフ
であっても、コードポイントを分析しそしてそのグリフ
にできるだけ近いものをレンダリングすることにより、
そのグリフを発生するシステムが要望される。これは、
特殊なキャラクタの大きなテーブルを形成せずに行わね
ばならない。より詳細には、タイ語、アラビア語、韓国
語等に見られる非常に多数のキャラクタの組み合わせを
受け入れることができる一方、リガチャ及びカーニング
テーブルのようなキャラクタテーブルのサイズを最小に
するシステムが要望される。
【0014】図1は、従来の解決策を実施してキャラク
タをレンダリングするシステムの一部分を示している。
このレンダリングシステム10は、中央処理ユニットの
メモリに常駐するアプリケーションであり、カーニング
テーブル50、グリフルックアップテーブル60及びリ
ガチャテーブル70を備えたフォントリソース40をア
クセスする。これらのテーブルもメモリに記憶される。
コードポイント20としてエンコードされたキャラクタ
は、レンダリングシステム10に入力され、該システム
は、そのコードポイントがテーブル50、60及び70
の1つ以上にいかにマップするかに基づいて出力グリフ
30を発生する。
タをレンダリングするシステムの一部分を示している。
このレンダリングシステム10は、中央処理ユニットの
メモリに常駐するアプリケーションであり、カーニング
テーブル50、グリフルックアップテーブル60及びリ
ガチャテーブル70を備えたフォントリソース40をア
クセスする。これらのテーブルもメモリに記憶される。
コードポイント20としてエンコードされたキャラクタ
は、レンダリングシステム10に入力され、該システム
は、そのコードポイントがテーブル50、60及び70
の1つ以上にいかにマップするかに基づいて出力グリフ
30を発生する。
【0015】キャラクタの2進コード化表示であるコー
ドポイント20は、ユーザによって入力されるか、或い
はファイル又は他のテキストソースから受け取られる。
ユニコードの場合には、各コードポイントは、16ビッ
ト(2バイト)ワードを構成する。以下の例は、ユニコ
ードについてであるが、本発明ではいかなるキャラクタ
エンコード機構も使用できる。
ドポイント20は、ユーザによって入力されるか、或い
はファイル又は他のテキストソースから受け取られる。
ユニコードの場合には、各コードポイントは、16ビッ
ト(2バイト)ワードを構成する。以下の例は、ユニコ
ードについてであるが、本発明ではいかなるキャラクタ
エンコード機構も使用できる。
【0016】到来するキャラクタ流を取り扱うための3
つの共通の手順(テーブル50ないし70に対応する)
の各々は、ある言語に対して特に利用することができ
る。レンダリングシステムは入力コードポイントをテー
ブルのエントリに合致させる。例えば、ワード「fin
ds」が入力されると、これは、ユニコードでは、次の
コードポイントによって表される。 「f」のコードポイントは「U+0066」であり、
「U+」は、ユニコードのコードポイントであることを
指示し、「0066」は文字の16進表示である。次に
「J」が来て、その後に、第2の文字「i」が続く。
「J」は、ここでは、「接合」を意味する特殊なユニコ
ード表示文字を表し、2つの文字をリガチャにおいて一
緒に接合すべきであることを指示し、即ち、この例で
は、fi(リガチャなし)がfi(リガチャで)とな
る。この接合文字「J」は、任意であるが、テキストエ
レメント「finds」が最初に発生されたアプリケー
ションによって発生されてもよいし、或いはユーザによ
って故意に入力されてもよい。「J」の後に、ワードの
残りに対するコードポイントが続く。
つの共通の手順(テーブル50ないし70に対応する)
の各々は、ある言語に対して特に利用することができ
る。レンダリングシステムは入力コードポイントをテー
ブルのエントリに合致させる。例えば、ワード「fin
ds」が入力されると、これは、ユニコードでは、次の
コードポイントによって表される。 「f」のコードポイントは「U+0066」であり、
「U+」は、ユニコードのコードポイントであることを
指示し、「0066」は文字の16進表示である。次に
「J」が来て、その後に、第2の文字「i」が続く。
「J」は、ここでは、「接合」を意味する特殊なユニコ
ード表示文字を表し、2つの文字をリガチャにおいて一
緒に接合すべきであることを指示し、即ち、この例で
は、fi(リガチャなし)がfi(リガチャで)とな
る。この接合文字「J」は、任意であるが、テキストエ
レメント「finds」が最初に発生されたアプリケー
ションによって発生されてもよいし、或いはユーザによ
って故意に入力されてもよい。「J」の後に、ワードの
残りに対するコードポイントが続く。
【0017】レンダリングシステム10は、テーブル5
0、60及び/又は70のいずれかを用いてこのワード
を処理するように構成できる。例えば、リガチャテーブ
ル70を最初にチェックし、次いで、ルックアップテー
ブル60をチェックし、そして最後に、カーニングテー
ブル50をチェックすることができる。「fi」のよう
なリガチャは、リガチャテーブルのみに記憶され勝ちで
あるが、他のアルファベットにおいては、文字の組み合
わせが、おそらく、リガチャ、ルックアップ及びカーニ
ングテーブルのいずれかに記憶されることになる。これ
は、例えば、母音又は音調記号を含む文字の組み合わせ
が多数あるタイ語の場合である。
0、60及び/又は70のいずれかを用いてこのワード
を処理するように構成できる。例えば、リガチャテーブ
ル70を最初にチェックし、次いで、ルックアップテー
ブル60をチェックし、そして最後に、カーニングテー
ブル50をチェックすることができる。「fi」のよう
なリガチャは、リガチャテーブルのみに記憶され勝ちで
あるが、他のアルファベットにおいては、文字の組み合
わせが、おそらく、リガチャ、ルックアップ及びカーニ
ングテーブルのいずれかに記憶されることになる。これ
は、例えば、母音又は音調記号を含む文字の組み合わせ
が多数あるタイ語の場合である。
【0018】リガチャテーブル70は、問題とする特定
のアルファベットに対しリガチャの例を表すために選択
された1組の考えられるコードポイント(CP6、CP
9、・・・CPx、CPy、CPz)を表す。例えば、
CP6は「f」を表し、そしてCP9は「i」を表し、
従って、CP6−CP6−CP9は、「ffi」に対す
るコードポイント表示である。レンダリングシステム
は、このシーケンスをテーブル70において位置決め
し、従って、シーケンス「ffi」を出力するのではな
く、交換グリフ「ffi」に置き換える。他の特定の場
合は、リガチャテーブルに記憶される。
のアルファベットに対しリガチャの例を表すために選択
された1組の考えられるコードポイント(CP6、CP
9、・・・CPx、CPy、CPz)を表す。例えば、
CP6は「f」を表し、そしてCP9は「i」を表し、
従って、CP6−CP6−CP9は、「ffi」に対す
るコードポイント表示である。レンダリングシステム
は、このシーケンスをテーブル70において位置決め
し、従って、シーケンス「ffi」を出力するのではな
く、交換グリフ「ffi」に置き換える。他の特定の場
合は、リガチャテーブルに記憶される。
【0019】上記の例では、「find」は、先ずルッ
クアップテーブルを見て、そして文字「f」を位置決め
することにより分析することができる。次いで、システ
ムは、リガチャテーブル70を見て「f」で始まるリガ
チャがあるかどうか調べ、そして「fi」を表すエント
リ「CP6−CP9」(シーケンス0066−0069
に対応する)を位置決めする。接合文字「J」は、ロガ
チャが所望されることを指示し、従って、グリフ「f
i」が出力される。
クアップテーブルを見て、そして文字「f」を位置決め
することにより分析することができる。次いで、システ
ムは、リガチャテーブル70を見て「f」で始まるリガ
チャがあるかどうか調べ、そして「fi」を表すエント
リ「CP6−CP9」(シーケンス0066−0069
に対応する)を位置決めする。接合文字「J」は、ロガ
チャが所望されることを指示し、従って、グリフ「f
i」が出力される。
【0020】ストリング「nds」を表す次のコードポ
イントは、各コードポイントごとにグリフの形状及びグ
リフの巾を含むルックアップテーブル60において位置
決めされる。最終的に、全ての入力コードポイント20
がグリフ30として出力される。
イントは、各コードポイントごとにグリフの形状及びグ
リフの巾を含むルックアップテーブル60において位置
決めされる。最終的に、全ての入力コードポイント20
がグリフ30として出力される。
【0021】それとは別に、又はそれに加えて、コード
ポイントは、キャラクタの予め定められたシーケンス間
の間隔を取り扱うように構成されたカーニングテーブル
50においても見つけられる。例えば、「f」と「i」
との間の間隔は、カーニングテーブルにおいてシーケン
ス「CP6−CP9」を位置決めすることにより決定さ
れる(接合キャラクタを無視して)。これらのテーブル
は、ルックアップテーブルがグリフの形状及び巾を返送
しそしてカーニングテーブルがキャラクタ間の間隔を返
送するように組み合わせて使用することができる。
ポイントは、キャラクタの予め定められたシーケンス間
の間隔を取り扱うように構成されたカーニングテーブル
50においても見つけられる。例えば、「f」と「i」
との間の間隔は、カーニングテーブルにおいてシーケン
ス「CP6−CP9」を位置決めすることにより決定さ
れる(接合キャラクタを無視して)。これらのテーブル
は、ルックアップテーブルがグリフの形状及び巾を返送
しそしてカーニングテーブルがキャラクタ間の間隔を返
送するように組み合わせて使用することができる。
【0022】以上のことから、レンダリングシステムが
返送することのできるグリフは、テーブルのサイズによ
って限定されることが明らかであろう。更に、2つ以上
のキャラクタを組み合わせ又は接合することにより形成
されるグリフについては、巾 がある。リガチャテーブルは、形状の最適化を与える
が、上記のように、これらのテーブルの中で、数千もの
既存の考えられる文字の組み合わせ、及び通常は使用さ
れないがユーザがある特殊な目的でプリントしようとす
る非常に僅かな考え る。従って、テーブルのサイズを不当に増加することな
くこれらの特殊な場合を取り扱うためのシステムが要望
される。
返送することのできるグリフは、テーブルのサイズによ
って限定されることが明らかであろう。更に、2つ以上
のキャラクタを組み合わせ又は接合することにより形成
されるグリフについては、巾 がある。リガチャテーブルは、形状の最適化を与える
が、上記のように、これらのテーブルの中で、数千もの
既存の考えられる文字の組み合わせ、及び通常は使用さ
れないがユーザがある特殊な目的でプリントしようとす
る非常に僅かな考え る。従って、テーブルのサイズを不当に増加することな
くこれらの特殊な場合を取り扱うためのシステムが要望
される。
【0023】
【課題を解決するための手段】本発明は、入力装置、記
憶されたファイル等から得られる入力コードポイントの
流れに基づいてグリフをレンダリングする装置及び方法
を提供する。コードポイントは、1つ以上の多数の予め
定められたクラスに分類され、そしてコードポイントの
流れのサブセットが、予め定められた正規表現の形態を
とるテキストエレメントにグループ分けされる。これら
の分類及びグループ分けは、ユニコード又は他の国際的
互換性のキャラクタコードを受け入れるように変更され
たLex又はYACC等で構成された構文解析(パー
ザ)によって実行される。
憶されたファイル等から得られる入力コードポイントの
流れに基づいてグリフをレンダリングする装置及び方法
を提供する。コードポイントは、1つ以上の多数の予め
定められたクラスに分類され、そしてコードポイントの
流れのサブセットが、予め定められた正規表現の形態を
とるテキストエレメントにグループ分けされる。これら
の分類及びグループ分けは、ユニコード又は他の国際的
互換性のキャラクタコードを受け入れるように変更され
たLex又はYACC等で構成された構文解析(パー
ザ)によって実行される。
【0024】1組のコードポイントから、多数のこのよ
うなテキストエレメントが構成される。その各々は、一
般に、間隔どり(ベース)キャラクタと、このベースキ
ャラクタとで表示又はプリントセルを共有する音調記
号、アクセント又は他の区分符のようなおそらくは1つ
以上の組み合わせキャラクタとを含んでいる。それに加
えて、又はそれに代わって、ベースキャラクタとでリガ
チャ(連字)を形成するか又はそれと一緒に飾りひげが
付けられる1つ以上の接合キャラクタがあってもよい。
うなテキストエレメントが構成される。その各々は、一
般に、間隔どり(ベース)キャラクタと、このベースキ
ャラクタとで表示又はプリントセルを共有する音調記
号、アクセント又は他の区分符のようなおそらくは1つ
以上の組み合わせキャラクタとを含んでいる。それに加
えて、又はそれに代わって、ベースキャラクタとでリガ
チャ(連字)を形成するか又はそれと一緒に飾りひげが
付けられる1つ以上の接合キャラクタがあってもよい。
【0025】
【実施例】本発明のシステムは、図2に示すモジュール
と共にソフトウェアで実施することができそして図3に
示す装置に使用することができる。図3のレンダリング
システムアプリケーション120は、コードポイント1
90を入力として有し、そしてグリフ200を出力とし
て発生し、これらは、次いで、レンダリングモジュール
260により表示のためにレンダリングされる。
と共にソフトウェアで実施することができそして図3に
示す装置に使用することができる。図3のレンダリング
システムアプリケーション120は、コードポイント1
90を入力として有し、そしてグリフ200を出力とし
て発生し、これらは、次いで、レンダリングモジュール
260により表示のためにレンダリングされる。
【0026】図2は、表示及びプリント機能を有するコ
ンピュータシステム80を示しており、このシステム
は、従来型のプロセッサ100及びメモリ110をもつ
コンピュータ90を備えている。メモリは、レンダリン
グシステム120、キャラクタテーブル130、モニタ
150を制御するディスプレイドライバ140、及びプ
リンタ170を制御するプリンタドライバ160を記憶
している。キャラクタは入力装置180からコードの流
れとして入力され、入力装置は、キーボード、テキスト
ファイル付きのディスク記憶装置、モデム、又はコード
化されたテキストの他のソースである。入力キャラクタ
を表すグリフは、モニタ150に表示されるか又はプリ
ンタ170でプリントされるようにレンダリングされ、
或いは他の装置に出力される。
ンピュータシステム80を示しており、このシステム
は、従来型のプロセッサ100及びメモリ110をもつ
コンピュータ90を備えている。メモリは、レンダリン
グシステム120、キャラクタテーブル130、モニタ
150を制御するディスプレイドライバ140、及びプ
リンタ170を制御するプリンタドライバ160を記憶
している。キャラクタは入力装置180からコードの流
れとして入力され、入力装置は、キーボード、テキスト
ファイル付きのディスク記憶装置、モデム、又はコード
化されたテキストの他のソースである。入力キャラクタ
を表すグリフは、モニタ150に表示されるか又はプリ
ンタ170でプリントされるようにレンダリングされ、
或いは他の装置に出力される。
【0027】図3は、レンダリングシステム120を形
成するソフトウェアモジュールの詳細な図である。図5
は、本発明の方法の全体的なフローチャートであり、そ
して図6は、本発明のフォールバックハンドラーのフロ
ーチャートである。図4は、本発明による正規表現の形
成を表す状態図である。
成するソフトウェアモジュールの詳細な図である。図5
は、本発明の方法の全体的なフローチャートであり、そ
して図6は、本発明のフォールバックハンドラーのフロ
ーチャートである。図4は、本発明による正規表現の形
成を表す状態図である。
【0028】以下、本発明を一般的に説明した後に、図
2ないし6のシステムを詳細に説明し、次いで、グリフ
がフォントリソースに見つからないときにフォールバッ
クハンドラーでグリフを処理する本発明の方法の広範な
処理について説明する。
2ないし6のシステムを詳細に説明し、次いで、グリフ
がフォントリソースに見つからないときにフォールバッ
クハンドラーでグリフを処理する本発明の方法の広範な
処理について説明する。
【0029】本発明のシステムは、図1に示す従来のシ
ステムと両立するが、以下で明らかとなるように、テー
ブル、特に、リガチャ及びカーニングテーブルのサイズ
を相当に減少することができる。
ステムと両立するが、以下で明らかとなるように、テー
ブル、特に、リガチャ及びカーニングテーブルのサイズ
を相当に減少することができる。
【0030】本発明の方法の一般的な説明 コードポイントをレンダリングできるようになる前に、
それらを分類しなければならず、これら分類は、以下に
詳細に述べるように、システムに対する正規表現を定め
るのに使用される。これらの分類及び正規表現は、Le
x又はYACCのようなコンパイラーの変形形態への入
力として使用され、これにより、図3に示す構文解析
(パーザ)220が発生される。これについては、ステ
ファン・ジョンソン著の「YACC:更に別のコンパイ
ラー」、ベル・ラボ(ニュージャージ州、マリーヒル)
を参照されたい。(YACCは、ほとんどのUNIX文
書で説明されている。)
それらを分類しなければならず、これら分類は、以下に
詳細に述べるように、システムに対する正規表現を定め
るのに使用される。これらの分類及び正規表現は、Le
x又はYACCのようなコンパイラーの変形形態への入
力として使用され、これにより、図3に示す構文解析
(パーザ)220が発生される。これについては、ステ
ファン・ジョンソン著の「YACC:更に別のコンパイ
ラー」、ベル・ラボ(ニュージャージ州、マリーヒル)
を参照されたい。(YACCは、ほとんどのUNIX文
書で説明されている。)
【0031】Lexは、ニュージャージ州、マリーヒル
のベル・ラボラトリーのM.Eレスク及びEシュミット
著の「Lex−レクシャル・アナライザー・ジェネレー
タ(A Lexial Analyzer Gener
ator)」に掲載されている。又、ザ・サンタクルー
ズ・オペレーション・インク(SCO PH:014−
036−900)によるSCO UNIX(登録商標)
システムV/386開発システムプログラマの手引き
(Development System Progr
ammer’s Guide)(特に、第2章:Lex
プログラミングの概要)を参照されたい。
のベル・ラボラトリーのM.Eレスク及びEシュミット
著の「Lex−レクシャル・アナライザー・ジェネレー
タ(A Lexial Analyzer Gener
ator)」に掲載されている。又、ザ・サンタクルー
ズ・オペレーション・インク(SCO PH:014−
036−900)によるSCO UNIX(登録商標)
システムV/386開発システムプログラマの手引き
(Development System Progr
ammer’s Guide)(特に、第2章:Lex
プログラミングの概要)を参照されたい。
【0032】Lexが使用されるかYACCが使用され
るかに係わりなく、従来のやり方で使用されて、パーザ
が発生され、このパーザは、入力コードポイントの分類
を決定するテスト機能を有しているが、ユニコードキャ
ラクタ及びクラスを読み取るように変更されている。こ
れを行うようにLexを変更することは単純であるが
(主として、使用できるコードポイントの長さを増加す
ることを伴う)、それ以外は、Lexは従来のやり方で
使用される。
るかに係わりなく、従来のやり方で使用されて、パーザ
が発生され、このパーザは、入力コードポイントの分類
を決定するテスト機能を有しているが、ユニコードキャ
ラクタ及びクラスを読み取るように変更されている。こ
れを行うようにLexを変更することは単純であるが
(主として、使用できるコードポイントの長さを増加す
ることを伴う)、それ以外は、Lexは従来のやり方で
使用される。
【0033】入力装置180(図2)から受け取られた
コードポイント190(図3)は、図5のステップ33
0においてパーザ220へ入力される。第1のコードポ
イントが読み取られ(ステップ340)、コマンドコー
ドフィルタ210(図3)によってフィルタされ(ステ
ップ350)、これは、システム又はアプリケーション
コマンドを表すコードポイントを抽出する。というの
は、これらは、表示されるべきグリフに対応しないから
である。コマンドコードフィルタ210は、従来設計の
ものである。
コードポイント190(図3)は、図5のステップ33
0においてパーザ220へ入力される。第1のコードポ
イントが読み取られ(ステップ340)、コマンドコー
ドフィルタ210(図3)によってフィルタされ(ステ
ップ350)、これは、システム又はアプリケーション
コマンドを表すコードポイントを抽出する。というの
は、これらは、表示されるべきグリフに対応しないから
である。コマンドコードフィルタ210は、従来設計の
ものである。
【0034】コードポイントが表示又はプリントされる
べきものである場合には、この方法はステップ360へ
進み、既に発生されている正規表現で定められた全テキ
ストエレメントを受け取ったかどうか決定する。この決
定は、分類ルーチン及びテーブル230に関連してパー
ザ220により実行される。もしそうでなければ、この
方法は、ステップ340へ復帰し、別のコードポイント
が読み取られて、ステップ350でフィルタされ、そし
てステップ360へ戻る。
べきものである場合には、この方法はステップ360へ
進み、既に発生されている正規表現で定められた全テキ
ストエレメントを受け取ったかどうか決定する。この決
定は、分類ルーチン及びテーブル230に関連してパー
ザ220により実行される。もしそうでなければ、この
方法は、ステップ340へ復帰し、別のコードポイント
が読み取られて、ステップ350でフィルタされ、そし
てステップ360へ戻る。
【0035】ルーチン及びテーブル230は、パーザ2
20により、入力コードポイントの分類を決定するのに
使用される。各コードポイントは分類を有し、そして所
与のシステムは、たとえそれが特定のアルファベット、
書法、等をレンダリングするのに必要なフォントリソー
ス(ルックアップテーブルを含む)を有していなくて
も、標準化されたコードポイントの全分類機構を記憶し
なければならない。従って、未知のキャラクタに遭遇し
たときには、たとえシステムがそのキャラクタをレンダ
リングできなくても、その分類に基づいて、例えば、そ
れが接合キャラクタであるか組み合わせキャラクタであ
るかに基づいて、異なる方法でそのキャラクタを処理す
ることができる。以下の説明では、この処理について例
示する。
20により、入力コードポイントの分類を決定するのに
使用される。各コードポイントは分類を有し、そして所
与のシステムは、たとえそれが特定のアルファベット、
書法、等をレンダリングするのに必要なフォントリソー
ス(ルックアップテーブルを含む)を有していなくて
も、標準化されたコードポイントの全分類機構を記憶し
なければならない。従って、未知のキャラクタに遭遇し
たときには、たとえシステムがそのキャラクタをレンダ
リングできなくても、その分類に基づいて、例えば、そ
れが接合キャラクタであるか組み合わせキャラクタであ
るかに基づいて、異なる方法でそのキャラクタを処理す
ることができる。以下の説明では、この処理について例
示する。
【0036】 ラクタで形成された文字)が構成されると、ステップ3
70において、ルックアップハンドラー240は、フォ
ントリソース(即ち、1組のテーブル130)において
テキストエレメントをルックアップする。対応するグリ
フが位置決めされた場合には(ステップ380)、それ
がステップ410において表示又はプリントされる。さ
もなくば、ステップ390において、フォールバックハ
ンドラー250によってフォールバック手順が呼び出さ
れ、入力テキストエレメントに対応するレンダリングす
べき適当なグリフを見つけるように試みる。
70において、ルックアップハンドラー240は、フォ
ントリソース(即ち、1組のテーブル130)において
テキストエレメントをルックアップする。対応するグリ
フが位置決めされた場合には(ステップ380)、それ
がステップ410において表示又はプリントされる。さ
もなくば、ステップ390において、フォールバックハ
ンドラー250によってフォールバック手順が呼び出さ
れ、入力テキストエレメントに対応するレンダリングす
べき適当なグリフを見つけるように試みる。
【0037】キャラクタ又はルックアップテーブル13
0は、所与のコードポイントに対するグリフを指定のフ
ォントで探すように従来の形態で使用される。特定のコ
ードポイントは、ユーザによってどのフォントが指定さ
れたかに基づいて異なるグリフの位置へ通じる。フォン
トリソース130のn個のルックアップテーブルで表さ
れるn個のフォントがある。
0は、所与のコードポイントに対するグリフを指定のフ
ォントで探すように従来の形態で使用される。特定のコ
ードポイントは、ユーザによってどのフォントが指定さ
れたかに基づいて異なるグリフの位置へ通じる。フォン
トリソース130のn個のルックアップテーブルで表さ
れるn個のフォントがある。
【0038】フォールバック手順が最初にステップ40
0において不首尾であった場合は、この方法はステップ
390へ復帰して、別の戦略を試みる。これは、所与の
フォールバックハンドラーモジュールの新たな繰り返
し、例えば、図6に示すステップ670ないし710に
おけるループの新たな繰り返し(以下に述べる)に到達
するか、又は、例えば、以下のルーチン4を実施するフ
ォールバックハンドラーソフトウェアモジュールからル
ーチン5を実施するソフトウェアモジュールへと切り換
わることにより、異なる解決策を試みて入力テキストエ
レメントのグリフの発生を試みることに到達する。種々
の戦略について以下に詳細に述べる。
0において不首尾であった場合は、この方法はステップ
390へ復帰して、別の戦略を試みる。これは、所与の
フォールバックハンドラーモジュールの新たな繰り返
し、例えば、図6に示すステップ670ないし710に
おけるループの新たな繰り返し(以下に述べる)に到達
するか、又は、例えば、以下のルーチン4を実施するフ
ォールバックハンドラーソフトウェアモジュールからル
ーチン5を実施するソフトウェアモジュールへと切り換
わることにより、異なる解決策を試みて入力テキストエ
レメントのグリフの発生を試みることに到達する。種々
の戦略について以下に詳細に述べる。
【0039】フォールバック手順が首尾良くいくか又は
尽きると、選択されたグリフ(1つ又は複数)200が
ステップ410においてレンダリング及び表示のために
出力される。レンダリングは、図3に示すレンダリング
モジュール260によって実行される。レンダリング及
び表示の両方は従来の手順により達成され、その詳細
は、使用される特定のハードウェア(プロセッサ、バ
ス、モニタ、プリンタ等)に基づく。
尽きると、選択されたグリフ(1つ又は複数)200が
ステップ410においてレンダリング及び表示のために
出力される。レンダリングは、図3に示すレンダリング
モジュール260によって実行される。レンダリング及
び表示の両方は従来の手順により達成され、その詳細
は、使用される特定のハードウェア(プロセッサ、バ
ス、モニタ、プリンタ等)に基づく。
【0040】更に多くのコードポイントが入力に存在す
る(ステップ420)場合には、この方法は、ステップ
340へ復帰して、残りのグリフを処理する。さもなく
ば、この方法は完了となり、ステップ430で退出す
る。
る(ステップ420)場合には、この方法は、ステップ
340へ復帰して、残りのグリフを処理する。さもなく
ば、この方法は完了となり、ステップ430で退出す
る。
【0041】上記したステップの順序を変更することが
でき、例えば、コードポイントを全て一度に入力し、読
み取りそしてフィルタし、次いで、ルックアップハンド
ラーへ送ることもできるし、或いはそれらが受け取られ
るにつれて読み取られてルックアップハンドラーへ入力
され、処理時間をスピードアップすることができる。出
力側では、グリフは、図5の方法のようにそれらが発生
されるときに表示されてもよいし、又は識別されてもよ
く、そしてグリフ(例えば、ビットマップされるか又は
ポストクリプト出力された)又はそれらの識別コード
が、RAM、VRAM或いは他の揮発性又は不揮発性メ
モリに適宜記憶される。
でき、例えば、コードポイントを全て一度に入力し、読
み取りそしてフィルタし、次いで、ルックアップハンド
ラーへ送ることもできるし、或いはそれらが受け取られ
るにつれて読み取られてルックアップハンドラーへ入力
され、処理時間をスピードアップすることができる。出
力側では、グリフは、図5の方法のようにそれらが発生
されるときに表示されてもよいし、又は識別されてもよ
く、そしてグリフ(例えば、ビットマップされるか又は
ポストクリプト出力された)又はそれらの識別コード
が、RAM、VRAM或いは他の揮発性又は不揮発性メ
モリに適宜記憶される。
【0042】ルックアップハンドラー及びフォールバッ
クハンドラーは、従来のルックアップハンドラーと新規
なフォールバックハンドラーとを明確に区別するために
図3には個別のソフトウェアモジュールとして示されて
いる。ルックアップハンドラー240は、そのほとんど
の部分については従来型でよいが、不首尾なグリフサー
チは更に処理するためにフォールバックハンドラー25
0にリファーしなければならない。実際に、ルックアッ
プハンドラー240及びフォールバックハンドラー25
0は、個別のグリフ検索モジュールを構成してもよい
し、或いは単一のグリフ検索モジュールとして実施され
てもよく、以下に述べる機能が与えられる限りその区別
は重要ではない。
クハンドラーは、従来のルックアップハンドラーと新規
なフォールバックハンドラーとを明確に区別するために
図3には個別のソフトウェアモジュールとして示されて
いる。ルックアップハンドラー240は、そのほとんど
の部分については従来型でよいが、不首尾なグリフサー
チは更に処理するためにフォールバックハンドラー25
0にリファーしなければならない。実際に、ルックアッ
プハンドラー240及びフォールバックハンドラー25
0は、個別のグリフ検索モジュールを構成してもよい
し、或いは単一のグリフ検索モジュールとして実施され
てもよく、以下に述べる機能が与えられる限りその区別
は重要ではない。
【0043】ステップ300:コードポイントの分類の
発生 本発明のシステムへのコードポイント入力は、国際規
格、本発明の実施例ではユニコード(Unicode)
規格、に合致するように標準化されるのが好ましい。従
って、この実施例におけるコードポイントの分類は、ユ
ニコード規格で見られるものと同じである。以下に述べ
る例では、これらの分類は次の通りである。テーブル1:コードポイントの分類 1.間隔どり:これは、最も典型的な分類であり、単一
の表示又はプリントセルを占有するグリフによって表さ
れた文字又は他のキャラクタを示す。間隔どりキャラク
タは、グリフの形状と、レンダラーが次のセルに対して
「間隔どり」すべきであるという指示子とを含む。ほと
んどのラテン及び漢朝系(例えば、中国語又は日本語)
のキャラクタは、間隔どりキャラクタである。 2.組み合わせ:このコードポイントは、関連するグリ
フを有するが、通常は表示テキストエレメント内の分離
において生じるものではなく、「間隔どり」グリフと通
常組み合わされるグリフを指示する。組み合わせキャラ
クタは、第2の最も共通のものであり、通常は手前の間
隔どりキャラクタの変更子である。ラテン系の書法で
は、組み合わせキャラクタは、区分符(アクセント、発
音符、ウムラウト/分音符、セディラ符号、等)を含
む。これらはタイ語のような他の書法においてより一般
的であり、母音及び音調符号を表すことができる。 3.コントロール:コントロールコードポイントは、ア
プリケーション又はオペレーティングシステムに対する
コマンドとして使用され、一般に、表示のためにレンダ
リングされない。関連するグリフはなく、コードポイン
トは、隣接するコードポイントのグリフマッピングに影
響しない。コントロールキャラクタは、フロントエンド
モジュールによってフィルタされ解読される。 4.接合:これは、2つの隣接するテキストエレメント
を1つのテキストエレメントとして処理させる特殊なキ
ャラクタクラスである。接合キャラクタは、特にラテン
アルファベットにおいては他のクラスより稀であるが、
重要である。ラテン系の書法では、接合キャラクタは、
2つのキャラクタ(fとiのような)間にリガチャ(連
字)を強制するか又は「3/4」を日付フォーマット
(3/4) 5.非接合:これは、2つの隣接するキャラクタが組み
合わせ又は接合テキストエレメントとして通常に処理さ
れるときにこれらのキャラクタを個別のテキストエレメ
ントとして処理させるような特殊なキャラクタクラスで
ある。非接合キャラクタは、最も稀であるが、ある書法
では重要である。例えば、アラビア語では、文字「la
m」及び「alif」は、それらが隣接するとき、通常
は1つのグリフとして書き込まれ、その接合は一般にレ
ンダリングシステムによって自動的に行われる。アラビ
ア語のアルファベットをプリントするときのようにそれ
らを分離する意図がある場合には、それらの間の非接合
キャラクタが個々の(非組み合わせの)グリフ形態を強
制する。
発生 本発明のシステムへのコードポイント入力は、国際規
格、本発明の実施例ではユニコード(Unicode)
規格、に合致するように標準化されるのが好ましい。従
って、この実施例におけるコードポイントの分類は、ユ
ニコード規格で見られるものと同じである。以下に述べ
る例では、これらの分類は次の通りである。テーブル1:コードポイントの分類 1.間隔どり:これは、最も典型的な分類であり、単一
の表示又はプリントセルを占有するグリフによって表さ
れた文字又は他のキャラクタを示す。間隔どりキャラク
タは、グリフの形状と、レンダラーが次のセルに対して
「間隔どり」すべきであるという指示子とを含む。ほと
んどのラテン及び漢朝系(例えば、中国語又は日本語)
のキャラクタは、間隔どりキャラクタである。 2.組み合わせ:このコードポイントは、関連するグリ
フを有するが、通常は表示テキストエレメント内の分離
において生じるものではなく、「間隔どり」グリフと通
常組み合わされるグリフを指示する。組み合わせキャラ
クタは、第2の最も共通のものであり、通常は手前の間
隔どりキャラクタの変更子である。ラテン系の書法で
は、組み合わせキャラクタは、区分符(アクセント、発
音符、ウムラウト/分音符、セディラ符号、等)を含
む。これらはタイ語のような他の書法においてより一般
的であり、母音及び音調符号を表すことができる。 3.コントロール:コントロールコードポイントは、ア
プリケーション又はオペレーティングシステムに対する
コマンドとして使用され、一般に、表示のためにレンダ
リングされない。関連するグリフはなく、コードポイン
トは、隣接するコードポイントのグリフマッピングに影
響しない。コントロールキャラクタは、フロントエンド
モジュールによってフィルタされ解読される。 4.接合:これは、2つの隣接するテキストエレメント
を1つのテキストエレメントとして処理させる特殊なキ
ャラクタクラスである。接合キャラクタは、特にラテン
アルファベットにおいては他のクラスより稀であるが、
重要である。ラテン系の書法では、接合キャラクタは、
2つのキャラクタ(fとiのような)間にリガチャ(連
字)を強制するか又は「3/4」を日付フォーマット
(3/4) 5.非接合:これは、2つの隣接するキャラクタが組み
合わせ又は接合テキストエレメントとして通常に処理さ
れるときにこれらのキャラクタを個別のテキストエレメ
ントとして処理させるような特殊なキャラクタクラスで
ある。非接合キャラクタは、最も稀であるが、ある書法
では重要である。例えば、アラビア語では、文字「la
m」及び「alif」は、それらが隣接するとき、通常
は1つのグリフとして書き込まれ、その接合は一般にレ
ンダリングシステムによって自動的に行われる。アラビ
ア語のアルファベットをプリントするときのようにそれ
らを分離する意図がある場合には、それらの間の非接合
キャラクタが個々の(非組み合わせの)グリフ形態を強
制する。
【0044】キャラクタは、2つ以上のクラスに属する
ことができる。各キャラクタの分類は、4つのフラグの
ビットフィールドにより次のように表すことができる。 これらフラグの各々は、TRUE(真)に対して値1を
有し、そしてFALSE(偽)に対して値0を有する。
組み合わせ及び間隔どり特性は相互に排他的であり、従
って、これら両方の特性を単一の「間隔どり」フラグ
(1=間隔どり、0=組み合わせ)で表すことができ
る。従って、分類0100(偽−真−偽−偽)を有する
キャラクタは、通常の間隔どりキャラクタである。
ことができる。各キャラクタの分類は、4つのフラグの
ビットフィールドにより次のように表すことができる。 これらフラグの各々は、TRUE(真)に対して値1を
有し、そしてFALSE(偽)に対して値0を有する。
組み合わせ及び間隔どり特性は相互に排他的であり、従
って、これら両方の特性を単一の「間隔どり」フラグ
(1=間隔どり、0=組み合わせ)で表すことができ
る。従って、分類0100(偽−真−偽−偽)を有する
キャラクタは、通常の間隔どりキャラクタである。
【0045】接合及び非接合特性は、相互に排他的では
なく、個別のフラグによって表されねばならない。例え
ば、アラビア文字「alif」は、それ自体、接合でも
非接合でもない。これは、文字「lam」と接合する
が、他のキャラクタ、例えば、デジット9とは接合しな
い。これはいずれの振る舞いも強制しないので、接合と
も非接合とも分類しない(従って、「alif」につい
ては、接合=偽、そして非接合=偽である。)
なく、個別のフラグによって表されねばならない。例え
ば、アラビア文字「alif」は、それ自体、接合でも
非接合でもない。これは、文字「lam」と接合する
が、他のキャラクタ、例えば、デジット9とは接合しな
い。これはいずれの振る舞いも強制しないので、接合と
も非接合とも分類しない(従って、「alif」につい
ては、接合=偽、そして非接合=偽である。)
【0046】CharClassesコードポイント分
類が与えられると、CharClassesのアレーに
おいて適当なフラグをセットすることにより各コードポ
イントのクラスを次のように指定することができる
(「//」はコメントを示す)。 上記コードは、ユニコード分類の全テーブルに対する構
造を示している。上記の・・・(点々)は、コードのブ
ロックが省略される場所を示し、全コードリストは、ほ
とんどの既知の書法を分類する数万行の長さであり、ほ
とんどの分類は、中国語及び日本語のような膨大なハン
グル(漢朝系)文字に専用とされる。
類が与えられると、CharClassesのアレーに
おいて適当なフラグをセットすることにより各コードポ
イントのクラスを次のように指定することができる
(「//」はコメントを示す)。 上記コードは、ユニコード分類の全テーブルに対する構
造を示している。上記の・・・(点々)は、コードのブ
ロックが省略される場所を示し、全コードリストは、ほ
とんどの既知の書法を分類する数万行の長さであり、ほ
とんどの分類は、中国語及び日本語のような膨大なハン
グル(漢朝系)文字に専用とされる。
【0047】上記したフラグのセットは、CharCl
assesビットフィールドに対す タとして分類され(第2のフラグのみが真であるか
ら)、一方、タイ語の非間隔 グが偽であり、特に、「間隔どり」フラグがそうである
から)ことが明らかであろう。
assesビットフィールドに対す タとして分類され(第2のフラグのみが真であるか
ら)、一方、タイ語の非間隔 グが偽であり、特に、「間隔どり」フラグがそうである
から)ことが明らかであろう。
【0048】上記のクラスのリストを他の言語へ拡張す
るために、付加的なクラスが定められる。例えば、韓国
語の書法は、音節を表すセルにおいて組み合わされる
「ジャモ(jamos)」と称するキャラクタのグルー
プを含んでいる。これらのキャラクタを組み合わせるル
ールは、ジャモが音節を開始するか継続するか終了する
かに基づいている。従って、韓国語の場合には、3つの
このような付加的なクラス(初期、中間及び最終)が必
要とされ、有効な正規表現(ステップ310の説明を参
照)は、例えば、IM*Fと表される。韓国語及び他の
書法は、本発明の例におけるものと同じ原理であるか
ら、ここでは詳細に説明しない。比較的小さな組のクラ
スで、世界中の書法のほとんどを取り扱うことができ
る。
るために、付加的なクラスが定められる。例えば、韓国
語の書法は、音節を表すセルにおいて組み合わされる
「ジャモ(jamos)」と称するキャラクタのグルー
プを含んでいる。これらのキャラクタを組み合わせるル
ールは、ジャモが音節を開始するか継続するか終了する
かに基づいている。従って、韓国語の場合には、3つの
このような付加的なクラス(初期、中間及び最終)が必
要とされ、有効な正規表現(ステップ310の説明を参
照)は、例えば、IM*Fと表される。韓国語及び他の
書法は、本発明の例におけるものと同じ原理であるか
ら、ここでは詳細に説明しない。比較的小さな組のクラ
スで、世界中の書法のほとんどを取り扱うことができ
る。
【0049】ステップ310:正規表現の発生 本発明は、上記分類に基づく文法を使用するもので、
「正規表現」は、テキストエレメントを指定するように
定義される。このLex式の文法においては、次のよう
な原子的形式を有する。 C コントロールが真であるいかなるコードポイントに
も合致する。 S 間隔どりが真であるあるいかなるコードポイントに
も合致する。 c 間隔どりが偽であるいかなるコードポイントにも合
致する。 J 接合が真であるいかなるコードポイントにも合致す
る。 N 非接合が真であるいかなるコードポイントにも合致
する。 次のものを含む正規表現の演算子を使用して、 + 1以上 * 0以上 | 又は これらの原子的クラスを正規表現のトークンへと組み合
わせることができる。 {control} C+ {cell} Sc*|c+N* {element} {cell} (J{cel
l})*
「正規表現」は、テキストエレメントを指定するように
定義される。このLex式の文法においては、次のよう
な原子的形式を有する。 C コントロールが真であるいかなるコードポイントに
も合致する。 S 間隔どりが真であるあるいかなるコードポイントに
も合致する。 c 間隔どりが偽であるいかなるコードポイントにも合
致する。 J 接合が真であるいかなるコードポイントにも合致す
る。 N 非接合が真であるいかなるコードポイントにも合致
する。 次のものを含む正規表現の演算子を使用して、 + 1以上 * 0以上 | 又は これらの原子的クラスを正規表現のトークンへと組み合
わせることができる。 {control} C+ {cell} Sc*|c+N* {element} {cell} (J{cel
l})*
【0050】従って、コントロールキャラクタは、「C
+」で表され、これは、コントロールキャラクタである
ことを指示すると共に、1以上のコントロールキャラク
タがストリングとして正当に生じ得ることを指示する。
+」で表され、これは、コントロールキャラクタである
ことを指示すると共に、1以上のコントロールキャラク
タがストリングとして正当に生じ得ることを指示する。
【0051】「cell」は、「Sc*」の1つのイン
スタンス又は「c+N*」の1以上のインスタンスの発
生である。「Sc*」は、単一の間隔どりキャラクタ及
びこれに続く0以上の組み合わせキャラクタを指示し、
従って、「Sccc」は、1つの間隔どりキャラクタと
それに続く3つの組み合わせキャラクタのストリングを
指示し、「Sc*」形式の正規表現である。ストリング
「cc」及び「cN」は、どちらも「c+N*」の形式
の正規表現であり、これは常に1以上の「c」キャラク
タ及びそれに続く0以上の「N」(非接合)キャラクタ
を有する。
スタンス又は「c+N*」の1以上のインスタンスの発
生である。「Sc*」は、単一の間隔どりキャラクタ及
びこれに続く0以上の組み合わせキャラクタを指示し、
従って、「Sccc」は、1つの間隔どりキャラクタと
それに続く3つの組み合わせキャラクタのストリングを
指示し、「Sc*」形式の正規表現である。ストリング
「cc」及び「cN」は、どちらも「c+N*」の形式
の正規表現であり、これは常に1以上の「c」キャラク
タ及びそれに続く0以上の「N」(非接合)キャラクタ
を有する。
【0052】「element」のアレーは、完了した
テキストエレメントを指し、そしてセル及びそれに続く
接合キャラクタの0以上のインスタンスと、別のセルと
で構成されるシリーズとして定められる。従って、接合
キャラクタを用いて多数のセルをテキストエレメントに
不定に連結することができる。
テキストエレメントを指し、そしてセル及びそれに続く
接合キャラクタの0以上のインスタンスと、別のセルと
で構成されるシリーズとして定められる。従って、接合
キャラクタを用いて多数のセルをテキストエレメントに
不定に連結することができる。
【0053】本発明のシステムは、有効トークンを確認
したときにパーザによって実行されるアクションルーチ
ンを指定するのにこれらの正規表現を使用する。好まし
い実施例では、Lex式の構文が使用される。
したときにパーザによって実行されるアクションルーチ
ンを指定するのにこれらの正規表現を使用する。好まし
い実施例では、Lex式の構文が使用される。
【0054】ステップ320:パーザの発生 クラス、正規表現及びアクションルーチンは、パーザ発
生器への入力として使用され、パーザ発生器は、上記し
たように、Lexと実質上同一であるが、ユニコードキ
ャラクタを読み取るように変更されている。これを行う
ようにLexを変更することは簡単なことであり、他の
点では、従来のように使用される。
生器への入力として使用され、パーザ発生器は、上記し
たように、Lexと実質上同一であるが、ユニコードキ
ャラクタを読み取るように変更されている。これを行う
ようにLexを変更することは簡単なことであり、他の
点では、従来のように使用される。
【0055】従って、変更されたLexは、パーザを発
生するのに使用される。パーザは、本質的に、最適化さ
れた状態マシンであって、キャラクタの入力流を読み取
り、それらを正規表現と比較し、そして完全なテキスト
エレメントを出力することができる。上記した正規表現
に対するこのような状態図のグラフ表示が図4に示され
ており、これは、正規表現の定義のテキスト形態とほと
んど同様に読み取ることができる。図4は従来型の状態
図であり、即ち状態はボックスで表され(そして整数の
参照番号500、510等で参照され)、一方、遷移は
状態間の矢印で示され、小数点の前「それが来た状態」
そして小数点の後の「それが進む状態」を表している小
数点参照番号によって参照される。例えば、遷移50
0.10は初期状態500から「部分セル1」状態へ進
むものである。
生するのに使用される。パーザは、本質的に、最適化さ
れた状態マシンであって、キャラクタの入力流を読み取
り、それらを正規表現と比較し、そして完全なテキスト
エレメントを出力することができる。上記した正規表現
に対するこのような状態図のグラフ表示が図4に示され
ており、これは、正規表現の定義のテキスト形態とほと
んど同様に読み取ることができる。図4は従来型の状態
図であり、即ち状態はボックスで表され(そして整数の
参照番号500、510等で参照され)、一方、遷移は
状態間の矢印で示され、小数点の前「それが来た状態」
そして小数点の後の「それが進む状態」を表している小
数点参照番号によって参照される。例えば、遷移50
0.10は初期状態500から「部分セル1」状態へ進
むものである。
【0056】各遷移は、その遷移が行われる場合に追加
されるべきキャラクタを指示する文字でマークされる。
例えば、遷移500.10は、間隔どりキャラクタをセ
ルに追加することを表し(「S」で示すように)、そし
て遷移510.10は、組み合わせ文字(c)を追加す
ることを表す。他の遷移は、接合については「J」で又
は非接合については「N」で示されており、そして
「S」及び「c」の他のインスタンスも示されている。
遷移510.20及び540.20は、キャラクタを追
加せず、所与のテキストエレメントを単に終了するだけ
である。
されるべきキャラクタを指示する文字でマークされる。
例えば、遷移500.10は、間隔どりキャラクタをセ
ルに追加することを表し(「S」で示すように)、そし
て遷移510.10は、組み合わせ文字(c)を追加す
ることを表す。他の遷移は、接合については「J」で又
は非接合については「N」で示されており、そして
「S」及び「c」の他のインスタンスも示されている。
遷移510.20及び540.20は、キャラクタを追
加せず、所与のテキストエレメントを単に終了するだけ
である。
【0057】従って、初期状態500でスタートして、
遷移500.10−510.10−510.10(再
度)−510.30−530.10−510.20に沿
って進むと、セル「SccJS」が構成され、これは上
記で定義した有効なテキストエレメントである。「cc
NJS」を構成するテキストエレメントも有効であり、
これは、遷移500.40−540.40−540.5
0−550.30−530.10−510.20をとる
ことにより表される。図4の状態図は、正規表現につい
ての上記で定めたリストに等価であることが検討により
明らかである。退出遷移510.20及び540.20
は、キャラクタストリングに明確に入れられるものでは
なくて、ストリングにおいてパーザが遭遇する次のエレ
メントが、「S」キャラクタのような有効な後続キャラ
クタの直後に別の「S」キャラクタが続く(これは英語
では最も一般的に生じる)ものではないときに行われ、
この場合には、パーザは、2つのキャラクタ間に終了コ
ードを自動的に挿入する。
遷移500.10−510.10−510.10(再
度)−510.30−530.10−510.20に沿
って進むと、セル「SccJS」が構成され、これは上
記で定義した有効なテキストエレメントである。「cc
NJS」を構成するテキストエレメントも有効であり、
これは、遷移500.40−540.40−540.5
0−550.30−530.10−510.20をとる
ことにより表される。図4の状態図は、正規表現につい
ての上記で定めたリストに等価であることが検討により
明らかである。退出遷移510.20及び540.20
は、キャラクタストリングに明確に入れられるものでは
なくて、ストリングにおいてパーザが遭遇する次のエレ
メントが、「S」キャラクタのような有効な後続キャラ
クタの直後に別の「S」キャラクタが続く(これは英語
では最も一般的に生じる)ものではないときに行われ、
この場合には、パーザは、2つのキャラクタ間に終了コ
ードを自動的に挿入する。
【0058】ステップ330−360コードポイントの
入力、読み取り及びフィルタ動作:テキストエレメント
の発生 図2及び3に示すレンダリングシステム120は、コー
ドポイントの流れをレンダリングのために読み込む。入
力コードポイントは、最初に読み取られてフィルタされ
(図5のステップ340及び350)、コントロールキ
ャラクタが抽出される。次いで、図5のステップ340
ないし420のループを開始し、テキストエレメントの
各々が検査されて、それがフォントリソースで表される
かどうか調べられる(ステップ380)。もしそうであ
れば、テキストエレメントが表示又はプリントされ(ス
テップ410)、次のテキストエレメントは、もしそれ
があれば、検査される(ステップ420及び340ない
し370)。次のエレメントがフォントリソースに見つ
からない場合には、フォールバック手順(ステップ39
0ないし400)が実行される。ステップ340ないし
420のループは、全ての入力コードポイントがレンダ
リングされるか又はその他取り扱われるまで続き、そし
てこの方法はステップ430で退出となる。
入力、読み取り及びフィルタ動作:テキストエレメント
の発生 図2及び3に示すレンダリングシステム120は、コー
ドポイントの流れをレンダリングのために読み込む。入
力コードポイントは、最初に読み取られてフィルタされ
(図5のステップ340及び350)、コントロールキ
ャラクタが抽出される。次いで、図5のステップ340
ないし420のループを開始し、テキストエレメントの
各々が検査されて、それがフォントリソースで表される
かどうか調べられる(ステップ380)。もしそうであ
れば、テキストエレメントが表示又はプリントされ(ス
テップ410)、次のテキストエレメントは、もしそれ
があれば、検査される(ステップ420及び340ない
し370)。次のエレメントがフォントリソースに見つ
からない場合には、フォールバック手順(ステップ39
0ないし400)が実行される。ステップ340ないし
420のループは、全ての入力コードポイントがレンダ
リングされるか又はその他取り扱われるまで続き、そし
てこの方法はステップ430で退出となる。
【0059】コードポイントは、ステップ340ないし
350において読み取られそしてフィルタされるが、こ
れは、完全なテキストエレメント、即ち図5により上記
で定められた有効な正規表現がステップ360において
識別されるまで行われる。ステップ340ないし360
は、パーザ220により分類ルーチン及びテーブル23
0を参照して実行される。従って、パーザは、ルックア
ップハンドラー240へ結果が送られる前にテキストエ
レメントの全ファイルを予め処理することができる。
350において読み取られそしてフィルタされるが、こ
れは、完全なテキストエレメント、即ち図5により上記
で定められた有効な正規表現がステップ360において
識別されるまで行われる。ステップ340ないし360
は、パーザ220により分類ルーチン及びテーブル23
0を参照して実行される。従って、パーザは、ルックア
ップハンドラー240へ結果が送られる前にテキストエ
レメントの全ファイルを予め処理することができる。
【0060】次に続くアクションルーチンは、フィルタ
ルーチンの中心として働き、次のような一連のコントロ
ールキャラクタに遭遇するときにパーザがノーオペレー
ション(他の命令を伴わないセミコロンによって表され
る)を実行すべきであることを指定する。 {control}; //コントロールキャラク
タを無視する これは、「コントロールキャラクタが位置決めされた場
合に、ノー(レンダリング)アクションを行う」と読み
取ることができる。一般に、この主のステートメントで
は、パーザは、行の左側にかぎかっこで現れる正規表現
を位置決めしそして確認する場合にその右側の擬似コー
ド表現を実行する。
ルーチンの中心として働き、次のような一連のコントロ
ールキャラクタに遭遇するときにパーザがノーオペレー
ション(他の命令を伴わないセミコロンによって表され
る)を実行すべきであることを指定する。 {control}; //コントロールキャラク
タを無視する これは、「コントロールキャラクタが位置決めされた場
合に、ノー(レンダリング)アクションを行う」と読み
取ることができる。一般に、この主のステートメントで
は、パーザは、行の左側にかぎかっこで現れる正規表現
を位置決めしそして確認する場合にその右側の擬似コー
ド表現を実行する。
【0061】ステップ340ないし360は、パーザが
テキストエレメントを構成する手順440(図5参照)
を形成する。テキストエレメントの形成は、上記の正規
表現によってイネーブルされる。ルックアップハンドラ
ー240及びフォールバックハンドラー250に送られ
るのは、個々のコードポイントではなくてこれらの完全
なテキストエレメントであり、以前のレンダリングシス
テムとは異なるレベルで入力コードポイントの分析が与
えられる。
テキストエレメントを構成する手順440(図5参照)
を形成する。テキストエレメントの形成は、上記の正規
表現によってイネーブルされる。ルックアップハンドラ
ー240及びフォールバックハンドラー250に送られ
るのは、個々のコードポイントではなくてこれらの完全
なテキストエレメントであり、以前のレンダリングシス
テムとは異なるレベルで入力コードポイントの分析が与
えられる。
【0062】ステップ370以降 パーザの中心部は、完全なテキストエレメントを確認し
たときに1つ以上のグリフを得て表示するアクションル
ーチンである。これは、次のような擬似コードで表され
る。ルーチン1:テキストエレメントの位置決め及び表示 (ステップ370−410) ルーチン1を実施するソフトウェアは、図2及び3に示
したレンダリングシステムアプリケーションの一部分で
あり、図3のアプリケーションモジュール210ないし
260に対するコントロールコードとして実行される。
ルーチン1によれば、テキストエレメントに遭遇したと
きに、2つのバッファされたアレー「element」
及び「glyph」が宣言され、そしてルーチン「fi
ng_glyph」(以下、参照)及び「displa
y」が実行される。「display」ルーチンは、テ
キスト又は他のキャラクタのようなグリフをレンダリン
グそしてスクリーンに表示するか、プリントするか、又
はそれらを検討のために出力するような従来のルーチン
である。
たときに1つ以上のグリフを得て表示するアクションル
ーチンである。これは、次のような擬似コードで表され
る。ルーチン1:テキストエレメントの位置決め及び表示 (ステップ370−410) ルーチン1を実施するソフトウェアは、図2及び3に示
したレンダリングシステムアプリケーションの一部分で
あり、図3のアプリケーションモジュール210ないし
260に対するコントロールコードとして実行される。
ルーチン1によれば、テキストエレメントに遭遇したと
きに、2つのバッファされたアレー「element」
及び「glyph」が宣言され、そしてルーチン「fi
ng_glyph」(以下、参照)及び「displa
y」が実行される。「display」ルーチンは、テ
キスト又は他のキャラクタのようなグリフをレンダリン
グそしてスクリーンに表示するか、プリントするか、又
はそれらを検討のために出力するような従来のルーチン
である。
【0063】ステップ370−380:テキストエレメ
ントのルックアップ 有効なテキストエレメントが見つかると、それがルック
アップハンドラー240(図3)へ通され、このハンド
ラーは、次いで、図5に示すステップ370のルックア
ップ手順を実行する。フォントリソースにおけるエレメ
ントの位置決めは、それ自体、従来型のデータベースル
ックアップである。ルックアップに対するサーチキー
は、パーザによりトークンとして確認された1つ以上の
エンコードされたキャラクタより成る入力テキストエレ
メントである。テキストエレメントがデータベースに存
在する場合には、ルックアップファンクションがグリフ
識別子を返送する。そうでない場合には、ルックアップ
ファンクションは、以下に述べるフォールバックファン
クションを呼び出す。
ントのルックアップ 有効なテキストエレメントが見つかると、それがルック
アップハンドラー240(図3)へ通され、このハンド
ラーは、次いで、図5に示すステップ370のルックア
ップ手順を実行する。フォントリソースにおけるエレメ
ントの位置決めは、それ自体、従来型のデータベースル
ックアップである。ルックアップに対するサーチキー
は、パーザによりトークンとして確認された1つ以上の
エンコードされたキャラクタより成る入力テキストエレ
メントである。テキストエレメントがデータベースに存
在する場合には、ルックアップファンクションがグリフ
識別子を返送する。そうでない場合には、ルックアップ
ファンクションは、以下に述べるフォールバックファン
クションを呼び出す。
【0064】グリフルックアップを実施するのに適した
擬似コードは、次の通りである。ルーチン2:グリフの探索(ステップ370−400) この擬似コードを実施するソフトウェアは、図3に示す
ルックアップハンドラー240に存在する。
擬似コードは、次の通りである。ルーチン2:グリフの探索(ステップ370−400) この擬似コードを実施するソフトウェアは、図3に示す
ルックアップハンドラー240に存在する。
【0065】ルーチン2は、「find_glyph」
を表示エレメント(即ちルーチン1で定めた「elem
ent」)と共に入力として宣言する。これは、ユニコ
ードキャラクタのアレーを示すユニコードの形式定義で
ある形式「UniChar」の定数として定められる
(ルーチンによって変化しないので)。名称「*ele
ment」は、典型的にパーザのバッファメモリに記憶
されるアレー「UniChar」の第1エレメントのポ
インタを示す。バッファメモリの8−ユニコード−キャ
ラクタ(16バイト)ブロックは、ステートメント「U
niChar element〔8〕」により次のエレ
メントアレーに対しルーチン1に保存される。
を表示エレメント(即ちルーチン1で定めた「elem
ent」)と共に入力として宣言する。これは、ユニコ
ードキャラクタのアレーを示すユニコードの形式定義で
ある形式「UniChar」の定数として定められる
(ルーチンによって変化しないので)。名称「*ele
ment」は、典型的にパーザのバッファメモリに記憶
されるアレー「UniChar」の第1エレメントのポ
インタを示す。バッファメモリの8−ユニコード−キャ
ラクタ(16バイト)ブロックは、ステートメント「U
niChar element〔8〕」により次のエレ
メントアレーに対しルーチン1に保存される。
【0066】ルーチン2は、ルックアップテーブルにお
ける最初の試みで見つかった各テキストエレメントに対
する単一のグリフのレンダリング及び表示を生じる。f
ind_fallback手順が呼び出された場合に
は、多数のグリフを出力することができる。
ける最初の試みで見つかった各テキストエレメントに対
する単一のグリフのレンダリング及び表示を生じる。f
ind_fallback手順が呼び出された場合に
は、多数のグリフを出力することができる。
【0067】出力は、バッファメモリにアレー「Gly
phID」で記憶されたグリフ識別コードであり、この
アレーに対するバッファメモリのブロックは、ステート
メント「GlyphID glyphs〔8〕」により
ルーチン1に保存されておりそしてこれも8個のユニコ
ードキャラクタ(16バイト)のサイズである。ポイン
タ「*glyphs」は、アレー「GlyphID」に
おける第1アドレスを指す。
phID」で記憶されたグリフ識別コードであり、この
アレーに対するバッファメモリのブロックは、ステート
メント「GlyphID glyphs〔8〕」により
ルーチン1に保存されておりそしてこれも8個のユニコ
ードキャラクタ(16バイト)のサイズである。ポイン
タ「*glyphs」は、アレー「GlyphID」に
おける第1アドレスを指す。
【0068】「search」手順は、フォントリソー
ス130において入力テキストエレメントを位置決めす
る従来のサーチファンクションであり、例えば、次の通
りである。ルーチン3:テキストエレメントのサーチ(ステップ3
70) これは、テキストエレメントがフォントリソースに存在
するかどうかを決定し、もしそうであれば、入力テキス
トエレメントに対応するグリフを表すコードを返送し、
そしてそれを、ルーチン1に保存されたグリフ位置にお
いてバッファメモリに入れる。サーチされる特定のルッ
クアップテーブルは、入力キャラクタに対しユーザによ
り指定されたフォントに基づくものである。
ス130において入力テキストエレメントを位置決めす
る従来のサーチファンクションであり、例えば、次の通
りである。ルーチン3:テキストエレメントのサーチ(ステップ3
70) これは、テキストエレメントがフォントリソースに存在
するかどうかを決定し、もしそうであれば、入力テキス
トエレメントに対応するグリフを表すコードを返送し、
そしてそれを、ルーチン1に保存されたグリフ位置にお
いてバッファメモリに入れる。サーチされる特定のルッ
クアップテーブルは、入力キャラクタに対しユーザによ
り指定されたフォントに基づくものである。
【0069】ルックアップハンドラー240は、このテ
キストエレメントをルックアップテーブル130におい
て位置決めすると、そのテキストエレメントに対するグ
リフを表すコードを、図5のステップ410に示すよう
にレンダリング及び表示又はプリントするためのレンダ
リングモジュール260へ入力として通す。次いで、シ
ステムは、ステップ420において、更にコードポイン
トがあるかどうかを決定し、もしあれば(例えば、ファ
イル終了指示子がないことにより示される)、この方法
は、次のテキストエレメントに対してステップ340へ
復帰する。
キストエレメントをルックアップテーブル130におい
て位置決めすると、そのテキストエレメントに対するグ
リフを表すコードを、図5のステップ410に示すよう
にレンダリング及び表示又はプリントするためのレンダ
リングモジュール260へ入力として通す。次いで、シ
ステムは、ステップ420において、更にコードポイン
トがあるかどうかを決定し、もしあれば(例えば、ファ
イル終了指示子がないことにより示される)、この方法
は、次のテキストエレメントに対してステップ340へ
復帰する。
【0070】テキストエレメントが見つからない場合
は、ルーチン3がNULLを復帰し、これにより、フォ
ールバック手順「find_fallback」が呼び
出される。
は、ルーチン3がNULLを復帰し、これにより、フォ
ールバック手順「find_fallback」が呼び
出される。
【0071】ステップ390−400:フォールバック
手順 フォールバックハンドラー250は、完全なテキストエ
レメントを入力として受け取り、それを多数の種々の方
法で処理することができる。一般に、戦略の選択は、ア
プリケーションに基づき、多数の戦略について以下に述
べる。商業的なアプリケーションは、典型的に、これら
戦略のあるサブセットを単一のフォールバックハンドラ
ーに組み込み、そのアプリケーションに対する最適な置
き換えグリフを得ている。
手順 フォールバックハンドラー250は、完全なテキストエ
レメントを入力として受け取り、それを多数の種々の方
法で処理することができる。一般に、戦略の選択は、ア
プリケーションに基づき、多数の戦略について以下に述
べる。商業的なアプリケーションは、典型的に、これら
戦略のあるサブセットを単一のフォールバックハンドラ
ーに組み込み、そのアプリケーションに対する最適な置
き換えグリフを得ている。
【0072】全てのフォールバック手順に対して共通な
ことは、ステップ340ないし360においてパーザに
より発生された完全なテキストエレメントで始まり、そ
してサブエレメント、即ちテキストエレメントのサブセ
ットを分析しながらその完全性を考えられる程度まで保
存するように試み、サブエレメントをシステムによって
表示できるかどうか判断することである。一般のフォー
ルバック方法が図6に示されており、これについて以下
に説明する。
ことは、ステップ340ないし360においてパーザに
より発生された完全なテキストエレメントで始まり、そ
してサブエレメント、即ちテキストエレメントのサブセ
ットを分析しながらその完全性を考えられる程度まで保
存するように試み、サブエレメントをシステムによって
表示できるかどうか判断することである。一般のフォー
ルバック方法が図6に示されており、これについて以下
に説明する。
【0073】1つの簡単なフォールバック手順は、デー
タベースで見つからなかった表示エ 置き換えることである。この解決策は、当然、未知のテ
キストエレメントに遭遇するような状況を取り扱うため
の構造をもたない現在システムによって使用される。
タベースで見つからなかった表示エ 置き換えることである。この解決策は、当然、未知のテ
キストエレメントに遭遇するような状況を取り扱うため
の構造をもたない現在システムによって使用される。
【0074】しかしながら、本発明は、入力テキストエ
レメントを分析して、そのテキストエレメントの内容、
即ち個々のコードポイント及びそれらの順序に基づく出
力を発生するようなフォールバックハンドラーを使用す
る。
レメントを分析して、そのテキストエレメントの内容、
即ち個々のコードポイント及びそれらの順序に基づく出
力を発生するようなフォールバックハンドラーを使用す
る。
【0075】以下に述べるフォールバック手順の各々
は、特定の設定において幾つかの効果と利用性を有す
る。次のルーチンで表されるフォールバック手順の重要
な共通の特徴は、図6のフローチャートに示す一般化さ
れたフォールバック手順において組み合わされ、これ
は、ルーチン4及び5の説明に続いて説明する。
は、特定の設定において幾つかの効果と利用性を有す
る。次のルーチンで表されるフォールバック手順の重要
な共通の特徴は、図6のフローチャートに示す一般化さ
れたフォールバック手順において組み合わされ、これ
は、ルーチン4及び5の説明に続いて説明する。
【0076】ルーチン4のフォールバック方法 本発明のフォールバック手順を実施するためのルーチン
4の擬似コードについて以下に説明する。ルーチン4:フォールバック手順(ステップ390−4
00)
4の擬似コードについて以下に説明する。ルーチン4:フォールバック手順(ステップ390−4
00)
【0077】表現「Length(element)−
1」は、テキストエレメントを構成するアレーにおける
最後の位置を表す。第1位置は(標準的な形態では)、
位置0とみなされ、第2は1とみなされ、等々となり、
従って、「element」マイナス1の長さは、最後
の位置となる。このエレメントを「0x0000」にセ
ットすると、アレー「element」をその位置で終
了させ、従って、アレーを自動的に短縮すると共に、以
下に述べるようにターミナルコードポイントを取り去
り、この行に再び遭遇したときには、その(短縮され
た)アレーの終わりの次のコードポイントが取り去ら
れ、等々となる。
1」は、テキストエレメントを構成するアレーにおける
最後の位置を表す。第1位置は(標準的な形態では)、
位置0とみなされ、第2は1とみなされ、等々となり、
従って、「element」マイナス1の長さは、最後
の位置となる。このエレメントを「0x0000」にセ
ットすると、アレー「element」をその位置で終
了させ、従って、アレーを自動的に短縮すると共に、以
下に述べるようにターミナルコードポイントを取り去
り、この行に再び遭遇したときには、その(短縮され
た)アレーの終わりの次のコードポイントが取り去ら
れ、等々となる。
【0078】ルーチン4のフォールバック手順は、組み
合わせマークを取り去り、残りのテキストサブエレメン
トがルックアップテーブルに見つかるテキストエレメン
トに それに続くウムラウト(これは組み合わせキャラクタで
ある)と、それに続く下線(これも組み合わせキャラク
タである)とで構成される3キャラクタテキストエレメ
ントとして表されるが、これは、ほとんどのフォントに
おけるグリフではない。このテキストエレメントは、3
つのキャラクタ「u¨_」に対応する形態「Scc」の
正規表現である。
合わせマークを取り去り、残りのテキストサブエレメン
トがルックアップテーブルに見つかるテキストエレメン
トに それに続くウムラウト(これは組み合わせキャラクタで
ある)と、それに続く下線(これも組み合わせキャラク
タである)とで構成される3キャラクタテキストエレメ
ントとして表されるが、これは、ほとんどのフォントに
おけるグリフではない。このテキストエレメントは、3
つのキャラクタ「u¨_」に対応する形態「Scc」の
正規表現である。
【0079】ルックアップハンドラー240は、このテ
キストエレメントをルックアップテーブル130におい
て位置決めしない場合に、ステップ380及び390に
示すようにこのテキストエレメントをフォールバックハ
ンドラー250に通す。フォールバックルーチンは、テ
キストエレメントにおける最後のキャラクタ(コードポ
イント)、この場合は下線を取り去ることにより始ま
る。これは、テキストサブエレメント「u¨」のみを残
し、次いで、フォールバックハンドラー250はテーブ
ル130において位置決めを行う。これは、次いで、出
力として(ボック レンダリングする。
キストエレメントをルックアップテーブル130におい
て位置決めしない場合に、ステップ380及び390に
示すようにこのテキストエレメントをフォールバックハ
ンドラー250に通す。フォールバックルーチンは、テ
キストエレメントにおける最後のキャラクタ(コードポ
イント)、この場合は下線を取り去ることにより始ま
る。これは、テキストサブエレメント「u¨」のみを残
し、次いで、フォールバックハンドラー250はテーブ
ル130において位置決めを行う。これは、次いで、出
力として(ボック レンダリングする。
【0080】テキストエレメント「u¨_」から下線キ
ャラクタが取り去られたときに、サ ーはウムライトを取り去る。次いで、「u」が位置決め
される。
ャラクタが取り去られたときに、サ ーはウムライトを取り去る。次いで、「u」が位置決め
される。
【0081】ルックアップテーブルにおいて単独のテキ
ストエレメントとしてウムラウトが位置決めされない場
合には、ダブルクォーテーションマーク「″」のような
既知のキャラクタとの置き換えが行われ、次いで、これ
が「u」と組み合わされて、
ストエレメントとしてウムラウトが位置決めされない場
合には、ダブルクォーテーションマーク「″」のような
既知のキャラクタとの置き換えが行われ、次いで、これ
が「u」と組み合わされて、
【0082】このような置き換えは、フォールバックハ
ンドラーソフトウェアモジュールを作り上げることがで
き、従って、システムは多数の異なるアプリケーション
に対してポータブルとなり、ウムラウトのような「未
知」のキャラクタに関する情報を記憶する必要がなく、
むしろ、フォールバック手順は、必要なときに、即ちテ
キストエレメントが見つからないとき、置き換えキャラ
クタが指定されたとき、及び置き換えキャラクタがルッ
クアップテーブルに存在するときに、置き換えを行う。
ンドラーソフトウェアモジュールを作り上げることがで
き、従って、システムは多数の異なるアプリケーション
に対してポータブルとなり、ウムラウトのような「未
知」のキャラクタに関する情報を記憶する必要がなく、
むしろ、フォールバック手順は、必要なときに、即ちテ
キストエレメントが見つからないとき、置き換えキャラ
クタが指定されたとき、及び置き換えキャラクタがルッ
クアップテーブルに存在するときに、置き換えを行う。
【0083】置き換えキャラクタは、2つ以上のキャラ
クタであってもよく、例えば、日本の「円」記号(¥)
に遭遇しそしてこれがルックアップテーブルに存在しな
い場合に、Yと2つのダッシュを¥のような単一のセル
に組み合わせて作り上げることができ、これも理想的で
はないが、意図されたキャラクタとして確認することが
できる。置き換えの別の有用な形式は、中国語、日本
語、シリル語等の非ラテン系アルファベットから音訳し
たキャラクタであり、従って、ユーザは、少なくとも、
実際のグリフがシステムに記憶されていないいかなるテ
キストの発音的表示を得る
クタであってもよく、例えば、日本の「円」記号(¥)
に遭遇しそしてこれがルックアップテーブルに存在しな
い場合に、Yと2つのダッシュを¥のような単一のセル
に組み合わせて作り上げることができ、これも理想的で
はないが、意図されたキャラクタとして確認することが
できる。置き換えの別の有用な形式は、中国語、日本
語、シリル語等の非ラテン系アルファベットから音訳し
たキャラクタであり、従って、ユーザは、少なくとも、
実際のグリフがシステムに記憶されていないいかなるテ
キストの発音的表示を得る
【0084】 最後に残ったコードポイント(「u」)がまだ見つから
ず、しかも、置き換えキ ようなデフォールトキャラクタである。これでも、(又
は好ましくは組み合わせキャラクタの場合には、ブラン
クを)ウムラウト及び下線と組み合わせて、見る者が少
なくともテキストエレメントに最初に含まれていた情報
の若干を得ることができる。同様に、フォールバックハ
ンドラーにとってウムラウトが完全に未知である場合に
は、これを省略し、「u」と下線だけでも表示すること
ができる。
ず、しかも、置き換えキ ようなデフォールトキャラクタである。これでも、(又
は好ましくは組み合わせキャラクタの場合には、ブラン
クを)ウムラウト及び下線と組み合わせて、見る者が少
なくともテキストエレメントに最初に含まれていた情報
の若干を得ることができる。同様に、フォールバックハ
ンドラーにとってウムラウトが完全に未知である場合に
は、これを省略し、「u」と下線だけでも表示すること
ができる。
【0085】フォールバック手順がいったん実行される
と、少なくとも1つのコードポイントがその端から取り
去られる。この取り去られた部分は、表示されるべき新
たな は、たとえテキストエレメント全体がルックアップテー
ブルに見つからなくてもサブエレメントはしばしば個々
に有効である。従って、「エレメント」の取り去られた
部分をセーブし、そしてルーチン4の後に、「エレメン
ト」をこの取り去られた部分に等しくセットし、そして
ルーチン1において、「find_glyph」手順を
再び呼び出すのが望ましい。
と、少なくとも1つのコードポイントがその端から取り
去られる。この取り去られた部分は、表示されるべき新
たな は、たとえテキストエレメント全体がルックアップテー
ブルに見つからなくてもサブエレメントはしばしば個々
に有効である。従って、「エレメント」の取り去られた
部分をセーブし、そしてルーチン4の後に、「エレメン
ト」をこの取り去られた部分に等しくセットし、そして
ルーチン1において、「find_glyph」手順を
再び呼び出すのが望ましい。
【0086】 ャラクタの両方がレンダリングのために保存され、後者
は組み合わせキャラクタ が見つかった場合と同じである。
は組み合わせキャラクタ が見つかった場合と同じである。
【0087】テキストエレメントの他部分をセーブする
ために、次の解決策が使用される。即ち、最後のキャラ
クタがテキストエレメントから取り出され(ルーチン4
と同様に)そしてその残り部分に対するグリフが位置決
めされる。最後のキャラクタがそれに関連したグリフそ
れ自体を有する場合には、他の位置決めされたグリフと
連結される。ルーチン4A
ために、次の解決策が使用される。即ち、最後のキャラ
クタがテキストエレメントから取り出され(ルーチン4
と同様に)そしてその残り部分に対するグリフが位置決
めされる。最後のキャラクタがそれに関連したグリフそ
れ自体を有する場合には、他の位置決めされたグリフと
連結される。ルーチン4A
【0088】上記の擬似コードは、例えば、元のテキス
トエレメントが、uのウムラウトに ていない場合に、繰り返される。このルーチンが最初に
呼び出されると、アクセ び出される。
トエレメントが、uのウムラウトに ていない場合に、繰り返される。このルーチンが最初に
呼び出されると、アクセ び出される。
【0089】このルーチンが第2回目に呼び出される
と、ウムライトが除去され、「u」のグリフそれ自体が
探索される。次いで、ウムラウトに対するグリフ(おそ
らくはフォールバックとしてダブルクォーテーションマ
ーク)がグリフ「u」と連結される。2つのキャラクタ
を実際に重ねプリントすることは、ハードウェアに特定
のことであり、バックスペース(あるプリンタ又はター
ミナルでは)や、特殊なエスケープシーケンス等を必要
とする。
と、ウムライトが除去され、「u」のグリフそれ自体が
探索される。次いで、ウムラウトに対するグリフ(おそ
らくはフォールバックとしてダブルクォーテーションマ
ーク)がグリフ「u」と連結される。2つのキャラクタ
を実際に重ねプリントすることは、ハードウェアに特定
のことであり、バックスペース(あるプリンタ又はター
ミナルでは)や、特殊なエスケープシーケンス等を必要
とする。
【0090】ルーチン5のフォールバック方法 別のフォールバック手順は、接合キャラクタを含むエレ
メントを分離したエレメントと置き換える。これは、ル
ーチン4に代わって又はそれに加えて使用される。例え
ば、使用できるフォントに存在する場合に四分の三の分
数フォーマット 「3/4」へと分解することができる。ルーチン5:別のフォールバックルーチン
メントを分離したエレメントと置き換える。これは、ル
ーチン4に代わって又はそれに加えて使用される。例え
ば、使用できるフォントに存在する場合に四分の三の分
数フォーマット 「3/4」へと分解することができる。ルーチン5:別のフォールバックルーチン
【0091】ルーチン5は、テキストエレメントを「接
合」キャラクタにおいてサブエレメントに分断し、従っ
て、「SccJS」は、「Scc」と「S」になり、
「J」は落とされる。これは、特定のシステムが所望の
リガチャセットをもたず、基本的なキャラクタを有する
ときに特に有用となる。例えば、所与のユーザシステム
が、アラビア語で考えられる数千の潜在的なリガチャを
含まず、基本的なアラビア語アルファベットを含む場合
にも、アラビア語のテキストを、文字を互いに分離した
状態でレンダリングし表示することができる。これは、
言語に対する表示の通常の形態ではないが、情報を全く
失うような別のやり方に対して好ましいものである。
又、これは、アルファベットをリストしたり又はアラビ
ア語(又は他のアルファベット)文字で数式を表現した
りするようにユーザが個々の文字をプリントしようとす
るときに実際に望ましいものである。
合」キャラクタにおいてサブエレメントに分断し、従っ
て、「SccJS」は、「Scc」と「S」になり、
「J」は落とされる。これは、特定のシステムが所望の
リガチャセットをもたず、基本的なキャラクタを有する
ときに特に有用となる。例えば、所与のユーザシステム
が、アラビア語で考えられる数千の潜在的なリガチャを
含まず、基本的なアラビア語アルファベットを含む場合
にも、アラビア語のテキストを、文字を互いに分離した
状態でレンダリングし表示することができる。これは、
言語に対する表示の通常の形態ではないが、情報を全く
失うような別のやり方に対して好ましいものである。
又、これは、アルファベットをリストしたり又はアラビ
ア語(又は他のアルファベット)文字で数式を表現した
りするようにユーザが個々の文字をプリントしようとす
るときに実際に望ましいものである。
【0092】ルーチン5の手順は、記憶する必要のある
リガチャ及びカーニングテーブルからの数千のエントリ
を排除できるという効果を有する。アラビア語のような
ある書法のリガチャは文字の形状を著しく変更するが、
タイ語及びベトナム語のような他の書法では、表示セル
のある予め定められた位置に組み合わせ文字を配置する
ことにより数干もの考えられる組み合わせを基本的に形
成することができる。このような書法における母音マー
ク、音調マーク及び他の組み合わせキャラクタは、読み
取られるべき根本的なキャラクタの基本形状を変更する
必要がないという点で英語の区分符(アクセント等)と
同様である。
リガチャ及びカーニングテーブルからの数千のエントリ
を排除できるという効果を有する。アラビア語のような
ある書法のリガチャは文字の形状を著しく変更するが、
タイ語及びベトナム語のような他の書法では、表示セル
のある予め定められた位置に組み合わせ文字を配置する
ことにより数干もの考えられる組み合わせを基本的に形
成することができる。このような書法における母音マー
ク、音調マーク及び他の組み合わせキャラクタは、読み
取られるべき根本的なキャラクタの基本形状を変更する
必要がないという点で英語の区分符(アクセント等)と
同様である。
【0093】一般化したフォールバック戦略 図6は、ルーチン4及び5の両方によってカバーされる
ケースを取り扱うための手順であって、一般的には、特
にテキストエレメントがJ又はcを含む場合に1つ以上
の未知のコードポイント(即ち、フォントリソースに見
つからない)をもつテキストエレメントを取り扱うため
の手順を示すフローチャートである。
ケースを取り扱うための手順であって、一般的には、特
にテキストエレメントがJ又はcを含む場合に1つ以上
の未知のコードポイント(即ち、フォントリソースに見
つからない)をもつテキストエレメントを取り扱うため
の手順を示すフローチャートである。
【0094】図6の手順は、ルックアップハンドラー2
40によりフォールバックハンドラー250に関連して
実行され、図5のステップ390ないし400を実施す
るための好ましい仕方を詳細に示すもので、フォールバ
ックハンドラーにより使用される方法を強調するもので
ある。ステップ620ないし660では、未知の接合
(J)キャラクタが取り去られ、さもなくば接合されて
いるキャラクタが個別のレンダリングのためにグリフリ
ストに加えられる。ステップ670ないし730では、
組み合わせ(c)キャラクタが位置決めされて除去さ
れ、残りのキャラクタが、テキストエレメントで使用さ
れるようにグリフリストに加えられる。組み合わせキャ
ラクタ情報を保持しながら除去される未知のキャラクタ
に対しテキストエレメント全体が整然とサーチされ、テ
キストエレメントの未知の部分が表示される。これは、
次の例において明らかである。
40によりフォールバックハンドラー250に関連して
実行され、図5のステップ390ないし400を実施す
るための好ましい仕方を詳細に示すもので、フォールバ
ックハンドラーにより使用される方法を強調するもので
ある。ステップ620ないし660では、未知の接合
(J)キャラクタが取り去られ、さもなくば接合されて
いるキャラクタが個別のレンダリングのためにグリフリ
ストに加えられる。ステップ670ないし730では、
組み合わせ(c)キャラクタが位置決めされて除去さ
れ、残りのキャラクタが、テキストエレメントで使用さ
れるようにグリフリストに加えられる。組み合わせキャ
ラクタ情報を保持しながら除去される未知のキャラクタ
に対しテキストエレメント全体が整然とサーチされ、テ
キストエレメントの未知の部分が表示される。これは、
次の例において明らかである。
【0095】例1:S1JUJS2 S1JUJS2の形式の入力テキストエレメントについ
て考える。S及びJはそれらの通常の意味をもち(各々
間隔どりキャラクタ及び接合キャラクタ)そしてS1及
びS2は既知の間隔どりキャラクタを表し、Uは未知の
間隔どりキャラクタを表す。Jは、出力グリフが3つの
全てのキャラクタS1、U及びS2を接合すべきである
ことを示す(それらが全て既知のキャラクタである場合
に)。
て考える。S及びJはそれらの通常の意味をもち(各々
間隔どりキャラクタ及び接合キャラクタ)そしてS1及
びS2は既知の間隔どりキャラクタを表し、Uは未知の
間隔どりキャラクタを表す。Jは、出力グリフが3つの
全てのキャラクタS1、U及びS2を接合すべきである
ことを示す(それらが全て既知のキャラクタである場合
に)。
【0096】これは、そのテキストを最初に発生したシ
ステムが、3つの間隔どりキャラクタが互いに接合され
たグリフを含む(S1JSunk.JS2の形式の)
が、現在テキストエレメントをレンダリングしようと試
みるシステムにおいて中央の「S」(Sunk.)が未
知であり、即ち「Sunk.」がルックアップテーブル
にエントリをもたない場合に生じ得る。Jは、出力グリ
フが3つのキャラクタS1、Sunk.及びS1全部の
接合を含むことを指示する(それらが全て既知のキャラ
クタである場合に)。
ステムが、3つの間隔どりキャラクタが互いに接合され
たグリフを含む(S1JSunk.JS2の形式の)
が、現在テキストエレメントをレンダリングしようと試
みるシステムにおいて中央の「S」(Sunk.)が未
知であり、即ち「Sunk.」がルックアップテーブル
にエントリをもたない場合に生じ得る。Jは、出力グリ
フが3つのキャラクタS1、Sunk.及びS1全部の
接合を含むことを指示する(それらが全て既知のキャラ
クタである場合に)。
【0097】接合キャラクタの例は、英語では稀である
が、他の言語では一般的である。2つのfの間及び第2
のfとiの間に接合文字「J」を用いることにより有効
なリガチャ「ffi」を形成することができる(が、こ
れは、第1のキャラクタが既知である場合に中央のキャ
ラクタが既知であるために上記のSJUJSパターンに
一致しない)。
が、他の言語では一般的である。2つのfの間及び第2
のfとiの間に接合文字「J」を用いることにより有効
なリガチャ「ffi」を形成することができる(が、こ
れは、第1のキャラクタが既知である場合に中央のキャ
ラクタが既知であるために上記のSJUJSパターンに
一致しない)。
【0098】更に生じ勝ちな状況は、3つのアラビア文
字alif−lam−sinにより形成されたリガチャ
を指示するために接合キャラクタを使用することであ
る。alif及びlamはリガチャにおいて一緒に接合
され、次いで、alif−lamリガチャがsinと接
合されて、3文字リガチャが形成される。
字alif−lam−sinにより形成されたリガチャ
を指示するために接合キャラクタを使用することであ
る。alif及びlamはリガチャにおいて一緒に接合
され、次いで、alif−lamリガチャがsinと接
合されて、3文字リガチャが形成される。
【0099】3つのキャラクタ全部が既知である場合
は、テキストエレメントがSJSJSの形態を有し、3
キャラクタのグリフも、alif−lamグリフもルッ
クアップテーブルにない場合には、本発明のシステム
は、3つの個別のキャラクタalif、lam、sin
をプリントアウトする
は、テキストエレメントがSJSJSの形態を有し、3
キャラクタのグリフも、alif−lamグリフもルッ
クアップテーブルにない場合には、本発明のシステム
は、3つの個別のキャラクタalif、lam、sin
をプリントアウトする
【0100】この場合に、中央のキャラクタ「lam」
は、alif及びsinが使用できる場合にはシステム
に使用できると仮定できるが、未知の新たなキャラクタ
が現れることも考えられる。ここに示す例は、この後者
の若干複雑なケースを分析する。
は、alif及びsinが使用できる場合にはシステム
に使用できると仮定できるが、未知の新たなキャラクタ
が現れることも考えられる。ここに示す例は、この後者
の若干複雑なケースを分析する。
【0101】本発明の方法では、既存のシステムで行わ
れているように単にテキストエレメント全体を破棄する
のではなくて、システムがテキストエレメント「S1J
UJS2」から情報の既知の部片を抽出して表示できる
ようにする。従って、ここでは、その中央部から「JU
J」を取り去って「S1S2」(最初と最後のS)を表
示するのが望ましい。
れているように単にテキストエレメント全体を破棄する
のではなくて、システムがテキストエレメント「S1J
UJS2」から情報の既知の部片を抽出して表示できる
ようにする。従って、ここでは、その中央部から「JU
J」を取り去って「S1S2」(最初と最後のS)を表
示するのが望ましい。
【0102】ステップ380(図5)では、テキストエ
レメント「S1JUJS2」に対してグリフは見つから
ず、従って、この方法は、ステップ390、即ち図6の
ステップ610へ進む。ステップ610は、テキストエ
レメントが空でないことを決定する。ステップ620で
は、サブエレメントがJの最初の発生までの(これを含
まない)テキストエレメントの部分として最初に定義さ
れ、そしてその第1のJが取り去られる。ここに示す例
では、これは、サブエレメントS1を残す。更に、サブ
エレメントは、TEMPとしてセーブされる。
レメント「S1JUJS2」に対してグリフは見つから
ず、従って、この方法は、ステップ390、即ち図6の
ステップ610へ進む。ステップ610は、テキストエ
レメントが空でないことを決定する。ステップ620で
は、サブエレメントがJの最初の発生までの(これを含
まない)テキストエレメントの部分として最初に定義さ
れ、そしてその第1のJが取り去られる。ここに示す例
では、これは、サブエレメントS1を残す。更に、サブ
エレメントは、TEMPとしてセーブされる。
【0103】サブエレメントは空ではなく(ステップ6
30)、それがルックアップテーブルにあると仮定する
と、ステップ660において、S1がグリフリストに添
付される(現在では、グリフリストの唯一のメンバーで
ある)。
30)、それがルックアップテーブルにあると仮定する
と、ステップ660において、S1がグリフリストに添
付される(現在では、グリフリストの唯一のメンバーで
ある)。
【0104】ステップ740において、サブエレメント
及びその直後に続く接合キャラクタJ(もしあれば)が
元のテキストエレメントから取り去られる。これは、
「S1JUJS2」から「S1J」を取り出し、「UJ
S2」をテキストエレメントとして残す。ステップ61
0に戻ると、これは空ではなく、従って、ステップ62
0において、「U」より成る新たなサブエレメントが発
生され、残りのJは、ステップ620(1)(a)で取
り去られる。ステップ620(2)において、サブエレ
メントはTEMPとしてセーブされる。
及びその直後に続く接合キャラクタJ(もしあれば)が
元のテキストエレメントから取り去られる。これは、
「S1JUJS2」から「S1J」を取り出し、「UJ
S2」をテキストエレメントとして残す。ステップ61
0に戻ると、これは空ではなく、従って、ステップ62
0において、「U」より成る新たなサブエレメントが発
生され、残りのJは、ステップ620(1)(a)で取
り去られる。ステップ620(2)において、サブエレ
メントはTEMPとしてセーブされる。
【0105】サブエレメントは、空ではない(ステップ
630)か、又はテーブル内に見つからない(ステップ
650)。これはcを含まず(ステップ670)、従っ
て、デフォールトグリフ(ボックス、ブランク等)がグ
リフリストに添付され(ステ タック内のcに対するグリフ(まだ何もない)がグリフ
リストに添付され、ステップ740では、「U」コード
ポイント(TEMPとしてセーブされた)がその直後の
「J」と共に除去される。これは、元のテキストエレメ
ントに「S2」のみを残す。
630)か、又はテーブル内に見つからない(ステップ
650)。これはcを含まず(ステップ670)、従っ
て、デフォールトグリフ(ボックス、ブランク等)がグ
リフリストに添付され(ステ タック内のcに対するグリフ(まだ何もない)がグリフ
リストに添付され、ステップ740では、「U」コード
ポイント(TEMPとしてセーブされた)がその直後の
「J」と共に除去される。これは、元のテキストエレメ
ントに「S2」のみを残す。
【0106】変更されたテキストエレメントは、空では
ない(ステップ610)。ステップ620では、テキス
トエレメントにJがなく、全テキストエレメントS2は
サブエレメントとして指定され(ステップ620(1)
(b))そしてTEMPとしてセーブされる(ステップ
620(2))。サブエレメントは空ではなく(ステッ
プ630)、テーブル内に見つかり(ステップ65
0)、従って、そのグリフコードはグリフリストに添付
され(ステップ660)、これは、現在、値「S1 が元のテキストエレメントから取り出され、このエレメ
ントそれ自体は、この時点までに「S2」に減少されて
おり、従って、空のストリングをテキストエレメントと
して残す。
ない(ステップ610)。ステップ620では、テキス
トエレメントにJがなく、全テキストエレメントS2は
サブエレメントとして指定され(ステップ620(1)
(b))そしてTEMPとしてセーブされる(ステップ
620(2))。サブエレメントは空ではなく(ステッ
プ630)、テーブル内に見つかり(ステップ65
0)、従って、そのグリフコードはグリフリストに添付
され(ステップ660)、これは、現在、値「S1 が元のテキストエレメントから取り出され、このエレメ
ントそれ自体は、この時点までに「S2」に減少されて
おり、従って、空のストリングをテキストエレメントと
して残す。
【0107】ステップ610において、テキストエレメ
ントは空であるから、グリフリストが返送される(ステ
ップ750)。次いで、この方法はステップ410(図
5)へ復帰し、グリフリストが通常通りに表示される。
ントは空であるから、グリフリストが返送される(ステ
ップ750)。次いで、この方法はステップ410(図
5)へ復帰し、グリフリストが通常通りに表示される。
【0108】以上のことから明らかなように、元のテキ
ストエレメント「S1JUJS2」 これは認知し得る。即ち、「U」は未知であるから表示
することができず、そして同じ理由で、S1、U及びS
2がいかに一緒に接合されるかを決定することができ
ず、従って、接合情報は破棄され、既知のキャラクタS
1及びS2のみが表 かれる。
ストエレメント「S1JUJS2」 これは認知し得る。即ち、「U」は未知であるから表示
することができず、そして同じ理由で、S1、U及びS
2がいかに一緒に接合されるかを決定することができ
ず、従って、接合情報は破棄され、既知のキャラクタS
1及びS2のみが表 かれる。
【0109】上記のalif−lamsinの例では、
キャラクタ「lam」が未知である(即ち、テー −sinとなり、デフォールトキャラクタが「lam」
を表す。
キャラクタ「lam」が未知である(即ち、テー −sinとなり、デフォールトキャラクタが「lam」
を表す。
【0110】例2:S1c1uc2 この例は、Scccの形式のものであり、第2の組み合
わせキャラクタc(uとして表される)は未知である
が、他のキャラクタはテーブルにおいて個々に見 セント及び下線であり、コードポイントは、u¨′_
(u、ウムラウト、アクセント、下線)の順序で現れ
る。このキャラクタの例外的な組み合わせは、本発明の
システムが取り扱いできる状況の形式を示すのに使用さ
れる。アクセント符号(′)は、このテキストエレメン
トをレンダリングしようと試みるシステムにとって未知
であり、即ちそのルックアップテーブルに現れないと仮
定する。これは例えば、ウムラウトや下線を有するがフ
ランス語式のアクセント符号はもたない純粋なドイツ語
システムにおいて起こり得ることである。
わせキャラクタc(uとして表される)は未知である
が、他のキャラクタはテーブルにおいて個々に見 セント及び下線であり、コードポイントは、u¨′_
(u、ウムラウト、アクセント、下線)の順序で現れ
る。このキャラクタの例外的な組み合わせは、本発明の
システムが取り扱いできる状況の形式を示すのに使用さ
れる。アクセント符号(′)は、このテキストエレメン
トをレンダリングしようと試みるシステムにとって未知
であり、即ちそのルックアップテーブルに現れないと仮
定する。これは例えば、ウムラウトや下線を有するがフ
ランス語式のアクセント符号はもたない純粋なドイツ語
システムにおいて起こり得ることである。
【0111】図5のステップ380においては、全テキ
ストエレメントS1c1uc2が見つかないと仮定し、
従って、この方法は、図6のステップ610へ進む。ス
テップ620に進むと、サブエレメントは、Jを含まな
いので、全テキストエレメントにセットされる。ステッ
プ630及び650は両方とも偽であり、そしてステッ
プ670は真を生じ、従って、ステップ690におい
て、サブエレメントは、S1c1uとなり、c2はスタ
ックに押し込まれる。
ストエレメントS1c1uc2が見つかないと仮定し、
従って、この方法は、図6のステップ610へ進む。ス
テップ620に進むと、サブエレメントは、Jを含まな
いので、全テキストエレメントにセットされる。ステッ
プ630及び650は両方とも偽であり、そしてステッ
プ670は真を生じ、従って、ステップ690におい
て、サブエレメントは、S1c1uとなり、c2はスタ
ックに押し込まれる。
【0112】このサブエレメントもテーブルになく(ス
テップ710)、ステップ670へ戻り、サブエレメン
トがまだ少なくとも1つのcを含むことが決定される。
ステップ690において、サブエレメントは、最後のc
を含まないそこまでの現在サブエレメントにセットさ
れ、これは、この場合に未知の組み合わせキャラクタu
である。(先に述べたように、パーザ220(図3)
は、たとえルックアップテーブルがuに対する適切なグ
リフに関する情報を有していなくても、キャラクタuの
分類を決定することができる。というのは、遭遇する全
てのコードポイントに対する分類がテーブル230に記
憶されるからである。)
テップ710)、ステップ670へ戻り、サブエレメン
トがまだ少なくとも1つのcを含むことが決定される。
ステップ690において、サブエレメントは、最後のc
を含まないそこまでの現在サブエレメントにセットさ
れ、これは、この場合に未知の組み合わせキャラクタu
である。(先に述べたように、パーザ220(図3)
は、たとえルックアップテーブルがuに対する適切なグ
リフに関する情報を有していなくても、キャラクタuの
分類を決定することができる。というのは、遭遇する全
てのコードポイントに対する分類がテーブル230に記
憶されるからである。)
【0113】今や、サブエレメントは、S1c1より成
り、ステップ700において、未知のキャラクタuがス
タックに押し込まれ、スタックは、今や、次の形態とな
る。キャラクタスタック u c2
り、ステップ700において、未知のキャラクタuがス
タックに押し込まれ、スタックは、今や、次の形態とな
る。キャラクタスタック u c2
【0114】ステップ710において、残りのサブエレ
メントS1c1がルックアップテーブル130に見つか
ったと仮定すると、ステップ720において、S1c1
に対する組み合わせグリフがグリフリストにおいて第1
のエレメントとして加えられる。残りの組み合わせキャ
ラクタに対するグリフ、この場合はu及びc2も、グリ
フリストに添付される(ステップ730)。uには、そ
の「組み合わせ」状態を保持しながらブランクデフォー
ルトキャラクタが与えられて、S1c1c2を表す組み
合わせグリフに対し、c2の既知のグリフを既知のグリ
フS1c1と組み合わせるようにしなければならない。
これにより、アクセント「′」に対する
メントS1c1がルックアップテーブル130に見つか
ったと仮定すると、ステップ720において、S1c1
に対する組み合わせグリフがグリフリストにおいて第1
のエレメントとして加えられる。残りの組み合わせキャ
ラクタに対するグリフ、この場合はu及びc2も、グリ
フリストに添付される(ステップ730)。uには、そ
の「組み合わせ」状態を保持しながらブランクデフォー
ルトキャラクタが与えられて、S1c1c2を表す組み
合わせグリフに対し、c2の既知のグリフを既知のグリ
フS1c1と組み合わせるようにしなければならない。
これにより、アクセント「′」に対する
【0115】未知のキャラクタ(アクセント)の組み合
わせ分類が未知であるか又は保持さ み合わされ、その後にアクセント符号に代わる非組み合
わせブランクが続き、そ わされる)。従って、本発明のシステムは、元通りにな
らない情報のみを省いて位置情報を含むできるだけ多く
の元の情報を保持する。
わせ分類が未知であるか又は保持さ み合わされ、その後にアクセント符号に代わる非組み合
わせブランクが続き、そ わされる)。従って、本発明のシステムは、元通りにな
らない情報のみを省いて位置情報を含むできるだけ多く
の元の情報を保持する。
【0116】これは、システムの別の効果、即ち多数の
異なる組み合わせ形態の文字及び記号をルックアップテ
ーブルに記憶する必要がないという効果を導く。本発明
のシステムは、レンダリング時にキャラクタを組み合わ
せることができるので、組み合わせキャラクタのテーブ
ルにおける多数のエントリを省略することができる。こ
れは、テーブルを形成して記憶する付加的な努力やメモ
リの消費を伴うことなくシステムを非常に融通性のある
ものにする。又、新たなキャラクタや、ユニコードのよ
うな標準的なコードセットに存在しないアルファベット
からのキャラクタも使用できるようにする。
異なる組み合わせ形態の文字及び記号をルックアップテ
ーブルに記憶する必要がないという効果を導く。本発明
のシステムは、レンダリング時にキャラクタを組み合わ
せることができるので、組み合わせキャラクタのテーブ
ルにおける多数のエントリを省略することができる。こ
れは、テーブルを形成して記憶する付加的な努力やメモ
リの消費を伴うことなくシステムを非常に融通性のある
ものにする。又、新たなキャラクタや、ユニコードのよ
うな標準的なコードセットに存在しないアルファベット
からのキャラクタも使用できるようにする。
【0117】入力テキスト流のレンダリング テキストエレメントは、システムによって読み取られる
ときに、確認されるキ (u、ウムラウト、下線)としてルックアップテーブル
に記憶されるが、u_¨(u、下線、ウムラウト)とし
て入力コードポイント流に現れてもよい。この場合に、
コードポイントの第1の順序は探索されるが(図5のス
テップ380において)、第2の順序は探索されない。
ときに、確認されるキ (u、ウムラウト、下線)としてルックアップテーブル
に記憶されるが、u_¨(u、下線、ウムラウト)とし
て入力コードポイント流に現れてもよい。この場合に、
コードポイントの第1の順序は探索されるが(図5のス
テップ380において)、第2の順序は探索されない。
【0118】これが不必要に起こらないよう、パーザ又
はフォールバックハンドラーのいずれかが入力コードポ
イントを好ましい順序に再順序付けするのが好ましい。
この場合に、システムは、母音に対するウムラウトがそ
の母音の直後に続くか及び/又は全ての下線コードポイ
ントがテキストエレメントの最後となるように確保する
ことができる。このルールのいずれかが、この例では、
u_¨(u、下線、ウムラウト)をu¨_(u、ウムラ
ウト、下線)へと再順序付けし、これにより、フォール
バックハンドラーがステップ610ないし750の手順
をたどらないように防止する。
はフォールバックハンドラーのいずれかが入力コードポ
イントを好ましい順序に再順序付けするのが好ましい。
この場合に、システムは、母音に対するウムラウトがそ
の母音の直後に続くか及び/又は全ての下線コードポイ
ントがテキストエレメントの最後となるように確保する
ことができる。このルールのいずれかが、この例では、
u_¨(u、下線、ウムラウト)をu¨_(u、ウムラ
ウト、下線)へと再順序付けし、これにより、フォール
バックハンドラーがステップ610ないし750の手順
をたどらないように防止する。
【0119】このような変更が図7に示されており、ス
テップ760は、所与のテキストエレメントにおけるコ
ードポイントが所定の順序であるかどうかをテストす
る。もしそうでなければ、テキストエレメントがステッ
プ780においてフォールバック手順の残り部分へ通さ
れる前に再順序付けされる(ステップ770)。
テップ760は、所与のテキストエレメントにおけるコ
ードポイントが所定の順序であるかどうかをテストす
る。もしそうでなければ、テキストエレメントがステッ
プ780においてフォールバック手順の残り部分へ通さ
れる前に再順序付けされる(ステップ770)。
【0120】多数の異なる順序付け機構を使用すること
ができ、そしてコードポイント又はそれらの分類に影響
することなく且つ真の表現の定義に影響することなくそ
れらを使用するようにパーザ又はフォールバックハンド
ラーをプログラムすることができる。これは、ユーザで
はなくてシステムからの非因習的な入力を取り扱いそし
てコード標準に従って到来する文字の新たな組み合わせ
を受け入れるための効率的なやり方であり、ルックアッ
プテーブルを再発生するのではなくて、パーザ又はフォ
ールバックハンドラーを簡単に変更する。
ができ、そしてコードポイント又はそれらの分類に影響
することなく且つ真の表現の定義に影響することなくそ
れらを使用するようにパーザ又はフォールバックハンド
ラーをプログラムすることができる。これは、ユーザで
はなくてシステムからの非因習的な入力を取り扱いそし
てコード標準に従って到来する文字の新たな組み合わせ
を受け入れるための効率的なやり方であり、ルックアッ
プテーブルを再発生するのではなくて、パーザ又はフォ
ールバックハンドラーを簡単に変更する。
【0121】例3:S1c1u1u2JUc2JS2 小文字のuが未知の組み合わせキャラクタを表しそして
他のキャラクタが前記の例のように定められた上記形態
のテキストストエレメントリングについて以下に考え
る。本発明の通常の分類表示においては、ScccJS
cJsの形態の、即ち間隔どりキャラクタの後に3つの
組み合わせキャラクタが続き、その後に、接合間隔どり
キャラクタが続き、その後に、別の組み合わせキャラク
タが続き、そして最後に別の接合間隔どりキャラクタが
続く形態のテキストエレメントがある。
他のキャラクタが前記の例のように定められた上記形態
のテキストストエレメントリングについて以下に考え
る。本発明の通常の分類表示においては、ScccJS
cJsの形態の、即ち間隔どりキャラクタの後に3つの
組み合わせキャラクタが続き、その後に、接合間隔どり
キャラクタが続き、その後に、別の組み合わせキャラク
タが続き、そして最後に別の接合間隔どりキャラクタが
続く形態のテキストエレメントがある。
【0122】この例は、滅多に起こらない複雑さのテキ
ストエレメントであるが、説明上は有用である。検討に
より、システムは、次のものを返送しなければならない
ことが明らかである。 c2>は接合グリフである(c2の組み合わせ特性のた
めに)。デフォールトボ 及びu2は落とされる。S2は単独である(手前のJが
落とされる)。
ストエレメントであるが、説明上は有用である。検討に
より、システムは、次のものを返送しなければならない
ことが明らかである。 c2>は接合グリフである(c2の組み合わせ特性のた
めに)。デフォールトボ 及びu2は落とされる。S2は単独である(手前のJが
落とされる)。
【0123】図6の方法を参照すれば、ステップ620
は、サブエレメントをS1c1u1u2にセットし、即
ち最初のJまでに(これを含まない)セットし、そして
それをTEMPとしてセーブする。ステップ630及び
650は両方とも否定でありそしてステップ670は肯
定であり、従って、ステップ690において、サブエレ
メントはS1c1u1となる(現在サブエレメントは、
最後のc、即ち最後の組み合わせキャラクタまでとなる
(これを含まない))。その最後の組み合わせキャラク
タはu2であり、スタックに第1エレメントとして押し
込まれる。
は、サブエレメントをS1c1u1u2にセットし、即
ち最初のJまでに(これを含まない)セットし、そして
それをTEMPとしてセーブする。ステップ630及び
650は両方とも否定でありそしてステップ670は肯
定であり、従って、ステップ690において、サブエレ
メントはS1c1u1となる(現在サブエレメントは、
最後のc、即ち最後の組み合わせキャラクタまでとなる
(これを含まない))。その最後の組み合わせキャラク
タはu2であり、スタックに第1エレメントとして押し
込まれる。
【0124】ステップ710は偽であり、ステップ67
0は依然肯定であり、従って、今やサブエレメントはS
1c1となり(ステップ690)、最後の組み合わせキ
ャラクタu1がスタックに押し込まれ(ステップ70
0)、スタックは、今や、次のようになる。キャラクタスタック u1 u2 S1c1のグリフが所与のフォントに対しルックアップ
テーブル(図3のテーブル130の1つ)において見つ
かったと仮定すれば、そのグリフはステップ720にお
いてグリフリストに記憶され、そしてu1及びu2はキ
ャラクタスタックから飛び出され、グリフリストに同様
に加えられる(ステップ730)。今や、キャラクタス
タックは空となり、グリフリストは次のようになる。グリフリスト S1c1 u1 u2
0は依然肯定であり、従って、今やサブエレメントはS
1c1となり(ステップ690)、最後の組み合わせキ
ャラクタu1がスタックに押し込まれ(ステップ70
0)、スタックは、今や、次のようになる。キャラクタスタック u1 u2 S1c1のグリフが所与のフォントに対しルックアップ
テーブル(図3のテーブル130の1つ)において見つ
かったと仮定すれば、そのグリフはステップ720にお
いてグリフリストに記憶され、そしてu1及びu2はキ
ャラクタスタックから飛び出され、グリフリストに同様
に加えられる(ステップ730)。今や、キャラクタス
タックは空となり、グリフリストは次のようになる。グリフリスト S1c1 u1 u2
【0125】ステップ740において、TEMPストリ
ングS1c1u1u2及びその直後に続くJが、元のテ
キストエレメントS1c1u1u2JUc2JS2から
除去され、Uc2JS2のみが新たな「元の」テキスト
エレメントとして残る。ステップ610は偽であり、従
って、ステップ620は、サブエレメント(及びTEM
P)をUc2にセットする。ステップ630及び650
は両方とも偽であり、そしてステップ670は真であ
り、従って、ステップ690はサブエレメントをUにセ
ットし、そしてステップ700はc2を(現在空であ
る)キャラクタスタックに押し込む。
ングS1c1u1u2及びその直後に続くJが、元のテ
キストエレメントS1c1u1u2JUc2JS2から
除去され、Uc2JS2のみが新たな「元の」テキスト
エレメントとして残る。ステップ610は偽であり、従
って、ステップ620は、サブエレメント(及びTEM
P)をUc2にセットする。ステップ630及び650
は両方とも偽であり、そしてステップ670は真であ
り、従って、ステップ690はサブエレメントをUにセ
ットし、そしてステップ700はc2を(現在空であ
る)キャラクタスタックに押し込む。
【0126】ステップ710は、ステップ670と同様
に、否定である。ステップ680及び730において、
デフォールトボックス及びc2のグリフコードがグリフ
リストに添付され、これは次のようになる。グリフリスト
に、否定である。ステップ680及び730において、
デフォールトボックス及びc2のグリフコードがグリフ
リストに添付され、これは次のようになる。グリフリスト
【0127】ステップ740において、TEMPの現在
値及び次に続くJがここでテキストエレメントUc2J
S2から除去され、S2を新たなテキストエレメントと
して残す。ステップ610へ進むと、テキストエレメン
トは依然空ではなく、従ってステップ620(1)
(b)において、サブエレメントはS2にセットされ、
そしてステップ620(2)において、それがTEMP
として記憶される。ステップ630は否定であり、そし
てステップ650は肯定であり、従って、ステップ66
0において、S2のグリフがグリフリストに加えられ、
次のようになる。グリフリスト ここで、ステップ740において、TEMP(S2)の
値が、それ自体S2にセットされている元のテキストエ
レメントから除去され、従って、空のストリングを残す
ことになる。ステップ610は今や肯定である。これ
は、上記のグリフリストをステップ410(図5の)へ
戻し、グリフがレンダリングされて表示される。S1c
1は一緒に表示され、その後、c2と組み合わされたデ
フォールトキャラクタ(ここでは、ボックス)が、そし
てその後に、S2のグリフが表示される。前記したよう
に、未知の組み合わせキャラクタについてはキャラクタ
は表示されず、手前のグリフと組み合わされたブランク
として表される。というのは、それらの組み合わせ分類
が保存されるからである。
値及び次に続くJがここでテキストエレメントUc2J
S2から除去され、S2を新たなテキストエレメントと
して残す。ステップ610へ進むと、テキストエレメン
トは依然空ではなく、従ってステップ620(1)
(b)において、サブエレメントはS2にセットされ、
そしてステップ620(2)において、それがTEMP
として記憶される。ステップ630は否定であり、そし
てステップ650は肯定であり、従って、ステップ66
0において、S2のグリフがグリフリストに加えられ、
次のようになる。グリフリスト ここで、ステップ740において、TEMP(S2)の
値が、それ自体S2にセットされている元のテキストエ
レメントから除去され、従って、空のストリングを残す
ことになる。ステップ610は今や肯定である。これ
は、上記のグリフリストをステップ410(図5の)へ
戻し、グリフがレンダリングされて表示される。S1c
1は一緒に表示され、その後、c2と組み合わされたデ
フォールトキャラクタ(ここでは、ボックス)が、そし
てその後に、S2のグリフが表示される。前記したよう
に、未知の組み合わせキャラクタについてはキャラクタ
は表示されず、手前のグリフと組み合わされたブランク
として表される。というのは、それらの組み合わせ分類
が保存されるからである。
【0128】図3に示されたフォールバックハンドラー
250が図8のプロック図に詳細に示されており、図6
ないし7のフローチャートに示されて上記した方法を実
施するためのソフトウェアに対する適当な構成を示して
いる。Jを含むサブエレメントの処理は、Jサブエレメ
ントモジュール800によって取り扱われ、一方、cを
含むサブエレメントは、モジュール830によって処理
される。図6を参照すれば、ステップ620ないし65
0及び740は、ソフトウェアモジュール800として
実施することができ、一方、ステップ670、690な
いし710及び再び740をソフトウェアモジュール8
30として実施することができる。グリフリストモジュ
ール810は、次いで、J及びcモジュールによって制
御されてグリフリストを発生し維持する(ステップ66
0、720及び730)。
250が図8のプロック図に詳細に示されており、図6
ないし7のフローチャートに示されて上記した方法を実
施するためのソフトウェアに対する適当な構成を示して
いる。Jを含むサブエレメントの処理は、Jサブエレメ
ントモジュール800によって取り扱われ、一方、cを
含むサブエレメントは、モジュール830によって処理
される。図6を参照すれば、ステップ620ないし65
0及び740は、ソフトウェアモジュール800として
実施することができ、一方、ステップ670、690な
いし710及び再び740をソフトウェアモジュール8
30として実施することができる。グリフリストモジュ
ール810は、次いで、J及びcモジュールによって制
御されてグリフリストを発生し維持する(ステップ66
0、720及び730)。
【0129】モジュール800及び830はルックアッ
プモジュール820と相互作用し、該モジュールはルッ
クアップテーブル130(図3)をアクセスして、グリ
フに対するテーブルをサーチし、そしてそれらが見つか
った場合に検索する(ステップ650及び710)。
プモジュール820と相互作用し、該モジュールはルッ
クアップテーブル130(図3)をアクセスして、グリ
フに対するテーブルをサーチし、そしてそれらが見つか
った場合に検索する(ステップ650及び710)。
【0130】デフォールトグリフは、当該サブエレメン
トモジュール800又は830内のサブモジュールによ
って発生される(ステップ680のように)のが好まし
く、例えば、Jモジュール800は、接合キャラクタに
とって代わるナルキャラクタを表すデフォールトを発生
し、cモジュール830は、未知の組み合わせキャラク
タに代わってブランク組み合わせキャラクタを発生し、
そしてその両方は、未 別のデフォールトキャラクタ発生モジュールで処理され
てもよい。
トモジュール800又は830内のサブモジュールによ
って発生される(ステップ680のように)のが好まし
く、例えば、Jモジュール800は、接合キャラクタに
とって代わるナルキャラクタを表すデフォールトを発生
し、cモジュール830は、未知の組み合わせキャラク
タに代わってブランク組み合わせキャラクタを発生し、
そしてその両方は、未 別のデフォールトキャラクタ発生モジュールで処理され
てもよい。
【0131】図6の手順が実行されて、ステップ610
が真になると、フォールバックハンドラー250は、グ
リフリストモジュール810からレンダリングモジュー
ル260(図3)へグリフリストを出力する。
が真になると、フォールバックハンドラー250は、グ
リフリストモジュール810からレンダリングモジュー
ル260(図3)へグリフリストを出力する。
【0132】例4:S1J1J2S2 遭遇することのある例外的な状況の例は、1つの行に2
つのJが生じる場合であり、例えば、1つのアルファベ
ットの接合キャラクタが常に後続する文字の後に、接合
キャラクタが常に先行する別のアルファベットからの文
字が続くものがある。ステップ620では、S1が第1
のサブエレメント(及びTEMPの値)となり、そして
J1が取り去られる(上記例1の場合のように)。ステ
ップ650では、S1が見つかり、ステップ660で
は、そのグリフコードがグリフリストに添付され、そし
てステップ740では、S1及びJ1がストリングS1
J1J2S2から取り去られ、J2S2が残る。
つのJが生じる場合であり、例えば、1つのアルファベ
ットの接合キャラクタが常に後続する文字の後に、接合
キャラクタが常に先行する別のアルファベットからの文
字が続くものがある。ステップ620では、S1が第1
のサブエレメント(及びTEMPの値)となり、そして
J1が取り去られる(上記例1の場合のように)。ステ
ップ650では、S1が見つかり、ステップ660で
は、そのグリフコードがグリフリストに添付され、そし
てステップ740では、S1及びJ1がストリングS1
J1J2S2から取り去られ、J2S2が残る。
【0133】ステップ610(真)へ戻りそしてステッ
プ620(1)へ進むと、サブエレメントは、今や、ゼ
ロのストリングにセットされ(「第1のJ」まで)、J
2が取り去られる。サブエレメントは空であるから、ス
テップ630の結果は肯定であり、従って、ステップ6
40ではテキストエレメントからサブエレメント(その
後続するJ2と共に)が除去され、S2のみが残る。従
って、キャラクタS1及びS2は通常の形態でレンダリ
ングされる。
プ620(1)へ進むと、サブエレメントは、今や、ゼ
ロのストリングにセットされ(「第1のJ」まで)、J
2が取り去られる。サブエレメントは空であるから、ス
テップ630の結果は肯定であり、従って、ステップ6
40ではテキストエレメントからサブエレメント(その
後続するJ2と共に)が除去され、S2のみが残る。従
って、キャラクタS1及びS2は通常の形態でレンダリ
ングされる。
【0134】図6の手順では、ユーザのシステムが所与
のキャラクタのグリフについてのテーブル情報をもたな
いとき及びキャラクタ又はキャラクタタイプの例外的な
又はそれまで未知の組み合わせがテキストエレメントと
して入力されるときに、多数の状況を取り扱うことがで
きる。取り扱うことのできる状況の形式は、上記の問題
及び大きなフォントテーブルを維持するという問題を解
消するために選択された予め定められた正規表現に基づ
く。
のキャラクタのグリフについてのテーブル情報をもたな
いとき及びキャラクタ又はキャラクタタイプの例外的な
又はそれまで未知の組み合わせがテキストエレメントと
して入力されるときに、多数の状況を取り扱うことがで
きる。取り扱うことのできる状況の形式は、上記の問題
及び大きなフォントテーブルを維持するという問題を解
消するために選択された予め定められた正規表現に基づ
く。
【0135】他のフォールバック戦略は、特定の出力装
置に対する表示特性を考慮するものである。例えば、出
力装置がポストスクリプトレーザプリンタである場合に
は、フォールバックハンドラーは、ポストスクリプト演
算子を用いて、所望のテキストエレメントに対する近似
を構成することができる。この戦略の詳細は、ここで説
明するには非常に複雑で且つマシンに特定のものであ
る。しかしながら、例えば、7J/J8(数字、接合
子、スラッシュ、接合子、数字)の形態のテキストエレ
メントを、それが生じたときに分数フォーマツトにマッ
プするのに非常に有用である。これは、数学的なエディ
タのみではなくて、いかなるシステムでも、最適な分数
を発生することができる。
置に対する表示特性を考慮するものである。例えば、出
力装置がポストスクリプトレーザプリンタである場合に
は、フォールバックハンドラーは、ポストスクリプト演
算子を用いて、所望のテキストエレメントに対する近似
を構成することができる。この戦略の詳細は、ここで説
明するには非常に複雑で且つマシンに特定のものであ
る。しかしながら、例えば、7J/J8(数字、接合
子、スラッシュ、接合子、数字)の形態のテキストエレ
メントを、それが生じたときに分数フォーマツトにマッ
プするのに非常に有用である。これは、数学的なエディ
タのみではなくて、いかなるシステムでも、最適な分数
を発生することができる。
【0136】例えば、以下は、7J/J8のようなテキ
ストエレメントに対するフォールバ もし使用できる場合にこのようなグリフにマップするも
のである。 1.フォントサイズを2/3だけ減少する。 2.次のセルの上半分へ移動する。 3.第1の数値(7)のグリフを表示する。 4.第1の数値(7)の下に水平線を引く。 5.セルの下半分へ移動する。 6.第2の数値(8)のグリフを表示する。 7.フォントサイズを復帰する。
ストエレメントに対するフォールバ もし使用できる場合にこのようなグリフにマップするも
のである。 1.フォントサイズを2/3だけ減少する。 2.次のセルの上半分へ移動する。 3.第1の数値(7)のグリフを表示する。 4.第1の数値(7)の下に水平線を引く。 5.セルの下半分へ移動する。 6.第2の数値(8)のグリフを表示する。 7.フォントサイズを復帰する。
【0137】この特定の問題に対して多数の他の解決策
が考えられるが、フォールバックハンドラー及び図5の
方法がこのような融通性を許すことが重要である。この
解決策では、数干のあり得べき分数を含むテーブルが必
要とされず、分数は必要なときに発生することができ
る。異なる状況に対して異なる組のルールを発生するこ
とができ、これは、可変の個々の出力成分と共に特定の
形態の出力(分数のような)が所望される場合に特に有
用である。
が考えられるが、フォールバックハンドラー及び図5の
方法がこのような融通性を許すことが重要である。この
解決策では、数干のあり得べき分数を含むテーブルが必
要とされず、分数は必要なときに発生することができ
る。異なる状況に対して異なる組のルールを発生するこ
とができ、これは、可変の個々の出力成分と共に特定の
形態の出力(分数のような)が所望される場合に特に有
用である。
【図1】グリフをレンダリングするための従来のシステ
ムを示すブロック図である。
ムを示すブロック図である。
【図2】グリフを表示及びプリントする装置のブロック
図である。
図である。
【図3】本発明によりグリフをレンダリングするシステ
ムのブロック図である。
ムのブロック図である。
【図4】本発明のシステムに対する正規表現の形成を示
す状態図である。
す状態図である。
【図5】本発明の方法を表すフローチャートである。
【図6】本発明のフォールバックレンダリング手順を示
すフローチャートである。
すフローチャートである。
【図7】図6の変型形態を示す図である。
【図8】本発明のフォールバックハンドラーの実施例を
示すブロック図である。
示すブロック図である。
80 コンピュータシステム 90 コンピュータ 100 プロセッサ 110 メモリ 120 レンダリングシステムアプリケーション 130 キャラクタテーブル 140 ディスプレイドライバ 150 モニタ 160 プリンタドライバ 170 プリンタ 180 入力装置 190 コードポイント 200 出力グリフ 210 コマンドコードフィルタ 220 パーザ 240 ルックアップハンドラー 250 フォールバックハンドラー 260 レンダリングモジュール
フロントページの続き (51)Int.Cl.6 識別記号 庁内整理番号 FI 技術表示箇所 G09G 5/22 9471−5G
Claims (12)
- 【請求項1】 複数のコードポイントより成るテキスト
エレメントからグリフを発生する方法であって、各コー
ドポイントは1つの上記グリフを表し、上記方法は、メ
モリを制御するプロセッサを有するコンピュータに記憶
されたプログラムによって実行され、上記メモリには少
なくとも1つのルックアップテーブルが記憶され、そし
て所定の組の上記コードポイントを所定の組の上記グリ
フに関連付けるような方法において、 (1)上記テキストエレメントがそれに関連したグリフ
を上記テーブルに有しているかどうか決定し、もしそう
ならば、段階(4)へ進み、さもなくば、段階(2)へ
進み、 (2)テキストエレメントの第1の所定のサブセットを
除去することによりテキストエレメントを変更し、 (3)上記変更されたテキストエレメントがそれに関連
したグリフを上記テーブルに有するかどうかを決定し、
もしそうならば、段階(4)へ進み、 (4)上記関連するグリフを出力する、という段階を備
えたことを特徴とする方法。 - 【請求項2】 上記段階(3)の決定が否定である場合
に、上記段階(3)は、 (5)上記段階(2)へ戻って、テキストエレメントを
更に変更し、そしてその更に変更されたテキストエレメ
ントを用いて上記段階(3)を実行し、そして (6)更に変更されたテキストエレメントがそれに関連
するグリフをテーブルに有するまでテキストエレメント
に対して更に変更を行って上記段階(2)−(3)−
(5)を繰り返し、次いで、上記段階(4)へ進む、と
いう段階を備えた請求項1に記載の方法。 - 【請求項3】 上記段階(6)は、 変更されたテキストエレメントに対しそれに関連するグ
リフがテーブルにおいて位置決めされる前に所定の基準
に到達する場合には、その所定の基準に到達した際にテ
キストエレメントに対する変更を停止し、そしてその変
更されたテキストエレメントに対しデフォールトのグリ
フを関連グリフとして発生する、という段階を備えてい
る請求項2に記載の方法。 - 【請求項4】 少なくとも1つのコードポイントをテキ
ストエレメントから除去する段階を備え、上記所定の基
準は、テキストエレメントが空であるかどうかの決定を
含み、上記方法は、更に、 少なくとも1つのコードポイントをテキストエレメント
から除去するときにテキストエレメントの残りを発生
し、そして変更されたテキストエレメントに対しその関
連するグリフを使用して上記段階(4)を行った後に、
上記段階(1)に戻り、上記残りをテキストエレメント
として使用する、という段階を備えた請求項3に記載の
方法。 - 【請求項5】 上記段階(2)は、コードポイントをテ
キストエレメントから除去する段階を備え、更に、 少なくとも1つのコードポイントをテキストエレメント
から除去するときにテキストエレメントの残りを発生
し、そして変更されたテキストエレメントに対しその関
連するグリフを使用して上記段階(4)を行った後に、
上記段階(1)に戻り、上記残りをテキストエレメント
として使用する、という段階を備えた請求項1に記載の
方法。 - 【請求項6】 上記除去されたコードポイントは、関連
するグリフをテーブルにもたない組合わせキャラクタに
対するコードポイントであり、上記段階(3)は、上記
組み合わせキャラクタをデフォールトの組み合わせキャ
ラクタと置き換える段階を含む請求項5に記載の方法。 - 【請求項7】 方法を実行するためのソフトウェアを記
憶するメモリに接続されたプロセッサと、このプロセッ
サに接続された出力装置とを有するコンピュータシステ
ムへのキャラクタコード入力の流れからグリフを発生す
るための方法において、 (1)上記入力流から最初の組のキャラクタコードより
成る第1の正規表現を発生し、上記正規表現は所定の構
文に対応し、 (2)上記第1の正規表現がルックアップテーブルに見
つかるかどうか決定し、もしそうであれば、第1の正規
表現に対応するグリフを検索し、そして段階(8)へ進
み、 (3)上記第1の正規表現がルックアップテーブルに見
つからない場合は、上記最初の組のキャラクタコードの
第1サブセットを現在サブセットとして発生しそして上
記最初の組のキャラクタコードの第1の残りを現在の残
りとして発生し、入力キャラクタコードの上記第1の残
りは、上記第1のサブセットに含まれていない少なくと
も1つのコードを含み、 (4)上記キャラクタコードの現在サブセットがルック
アップテーブルに見つかるかどうか決定し、もしそうで
あれば、その現在サブセットに対応するグリフを検索し
そして段階(7)へ進むが、そうでなければ、段階
(5)へ進み、 (5)入力キャラクタコードの新たなサブセットを現在
サブセットとして発生しそして入力キャラクタコードの
新たな残りを現在の残りとして発生し、この現在の残り
は上記現在サブセットに含まれていない少なくとも1つ
のコードを含み、 (6)所定の基準が満足されるかどうか決定し、もしそ
うでなければ、段階(4)へ戻り、もしそうであれば、
段階(7)へ進み、 (7)上記発生されたサブセットがいずれもルックアッ
プテーブルに位置決めされなかった場合には、少なくと
も1つのデフォールトキャラクタを検索されたグリフと
して指定しそして段階(8)へ進み、 (8)上記検索されたグリフを出力装置へ出力する、と
いう段階を備えたことを特徴とする方法。 - 【請求項8】 表示のためのキャラクタを表す複数のコ
ードポイントより成る入力テキストエレメントに対応す
る出力グリフを発生するシステムであって、少なくとも
1つのグリフテーブルを記憶するメモリを有するコンピ
ュータを備えているようなシステムにおいて、 テキストエレメントに対する正しいグリフを位置決めす
るためにテーブルをサーチするルックアップハンドラー
と、 テキストエレメントに対する正しいグリフが上記ルック
アップハンドラーによって位置決めされなかった場合に
テキストエレメントを処理するフォールバックハンドラ
ーとを備え、このフォールバックハンドラーは、 テキストエレメントを構成するコードポイントの少なく
とも1つのサブセットを発生するための第1発生手段
と、 上記サブセットに対する正しいグリフを位置決めするた
めにテーブルをサーチする位置決め手段と、 上記サブセットに対する正しいグリフが上記位置決め手
段によって位置決めされなかった場合に、そのサブセッ
トに対するデフォールトグリフを発生するための第2発
生手段とを含んでおり、 上記プログラムは、更に、上記フォールバックハンドラ
ーから上記正しいグリフ及びデフォールトのグリフを受
け取るための入力手段と、各々の上記正しいグリフ及び
デフォールトのグリフを表示用に出力するための出力手
段とを備えたことを特徴とするシステム。 - 【請求項9】 各々のコードポイントは、所定の分類を
有し、そして上記システムは、更に、テキストエレメン
トにおける各コードポイントごとに分類を決定しそして
その分類をテキストエレメントと共にルックアップハン
ドラーへ通すための構文解析手段を備えている請求項8
に記載のシステム。 - 【請求項10】 1つの上記分類は、手前のコードポイ
ント及び後続するコードポイントを互いに接合したグリ
フで表すべきであることを指示する接合コードポイント
に対応する請求項9に記載のシステム。 - 【請求項11】 入力テキストエレメントの第1サブセ
ットは、第1キャラクタに対するコードポイントと、そ
の後に、接合キャラクタに対するコードポイントと、そ
の後に、第3キャラクタに対するコードポイントとを含
み、 上記第2発生手段は、第1サブセットに対するグリフが
ルックアップテーブルに全く位置決めされないときに上
記接合キャラクタに代わってブランクデフォールトキャ
ラクタを発生しそして上記第1及び第3キャラクタに対
するコードポイントを上記位置決め手段へ通して上記第
1及び第3キャラクタの各々に対するグリフを上記出力
手段により出力するために別々の位置決めする手段を備
えている請求項10に記載のシステム。 - 【請求項12】 入力テキストエレメントの第1サブセ
ットは、第1キャラクタに対するコードポイントと、そ
の後に、第2キャラクタに対するコードポイントと、そ
の後に、第3キャラクタに対するコードポイントとを含
み、第2及び第3キャラクタの各々は組み合わせキャラ
クタより成り、第1及び第3キャラクタはルックアップ
テーブルに表されるが、第2キャラクタは表されず、そ
して上記第2発生手段は、上記第1及び第3キャラクタ
に対するコードポイントを上記位置決め手段へ通して第
1キャラクタに対する第1グリフ及び第3キャラクタに
対する第2グリフを位置決めし、これらの第1及び第2
のグリフを、上記第1及び第3キャラクタを表す組合グ
リフへと組み合わせ、そしてその組合グリフを上記出力
手段へ通して上記組合グリフを出力するための手段を備
えている請求項10に記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/177,041 US5526477A (en) | 1994-01-04 | 1994-01-04 | System and method for generating glyphs of unknown characters |
US08/177041 | 1994-01-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH07244661A true JPH07244661A (ja) | 1995-09-19 |
Family
ID=22646945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6341035A Pending JPH07244661A (ja) | 1994-01-04 | 1994-12-28 | 未知のキャラクタのグリフを発生するシステム及び方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5526477A (ja) |
EP (1) | EP0661670A3 (ja) |
JP (1) | JPH07244661A (ja) |
KR (1) | KR950033795A (ja) |
CN (1) | CN1117160A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100363170B1 (ko) * | 2000-12-04 | 2002-12-05 | 삼성전자 주식회사 | 기록매체, 그 재생장치, 및 그 텍스트 디스플레이방법 |
Families Citing this family (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5926189A (en) * | 1996-03-29 | 1999-07-20 | Apple Computer, Inc. | Method and apparatus for typographic glyph construction including a glyph server |
KR0172581B1 (ko) * | 1996-04-02 | 1999-03-30 | 이진기 | 단계적 표현 가능형 폰트 그 변환 방법 및 렌더링 방법 |
US5758314A (en) * | 1996-05-21 | 1998-05-26 | Sybase, Inc. | Client/server database system with methods for improved soundex processing in a heterogeneous language environment |
US5909223A (en) * | 1996-09-04 | 1999-06-01 | Apple Computer, Inc. | Text face scaler |
WO1998021890A1 (en) * | 1996-11-12 | 1998-05-22 | Thomson Consumer Electronics, Inc. | System and method for receiving and rendering multi-lingual text on a set top box |
US5870084A (en) * | 1996-11-12 | 1999-02-09 | Thomson Consumer Electronics, Inc. | System and method for efficiently storing and quickly retrieving glyphs for large character set languages in a set top box |
US5831636A (en) * | 1996-11-26 | 1998-11-03 | Motorola | Method for compressing ideographic characters for storage decompression and display and a communication device therefor |
US6522330B2 (en) | 1997-02-17 | 2003-02-18 | Justsystem Corporation | Character processing system and method |
EP0902378A3 (en) * | 1997-09-15 | 2003-07-16 | Canon Kabushiki Kaisha | A font architecture and creation tool for producing richer text |
US6216131B1 (en) * | 1998-02-06 | 2001-04-10 | Starfish Software, Inc. | Methods for mapping data fields from one data set to another in a data processing environment |
US6170000B1 (en) * | 1998-08-26 | 2001-01-02 | Nokia Mobile Phones Ltd. | User interface, and associated method, permitting entry of Hangul sound symbols |
US6754875B1 (en) * | 1998-11-17 | 2004-06-22 | Adobe Systems Incorporated | Applying a computer-implemented test to determine whether to replace adjacent characters in a word with a ligature glyph |
EP1048456B1 (en) * | 1999-02-17 | 2007-10-31 | Adobe Systems Incorporated | Generating a glyph |
US6678410B1 (en) | 1999-02-17 | 2004-01-13 | Adobe Systems Incorporated | Generating a glyph |
US6738526B1 (en) * | 1999-07-30 | 2004-05-18 | Microsoft Corporation | Method and apparatus for filtering and caching data representing images |
US6771267B1 (en) * | 2000-03-22 | 2004-08-03 | Adobe Systems Incorporated | Merging digital fonts |
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 |
US7493250B2 (en) | 2000-12-18 | 2009-02-17 | Xerox Corporation | System and method for distributing multilingual documents |
US6826629B2 (en) * | 2001-09-06 | 2004-11-30 | Hewlett-Packard Development Company, L.P. | Apparatus and method for enhancing learning ability and behavior for a computer peripheral device |
US7228501B2 (en) * | 2002-11-01 | 2007-06-05 | Microsoft Corporation | Method for selecting a font |
US7236980B2 (en) * | 2003-02-28 | 2007-06-26 | Microsoft Corporation | Unicode normalization |
US7310769B1 (en) | 2003-03-12 | 2007-12-18 | Adobe Systems Incorporated | Text encoding using dummy font |
US7586628B2 (en) * | 2003-06-20 | 2009-09-08 | Infoprint Solutions Company, Llc | Method and system for rendering Unicode complex text data in a printer |
US7707575B2 (en) * | 2004-09-20 | 2010-04-27 | Hewlett-Packard Development Company, L.P. | System and method for selecting a portfolio of resources in a heterogeneous data center |
US8930400B2 (en) * | 2004-11-22 | 2015-01-06 | Hewlett-Packard Development Company, L. P. | System and method for discovering knowledge communities |
US7408556B2 (en) * | 2005-01-31 | 2008-08-05 | Microsoft Corporation | System and method for using device dependent fonts in a graphical display interface |
US8781977B1 (en) | 2005-03-29 | 2014-07-15 | Hewlett-Packard Development Company, L.P. | System and method of pricing resources |
US7623130B1 (en) * | 2005-04-25 | 2009-11-24 | Apple Inc. | Text rendering with improved command stream operations |
US7599829B2 (en) * | 2005-07-29 | 2009-10-06 | Microsoft Corporation | Phonetic searching using partial characters |
US7853869B2 (en) * | 2005-12-14 | 2010-12-14 | Microsoft Corporation | Creation of semantic objects for providing logical structure to markup language representations of documents |
JP2007240848A (ja) * | 2006-03-08 | 2007-09-20 | Seiko Epson Corp | 表示プログラム、データ構造及び表示装置 |
US20070211062A1 (en) * | 2006-03-13 | 2007-09-13 | International Business Machines Corporation | Methods and systems for rendering complex text using glyph identifiers in a presentation data stream |
US20070262991A1 (en) * | 2006-05-15 | 2007-11-15 | Abulhab Saad D | Arabic input output method and font model |
US8201088B2 (en) * | 2006-07-25 | 2012-06-12 | Monotype Imaging Inc. | Method and apparatus for associating with an electronic document a font subset containing select character forms which are different depending on location |
US7786994B2 (en) * | 2006-10-26 | 2010-08-31 | Microsoft Corporation | Determination of unicode points from glyph elements |
US8559624B1 (en) | 2006-12-29 | 2013-10-15 | Edward J Zajac | Cyphometry consisting of ciferglifs, chaotiglyphs and word auras |
US20080244511A1 (en) * | 2007-03-30 | 2008-10-02 | Microsoft Corporation | Developing a writing system analyzer using syntax-directed translation |
US7925091B2 (en) * | 2007-03-30 | 2011-04-12 | Microsoft Corporation | Displaying text of a writing system using syntax-directed translation |
US7818311B2 (en) * | 2007-09-25 | 2010-10-19 | Microsoft Corporation | Complex regular expression construction |
US9195837B2 (en) * | 2007-11-30 | 2015-11-24 | Hewlett-Packard Development Company, L.P. | Method and system for securely transmitting deterrent data |
US8799268B2 (en) * | 2008-12-17 | 2014-08-05 | International Business Machines Corporation | Consolidating tags |
US9319444B2 (en) | 2009-06-22 | 2016-04-19 | Monotype Imaging Inc. | Font data streaming |
US8615709B2 (en) | 2010-04-29 | 2013-12-24 | Monotype Imaging Inc. | Initiating font subsets |
US8542235B2 (en) | 2010-10-13 | 2013-09-24 | Marlborough Software Development Holdings Inc. | System and method for displaying complex scripts with a cloud computing architecture |
CN102508822A (zh) * | 2011-11-09 | 2012-06-20 | 北京赛科世纪数码科技有限公司 | 泰语显示方法、装置和系统 |
US9442898B2 (en) * | 2012-07-17 | 2016-09-13 | Oracle International Corporation | Electronic document that inhibits automatic text extraction |
US9817615B2 (en) | 2012-12-03 | 2017-11-14 | Monotype Imaging Inc. | Network based font management for imaging devices |
WO2014100582A2 (en) | 2012-12-21 | 2014-06-26 | Monotype Imaging Inc. | Supporting color fonts |
EP2943894A2 (en) | 2013-01-09 | 2015-11-18 | Monotype Imaging Inc. | Advanced text editor |
EP2763051B1 (en) * | 2013-01-31 | 2019-08-14 | Google LLC | Serving font glyphs |
US20140320527A1 (en) * | 2013-04-30 | 2014-10-30 | Microsoft Corporation | Hardware glyph cache |
US9317777B2 (en) | 2013-10-04 | 2016-04-19 | Monotype Imaging Inc. | Analyzing font similarity for presentation |
TW201530322A (zh) * | 2014-01-20 | 2015-08-01 | Arphic Technology Co Ltd | 字型處理方法及字型處理系統 |
US9691169B2 (en) | 2014-05-29 | 2017-06-27 | Monotype Imaging Inc. | Compact font hinting |
CN104965830B (zh) * | 2014-06-06 | 2018-07-17 | 腾讯科技(深圳)有限公司 | 一种字符更新方法及装置 |
CN104317663B (zh) * | 2014-09-29 | 2017-11-21 | 广东欧珀移动通信有限公司 | 自动化字符测试方法和装置 |
US10115215B2 (en) | 2015-04-17 | 2018-10-30 | Monotype Imaging Inc. | Pairing fonts for presentation |
US11537262B1 (en) | 2015-07-21 | 2022-12-27 | Monotype Imaging Inc. | Using attributes for font recommendations |
US11334750B2 (en) | 2017-09-07 | 2022-05-17 | Monotype Imaging Inc. | Using attributes for predicting imagery performance |
US10909429B2 (en) | 2017-09-27 | 2021-02-02 | Monotype Imaging Inc. | Using attributes for identifying imagery for selection |
US11657602B2 (en) | 2017-10-30 | 2023-05-23 | Monotype Imaging Inc. | Font identification from imagery |
KR102329116B1 (ko) * | 2019-12-09 | 2021-11-19 | 숭실대학교 산학협력단 | 부분 글자 스타일 변경이 가능한 폰트 생성 장치 및 방법 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4730269A (en) * | 1983-02-18 | 1988-03-08 | Houghton Mifflin Company | Method and apparatus for generating word skeletons utilizing alpha set replacement and omission |
JPS6077222A (ja) * | 1983-10-04 | 1985-05-01 | Kanaasu Data Kk | 多種文字処理端末装置 |
JPH0762848B2 (ja) * | 1985-03-23 | 1995-07-05 | ブラザー工業株式会社 | 電子辞書 |
US4833627A (en) * | 1986-08-29 | 1989-05-23 | The Toles Group | Computerized typesetting correction system |
JP2756292B2 (ja) * | 1989-02-07 | 1998-05-25 | キヤノン株式会社 | 文書出力装置 |
US5416898A (en) * | 1992-05-12 | 1995-05-16 | Apple Computer, Inc. | Apparatus and method for generating textual lines layouts |
-
1994
- 1994-01-04 US US08/177,041 patent/US5526477A/en not_active Expired - Lifetime
- 1994-12-14 EP EP94119776A patent/EP0661670A3/en not_active Withdrawn
- 1994-12-28 JP JP6341035A patent/JPH07244661A/ja active Pending
- 1994-12-29 CN CN94113598A patent/CN1117160A/zh active Pending
-
1995
- 1995-01-04 KR KR1019950000034A patent/KR950033795A/ko not_active Application Discontinuation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100363170B1 (ko) * | 2000-12-04 | 2002-12-05 | 삼성전자 주식회사 | 기록매체, 그 재생장치, 및 그 텍스트 디스플레이방법 |
Also Published As
Publication number | Publication date |
---|---|
CN1117160A (zh) | 1996-02-21 |
EP0661670A3 (en) | 1996-06-05 |
KR950033795A (ko) | 1995-12-26 |
US5526477A (en) | 1996-06-11 |
EP0661670A2 (en) | 1995-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH07244661A (ja) | 未知のキャラクタのグリフを発生するシステム及び方法 | |
US5224038A (en) | Token editor architecture | |
US7269547B2 (en) | Tokenizer for a natural language processing system | |
US6246976B1 (en) | Apparatus, method and storage medium for identifying a combination of a language and its character code system | |
US6678409B1 (en) | Parameterized word segmentation of unsegmented text | |
US5625773A (en) | Method of encoding and line breaking text | |
WO2003034273A1 (en) | Method and apparatus for efficient segmentation of compound words using probabilistic breakpoint traversal | |
JPH0798765A (ja) | 方向検出方法および画像解析装置 | |
JPH034914B2 (ja) | ||
JPS61107430A (ja) | 音声情報の編集装置 | |
KR100859766B1 (ko) | 프레젠테이션 데이터 스트림의 복잡한 텍스트를 식별하기위한 시스템 및 방법 | |
JPH0793335A (ja) | テキストの言語機能を提供する方法 | |
US5802482A (en) | System and method for processing graphic language characters | |
JPH0211934B2 (ja) | ||
JPH076168A (ja) | Dbcsコード・ページを使ってsbcsフォント及びdbcsフォントを与える構造化された文書を編集する方法 | |
Pignalberi et al. | Introduction to LATEX and to some of its tools | |
US20070033035A1 (en) | String display method and device compatible with the hindi language | |
JPH10320399A (ja) | 言語識別装置,言語識別方法および言語識別のプログラムを記録した記録媒体 | |
JPH08190561A (ja) | 文書修正装置 | |
JP2915225B2 (ja) | 文書作成装置 | |
Plaice et al. | Draft documentation for the system | |
JPH07182344A (ja) | 機械翻訳装置 | |
EP0391706B1 (en) | A method encoding text | |
Haentjens | The ordering of universal character strings | |
JP2570784B2 (ja) | 文書リーダ後処理装置 |