| 【発明の名称】 |
文字に対する引数渡し機能を有するフォント機構 |
| 【発明者】 |
【氏名】長谷 英明
【氏名】衛藤 雅人
|
| 【要約】 |
【課題】従来、文書編集を行うアプリケーションが提供していた文字の形状を文脈等に応じて変化させる機能をフォント側で負担し、アプリケーションが共有するためのフォント機構を提供する。
【解決手段】文字の形状に影響する文脈等の情報を、フォント機構の描画オペレータは渡された文字列から抽出し、フォントの描画手続きに引数として渡す描画オペレータは、描画対象の文字列から得た文字の名前からその文字が引数をとるか確認し、引数をとる場合、描画対象の文字列の解析を行い引数である部分文字列を抽出する。解析は、引数の個数が決まっている場合は個数分の部分文字列を、決まってない場合は引数終端子の前までの部分文字列を抽出するまで行う。このようにして、描画対象の文字列を引数をとらない文字も含めた構造化された文字の名前の配列に変換し、その文字の名前に対応した描画手続きに引数である部分文字列ごと渡す。 |
【特許請求の範囲】
【請求項1】個別に引数をとるフォントを含むフォント集合を受容し、描画すべき文字を、これと共に与えられる情報を実引数として渡してその文字に対応する描画手続きを実行することにより描画する能力を有するフォント機構。
|
【発明の詳細な説明】【0001】 【発明の属する技術分野】本発明は、ラスタ走査型電子式表示もしくは印字装置上に文脈その他の環境に応じて形状等を変更すべき文字を描画するための、文字に対する引数渡し機能を有するフォント機構に関する。 【0002】 【従来の技術・本発明の目的】ある種の文字は、表現の際に形状等を文脈その他の環境に応じて変化させる必要がある。たとえば、数式に用いられる文字には分数の分線や根号など関連する文字列によって大きさ等が変化するものがある。従来この種の要請は文書編集を行う個々のアプリケーションソフトウェアが、フォント集合の切替えや印字位置の移動などを駆使して実現している。 【0003】しかし、この機能は文書の表示もしくは印字を行う多くのソフトウェアに要請されるものであり、そのようなソフトウェアの数はフォント機構の数に比べて圧倒的に多い。したがって、文脈等に応じて文字の形状等を変更する機能は、フォント機構に対応して作成されるフォントの側で負担し、それをアプリケーションソフトウェアが共有する方が総体的な開発効率において有利である。 【0004】そのため本発明は、フォント機構が、文脈その他の環境に応じて文字の形状等を変更する手段をフォントに対し提供することを目的とする。 【0005】 【目的を達成するための手段】本発明は、個々のフォントを定義する描画手続きがとる引数の宣言に関する規則、ならびに文脈等の情報を印字すべき文字と共に引数として受け取り描画手続きに渡す描画オペレータをフォント機構に付加することにより上記目的を達成したものである。 【0006】 【実施例】本発明の実施例は、フォントに渡す引数を描画すべき文字列から抽出する。このため、本実施例を利用するフォント集合には、各フォントがとる引数の個数(以下“アリティ”)と引数を区切るための特別な文字コード(以下“引数区切子“)を定義しなければならない。ただし、本実施例では、引数区切子のデフォルトを16進1Cとしている。 【0007】本実施例は、これらの情報を用いて、アリティが1以上の文字に遭遇すると、その直後からその文字のアリティと同数の引数区切子の出現までをその文字の引数とする。例えば、∫0Δ ∞ Δ xとあれば、ここでは∫の引数は2つで、引数区切子はΔである。また、∫の第1引数は0、第2引数は∞となる。 【0008】この文字列のΔを判別することで、∫と0、∞の2つの引数を描画手続きに渡すことを可能とした。 【0009】また、引数の個数が変動する場合でも、関連する文字がとる引数の終端を示す指示子(以下“引数終端子”)により、引数の獲得が可能となる。例えば、X 2 Δ a ○とあるとする。Xは通常は引数をとる文字ではなく、とる引数の数は決まっていない。しかし、例のように引数終端子を設けていればXの引数として2とaの2つの引数をとることが可能である。 【0010】次に、フォント集合を定義するプログラムには、以下の情報を含めなければならない。 【0011】エンコード配列:フォント定義では、文字コードを使って文字の図形記述を選択するために柔軟なエンコード機構を使用しているが、引数をとり状況に応じて形態が変化する文字も引数をとらない文字と同様に文字の名前を記述する。 【0012】アリティ辞書:引数をとる文字の名前をキーとし、その値に引数の個数を定義したものである。また、引数の個数を定義している値は0以上の整数である。この辞書に登録しない文字は、引数をとらない文字として扱われる。そのため、全ての文字を登録する必要はない。この辞書の値が0である文字は、可変長引数をとるものとされる。これは、通常のフォント集合では、引数をとらない文字が圧倒的に多いと考えられるからである。本発明では、この辞書を引数の個数をアリティと呼ぶことからアリティ辞書と名付けた。 【0013】メトリックス辞書:文字の名前をキーとし、引数の大きさを求める機能が必要とする1文字ごとの大きさを手続きとして定義した辞書である。既存のフォント機構が要求するメトリックス辞書とは異なり、数値の組ではなく、それを返す手続きを値とする。 【0014】本辞書のキーは、描画手続き辞書ならびにエンコード配列に現れるのと同様な文字の名前であり、それに対応した値は、6つの数値から成る。その値は、文字幅の x と y 成分と、その後に文字バウンディングボックスの左下の (x, y) 座標と右上の (x, y) 座標を示す。しかし、引数をとる文字は、その引数の大きさによって文字幅、バウンディングボックス共に変化するため6つの数値で固定して定義することができない。そのため、そのような文字に関しては、6つの値を計算して求める手続きを記述する必要がある。 【0015】描画手続き辞書:文字の名前をキーとし、図形記述を含んだ手続きを値として定義したものである。従来と異なる点は、アリティ辞書に登録されている文字に対応する描画手続きには、描画すべき文字列から抽出された引数が渡されることである。これにより、その文字が引数に応じて変化するための計算を行なう高度な組版機能を含むことができる。 【0016】本組版機能は、描画の対象である文字の座標データや幅等の変更を行う機能である。変更するパラメータは、全て描画の対象である文字に関係する図形記述のパラメータである。この機能は引数をとる文字の描画手続きに実装すればよい。 【0017】本組版機能が正しく計算を行うためには、文字がとる引数の幅とバウンディングボックスのパラメータがオペランドとして必須である。引数の個数を登録する辞書に文字を登録せず、引数をとらないものとして扱われるとこのパラメータを得ることが不可能であり、本組版機能を描画手続き辞書に実装したとしても計算を行うことが不可能である。 【0018】本機能によって計算され出力されるパラメータは、引数の描画を開始する座標、引数をとる文字の描画開始座標、文字幅等それぞれの文字で求めるパラメータが違うため、個々の文字で本組版機能の実装内容は異なる。 【0019】 【フォント機構を構成する機能】本実施例は、上記のフォントプログラムをサポートするために、以下の各機能から構成される。 【0020】文字列の描画オペレータ:描画すべき文字列をオペランドとし、それを表示もしくは印字装置に表現するオペレータである。オペランドが引数を含む場合、既存のオペレータではその引数を認識することができないため、描画オペレータの実装を変更した。本実施例の描画オペレータの処理は、以下のとおりである。 【0021】1・・・フォントのエンコード配列へのインデックスとして文字コードを使って、文字の名前を得る。 2・・・アリティ辞書から、文字の名前によってそのキーに対応した文字のアリティを得る。 3・・・2.で得た整数が1以上のときはその回数だけ、0のときは引数終端子が現れるまで文字列解析機能を繰り返し実行し、構造化された文字の名前の配列を獲得する。 4・・・3.で得られた配列の各文字に対して、描画手続き辞書からそのキーに対応した文字の描画手続きを得、これに抽出した引数を渡して実行する。 【0022】文字列解析機能:描画の対象である文字列を引数をとらない文字、引数をとる文字、および引数である文字列に分けるオペレータである。引数は、さらに再帰的に析する。 【0023】文字列解析機能は、引数をとる文字または引数区切子の直後から始まる部分文字列を描画オペレータによって渡される。図.1は、この機能の内部処理のフローチャートである。以下は、その手順である。 【0024】1・・・部分文字列に含まれる文字の文字コードを得る。 2・・・文字コードが引数区切子である場合、それまでの解析結果を返して終了する。 3・・・引数区切子の前までの文字列の文字を名前に変換する。 4・・・アリティ辞書により文字が引数をとるか確認する。 5・・・文字が引数をとる場合は、本機能を再帰的に実行する。引数をとらない場合は、3.に戻る。部分文字列の全文字について、この処理を行う。 【0025】描画イメージのメトリクスを得る機能:描画手続きにおける高度な組版機能が計算するために必要なオペランドである引数の文字列幅とバウンディングボックスの大きさを求める機能である。 【0026】この機能に与えられるオペランドは、引数である文字列全ての文字の名前である。また、文字列の大きさを求めるため、その1文字ごとの文字幅とバウンディングボックスの大きさが必要である。これは、メトリックス辞書に定義した文字幅の x 成分と y 成分、バウンディングボックスの左下の (x, y) 座標と右上の(x, y) 座標のことである。文字の名前をオペランドとしているのは、それをキーとしているのがメトリックス辞書であり、計算に必要なのはメトリックス辞書が返す文字の大きさを示す6つの値だからである。この6つの数値をもとに変更すべきパラメータの計算を行い、その結果である文字列の文字列幅の x 成分と y成分、バウンディングボックスの左下の (x, y) 座標と右上の (x, y) 座標の6つの値を本機能は出力する。 【0027】引数の描画オペレータ:引数をとる文字の描画手続きで実行され、引数の各文字に対して描画手続き辞書に対応する描画手続きを実行する。この描画オペレータのオペランドは文字列の描画オペレータとは異なり、文字列ではなく、構造化された文字名の配列である。というのは、描画手続きに渡される引数は、文字列解析機能により変換された結果の配列だからである。 【0028】 【本フォント機構を用いた文字の出力例】図.3は、引数をとる数式用フォントの例である。Σと積分記号は上限、下限を引数としてとる。根号と括弧は、その文字が囲む文字列を引数としてとる。分数は、分子と分母を引数としてとり、文字の指数と添え字はフォント設計者が設定した文字に対しての引数としてとることができる。 【0029】図4、5、6は、文字の出力例である。 【0030】図4の分線は、分子、分母の幅とバウンディングボックスの値から長さを変更している。また、分子と分母の描画開始座標も変更する。Σの場合は、引数の描画開始位置、Σの幅と描画開始位置の変更がなされている。 【0031】図5の括弧は、引数の大きさによって文字幅の変更及び変形がなされている。根号も同様に変更されている。図6の積分記号では、引数の大きさによって引数の描画開始位置と次の文字の描画開始位置を変更している。 【0032】従来のアウトラインフォントは、多数の文字を高速に描画するために、1度描画した特定の大きさの文字のイメージをキャッシュする機構を備えている。本発明においては、引数の異なる同じ文字の描画の際にキャッシュされているイメージが利用可能か否かをフォント機構が判断することは難しい。しかし、フォントプログラムにキャッシングを制御する手段を提供することで、フォント設計者がこれを利用して引数をとる文字の高速な描画手続きを記述することが可能になる。 【0033】たとえば、上述のΣの例では、描画イメージは引数によって変わらないため、それがキャッシュされていれば常に利用可能である。また、括弧や根号のように引数のバウンディングボックスの高さのみによって描画イメージを変形する場合、そのパラメータが等しいときにキャッシュを利用すれば、数式ではバウンディングボックスの高さが等しくなる機会は多いから、高い描画速度が得られる。 【0034】 【発明の効果】以上のように、請求項1記載の発明によれば、そのフォント機構に対応して作成されるフォントの側で、文脈等に応じて文字の形状等を変更する機能をアプリケーションソフトウェアが共有できる形式で提供することができる。
|
| 【出願人】 |
【識別番号】300075658 【氏名又は名称】長谷 英明
|
| 【出願日】 |
平成12年10月27日(2000.10.27) |
| 【代理人】 |
|
| 【公開番号】 |
特開2002−132753(P2002−132753A) |
| 【公開日】 |
平成14年5月10日(2002.5.10) |
| 【出願番号】 |
特願2000−328830(P2000−328830) |
|