(57)【特許請求の範囲】
【請求項１】
アウトラインフォントにおいて、グリフの各一筆に相当する形状を複数の輪郭線で形成し、
グリフの各一筆に相当する形状の構造線には、その周辺に配置される輪郭線より幅の広い輪郭線を配置する、ことを特徴とするフォント表現方法。
【請求項２】
アウトラインフォントにおいて、グリフの各一筆に相当する形状を複数の輪郭線で形成し、
グリフの各一筆に相当する形状を形成するための輪郭線として、内部のドットが反転されるべき普通の輪郭線と、内部のドットの反転が解除されるべき特別の輪郭線とを用いることを特徴とするフォント表現方法。
【請求項３】
請求項１記載のフォント表現方法に従ったグリフのアウトラインフォントデータを入力するデータ入力手段、該データ入力手段により入力されたアウトラインフォントデータに基づきグリフの輪郭線を展開する輪郭線展開手段、該輪郭線展開手段により展開された輪郭線の内部のドットの反転を行う塗りつぶし手段、該塗りつぶし手段のドット反転により得られたドットイメージを合成しグリフのドットイメージを得る手段、及び、該合成されたグリフのドットイメージを出力する手段を有するアウトラインフォントのラスタライザ。
【請求項４】
請求項２記載のフォント表現方法に従ったグリフのアウトラインフォントデータを入力するデータ入力手段、該データ入力手段により入力されたアウトラインフォントデータに基づきグリフの輪郭線を展開する輪郭線展開手段、該輪郭線展開手段により展開された普通の輪郭線の内部のドットの反転を行う塗りつぶし手段、該塗りつぶし手段のドット反転により得られたドットイメージに対して、該輪郭線展開手段により展開された特別の輪郭線の内部のドットの反転の解除を行う反転解除手段、該反転解除手段によりドット反転解除後のドットイメージを合成しグリフのドットイメージを得る手段、及び、該合成されたグリフのドットイメージを出力する手段を有するアウトラインフォントのラスタライザ。
【請求項５】
請求項３記載のラスタライザにおいて、データ入力手段により入力されるグリフのアウトラインフォントデータには輪郭線の形状に関する情報が含まれ、塗りつぶし手段による処理に先だって、輪郭線展開手段により展開された輪郭線の形状を、該輪郭線の形状に関する情報に基づき変化させる輪郭線変形手段をさらに有することを特徴とするラスタライザ。
【請求項６】
請求項４記載のラスタライザにおいて、データ入力手段により入力されるグリフのアウトラインフォントデータには輪郭線の形状に関する情報が含まれ、塗りつぶし手段及び反転解除手段による処理に先だって、輪郭線展開手段により展開された輪郭線の形状を、該輪郭線の形状に関する情報に基づき変化させる輪郭線変形手段をさらに有することを特徴とするラスタライザ。
【請求項７】
請求項５又は６記載のラスタライザにおいて、データ入力手段により入力された輪郭線の形状に関する情報を確率的に変動させる手段を有し、当該手段により変動させた輪郭線の形状に関する情報が輪郭線変形手段に用いられることを特徴とするラスタライザ。
【請求項８】
請求項３又は５記載のラスタライザにおいて、データ入力手段により入力されるグリフのアウトラインフォントデータには輪郭線の位置に関する情報が含まれ、塗りつぶし手段による処理に先だって、輪郭線展開手段により展開された輪郭線の位置を該輪郭線の位置に関する情報に基づいて変更する輪郭線移動手段をさらに有することを特徴とするラスタライザ。
【請求項９】
請求項４又は６記載のラスタライザにおいて、データ入力手段により入力されるグリフのアウトラインフォントデータには輪郭線の位置に関する情報が含まれ、塗りつぶし手段及び反転解除手段による処理に先だって、輪郭線展開手段により展開された輪郭線の位置を該輪郭線の位置に関する情報に基づき変更する輪郭線移動手段をさらに有することを特徴とするラスタライザ。
【請求項１０】
請求項８又は９記載のラスタライザにおいて、データ入力手段により入力された輪郭線の位置に関する情報を確率的に変動させる手段を有し、当該手段により変動させた輪郭線の位置に関する情報が輪郭線移動手段に用いられることを特徴とするラスタライザ。
【発明の詳細な説明】
【０００１】
【発明の属する分野】
本発明は、アウトラインフォント技術に係り、特に、毛筆体のような単純な輪郭線では表現しにくいフォントの表現に関する。
【０００２】
【従来の技術】
コンピュータの表示機器であるディスプレイやプリンタは、微少なドット（ピクセルとも呼ばれる）の集合として絵を表現する。そのため、グリフ（文字、その他の記号を総称してグリフと呼ぶ）の表示に際しても、各グリフをドットの集合として表現し、それを例えば一次記憶や二次記憶等に格納し、それらを適宜取り出して使っていた（このようなドットの集合として表現されたグリフセットをドットフォントと呼ぶ）。
【０００３】
このようなドットフォントも拡大、縮小が可能である。整数倍の拡大のためには、グリフを構成するドットを所望の大きさに拡大し、拡大したドットを拡大率に応じた位置に配置すればよい。つまり、グリフをドット単位で拡大することができる。逆に整数分の１というような縮小は、グリフを構成するドットを行毎、列毎に間引くことにより実現できる。しかし、拡大によって、本来は斜め線や曲線を表現していた部分が階段状に表現されたり、縮小によって、本来存在するはずの横線等が消失したり、同一線幅であった線が線幅の違う線になる等々の問題がある。
【０００４】
このような問題を解決するために考案された技術が、例えば特開昭６４−４０９８６号公報（文字フォントの表現方式）に述べられているアウトラインフォントである。これは、一つのグリフを構成するドットの集合の外縁を表す直線又は曲線（輪郭線、アウトライン）を用いてグリフを定義する技術である。グリフを実際に表示する際には、輪郭線の内部を塗りつぶす処理を行うことによりグリフのドットイメージを生成する。
【０００５】
アウトラインフォントにおいては、データの記録形式も工夫されることが多い。例えば、輪郭線を構成する直線や曲線をそのまま記憶しておく代わりに、直線や曲線を構成するに足るだけの点の座標や、各点の種別情報（属性情報）を記憶する。属性とは、例えば直線の始点、直線の終点、曲線の始点、曲線上の制御点、曲線の終点、各点の輪郭線上の位置等々である。グリフを表示する場合、グリフの座標情報及び属性情報に基づいて、”絵”としてのグリフの輪郭線をメモリ上に展開する。そして、この輪郭線を所望のサイズに変倍し、次に輪郭線の内部の塗りつぶし（ラスタライズ）を行ってグリフのドットイメージを完成し、これを従来と同様にしてディスプレイ又はプリンタに出力する。
【０００６】
このようなアウトラインフォントによれば、ドットフォントを拡大した場合のような斜め線の階段状の歪み等は生じない。しかし、アウトラインフォントにも、縮小の場合に若干の問題がある。輪郭線を単純に縮小すると、ドットフォントの場合のように、線の幅が乱れたり、線が消えたりすることがある。そこで、輪郭線の変倍の際に、必要に応じ輪郭線を調整する処理、いわゆるヒンティングが行われることが多い。これについては、例えば特開平６−８３３１３号公報（輪郭線補正方法）に詳しい。
【０００７】
アウトラインフォントの輪郭線の構成方法に、フルアウトラインとストロークアウトラインがあり、それぞれ一長一短がある。フルアウトラインについては特開平１−２００９６８号公報（文字パターン発生装置）等に詳しい。ストロークアウトラインは特開平２−１６１５７４号公報（エレメント別に文字を構成したアウトラインフォントの塗りつぶし方法及び装置）等に詳しい。
【０００８】
フルアウトラインは、ドットで表現されたグリフを”絵”として解釈し、ドット群の外縁を輪郭線として表現したものである。図２８（ａ）に示す例から分かるように、輪郭線に重なりが生じないため、輪郭線内部の塗りつぶし処理を高速に行うことができる。しかし、斜め線の交差等を表現しづらい。
【０００９】
ストロークアウトラインは、ドットで表現されたグリフを”部品の集まり”として解釈し、それぞれの”部品”の外縁を輪郭線として表現したものである。
【００１０】
”部品”としては偏や旁、一筆（ストローク）、基本部品（例えば矩形、三角形、曲線）等が選ばれることが多い。図２８（ｂ）にストロークを部品とした例を示す。このような部品の組合せでグリフを構成するため、斜め線の交差部分等の表現力が向上し、また、滑らかな一筆を分割せず、そのまま一つの曲線として表すことができる。しかし、部品の位置調整が煩雑であり、また、輪郭線が重なるために塗りつぶし処理が複雑になりやすい。
【００１１】
部品の集合としてグリフを定義するストロークアウトラインでは、各グリフに現れる部品のうち、同一の形状のものを複数のグリフで共有すれば、フォントデータのファイルサイズの縮小を図ることができる。また、形状が完全に同一でなくとも、代表的な形状をいくつか用意しておき、これを若干の変形を加えて利用することも可能である。これが「階層型フォント」の考え方である。
【００１２】
アウトラインフォントは一般に次のような手順で作成される。
(１)  グリフを紙の上にデザインする。
(２)  紙上のグリフをドットの集合として電子的に読み取る。
(３)  読み取ったドットイメージに対し、読み取り時のゴミ（孤立点等）を除去したり、読み取り時の抜けを補う等の編集を施す。
(４)  編集後のドットイメージより輪郭線を抽出する。
(５)  抽出された輪郭線を編集する。例えば、滑らかな曲線を直線化する、直線の若干の傾きを捨て垂直や水平にまとめる、分割された曲線を統合する等々の処理をする。
(６)  編集後の輪郭線のデータを適当な形式で格納する。
【００１３】
さて、毛筆を用いて書かれた文字では、墨の量や筆の硬さ等の関係から、カスレが生じる。つまり、長い縦線や横線を書いた時に、墨が不足して途中に白く抜けた部分が現れる。カスレの部分には、黒いビットが点々と並んでおり、それらの輪郭線を抽出すること自体が困難である。さらに、抽出できたとしても、輪郭線は複雑に入り組んだものとなってしまい、それを表現するためのデータ量は膨大なものになることが予想される。
【００１４】
そこで、アウトラインフォントの作成手順において、カスレが補正されるのが普通であった。つまり、墨の付かなかったカスレの部分にも、そこに墨が付いているものとして、輪郭線を抽出した。その結果、適正なデータ量で、筆文字の輪郭をとどめたアウトラインフォントを作成できるようにはなった。そのような毛筆体フォントの例を図２９に示す。
【００１５】
しかし、近年のコンピュータ機器の高機能化に伴い、フォントに対する要求も多岐にわたるようになってきた。その一つが、「毛筆体でカスレを表現したい」という要求である。
【００１６】
これまでにも、アウトラインフォントのラスタライズに際して、その内部を一様に塗りつぶすのではなく、様々なパターンで埋める方式が提案されている。これは特開平４−１１９３９３号公報（フォント修飾方式）等に詳しい。しかし、カスレは運筆（筆の動き）に沿って生じるものであり、あるパターンで単純に輪郭線を埋めているのでは、自然なカスレを表現できない。
【００１７】
また、カスレを表現する方法として、例えば、ストローク上にカスレを表示する位置を示す複数のカスレ線を描き、各カスレ線上にフラクタルを用いて多数の点（白色）をプロットする手法も知られている（１１th  Ｆuzzy  Ｓystem  Ｓymposium（Ｏkinawa，Ｊuly  １２〜１４，１９９５），ＦＥ１−４“毛筆体におけるフラクタルを用いたかすれ表現”）。しかし、このような従来の方法は、輪郭線の内部を塗りつぶす処理を一度行い、得られたドット表現のグリフの一部を再度反転することにより、カスレを表現しようとするものであって、グリフ情報そのものやラスタライズ手段においてカスレを表現するものではない。
【００１８】
【発明が解決しようとする課題】
本発明は、データ量の増加がネックとなって実現が困難であった毛筆書体の輪郭線による表現を再度見直すことにより、データ量を大幅に増加させることなく、自然な輪郭形状やカスレを持つフォントの表現を可能にする新たな方法及び装置を提供しようとするものである。
【００１９】
【課題を解決するための手段】
請求項１又は２記載の発明によれば、新規なフォント表現方法が提供される。
【００２０】
請求項１記載の発明と請求項２記載の発明の共通する特徴は、アウトラインフォントにおいて、グリフの各一筆に相当する形状を複数の輪郭線で形成することにある。
【００２１】
請求項１記載の発明のさらなる特徴は、グリフの各一筆に相当する形状の構造線には、その周辺に配置される輪郭線より幅の広い輪郭線を配置することにある。
【００２２】
請求項２記載の発明のさらなる特徴は、グリフの各一筆に相当する形状を形成するための輪郭線として、内部のドットが反転されるべき普通の輪郭線と、内部のドットの反転が解除されるべき特別の輪郭線とを用いることにある。
【００２３】
請求項３乃至１０の各項記載の発明によれば、新規なアウトラインフォントのラスタライザが提供される。
【００２４】
請求項３記載の発明は、請求項１記載の発明のフォント表現方法に従ったグリフのアウトラインフォントデータを入力するデータ入力手段、該データ入力手段により入力されたアウトラインフォントデータに基づきグリフの輪郭線を展開する輪郭線展開手段、該輪郭線展開手段により展開された輪郭線の内部のドットの反転を行う塗りつぶし手段、該塗りつぶし手段のドット反転により得られたドットイメージを合成しグリフのドットイメージを得る手段、及び、該合成されたグリフのドットイメージを出力する手段を有することを特徴とするものである。
【００２５】
請求項４記載の発明は、請求項２記載の発明のフォント表現方法に従ったグリフのアウトラインフォントデータを入力するデータ入力手段、該データ入力手段により入力されたアウトラインフォントデータに基づきグリフの輪郭線を展開する輪郭線展開手段、該輪郭線展開手段により展開された普通の輪郭線の内部のドットの反転を行う塗りつぶし手段、該塗りつぶし手段のドット反転により得られたドットイメージに対して、該輪郭線展開手段により展開された特別の輪郭線の内部のドットの反転の解除を行う反転解除手段、該反転解除手段によりドット反転解除後のドットイメージを合成しグリフのドットイメージを得る手段、及び、該合成されたグリフのドットイメージを出力する手段を有することを特徴とするものである。
【００２６】
請求項５記載の発明の特徴は、請求項３記載の発明のラスタライザにおいて、データ入力手段により入力されるグリフのアウトラインフォントデータには輪郭線の形状に関する情報が含まれ、塗りつぶし手段による処理に先だって、輪郭線展開手段により展開された輪郭線の形状を、該輪郭線の形状に関する情報に基づき変化させる輪郭線変形手段をさらに有することにある。
【００２７】
請求項６記載の発明の特徴は、請求項４記載の発明のラスタライザにおいて、データ入力手段により入力されるグリフのアウトラインフォントデータには輪郭線の形状に関する情報が含まれ、塗りつぶし手段及び反転解除手段による処理に先だって、輪郭線展開手段により展開された輪郭線の形状を、該輪郭線の形状に関する情報に基づき変化させる輪郭線変形手段をさらに有することにある。
【００２８】
請求項７記載の発明の特徴は、請求項５又は６記載の発明のラスタライザにおいて、データ入力手段により入力された輪郭線の形状に関する情報を確率的に変動させる手段を有し、当該手段により変動させた輪郭線の形状に関する情報が輪郭線変形手段に用いられることにある。
【００２９】
請求項８記載の発明の特徴は、請求項３又は５記載の発明のラスタライザにおいて、データ入力手段により入力されるグリフのアウトラインフォントデータには輪郭線の位置に関する情報が含まれ、塗りつぶし手段による処理に先だって、輪郭線展開手段により展開された輪郭線の位置を、該輪郭線の位置に関する情報に基づいて変更する輪郭線移動手段をさらに有することにある。
【００３０】
請求項９記載の発明の特徴は、請求項４又は６記載の発明のラスタライザにおいて、データ入力手段により入力されるグリフのアウトラインフォントデータには輪郭線の位置に関する情報が含まれ、塗りつぶし手段及び反転解除手段による処理に先だって、輪郭線展開手段により展開された輪郭線の位置を該輪郭線の位置に関する情報に基づき変更する輪郭線移動手段をさらに有することにある。
【００３１】
請求項１０記載の発明の特徴は、請求項８又は９記載の発明のラスタライザにおいて、データ入力手段により入力された輪郭線の位置に関する情報を確率的に変動させる手段を有し、当該手段により変動させた輪郭線の位置に関する情報が輪郭線移動手段に用いられることにある。
【００３２】
【発明の実施の形態】
＊フォント表現方法＊
本発明によるフォント表現方法の基本的な発想は、毛筆そのもののシミュレートである。以下、図面を用い、より具体的に説明する。
【００３３】
［フォント表現方法１］
アウトラインフォントのグリフ表現において、一筆に相当する形状が複数の輪郭線によって形成される。一筆を構成する輪郭線の形状、数、配置によって、毛筆の多数の毛先の軌跡による毛筆文字のストローク端等に見られる複雑微妙な輪郭形状に近い形状の表現が容易になるとともに、輪郭線の配置及び／又は形状を調整し必要な部分において輪郭線間に隙間を生じさせることにより、カスレを表現することができる。このような輪郭線に沿ってカスレを生じさせる方法によれば、毛筆の多数の毛先の動きに沿って発生する毛筆文字のカスレに近い自然なカスレを実現できる。しかも、一筆を構成する個々の輪郭線は単純なものにすることができるため、フォントデータ量の大幅な増加を抑えることができる。このフォント表現方法の具体的な実施形態を次に述べる。
【００３４】
＜フォント表現方法１−１＞
複数の輪郭線によるストロークの表現例を図１及び図２に示す。図１はカスレを含む横ストロークの例であり、４個の輪郭線１０１，１０２，１０３，１０４によって表現される。グリフを表示する時には、各輪郭線の内部が塗りつぶされる（ドットが反転される）。カスレが必要でない部分（左右端、下縁等）では輪郭線を密に配置して隙間すなわちカスレを生じにくくし、カスレが必要な部分（上縁等）では輪郭線を疎に配置し隙間を生じやすくしている。図２はカスレを含む左払いストロークの例であり、７個の輪郭線１１１，１１２，．．．，１１７によって表現される。カスレが必要でない部分（打ち込み部等）は輪郭線が密に配置され、カスレが必要な部分（払いの先端等）は輪郭線が疎に配置されることによりカスレを生じやすくしている。
【００３５】
＜フォント表現方法１−２＞
輪郭線の間の隙間は、大きなサイズで表示する時には、そこが反転されずに白抜きになる可能性が高いが、小さなサイズで表示する時には隙間自体が狭くなるため白抜けになる可能性は低くなる。そこで、カスレを生じさせたい部分の輪郭線には、小さいサイズで表示した時でも確実に白抜けとなるような幅の隙間を配置し、カスレを生じさせたくない部分の輪郭線には、大きいサイズで表示した時にも白抜けとならないよう隙間を配置しない。このような輪郭線配置を行った横ストロークの例を図３に、左払いの例を図４に示す。
【００３６】
＜フォント表現方法１−３＞
複数の輪郭線によるストロークの表現の別の例を図５及び図６に示す。図５はカスレのある横ストロークの例、図６はカスレのある左払いストロークの例である。本例は、複数の輪郭線によってストロークが表現される点は図１及び図２に示した例と同様であるが、本例では構造線（筆の中心が辿るはずの線でカスレが生じにくい）には幅広い輪郭線が、その周辺には狭い輪郭線が配置されている。一筆の中でも、例えば横ストロークにおける下縁等は筆の動く際に力が最も伝わりやすくカスレが生じにくいので、幅の広い輪郭線を配置する。このようにすることにより、望むカスレの発生を可能にしつつ必要な輪郭線の総数を減らし、ひいてはフォントデータ量の削減を図ることができる。例えば、図５の横ストロークは３個の輪郭線１２１，１２２，１２３により表現され、図６の左払いは４個の輪郭線１３１，１３２，１３３，１３４により表現され、図１及び図２に示した例より必要な輪郭線の数が減っている。
【００３７】
［フォント表現方法２］
本発明のもう一つのフォント表現方法について説明する。本方法は前述のフォント表現方法１と同様に一筆に相当する形状を複数の輪郭線によって形成するが、輪郭線として、一筆に相当する形状の外縁を構成する（その内部のドットが反転される）普通の輪郭線と、普通の輪郭線に包含されるか重複部分を持つ（その内部のドットの反転を解除するための）特別の輪郭線を組み合わせて用いる。すなわち、特別の輪郭線によって、その内部に積極的に白抜けの「穴」を開け、この穴によりカスレを実現する。普通の輪郭線は、１個の場合と複数の場合とがある。普通の輪郭線の個数は、表現したい形状の複雑さを考慮して決めればよい。普通の輪郭線を複数個用いる場合、それらの隙間によるカスレと、特別の輪郭線によるカスレとを組み合わせることも可能である。本方法による表現例を図７及び図８に示す。図７は横ストロークの例であり、１個の普通の輪郭線１４１と、３個の特別の輪郭線１４２，１４３，１４４により表現されている。図８は左払いの例であり、１個の普通の輪郭線１５１と、３個の特別の輪郭線１５２，１５３，１５４による表現されている。
【００３８】
＊フォントデータ構造＊
前記フォント表現方法１又は２のためのデータ構造の例を図９乃至図１３により説明する。ここに示す例は「階層型フォント」であり、各文字（より一般的にはグリフ）は複数の部品（ストローク等）から構成される。
【００３９】
図９は文字コードに対応する文字データを得るためのテーブルの概念図である。ある文字コードＣｋが指定されると、このテーブルより、その文字データの格納位置情報Ｉｋを得ることができる。
【００４０】
図１０は文字データの概念図である。文字コードＣｋの格納位置情報Ｉｋにより、図１０に示すような文字データの格納場所を知ることができる。文字は複数の部品から構成される。ここに示す例では、文字はｍ個の部品からなり、各部品のデータは、部品の識別子と、文字中での部品の配置位置とからなる。
【００４１】
図１１と図１２は部品を構成する輪郭線の情報からなる部品データである。図１０に示す文字データの部品識別子Ｓｋにより、図１１又は図１２に示すような部品データの格納場所を知ることができる。
【００４２】
図１１は前記フォント表現方法１の場合の例であり、部品はｎ個の輪郭線（普通の輪郭線）によって構成される。
【００４３】
図１２は前記フォント表現方法２の場合の例であり、部品はｎ１個の普通の輪郭線（内部のドットが反転される輪郭線）と、ｎ２個の特別の輪郭線（ドット反転を解除するための輪郭線）とからなる。この例では普通の輪郭線の情報と、特別の輪郭線の情報を順に並べた構成となっているが、輪郭線の種類を区別せずに輪郭線情報を並べ、各輪郭線の情報に輪郭線の種類（反転／反転解除）を示すフラグを持たせてもよい。
【００４４】
なお、ラスタライザにおいて輪郭線の形状に関する情報を取り込み、輪郭線の形状を制御する例を後に述べるが、そのような輪郭線の形状に関する情報をフォントデータに持たせることができる。このような輪郭線の形状に関する情報を図１０の文字データに付加した例を図１３に示すが、詳細は後述する。
【００４５】
＊ラスタライザ＊
前述のフォント表現方法１又は２に従ったアウトラインフォントデータを用いて、文字（より一般的にはグリフ）のドットイメージを生成するための、本発明のラスタライザの例について説明する。
【００４６】
［ラスタライザの例１］
ここに示すラスタライザは前記フォント表現方法１による例であり、その機能ブロック図を図１４に、処理の流れをＰＡＤ図として図１５にそれぞれ示す。
【００４７】
図１４において、アウトラインフォントデータファイル２０８は、例えば、図９に示した構造のテーブル、図１０に示した構造の文字データ、及び、図１１に示した構造の部品データの集合を格納しているファイルである。データ入力部２０１は、外部より文字コードを受け取り、その文字コードに対応する文字（グリフ）のためのデータをアウトラインフォントデータファイル２０８より取り込む部分である。輪郭線展開部２０２はデータ入力部２０１より文字の部品の位置情報や部品を構成する輪郭線の情報を受け取り、メモリ２０４上の適切な位置に輪郭線を展開する部分である。塗りつぶし部２０３は、メモリ２０４上に展開された輪郭線の内部のドットを黒に反転し輪郭線内部を塗りつぶす部分である。イメージ合成部２０５はメモリ２０４上のイメージをメモリ２０６上のイメージと合成し（重ね合わせ）、合成イメージをメモリ２０６上に得るものである。最終的に文字のドットイメージがメモリ２０６に得られる。イメージ出力部２０７はメモリ２０６上の文字のドットイメージを外部へ出力する部分である。なお、メモリ２０４とメモリ２０６は必ずしも独立した物理メモリである必要はなく、同一の物理メモリ上の特定の領域が割り当てられてもよい。このことは後述の他の例においても同様である。
【００４８】
このラスタライザにおける処理内容を図１５に関連付けて説明する。図１５において、まず処理ブロック２１０で文字のためのデータを入力する。具体的には、データ入力部２０１において、外部より入力された文字コード（Ｃｋ）を用いて、アウトラインフォントデータファイル２０８内の図９に示したテーブルから、その文字の格納位置情報（Ｉｋ）を求める。この格納位置情報を用いて、対応した図１０に示すような文字データを取り込む。取り込んだ文字データ中の部品位置情報（Ｓ１，．．．）を用いて、文字の各部品に対する図１１に示すような部品データ（輪郭線情報）を取り込む。
【００４９】
次に文字の各部品（ストローク）について、そのドットイメージを生成する処理ブロック２１１を実行する。この処理ブロック２１１は、各部品の各輪郭線についてドットイメージを生成する処理ブロック２１２の繰り返しからなる。処理ブロック２１２は、一つの輪郭線をメモリ２０４上に展開する処理２１３、展開された輪郭線の内部の塗りつぶし（ドット反転）の処理２１４、メモリ２０４上のドットイメージをメモリ２０６上のドットイメージに重ね合わせる処理２１５からなる。処理２１３は輪郭線展開部２０２の処理、処理２１４は塗りつぶし部２０３の処理、処理２１５はイメージ合成部２０５の処理である。
【００５０】
例えば、図１に示した横ストロークの場合、処理ブロック２１２においては、輪郭線１０１の展開と塗りつぶし、次に輪郭線１０２の展開と塗りつぶし、輪郭線１０１を塗りつぶしたドットイメージとの合成、以下同様に輪郭線１０４まで処理することにより、当該横ストロークのドットイメージが完成する。
【００５１】
なお、階層型フォントでは、同じ部品が複数の文字に共有される関係から、図１１に示すような輪郭線情報中の点の座標は相対座標で指定されるので、個々の文字における部品の輪郭線の実際の座標は、図１０に示すような文字データ中の部品の配置位置情報によって最終的に決まる。メモリ２０４上に輪郭線を相対座標で展開してもよく、その場合はイメージ合成部２０５において、メモリ２０４上のドットイメージを実際の文字中の位置へ座標変換してからメモリ２０６上のドットイメージと合成する必要がある。また、メモリ２０６のある領域に部品のドットイメージを生成し、生成された部品のドットイメージを同メモリの別領域（又は他のメモリ）に配置して最終的な文字ドットイメージを完成するようにしてもよい。この場合、イメージ合成部２０５はメモリ２０４上のドットイメージとメモリ２０６上のドットイメージとの合成を部品毎に行い、完成した部品のドットイメージを文字中の部品配置にあわせて配置すればよい。以上のことは後述の各ラスタライザにおいても同様である。
【００５２】
文字のすべての部品に対する処理が終了し、文字のドットイメージが完成すると、処理ブロック２１５が実行され、文字のドットイメージが外部へ出力される。これはイメージ出力部２０７の処理である。
【００５３】
［ラスタライザの例２］
ここに示すラスタライザは前記フォント表現方法２による例であり、その機能ブロック図を図１７に、処理の流れをＰＡＤ図として図１８にそれぞれ示す。
【００５４】
図１６において、アウトラインフォントデータファイル３０８は、図１４中の同名部に対応するものであるが、ドットの反転を解除するための特別の輪郭線も用いる前記フォント表現方法２による関係から、例えば、図９に示した構造のテーブル、図１０に示した構造の文字データ、及び、図１２に示した構造の部品データの集合を格納しているファイルである。データ入力部３０１、輪郭線展開部３０２、塗りつぶし部３０３、メモリ３０４、イメージ合成部３０５、メモリ３０６、イメージ出力部３０７は、図１４中の同名部と同様である。ただし、輪郭線展開部３０２は、普通の輪郭線のほかに特別の輪郭線の展開も行う。
【００５５】
反転解除部３０９は図１４中に対応する部分が存在しないものである。この反転解除部３０９は、輪郭線展開部３０２によりメモリ３０４上に展開された特別の輪郭線の内部にあるドットの中で、普通の輪郭線の内部に存在し反転されたドットについて、その反転を解除する（黒から白に戻す）処理をメモリ３０６のデータに対して実行する部分である。
【００５６】
このラスタライザにおける処理内容を図１７に関連付けて説明する。図１７において、まず処理ブロック３１０で文字のためのデータを入力する。具体的には、データ入力部３０１において、外部より入力された文字コード（Ｃｋ）を用いて、アウトラインフォントデータファイル３０８内の図９に示したテーブルから、その文字の格納位置情報（Ｉｋ）を求める。この格納位置情報を用いて、対応した図１０に示すような文字データを取り込む。取り込んだ文字データ中の部品位置情報（Ｓ１，．．．）を用いて、文字の各部品に対する図１２に示すような輪郭線情報を取り込む。
【００５７】
次に文字の各部品（ストローク）について、そのドットイメージを生成する処理ブロック３１１を実行する。この処理ブロック３１１は、各部品を構成する普通の輪郭線についての処理ブロック３１２の繰り返しと、特別の輪郭線についての処理ブロック３１３の繰り返しとからなる。
【００５８】
処理ブロック３１２は、一つの普通の輪郭線をメモリ３０４上に展開する処理３１４、展開された輪郭線の内部の塗りつぶし（ドット反転）の処理３１５、メモリ３０４上のドットイメージをメモリ３０６上のドットイメージに重ね合わせる処理３１６からなる。処理３１４は輪郭線展開部３０２の処理、処理３１５は塗りつぶし部３０３の処理、また処理３１６はイメージ合成部３０５の処理である。
【００５９】
一つの部品に対する処理ブロック３１２の処理が終わると、この部品に対する処理ブロック３１３の処理が実行される。この処理ブロック３１３は、一つの特別の輪郭線をメモリ３０４上に展開する処理３１７と、展開された特別の輪郭線の内部について、メモリ３０６上の反転されているドットの反転を解除する処理３１８とからなる。処理３１７は輪郭線展開部３０２の処理、処理３１８は反転解除部３０９の処理である。
【００６０】
例えば、図７に示した横ストロークの場合、処理ブロック３１２によって、輪郭線１４１の内部を塗りつぶしたドットパターンがメモリ３０６に得られる。次に、処理ブロック３１３によって、普通の輪郭線１４１の内部の反転されたドットの中で、特別の輪郭線１４２，１４３，１４４の内部にあるドットの反転が解除される。このように、フォント表示方法２の場合、部品を構成する普通の輪郭線をラスタライズし、次に、部品を構成する特別の輪郭線をラスタライズするが、このラスタライズでは輪郭線内部のドット（ビット）を反転するのではなく、輪郭線内部の反転済みのドットに限って反転を解除する。
【００６１】
文字のすべての部品に対する処理が終了し、文字のドットイメージが完成すると、処理ブロック３１９が実行され、文字のドットイメージが外部へ出力される。これはイメージ出力部３０７の処理である。
【００６２】
［ラスタライズの例３］
ここに示すラスタライズは、基本的には前記フォント表示方法１により文字のドットイメージを生成するが、メモリ上に展開された輪郭線の内部を塗りつぶす処理を実行する前に、輪郭線の形状を変化させる処理を可能にする。この処理のために「輪郭線の形状に関する情報」が用意される。ここでいう「形状」とは、幅や長さ、曲率等を意味する。したがって、「輪郭線の形状に関する情報」とは、その輪郭線の幅や長さ、曲率等を制御するに足る情報ということである。
【００６３】
このようなラスタライザの機能ブロック図を図１８に、処理の流れをＰＡＤ図として図１９にそれぞれ示す。
【００６４】
図１８において、アウトラインフォントデータファイル４０８は、図１４中の同名部に対応するものであるが、輪郭線の形状の制御に関連し、例えば、図１０に示した文字データに代えて、図１３に示した構造の文字データを格納している。図１３は、部品データの格納位置情報、部品の配置位置情報に加え、部品の
「輪郭線の形状に関する情報」として、部品の「縦横サイズ」を付加した文字データの例を示している。従来技術に関連する記述において、輪郭に関する点の属性として、直線の始点、直線の終点、曲線の始点、曲線状の制御点、曲線の終点、各点の輪郭線上の位置を例示したが、これに以外に「点の座標を四捨五入する」、「あるサイズでは半ドット分上に移動する」、「あるサイズでは曲線を直線に変換する」等々の属性を追加することにより、輪郭線の形状をかなり柔軟に変化させることが可能になる。
【００６５】
図１８において、データ入力部４０１、輪郭線展開部４０２、塗りつぶし部４０３、メモリ４０４、イメージ合成部４０５、メモリ４０６、イメージ出力部４０７は、図１４中の同名部と同様である。
【００６６】
輪郭変形部４０９は図１４中には対応する部分が存在しないものである。この輪郭形状変形部４０９は、輪郭線展開部４０２によりメモリ４０４上に展開された輪郭線の形状を、該当部品に対する「輪郭線の形状に関する情報」に基づいて変形させる処理を実行する部分である。
【００６７】
このラスタライザにおける処理内容を図１９に関連付けて説明する。図１９において、処理ブロック４１０で文字のためのデータを入力する。具体的には、データ入力部４０１において、外部より入力された文字コード（Ｃｋ）を用いて、アウトラインフォントデータファイル４０８内の図９に示したテーブルから、その文字の格納位置情報（Ｉｋ）を求める。この格納位置情報を用いて、対応した図１３に示すような文字データを取り込む。取り込んだ文字データ中の部品位置情報（Ｓ１，．．．）を用いて、文字の各部品に対する図１１に示すような輪郭線情報を取り込む。
【００６８】
次に文字の各部品（ストローク）について、そのドットイメージを生成する処理ブロック４１１を実行する。この処理ブロック４１１は、各部品を構成する輪郭線についての処理ブロック４１２の繰り返しからなる。
【００６９】
処理ブロック４１２は、一つの輪郭線をメモリ４０４上に展開する処理４１３、展開された輪郭線を変形する処理４１４、変形後の輪郭線の内部を塗りつぶす処理４１５、メモリ４０４上のドットイメージをメモリ４０６上のドットイメージに重ね合わせる処理４１６からなる。処理４１３は輪郭線展開部４０２の処理、処理４１４は輪郭線変形部４０９の処理、処理４１５は塗りつぶし部４０３の処理、処理４１６はイメージ合成部４０５の処理である。処理ブロック４１０により取り込まれた「輪郭線の形状に関する情報」は処理４１４に利用される。
【００７０】
文字のすべての部品に対する処理ブロック４１１が完了しメモリ４０６上に文字のドットイメージが完成すると、処理ブロック４１７が実行され、文字のドットイメージが外部へ出力される。これはイメージ出力部４０７の処理である。
【００７１】
［ラスタライザの例４］
ここに示すラスタライズは、基本的には前記フォント表示方法２により文字のドットイメージを生成するが、図１８に示したラスタライザと同様にメモリ上に展開された輪郭線に対する変形処理が可能である。この変形処理のために「輪郭線の形状に関する情報」が用意されることも同様である。
【００７２】
このラスタライザの基本構成を機能ブロック図として図２０に、処理の流れをＰＡＤ図として図２１にそれぞれ示す。
【００７３】
図２０において、アウトラインフォントデータファイル５０８は、図１６の同名部と同様のデータを格納したファイルであるが、文字データとして、図１８に関連して説明したような「輪郭線の形状に関する情報」が付加された、例えば図１３に示すようなものを格納する点が異なる。
【００７４】
データ入力部５０１、輪郭線展開部５０２、塗りつぶし部５０３、メモリ５０４、イメージ合成部５０５、メモリ５０６、イメージ出力部５０７、反転解除部５０９は、図１６中の同名部と同様の部分である。
【００７５】
輪郭線変形部５１０は図１６中には対応する部分が存在しないもので、これは図１８中の同名部と同様に、「輪郭線の形状に関する情報」に基づき、メモリ５０４上に展開された輪郭線の形状を変化させる処理を行う部分である。
【００７６】
このラスタライザにおける処理内容を図２１に関連付けて説明する。図２１において、処理ブロック５１１で文字のためのデータを入力する。この際に「輪郭線の形状に関する情報」も入力される。
【００７７】
次に文字の各部品（ストローク）について、そのドットイメージを生成する処理ブロック５１２を実行する。この処理ブロック５１２は、各部品を構成する普通の輪郭線についての処理ブロック５１３の繰り返しと、特別の輪郭線についての処理ブロック５１４の繰り返しとからなる。
【００７８】
処理ブロック５１３は、一つの普通の輪郭線をメモリ５０４上に展開する処理５１５、展開された輪郭線を変形する処理５１６、変形後の輪郭線の内部を塗りつぶす処理５１７、メモリ５０４上のドットイメージをメモリ５０６上のドットイメージに重ね合わせる処理５１８からなる。処理ブロック５１４は、一つの特別の輪郭線をメモリ５０４上に展開する処理５１９、この輪郭線を変形する処理５２０、展開された輪郭線の内部のドットで、普通の輪郭線内部の反転されたドットの反転を解除する処理５２１からなる。処理５１５，５１９は輪郭線展開部５０２の処理、処理５１６，５２０は輪郭線変形部５１０の処理、処理５１７は塗りつぶし部５０３の処理、処理５１８はイメージ合成部５０５の処理、処理５２１は反転解除部５０９の処理である。処理ブロック５１１により取り込まれた「輪郭線の形状に関する情報」は処理５１６，５２０に利用される。
【００７９】
文字のすべての部品に対し処理ブロック５１２が完了しメモリ５０６上に文字のドットイメージが完成すると、処理ブロック５２２により文字のドットイメージが外部へ出力される。これはイメージ出力部５０７の処理である。
【００８０】
［ラスタライザの例５］
ここに示すラスタライザの例は、図１８に示したラスタライザの輪郭線変形部４０９を輪郭線移動部に置き換えた構成であるので、機能ブロック図については図１８を援用する。図２２は、このラスタライザの処理の流れを示すＰＡＤ図である。
【００８１】
図２２において、処理ブロック６０１で文字のためのデータをアウトラインフォントデータファイル４０８より入力する。入力されるデータ中には、「輪郭線の位置に関する情報」が含まれることが図１８に示したラスタライザと異なる。この輪郭線の位置に関する情報は、例えば、アウトラインフォントデータファイル４０８内に格納された文字データより取り込まれる。
【００８２】
次に、文字の各部品（ストローク）について、そのドットイメージを生成する処理ブロック６０２を実行する。この処理ブロック６０２は、各部品を構成する輪郭線についての処理ブロック６０３の繰り返しからなる。
【００８３】
処理ブロック６０３は、一つの輪郭線をメモリ４０４上に展開する処理６０４、展開された輪郭線の位置を移動する処理６０５、移動後の輪郭線の内部を塗りつぶす処理６０６、メモリ４０４上のドットイメージをメモリ４０６上のドットイメージに重ね合わせる処理６０７からなる。処理６０５が輪郭線移動部（４０９）の処理であり、この処理に「輪郭線の位置に関する情報」が用いられる。
【００８４】
文字のすべての部品に対し処理ブロック６０２が完了しメモリ４０６上に文字のドットイメージが完成すると、処理ブロック６０８が実行され、文字のドットイメージが外部へ出力される。
【００８５】
［ラスタライザの例６］
ここに示すラスタライザの例は、図２０に示したラスタライザの輪郭線変形部５１０を輪郭線移動部に置き換えた構成であるので、機能ブロック図は図２０を援用する。図２３は、このラスタライザの処理の流れを示すＰＡＤ図である。
【００８６】
図２３において、処理ブロック７０１で文字のためのデータをアウトラインフォントデータファイル５０８より入力する。入力されるデータ中には、「輪郭線の位置に関する情報」が含まれることが図２０に示したラスタライザと異なる。この輪郭線の位置に関する情報は、例えば、アウトラインフォントデータファイル５０８内に格納された文字データより取り込まれる。
【００８７】
次に、文字の各部品（ストローク）について、そのドットイメージを生成する処理ブロック７０２を実行する。この処理ブロック７０２は、各部品を構成する普通の輪郭線についての処理ブロック７０３の繰り返しと、特別の輪郭線についての処理ブロック７０４の繰り返しとからなる。
【００８８】
処理ブロック７０３は、一つの普通の輪郭線をメモリ５０４上に展開する処理７０５、展開された輪郭線の位置を移動する処理７０６、移動後の輪郭線の内部を塗りつぶす処理７０８、メモリ５０４上のドットイメージをメモリ５０６上のドットイメージに重ね合わせる処理７０９からなる。処理７０６が輪郭線移動部（５１０）の処理であり、この処理に「輪郭線の位置に関する情報」が用いられる。
【００８９】
部品の普通の輪郭線すべてに対する処理が終わると、処理ブロック７０４が実行される。この処理ブロック７０４は、一つの特別の輪郭線をメモリ５０４上に展開する処理７１０、展開された輪郭線を移動する処理７１１、移動後の輪郭線の内部で、普通の輪郭線内の反転されたドットの反転を解除する処理７１２からなる。処理７１１は輪郭線移動部（５１０）の処理であり、この処理に「輪郭線の位置に関する情報」が用いられる。
【００９０】
文字のすべての部品に対して処理ブロック７０２が完了すると、文字のイメージドットがメモリ５０６上に完成し、これは処理ブロック７１３で外部へ出力される。
【００９１】
［ラスタライザの例７］
ここに示すラスタライザの例は、図１８に示したラスタライザに輪郭線移動部を追加した構成であるので、機能ブロック図は図１８を援用する。図２４は、このラスタライザの処理の流れを示すＰＡＤ図である。
【００９２】
図２４において、処理ブロック８０１で文字のためのデータをアウトラインフォントデータファイル４０８より入力する。入力されるデータ中には、「輪郭線の形状に関する情報」に加え「輪郭線の位置に関する情報」も含まれることが図１８に示したラスタライザと異なる。この輪郭線の位置に関する情報は、例えば、アウトラインフォントデータファイル４０８内に格納された文字データより取り込まれる。
【００９３】
次に、文字の各部品（ストローク）について、そのドットイメージを生成する処理ブロック８０２を実行する。この処理ブロック８０２は、各部品を構成する輪郭線についての処理ブロック８０３の繰り返しからなる。
【００９４】
処理ブロック８０３は、一つの輪郭線をメモリ４０４上に展開する処理８０４、展開された輪郭線の位置を移動する処理８０５、移動後の輪郭線の形状を変化させる処理８０６、移動変形後の輪郭線の内部を塗りつぶす処理８０７、メモリ４０４上のドットイメージをメモリ４０６上のドットイメージに重ね合わせる処理８０８からなる。処理８０５が輪郭線移動部の処理であり、この処理に「輪郭線の位置に関する情報」が用いられる。処理８０６は輪郭線変形部４０９の処理であり、これに「輪郭線の形状に関する情報」が用いられることは前述したとおりである。
【００９５】
文字のすべての部品に対し処理ブロック８０２が完了しメモリ４０６上に文字のドットイメージが完成すると、処理ブロック８０９が実行され、文字のドットイメージが外部へ出力される。
【００９６】
［ラスタライザの例８］
ここに示すラスタライザの例は、図２０に示したラスタライザに輪郭線移動部を追加した構成であるので、機能ブロック図は図２０を援用する。図２５は、このラスタライザの処理の流れを示すＰＡＤ図である。
【００９７】
図２５において、処理ブロック９０１で文字のためのデータをアウトラインフォントデータファイル５０８より入力する。入力されるデータ中には、「輪郭線の形状に関する情報」に加え「輪郭線の位置に関する情報」が含まれることが図２０に示したラスタライザと異なる。この輪郭線の位置に関する情報は、例えば、アウトラインフォントデータファイル５０８内に格納された文字データより取り込まれる。
【００９８】
次に、文字の各部品（ストローク）について、そのドットイメージを生成する処理ブロック９０２を実行する。この処理ブロック９０２は、各部品を構成する普通の輪郭線についての処理ブロック９０３の繰り返しと、特別の輪郭線についての処理ブロック９０４の繰り返しとからなる。
【００９９】
処理ブロック９０３は、一つの普通の輪郭線をメモリ５０４上に展開する処理９０５、展開された輪郭線の位置を移動する処理９０６、移動後の輪郭線の形状を変化させる処理９０７、移動変形後の輪郭線の内部を塗りつぶす処理９０８、メモリ５０４上のドットイメージをメモリ５０６上のドットイメージに重ね合わせる処理９０９からなる。処理９０６が輪郭線移動部の処理であり、この処理に「輪郭線の位置に関する情報」が用いられる。処理９０７は輪郭線変形部５１０の処理で、これに「輪郭線の形状に関する情報」が用いられる。
【０１００】
部品の普通の輪郭線すべてに対する処理が終わると、処理ブロック９０４が実行される。この処理ブロック９０４は、一つの特別の輪郭線をメモリ５０４上に展開する処理９１０、展開された輪郭線を移動する処理９１１、移動後の輪郭線の形状を変化させる処理９１２、移動変形後の特別の輪郭線の内部で、普通の輪郭線内の反転されたドットの反転を解除する処理９１３からなる。処理９１１は輪郭線移動部の処理であり、処理９１２は輪郭線変形部５１０の処理である。
【０１０１】
文字のすべての部品に対して処理ブロック９０２が完了すると、処理ブロック９１４によりメモリ５０６上に完成したドットイメージを外部へ出力する。
【０１０２】
［ラスタライザの例９］
ここに示すラスタライザの構成及び処理内容は、基本的には前述のラスタライザの例３又は例４と同様であるが、図２６に示すように、例えば１文字毎、部品毎あるいは輪郭線毎に確率的に変化する値を発生する確率変動部１００１と、データ入力部１００２（図１８中の４０１、図２０中の５０１に対応）によってアウトラインフォントデータファイル１００３（図１８中の４０８、図２０中の５０８に対応）から入力された「輪郭線の形状に関する情報」に対し、確率変動部１００１で発生した値との演算（例えば加算、減算等）を施す形状情報演算部１００４とを新たに備える。確率変動部１００１は、例えば乱数発生器やテーブル等を用いて構成される。これ以外は、図１８又は図２０に示した構成と同様である。
【０１０３】
輪郭線変形部（図１８の４０９、図２０の５１０）は、形状情報演算部１００４により演算後の「輪郭線の形状に関する情報」を用いて、輪郭線の変形を行う。したがって、同じ文字のドットイメージであっても、その輪郭形状が確率的に変化することになる。
【０１０４】
［ラスタライザの例１０］
ここに示すラスタライザの構成及び処理内容は、基本的には前述のラスタライザの例５又は例６と同様であるが、図２７に示すように、例えば１文字毎、部品毎あるいは輪郭線毎に確率的に変化する値を発生する確率変動部２００１と、データ入力部２００２（図１８中の４０１、図２０中の５０１に対応）によってアウトラインフォントデータファイル２００３（図１８中の４０８、図２０中の５０８に対応）から入力された「輪郭線の位置に関する情報」に対し、確率変動部２００１で発生した値との演算（例えば加算、減算等）を施す位置情報演算部２００４とを新たに備える。確率変動部２００１は例えば乱数発生器やテーブル等を用いて構成される。
【０１０５】
輪郭線移動部は、位置情報演算部２００４により演算後の「輪郭線の位置に関する情報」を用いて、輪郭線の移動を行う。したがって、同じ文字のドットイメージであっても、その輪郭位置が確率的に変化することになる。
【０１０６】
なお、前記のラスタライザの例７又は例８において、「輪郭線の形状に関する情報」及び「輪郭線の位置に関する情報」それぞれについても同様に確率的に変化させることにより、輪郭線の形状と位置それぞれを確率的に変動させることもできる。
【０１０７】
【発明の効果】
請求項１又は２記載の発明の方法によれば、一筆の形状を一つの輪郭線で表現する方法に比べ、毛筆の多数の毛先の軌跡による毛筆文字のストローク端等に見られる複雑微妙な形状の表現が容易になるとともに、輪郭線の形状や配置の疎密を調整し必要な部分において輪郭線間に隙間を生じさせることにより、毛筆の多数の毛先の動きに沿って発生する毛筆文字のカスレに近い、自然な印象を与えるカスレを表現できる。また、カスレを発生させたい部分の輪郭線に適切な幅の隙間を持たせておくことで、特別のヒンティングを行わなくとも、大きなサイズにラスタライズした時に、明瞭なカスレを生じさせ、小さなサイズにラスタライズした時にカスレが殆ど認められないようにすることも可能になる。しかも、一筆の形状を形成するための個々の輪郭線は単純なものにすることができるため、フォントデータ量の増加を抑えることができ、特に、一筆やその組合せ等の基本部品をグリフ間で共有するデータ構造、いわゆる階層型フォントとするならば、多数の輪郭線を用いてカスレを表現しても、フォントデータ全体のサイズを十分に小さくすることが可能である。
【０１０８】
また、請求項１記載の発明の方法によれば、カスレの生じにくい部分に幅の広い輪郭線を割り当てることにより必要な輪郭線の総数を減らし、フォントデータ量を圧縮できる。
【０１０９】
また、請求項２記載の発明の方法によれば、一筆の外縁を大きな普通の輪郭線によって表現し、その内部に特別の輪郭線を配置して「穴」を開け、この「穴」でカスレを表現することにより、カスレのあるグリフイメージを表現できる。１個の普通の輪郭線により一筆の外縁を表現し、カスレの必要な部分にだけ特別の輪郭線を配置することにより、必要な輪郭線の総数を少なくしフォントデータ量を圧縮できる。
【０１１０】
請求項３又は４記載の発明のラスタライザによれば、自然なカスレを持つグリフイメージの生成が可能である。
【０１１１】
請求項５、６、７又は８記載の発明のラスタライザによれば、ラスタライズ時に輪郭線の形状又は位置を変化させることができるため、例えば、大きなサイズにラスタライズする際には輪郭線の幅を若干狭くし隙間を広げ、又は隙間を広げるように輪郭線を移動させことによりカスレを目立たせ、小さなサイズにラスタライズする際には輪郭線の幅を広げて隙間を狭め、又は隙間を狭めるように輪郭線を移動させることによりカスレを殆ど分からないようする、といったことが可能になる。
【０１１２】
請求項７又は１０記載の発明のラスタライザによれば、輪郭線の形状に関する情報又は輪郭線の位置に関する情報を確率的に変動させられるため、同じ文字であってもラスタライズの度にカスレの具合が変化する。毛筆を用いて文章を手書きした場合、同じ文字であってもカスレは一定しない。ある文字のカスレが常に同じであると、文字単位で見てカスレが自然な印象を与えるものであっても、文字列として表示された場合に手書きの場合に比べ変化に乏しく不自然である。本ラスタライザによれば、そのような不自然さを解消できる。
【図面の簡単な説明】
【図１】複数の輪郭線による横ストロークの表現例を示す図である。
【図２】複数の輪郭線による左払いストロークの表現例を示す図である。
【図３】複数の輪郭線による横ストロークの表現例を示す図である。
【図４】複数の輪郭線による左払いストロークの表現例を示す図である。
【図５】狭い輪郭線と太い輪郭線の組合せによる横ストロークの表現例を示す図である。
【図６】狭い輪郭線と太い輪郭線の組合せによる左払いストロークの表現例を示す図である。
【図７】普通の輪郭線と特別の輪郭線の組合せによる横ストロークの表現例を示す図である。
【図８】普通の輪郭線と特別の輪郭線の組合せによる横ストロークの表現例を示す図である。
【図９】文字コードから文字データの格納位置を求めるためのテーブルの例を示す図である。
【図１０】文字データの例を示す図である。
【図１１】部品データの例を示す図である。
【図１２】普通の輪郭線と特別の輪郭線の組み合わせによる部品を表現する場合の部品データの例を示す図である。
【図１３】輪郭線の形状に関する情報を含む文字データの例を示す図である。
【図１４】本発明によるラスタライザの例１の機能ブロック図である。
【図１５】本発明によるラスタライザの例１の処理の流れを示すＰＡＤ図である。
【図１６】本発明によるラスタライザの例２の機能ブロック図である。
【図１７】本発明によるラスタライザの例２の処理の流れを示すＰＡＤ図である。
【図１８】本発明によるラスタライザの例３の機能的ブロック図である。
【図１９】本発明によるラスタライザの例３の処理の流れを示すＰＡＤ図である。
【図２０】本発明によるラスタライザの例４の機能ブロック図である。
【図２１】本発明によるラスタライザの例４の処理の流れを示すＰＡＤ図である。
【図２２】本発明によるラスタライザの例５の処理の流れを示すＰＡＤ図である。
【図２３】本発明によるラスタライザの例６の処理の流れを示すＰＡＤ図である。
【図２４】本発明によるラスタライザの例７の処理の流れを示すＰＡＤ図である。
【図２５】本発明によるラスタライザの例８の処理の流れを示すＰＡＤ図である。
【図２６】本発明によるラスタライザの例９の部分構成を示す機能ブロック図である。
【図２７】本発明のラスタライザの例１０の部分構成を示す機能ブロック図である。
【図２８】（ａ）フルアウトラインフォントの説明図である。
（ｂ）ストロークアウトラインフォントの説明図である。
【図２９】従来の毛筆体フォントの例を示す図である。
【符号の説明】
１０１〜１０４  輪郭線
１１１〜１１７  輪郭線
１２１〜１２３  輪郭線
１３１〜１３４  輪郭線
１４１  普通の輪郭線
１４２，１４３，１４４  特別の輪郭線
１５１  普通の輪郭線
１５２，１５３，１５４  特別の輪郭線
２０１，３０１，４０１，５０１  データ入力部
２０２，３０２，４０２，５０２  輪郭線展開部
２０３，３０３，４０３，５０３  塗りつぶし部
２０４，３０４，４０４，５０４  輪郭線展開用メモリ
２０５，３０５，４０５，５０５  イメージ合成部
２０６，３０６，４０６，５０６  イメージ用メモリ
２０７，３０７，４０７，５０７  イメージ出力部
２０８，３０８，４０８，５０８  アウトラインフォントデータファイル
３０９，５０９  反転解除部
４０９，５１０  輪郭線変形部（輪郭線移動部）
１００１，２００１  確率変動部
１００２，２００２  データ入力部
１００３，２００３  アウトラインフォントデータファイル
１００４  形状情報演算部
２００４  位置情報演算部
【図１】
0003556758.tif 000002
【図２】
0003556758.tif 000003
【図３】
0003556758.tif 000004
【図４】
0003556758.tif 000005
【図５】
0003556758.tif 000006
【図６】
0003556758.tif 000007
【図７】
0003556758.tif 000008
【図８】
0003556758.tif 000009
【図９】
0003556758.tif 000010
【図１０】
0003556758.tif 000011
【図１１】
0003556758.tif 000012
【図１２】
0003556758.tif 000013
【図１３】
0003556758.tif 000014
【図１４】
0003556758.tif 000015
【図１５】
0003556758.tif 000016
【図１６】
0003556758.tif 000017
【図１７】
0003556758.tif 000018
【図１８】
0003556758.tif 000019
【図１９】
0003556758.tif 000020
【図２０】
0003556758.tif 000021
【図２１】
0003556758.tif 000022
【図２２】
0003556758.tif 000023
【図２３】
0003556758.tif 000024
【図２４】
0003556758.tif 000025
【図２５】
0003556758.tif 000026
【図２６】
0003556758.tif 000027
【図２７】
0003556758.tif 000028
【図２８】
0003556758.tif 000029
【図２９】
0003556758.tif 000030