(57)【要約】【課題】電力の供給を停止しても計算された最大値および最小値のデータを保持する技術を提供すること。【解決手段】情報処理装置は、第１の記憶領域と、第２の記憶領域と、座標の最大値および最小値を含む複数のデータセットを記憶する第３の記憶領域とを有し、少なくとも第２の記憶領域および第３の記憶領域が不揮発性であるメモリと、制御装置と、電源制御回路と、フォント描画装置とを有し、制御装置は、メモリの第１の記憶領域に、複数の描画命令を書き込み、第１のレジスタに、複数の描画命令の先頭位置を示すアドレスを書き込み、第２のレジスタに、第３の記憶領域の先頭位置を示すアドレスを書き込み、制御装置は、メモリ、第１のレジスタおよび第２のレジスタに対して書き込みを行った後で、フォント描画装置を起動し、電源制御回路は、フォント描画装置が起動されると、制御装置およびメモリへの電力の供給を停止させる。【選択図】図１７
2009265414.tif 000002
【特許請求の範囲】
【請求項１】
グリフの描画命令を記憶する第１の記憶領域と、２次元座標系を用いて各画素の位置が特定される複数の画素のデータを記憶する第２の記憶領域と、各々が前記２次元座標系における座標の最大値および最小値を含む複数のデータセットを記憶する第３の記憶領域とを有し、少なくとも前記第２の記憶領域および前記第３の記憶領域が不揮発性であるメモリと、
前記メモリにアクセスするメモリアクセス手段と、前記第１の記憶領域のうち描画命令が記憶されているアドレスを記憶する第１のレジスタと、前記第３の記憶領域のうち次に最大値または最小値を記憶すべきアドレスを記憶する第２のレジスタと、前記複数の描画命令のうち前記第１のレジスタに記憶されているアドレスで指定される前記メモリ上の領域に記憶されている描画命令により描画が指示されたグリフの輪郭線を示すグリフデータを用いて、前記グリフの輪郭線が通過する画素を対象画素として特定する輪郭計算手段と、前記２次元座標系における前記対象画素の座標を描画位置として計算する描画位置計算手段と、１つのグリフについて処理を開始してから終了するまでの間に前記対象画素として特定された画素の、前記描画位置としての座標の最大値および最小値を記憶する第３のレジスタと、前記描画位置計算手段により計算された描画位置としての座標と前記第３のレジスタに記憶されている最大値および最小値とを比較し、比較結果により前記第３のレジスタに記憶された最大値または最小値を更新する最大最小更新手段と、前記第２の記憶領域のうち前記描画位置により特定される画素のデータを記憶する領域に、前記輪郭線が通る画素であることを示すデータを書き込む輪郭描画処理を行う輪郭描画手段と、１つのグリフについて前記輪郭描画処理が完了すると、前記第２のレジスタに記憶されているアドレスで指定される記憶領域に、前記第３のレジスタに記憶されている最大値または最小値を、前記メモリアクセス手段を介して書き込む書き込み処理を行う最大最小書き込み手段と、前記書き込み処理が終了すると、前記第２のレジスタに記憶されているアドレスを更新する更新手段とを有するフォント描画装置と、
前記フォント描画装置を制御する制御装置と、
前記フォント描画装置に電力を供給する電源制御回路と、
を有し、
前記制御装置は、前記メモリの前記第１の記憶領域に、前記複数の描画命令を書き込み、前記第１のレジスタに、前記複数の描画命令の先頭位置を示すアドレスを書き込み、前記第２のレジスタに、前記第３の記憶領域の先頭位置を示すアドレスを書き込み、
前記制御装置は、前記メモリ、前記第１のレジスタおよび前記第２のレジスタに対して書き込みを行った後で、前記フォント描画装置を起動し、
前記電源制御回路は、前記フォント描画装置が起動されると、前記制御装置および前記メモリへの電力の供給を停止させる
ことを特徴とする情報処理装置。
【請求項２】
前記フォント描画装置は、前記第１の記憶領域に記憶された命令の実行が終了すると、前記フォント描画装置への電力の供給を停止させる信号を前記電源制御回路に出力する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
グリフの描画命令を記憶する第１の記憶領域と、２次元座標系を用いて各画素の位置が特定される複数の画素のデータを記憶する第２の記憶領域と、各々が前記２次元座標系における座標の最大値および最小値を含む複数のデータセットを記憶する第３の記憶領域とを有し、少なくとも前記第２の記憶領域および前記第３の記憶領域が不揮発性であるメモリと、
前記メモリにアクセスするメモリアクセス手段と、前記第１の記憶領域のうち描画命令が記憶されているアドレスを記憶する第１のレジスタと、前記第３の記憶領域のうち次に最大値または最小値を記憶すべきアドレスを記憶する第２のレジスタと、前記複数の描画命令のうち前記第１のレジスタに記憶されているアドレスで指定される前記メモリ上の領域に記憶されている描画命令により描画が指示されたグリフの輪郭線を示すグリフデータを用いて、前記グリフの輪郭線が通過する画素を対象画素として特定する輪郭計算手段と、前記２次元座標系における前記対象画素の座標を描画位置として計算する描画位置計算手段と、１つのグリフについて処理を開始してから終了するまでの間に前記対象画素として特定された画素の、前記描画位置としての座標の最大値および最小値を記憶する第３のレジスタと、前記描画位置計算手段により計算された描画位置としての座標と前記第３のレジスタに記憶されている最大値および最小値とを比較し、比較結果により前記第３のレジスタに記憶された最大値または最小値を更新する最大最小更新手段と、前記第２の記憶領域のうち前記描画位置により特定される画素のデータを記憶する領域に、前記輪郭線が通る画素であることを示すデータを書き込む輪郭描画処理を行う輪郭描画手段と、１つのグリフについて前記輪郭描画処理が完了すると、前記第２のレジスタに記憶されているアドレスで指定される記憶領域に、前記第３のレジスタに記憶されている最大値または最小値を、前記メモリアクセス手段を介して書き込む書き込み処理を行う最大最小書き込み手段と、前記書き込み処理が終了すると、前記第２のレジスタに記憶されているアドレスを更新する更新手段とを有するフォント描画装置と、
前記フォント描画装置を制御する制御装置と、
前記フォント描画装置に電源を供給する電源制御回路と、
を有する情報処理装置の制御方法であって、
前記制御装置が、前記メモリの前記第１の記憶領域に、前記複数の描画命令を書き込むステップと、
前記制御装置が、前記第１のレジスタに、前記複数の描画命令の先頭位置を示すアドレスを書き込むステップと、
前記制御装置が、前記第２のレジスタに、前記第３の記憶領域の先頭位置を示すアドレスを書き込むステップと、
前記制御装置が、前記メモリ、前記第１のレジスタおよび前記第２のレジスタに対して書き込みを行った後で、前記フォント描画装置を起動するステップと、
前記電源制御回路が、前記フォント描画装置が起動されると、前記制御装置および前記メモリへの電力の供給を停止させるステップと
を有する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アウトラインフォントを描画する技術に関する。
【背景技術】
【０００２】
グリフ（文字の可視化表現またはその構成部分から大きさ及び意匠を正規化した抽象表現）の形をコンピュータ上で表現するためのデータ形式として、アウトラインフォントが知られている。アウトラインフォントは、グリフの形状を、基準となる点の座標と輪郭線の集まりとして表現する形式である。グリフの輪郭線の描画および塗り潰しは、レンダリングメモリ上で、マトリクス状に配置された複数の画素を単にとして行われる。実際にグリフが描画される範囲、すなわち、グリフを包含する外接矩形により切り取られる領域は、このマトリクスのうち一部分であり、しかもその範囲はグリフ毎に異なっている。グリフが描画される範囲が分からないと、レンダリング用メモリからＶＲＡＭ（Video Random Access Memory）にデータを転送する際、実際にグリフが描画されていない部分も含めてマトリクス全体を転送しなければならなくなり、不必要なメモリアクセスが生じる。ここで、特許文献１は、ストロークフォントにおいて、グリフ部分の範囲をあらかじめ記憶する技術を開示している。また特許文献２は、情報処理装置における電源管理に関する技術を開示している。
【０００３】
【特許文献１】特開平５−２５７４５２号公報
【特許文献２】特開２００７−０１１６５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
グリフ部分の範囲をグリフ毎に記憶する構成とすると、その範囲を特定する４点（水平方向および垂直方向の最大値および最小値）の座標を記憶する記憶領域が各グリフについて必要になる。さらに、グリフデータをビットマップデータに変化する際に、その４点についてもビットマップデータに変化する必要が生じる。すなわち、少なくとも４回の計算をしなければならない。さらに、複数のパーツグリフを組み合わせて表現される複合グリフを描画する際には、複合グリフについても独自に、グリフ部分の範囲を特定する４点の座標を記憶する必要がある。また特許文献２に記載されたように、動作しない要素に対する電力の供給を停止すると、計算された最大値および最小値のデータが消えてしまう場合がある。
【０００５】
これに対し本発明は、グリフ部分の範囲をあらかじめ記憶しなくても、グリフが描画される領域を特定する点の座標を計算する技術、特に、電力の供給を停止しても計算された最大値および最小値のデータを保持する技術を提供する。
【課題を解決するための手段】
【０００６】
本発明は、グリフの描画命令を記憶する第１の記憶領域と、２次元座標系を用いて各画素の位置が特定される複数の画素のデータを記憶する第２の記憶領域と、各々が前記２次元座標系における座標の最大値および最小値を含む複数のデータセットを記憶する第３の記憶領域とを有し、少なくとも前記第２の記憶領域および前記第３の記憶領域が不揮発性であるメモリと、前記メモリにアクセスするメモリアクセス手段と、前記第１の記憶領域のうち描画命令が記憶されているアドレスを記憶する第１のレジスタと、前記第３の記憶領域のうち次に最大値または最小値を記憶すべきアドレスを記憶する第２のレジスタと、前記複数の描画命令のうち前記第１のレジスタに記憶されているアドレスで指定される前記メモリ上の領域に記憶されている描画命令により描画が指示されたグリフの輪郭線を示すグリフデータを用いて、前記グリフの輪郭線が通過する画素を対象画素として特定する輪郭計算手段と、前記２次元座標系における前記対象画素の座標を描画位置として計算する描画位置計算手段と、１つのグリフについて処理を開始してから終了するまでの間に前記対象画素として特定された画素の、前記描画位置としての座標の最大値および最小値を記憶する第３のレジスタと、前記描画位置計算手段により計算された描画位置としての座標と前記第３のレジスタに記憶されている最大値および最小値とを比較し、比較結果により前記第３のレジスタに記憶された最大値または最小値を更新する最大最小更新手段と、前記第２の記憶領域のうち前記描画位置により特定される画素のデータを記憶する領域に、前記輪郭線が通る画素であることを示すデータを書き込む輪郭描画処理を行う輪郭描画手段と、１つのグリフについて前記輪郭描画処理が完了すると、前記第２のレジスタに記憶されているアドレスで指定される記憶領域に、前記第３のレジスタに記憶されている最大値または最小値を、前記メモリアクセス手段を介して書き込む書き込み処理を行う最大最小書き込み手段と、前記書き込み処理が終了すると、前記第２のレジスタに記憶されているアドレスを更新する更新手段とを有するフォント描画装置と、前記フォント描画装置を制御する制御装置と、前記フォント描画装置に電力を供給する電源制御回路と、を有し、前記制御装置は、前記メモリの前記第１の記憶領域に、前記複数の描画命令を書き込み、前記第１のレジスタに、前記複数の描画命令の先頭位置を示すアドレスを書き込み、前記第２のレジスタに、前記第３の記憶領域の先頭位置を示すアドレスを書き込み、前記制御装置は、前記メモリ、前記第１のレジスタおよび前記第２のレジスタに対して書き込みを行った後で、前記フォント描画装置を起動し、前記電源制御回路は、前記フォント描画装置が起動されると、前記制御装置および前記メモリへの電力の供給を停止させることを特徴とする情報処理装置を提供する。
この情報処理装置によれば、メモリへの電力の供給が停止されても、メモリには座標の最大値および最小値が記憶されている。
【０００７】
好ましい態様において、前記フォント描画装置は、前記第１の記憶領域に記憶された命令の実行が終了すると、前記フォント描画装置への電力の供給を停止させる信号を前記電源制御回路に出力してもよい。
この情報処理装置によれば、命令の実行が終了すると、フォント描画装置への電力の供給が停止される。
【０００８】
また、本発明は、グリフの描画命令を記憶する第１の記憶領域と、２次元座標系を用いて各画素の位置が特定される複数の画素のデータを記憶する第２の記憶領域と、各々が前記２次元座標系における座標の最大値および最小値を含む複数のデータセットを記憶する第３の記憶領域とを有し、少なくとも前記第２の記憶領域および前記第３の記憶領域が不揮発性であるメモリと、前記メモリにアクセスするメモリアクセス手段と、前記第１の記憶領域のうち描画命令が記憶されているアドレスを記憶する第１のレジスタと、前記第３の記憶領域のうち次に最大値または最小値を記憶すべきアドレスを記憶する第２のレジスタと、前記複数の描画命令のうち前記第１のレジスタに記憶されているアドレスで指定される前記メモリ上の領域に記憶されている描画命令により描画が指示されたグリフの輪郭線を示すグリフデータを用いて、前記グリフの輪郭線が通過する画素を対象画素として特定する輪郭計算手段と、前記２次元座標系における前記対象画素の座標を描画位置として計算する描画位置計算手段と、１つのグリフについて処理を開始してから終了するまでの間に前記対象画素として特定された画素の、前記描画位置としての座標の最大値および最小値を記憶する第３のレジスタと、前記描画位置計算手段により計算された描画位置としての座標と前記第３のレジスタに記憶されている最大値および最小値とを比較し、比較結果により前記第３のレジスタに記憶された最大値または最小値を更新する最大最小更新手段と、前記第２の記憶領域のうち前記描画位置により特定される画素のデータを記憶する領域に、前記輪郭線が通る画素であることを示すデータを書き込む輪郭描画処理を行う輪郭描画手段と、１つのグリフについて前記輪郭描画処理が完了すると、前記第２のレジスタに記憶されているアドレスで指定される記憶領域に、前記第３のレジスタに記憶されている最大値または最小値を、前記メモリアクセス手段を介して書き込む書き込み処理を行う最大最小書き込み手段と、前記書き込み処理が終了すると、前記第２のレジスタに記憶されているアドレスを更新する更新手段とを有するフォント描画装置と、前記フォント描画装置を制御する制御装置と、前記フォント描画装置に電源を供給する電源制御回路と、を有する情報処理装置の制御方法であって、前記制御装置が、前記メモリの前記第１の記憶領域に、前記複数の描画命令を書き込むステップと、前記制御装置が、前記第１のレジスタに、前記複数の描画命令の先頭位置を示すアドレスを書き込むステップと、前記制御装置が、前記第２のレジスタに、前記第３の記憶領域の先頭位置を示すアドレスを書き込むステップと、前記制御装置が、前記メモリ、前記第１のレジスタおよび前記第２のレジスタに対して書き込みを行った後で、前記フォント描画装置を起動するステップと、前記電源制御回路が、前記フォント描画装置が起動されると、前記制御装置および前記メモリへの電力の供給を停止させるステップとを有する制御方法を提供する。
この制御方法によれば、メモリへの電力の供給が停止されても、メモリには座標の最大値および最小値が記憶されている。
【発明を実施するための最良の形態】
【０００９】
Ａ．第１実施形態
１．構成
図１は、第１実施形態に係る情報表示装置１のハードウェア構成を示す図である。情報表示装置１は、情報処理装置の一例である。ＣＰＵ（Central Processing Unit）１０は、情報表示装置１の各要素を制御する制御装置である。ＲＯＭ（Read Only Memory）２０は、情報表示装置１の起動・動作に必要なプログラムやデータを記憶する不揮発性の記憶装置である。本実施形態において、ＲＯＭ２０は、フォントに関するデータとしてグリフデータを記憶している。グリフデータとは、グリフの輪郭線および輪郭線の向きを示すデータである（詳細は後述）。ＲＡＭ（Random Access Memory）３０は、ＣＰＵ１０がプログラムを実行する際にワークエリアとして用いられる記憶装置である。表示体４０は、供給されたデータに従った画像を表示する装置、この例ではＥＰＤ（Electrophoretic Display）である。ＥＰＤは、記憶性表示体の一例である。ＶＲＡＭ（Video Random Access Memory）５０は、表示するデータの格納に用いられる記憶装置である。表示制御装置６０は、ＣＰＵ１０の制御下で、ＶＲＡＭ５０に記憶されているデータに従って表示体４０を制御する装置である。入力装置７０は、ユーザからの指示、データ等の入力に用いられる装置、例えば、ボタン（書き換えボタンやページ送りボタン、決定ボタンなど）・キーパッド・ホイール・レバー・タッチパネル・ペンデバイスなどである。バス８０は、要素間のデータや信号の伝送に用いられる伝送路である。バスコントローラ９０は、バス８０に接続されているすべての装置（モジュール）について、バス権（バスを使用する権利）の調停を行う装置である。フォントプロセッサ１００は、フォントの描画に用いられる装置であり、フォント描画装置の一例である。
【００１０】
ＣＰＵ１０・ＲＯＭ２０・ＲＡＭ３０・ＶＲＡＭ５０・表示制御装置６０・フォントプロセッサ１００は、バス８０に直接接続されている。この構成により、ＣＰＵ１０・表示制御装置６０・フォントプロセッサ１００は、それぞれ独立してメモリ（ＲＯＭ２０・ＲＡＭ３０・ＶＲＡＭ５０）にアクセスすることができる。ＣＰＵ１０とフォントプロセッサ１００間の信号線は、ＣＰＵ１０からフォントプロセッサ１００への描画開始命令の供給、およびフォントプロセッサ１００からＣＰＵ１０への描画完了通知の供給に用いられる。ＣＰＵ１０および表示制御装置６０間の信号線は、ＣＰＵ１０から表示制御装置６０への画面更新（すなわち表示体４０への転送命令）の供給に用いられる。この信号線は、表示体４０として液晶ディスプレイ等、記憶性表示体でない表示体を用いた場合には不要である。
【００１１】
図２は、フォントプロセッサ１００の構成を示す図である。フォントプロセッサ１００は、ＣＰＵ１０からの描画命令に応じてグリフを描画する。すなわち、フォントプロセッサ１００は、ＣＰＵ１０からの描画命令に応じて、グリフのデータをＶＲＡＭ５０に書き込む。メインコントローラ１０１は、フォントプロセッサ１００の各要素を制御する。メインコントローラ１０１は、レジスタ１０２を有する。レジスタ１０２は、例えば、メインコントローラ１０１が読み出すべきデータのアドレスを記憶するのに用いられる。フォント描画コントローラ１０３は、フォント描画に必要な情報、例えばアフィン変換パラメータを記憶する。フォント描画コントローラ１０３はさらに、与えられた命令がＤｒａｗＣｈａｒなのかＤｒａｗＣｈａｒＦｉｌｌなのかを記憶する。ＤｒａｗＣｈａｒは、輪郭描画処理の実行を指示する命令である。ＤｒａｗＣｈａｒＦｉｌｌは、輪郭描画および塗り潰し処理の実行を指示する命令である。輪郭計算モジュール１１０（輪郭計算手段の一例）は、描画命令により描画が指示されたグリフの輪郭線を示すグリフデータを用いて、グリフの輪郭線が通過する画素を対象画素として特定する計算（輪郭計算処理）を行う。描画位置計算モジュール１１１（描画位置計算手段の一例）は、２次元座標系における対象画素の座標を描画位置として計算する（描画位置計算処理）。レジスタ１１２（最大最小記憶手段の一例）は、過去に対象画素として特定された画素の、描画位置としての座標の最大値および最小値を記憶する。また、描画位置計算モジュール１１１は、計算された描画位置と、記憶されている最大値および最小値とを比較し、比較結果により最大値および最小値を更新する最大最小更新手段としての機能を有する。
【００１２】
輪郭描画モジュール１０４（輪郭描画手段の一例）は、命令ＤｒａｗＣｈａｒまたは命令ＤｒａｗＣｈａｒＦｉｌｌが与えられた場合に、輪郭描画処理を行う。輪郭描画処理は、ワークメモリ１０５のうち、描画位置により特定される記憶領域に、輪郭線が通る画素であることを示すデータを書き込む処理である。塗り潰しモジュール１０６（塗り潰し手段の一例）は、ワークメモリ１０５に書き込まれたデータにより特定される輪郭線の内部を塗り潰す塗り潰し処理を行う。塗り潰しモジュール１０６は、さらに、塗り潰し処理が行われた後で、ワークメモリ１０５に記憶された複数の画素のデータのうち、記憶されている最大値および最小値で切り取られる領域に含まれる画素のデータを、ＶＲＡＭ５０に転送する出力手段としての機能を有する。バスインターフェースモジュール１０７は、バス８０を介してＣＰＵ１０・ＲＯＭ２０・ＲＡＭ３０等の他の要素との間で信号やデータの入出力を行う。バスインターフェースモジュール１０７は、ＣＰＵ１０から描画命令が入力される指示入力手段として機能する。メインバス１０８およびサブバス１０９は、要素間のデータや信号の伝送に用いられる伝送路である。
【００１３】
輪郭描画モジュール１０４と塗り潰しモジュール１０６との間の信号線は、輪郭描画の終了の通知に用いられる。フォント描画コントローラ１０３と塗り潰しモジュール１０６との間の信号線は、ワークメモリ１０５のビット幅、データの範囲などの情報の伝送に用いられる。塗り潰しモジュール１０６とメインバス１０８との間の信号線は、背景データの伝送、塗り潰し処理の結果の伝送に用いられる。メインバス１０８と輪郭計算モジュール１１０との間の信号線は、グリフデータの伝送に用いられる。フォント描画コントローラ１０３と描画位置計算モジュール１１１との間の信号線は、アフィン変換パラメータの伝送に用いられる。輪郭計算モジュール１１０と描画位置計算モジュール１１１との間の信号線は、輪郭線を示す情報の伝送に用いられる。フォント描画コントローラ１０３と描画位置計算モジュール１１１との間の信号線は、最大値・最小値の伝送に用いられる。描画位置計算モジュール１１１と輪郭描画モジュール１０４との間の信号線は、輪郭線が通る画素の座標を示す差分情報の伝送に用いられる。特に説明しないがこれら以外の信号線も、必要なデータや命令の伝送に用いられる。また、２つのワークメモリ１０５は交互に用いられ、処理の高速化が図られる。
【００１４】
図３は、情報表示装置１の外観を示す図である。情報表示装置１は、筐体の前面に表示体４０の表示面、および入力装置７０としてのボタン群を有する。
【００１５】
２．動作
続いて、情報表示装置１の動作を説明する。ここではまず、グリフデータの構成について概説し、さらに本実施形態の転送領域計算方法について概説した後で、情報表示装置１の動作を詳細に説明する。
【００１６】
２−１．グリフデータの構成
図４は、グリフデータを例示する図である。グリフデータは、グリフの輪郭（アウトライン）を描くのに用いられる情報を含んでいる。この例で、グリフデータは、端点を特定する情報として点の座標と、２つの端点を結ぶ直線または曲線を特定する情報として直線または曲線を描画する命令（コマンド）を含む。Ｄ１〜Ｄ６は輪郭線上の点を表す。命令Ｍｏｖｅは、点位置を移動させる命令である。命令Ｍｏｖｅは、移動先の点の座標を引数として含む。命令Ｌｉｎｅは、直線（線分）を描画させる命令である。命令Ｌｉｎｅは、直線の終点の座標を引数として含む。図４の例では用いられていないが命令Ｃｕｒｖｅ２は２次のベジェ曲線を描画させる命令である。命令Ｃｕｒｖｅ２は、曲線の終点の座標および１つの制御点の座標を引数として含む。命令Ｃｕｒｖｅ３は、３次のベジェ曲線を描画させる命令である。命令Ｃｕｒｖｅ３は、曲線の終点の座標および２つの制御点の座標を引数として含む。命令ＥＯＣは、グリフデータの終端を示す。点Ｄ０は所定の基準点である。命令Ｍｏｖｅ（Ｄ１）により、点位置がＤ０からＤ１に移動する。命令Ｌｉｎｅ（Ｄ２）により、Ｄ１からＤ２まで直線が描画される。命令Ｌｉｎｅ（Ｄ３）により、Ｄ２からＤ３まで直線が描画される。命令Ｃｕｒｖｅ３（Ｄ７，Ｄ８，Ｄ４）により、Ｄ３からＤ４までＤ７およびＤ８を制御点として３次のベジェ曲線が描画される。なお点Ｄ７およびＤ８は図示していない。以下同様にして、グリフデータにより図４に示されるような、向きを持った輪郭線が記述される。図４では理解を助けるためにグリフデータを図形的に示したが、グリフデータは実際には命令および点の座標を含むテキストデータまたはバイナリデータである。
【００１７】
２−２．転送領域計算方法の概説
図５は、本実施形態に係る転送領域計算方法を概説する図である。図５（Ａ）−（Ｃ）は本実施形態の方法を用いない場合を説明するものである。図５（Ａ）は、通常状態のグリフを示す。このとき、転送領域、すなわちグリフが描画されている領域は、グリフを包含する外接長方形（破線）で囲まれる領域である。図５（Ｂ）は、斜体に変形されたグリフを示す。グリフが斜体に変形されると、図５（Ａ）の外接長方形もひし形に変形する。メモリアクセスは長方形の領域に対して行われるので、このときの転送領域はこのひし形を包含する外接長方形で囲まれる領域である。図５（Ｃ）は、反時計回りに４５°回転されたグリフを示す。グリフが回転されると、図５（Ａ）の外接長方形も回転される。このときの転送領域は回転された外接長方形を包含する外接長方形で囲まれる領域である。
【００１８】
図５（Ｄ）−（Ｆ）は本実施形態の方法を用いた場合を説明するものである。図５（Ｄ）は、通常状態のグリフを示す。このとき、転送領域は、グリフを包含する外接長方形（破線）で囲まれる領域であり、図５（Ａ）の場合と等しい。図５（Ｅ）は、斜体に変形されたグリフを、図５（Ｆ）は反時計回りに４５°回転されたグリフを示す。これらの場合においても、転送領域は変形または回転後のグリフを包含する外接長方形で囲まれる領域である。本実施形態の方法を用いない場合と比較すると、網点で示した部分についての転送を省略することができる。このように、本実施形態によれば、不要なメモリアクセスが削減される。
【００１９】
２−３．情報表示装置１の動作
２−３−１．全体動作
図６は、情報表示装置１の動作を示すフローチャートである。図６に示されるフローは、フォントの描画を開始させるイベント、例えば、表示体４０に表示される画像を更新するイベントを契機として開始される。ステップＳ１０において、ＣＰＵ１０は、グリフデータに従って、グリフの描画を指示する描画命令を生成し、生成した描画命令をフォントプロセッサ１００に出力する。描画命令が入力されると、フォントプロセッサ１００は、輪郭計算処理、描画位置計算処理および輪郭描画処理を行い（ステップＳ２０−Ｓ４０）、その結果を用いて塗り潰し処理を行う（ステップＳ５０）。ある画素について見ると、処理は、輪郭計算処理、描画位置計算処理、輪郭描画処理の順番で行われる。塗り潰し処理が完了すると、フォントプロセッサ１００は、ワークメモリ１０５に記憶されているデータの少なくとも一部をＶＲＡＭ５０に転送する（ステップＳ６０）。
【００２０】
２−３−２．輪郭計算モジュール１１０の動作
図７は、輪郭計算処理の前段、すなわち輪郭計算モジュール１１０の動作を示すフローチャートである。ＣＰＵ１０から描画命令が入力されると、メインコントローラ１０１は、描画命令により指定されるグリフデータを読み出し、グリフデータに記述されている命令を順番に輪郭計算モジュール１１０に与える。
【００２１】
ステップＳ２０１において、輪郭計算モジュール１１０は、描画位置を初期化する。描画位置とは、ワークメモリ１０５に記憶された複数の画素のデータのうち、処理の対象となる１つの画素すなわち対象画素の座標をいう。複数の画素はマトリクス状に、すなわち２次元配置されており、ｘｙ直交座標系を用いて各画素を特定することができる。座標軸の原点はマトリクスの左上端の点であり、右方向および下方向がｘ軸およびｙ軸の正方向である。この例で、描画位置は（ｘ，ｙ）＝（０，０）に初期化される。
【００２２】
ステップＳ２０２において、輪郭計算モジュール１１０は、与えられている命令がＭｏｖｅであるか判断する。与えられた命令がＭｏｖｅであると判断された場合（Ｓ２０２：ＹＥＳ）、輪郭計算モジュール１１０は、処理をステップＳ２０３に移行する。与えられた命令がＭｏｖｅでないと判断された場合（Ｓ２０２：ＮＯ）、輪郭計算モジュール１１０は、処理をステップＳ２０６に移行する。
【００２３】
ステップＳ２０３において、輪郭計算モジュール１１０は、命令Ｍｏｖｅの引数から移動先の点の座標を計算し、パラメータＰ３に代入する。パラメータＰ３は、直線または曲線の終点を示す。このときの座標は、ワークメモリ１０５においてマトリクス状に配置された複数の画素の２次元座標ではなく、グリフデータにおいて規格化された座標である。ステップＳ２０４において、輪郭計算モジュール１１０は、パラメータＰ３に対してアフィン変換を適用する。ステップＳ２０５において、輪郭計算モジュール１１０は、後段に、命令Ｍｏｖｅおよび変換後のパラメータＰ３を出力する。命令およびパラメータを出力すると、輪郭計算モジュール１１０は、処理をステップＳ２１８に移行する。
【００２４】
ステップＳ２０６において、輪郭計算モジュール１１０は、与えられている命令がＬｉｎｅであるか判断する。与えられた命令がＬｉｎｅであると判断された場合（Ｓ２０６：ＹＥＳ）、輪郭計算モジュール１１０は、処理をステップＳ２０７に移行する。与えられた命令がＬｉｎｅでないと判断された場合（Ｓ２０６：ＮＯ）、輪郭計算モジュール１１０は、処理をステップＳ２１０に移行する。
【００２５】
ステップＳ２０７において、輪郭計算モジュール１１０は、命令Ｌｉｎｅの引数から直線の端点の座標を計算し、パラメータＰ０およびＰ３に代入する。パラメータＰ０は、直線または曲線の始点を示す。ステップＳ２０８において、輪郭計算モジュール１１０は、パラメータＰ０およびＰ３に対してアフィン変換を適用する。ステップＳ２０９において、輪郭計算モジュール１１０は、後段に、命令Ｌｉｎｅおよび変換後のパラメータＰ０およびＰ３を出力する。命令およびパラメータを出力すると、輪郭計算モジュール１１０は、処理をステップＳ２１８に移行する。
【００２６】
ステップＳ２１０において、輪郭計算モジュール１１０は、与えられている命令がＣｕｒｖｅ２であるか判断する。与えられた命令がＣｕｒｖｅ２であると判断された場合（Ｓ２１０：ＹＥＳ）、輪郭計算モジュール１１０は、処理をステップＳ２１１に移行する。与えられた命令がＣｕｒｖｅ２でないと判断された場合（Ｓ２１０：ＮＯ）、輪郭計算モジュール１１０は、処理をステップＳ２１４に移行する。
【００２７】
ステップＳ２１１において、輪郭計算モジュール１１０は、命令Ｃｕｒｖｅ２の引数からベジェ直線の端点および制御点の座標を計算し、パラメータＰ０、Ｐ１およびＰ３に代入する。パラメータＰ１は、２次ベジェ曲線の制御点を示す。ステップＳ２１２において、輪郭計算モジュール１１０は、パラメータＰ０、Ｐ１およびＰ３に対してアフィン変換を適用する。ステップＳ２１３において、輪郭計算モジュール１１０は、後段に、命令Ｃｕｒｖｅ２および変換後のパラメータＰ０、Ｐ１およびＰ３を出力する。命令およびパラメータを出力すると、輪郭計算モジュール１１０は、処理をステップＳ２１８に移行する。
【００２８】
ステップＳ２１４において、輪郭計算モジュール１１０は、与えられている命令がＣｕｒｖｅ３であるか判断する。与えられた命令がＣｕｒｖｅ３であると判断された場合（Ｓ２１４：ＹＥＳ）、輪郭計算モジュール１１０は、処理をステップＳ２１５に移行する。与えられた命令がＣｕｒｖｅ３でないと判断された場合（Ｓ２１４：ＮＯ）、輪郭計算モジュール１１０は、処理をステップＳ２１９に移行する。
【００２９】
ステップＳ２１５において、輪郭計算モジュール１１０は、命令Ｃｕｒｖｅ３の引数からベジェ直線の端点および２つの制御点の座標を計算し、パラメータＰ０、Ｐ１、Ｐ２およびＰ３に代入する。パラメータＰ２は、３次ベジェ曲線の制御点を示す。ステップＳ２１６において、輪郭計算モジュール１１０は、パラメータＰ０、Ｐ１、Ｐ２およびＰ３に対してアフィン変換を適用する。ステップＳ２１７において、輪郭計算モジュール１１０は、後段に、命令Ｃｕｒｖｅ３および変換後のパラメータＰ０、Ｐ１、Ｐ２およびＰ３を出力する。命令およびパラメータを出力すると、輪郭計算モジュール１１０は、処理をステップＳ２１８に移行する。
【００３０】
ステップＳ２１８において、輪郭計算モジュール１１０は、パラメータＰ３により示される座標が新たな描画位置となるように、描画位置を更新する。描画位置を更新すると、輪郭計算モジュール１１０は、処理をステップＳ２０２に移行する。
【００３１】
ステップＳ２１９において、輪郭計算モジュール１１０は、与えられている命令がＥＯＣであるか判断する。与えられた命令がＥＯＣであると判断された場合（Ｓ２１９：ＹＥＳ）、輪郭計算モジュール１１０は、後段に命令ＥＯＣを出力する。命令ＥＯＣを出力すると、輪郭計算モジュール１１０は、図７のフローを終了する。与えられた命令がＥＯＣでないと判断された場合（Ｓ２１９：ＮＯ）、輪郭計算モジュール１１０は、処理をステップＳ２２１に移行する。
【００３２】
ステップＳ２２１において、輪郭計算モジュール１１０は、エラーレジスタに「１」を書き込む。エラーレジスタは、エラー発生の有無を示すデータを記憶する。記憶されているデータが「０」のときはエラーが発生していないことを、データが「１」のときはエラーが発生したことを示す。エラーレジスタに「１」が書き込まれると、ＣＰＵ１０はエラーに対処する処理、この例ではシステムのリセットを行う。システムがリセットされると、図７のフローは終了する。
【００３３】
以上で説明したように、図７のフローによれば、輪郭計算モジュール１１０の後段に、命令Ｍｏｖｅ、Ｌｉｎｅ、Ｃｕｒｖｅ２、Ｃｕｒｖｅ３、ＥＯＣのいずれか、および必要な座標が送られる。
【００３４】
図８は、輪郭計算処理の後段、すなわち輪郭計算モジュール１１０の動作を示すフローチャートである。ステップＳ２５０において、輪郭計算モジュール１１０は、スタックが空であるか判断する。この例でスタックはＬＩＦＯ（Last In First Out）であり、ワークメモリ１０５上にその記憶領域が設けられる。初期状態においてスタックは空である。スタックが空であると判断された場合（Ｓ２５０：ＹＥＳ）、輪郭計算モジュール１１０は、処理をステップＳ２５１に移行する。スタックが空でないと判断された場合（Ｓ２５０：ＮＯ）、輪郭計算モジュール１１０は、処理をステップＳ２６３に移行する。
【００３５】
ステップＳ２５１において、輪郭計算モジュール１１０は、前段から命令を取得する。ステップＳ２５２において、輪郭計算モジュール１１０は、与えられた命令がＭｏｖｅであるか判断する。与えられた命令がＭｏｖｅであると判断された場合（Ｓ２５２：ＹＥＳ）、輪郭計算モジュール１１０は、ステップＳ２５３において、描画位置計算モジュール１１１に命令ＭｏｖｅおよびパラメータＰ３を出力する。与えられた命令がＭｏｖｅでないと判断された場合（Ｓ２５２：ＮＯ）、輪郭計算モジュール１１０は、処理をステップＳ２５４に移行する。
【００３６】
ステップＳ２５４において、輪郭計算モジュール１１０は、与えられた命令がＬｉｎｅであるか判断する。与えられた命令がＬｉｎｅであると判断された場合（Ｓ２５４：ＹＥＳ）、輪郭計算モジュール１１０は、ステップＳ２５５において、命令ＬｉｎｅおよびパラメータＰ０−Ｐ３をスタックに積む（プッシュする）。与えられた命令がＬｉｎｅでないと判断された場合（Ｓ２５４：ＮＯ）、輪郭計算モジュール１１０は、処理をステップＳ２５６に移行する。
【００３７】
ステップＳ２５６において、輪郭計算モジュール１１０は、与えられた命令がＣｕｒｖｅ２であるか判断する。与えられた命令がＣｕｒｖｅ２であると判断された場合（Ｓ２５６：ＹＥＳ）、輪郭計算モジュール１１０は、ステップＳ２５７において、命令Ｃｕｒｖｅ２およびパラメータＰ０−Ｐ３をスタックに積む。与えられた命令がＣｕｒｖｅ２でないと判断された場合（Ｓ２５６：ＮＯ）、輪郭計算モジュール１１０は、処理をステップＳ２５８に移行する。
【００３８】
ステップＳ２５８において、輪郭計算モジュール１１０は、与えられた命令がＣｕｒｖｅ３であるか判断する。与えられた命令がＣｕｒｖｅ３であると判断された場合（Ｓ２５８：ＹＥＳ）、輪郭計算モジュール１１０は、ステップＳ２５９において、命令Ｃｕｒｖｅ３およびパラメータＰ０−Ｐ３をスタックに積む。与えられた命令がＣｕｒｖｅ３でないと判断された場合（Ｓ２５８：ＮＯ）、輪郭計算モジュール１１０は、処理をステップＳ２６０に移行する。
【００３９】
ステップＳ２６０において、輪郭計算モジュール１１０は、与えられた命令がＥＯＣであるか判断する。与えられた命令がＥＯＣであると判断された場合（Ｓ２６０：ＹＥＳ）、輪郭計算モジュール１１０は、ステップＳ２６１において、描画位置計算モジュール１１１に命令ＥＯＣを出力する。命令ＥＯＣを出力すると、輪郭計算モジュール１１０は、図８のフローを終了する。与えられた命令がＥＯＣでないと判断された場合（Ｓ２６０：ＮＯ）、輪郭計算モジュール１１０は、処理をステップＳ２６２に移行する。
【００４０】
ステップＳ２６２において、輪郭計算モジュール１１０は、エラーレジスタに「１」を書き込む。エラーレジスタは、エラー発生の有無を示すデータを記憶する。記憶されているデータが「０」のときはエラーが発生していないことを、データが「１」のときはエラーが発生したことを示す。エラーレジスタに「１」が書き込まれると、ＣＰＵ１０はエラーに対処する処理、この例ではシステムのリセットを行う。システムがリセットされると、図８のフローは終了する。
【００４１】
ステップＳ２６３において、輪郭計算モジュール１１０は、スタックからデータを取得する（ポップする）。取得されるデータは、命令およびパラメータＰ０−Ｐ３である。ステップＳ２６４において、輪郭計算モジュール１１０は、データによって表される距離がしきい値、この例では１画素よりも小さいか判断する。「データによって表される距離」の詳細は後述する。距離がしきい値よりも小さいと判断された場合（Ｓ２６４：ＹＥＳ）、輪郭計算モジュール１１０は、処理をステップＳ２６７に移行する。距離がしきい値よりも小さくないと判断された場合（Ｓ２６４：ＮＯ）、輪郭計算モジュール１１０は、処理をステップＳ２６５に移行する。
【００４２】
ステップＳ２６５において、輪郭計算モジュール１１０は、データを分割する。ステップＳ２６６において、輪郭計算モジュール１１０は、分割したデータを、後半、前半の順番でスタックに積む。分割したデータをスタックに積むと、輪郭計算モジュール１１０は、処理をステップＳ２５０に移行する。こうして、「データによって表される距離」がしきい値よりも小さくなるまで繰り返しデータの分割が行われる。
【００４３】
図９は、データの分割を説明する図である。図９（Ａ）は、命令Ｌｉｎｅの場合を示している。この場合、ステップＳ２６４における「データによって表される距離」は、点Ｐ０と点Ｐ３の間の距離（すなわち線分Ｐ０Ｐ３の長さ）である。データの分割は次のように行われる。まず、輪郭計算モジュール１１０は、点Ｐ０と点Ｐ３の中点Ｍの座標を計算する。輪郭計算モジュール１１０は、点Ｍを用いて、データを前半と後半に分割する。前半は、命令Ｌｉｎｅおよび引数Ｐ０、Ｍを含むデータであり、後半は、命令Ｌｉｎｅおよび引数Ｍ、Ｐ３を含むデータである。分割後のデータにおいて点Ｍは、新たな点Ｐ０またはＰ３として扱われる。
【００４４】
図９（Ｂ）は、命令Ｃｕｒｖｅ２の場合を示している。この場合、「データによって表される距離」は、線分Ｐ０Ｐ３、Ｐ０Ｐ１およびＰ１Ｐ３の長さである。データの分割は次のように行われる。輪郭計算モジュール１１０は、点Ｐ０と点Ｐ１の中点Ｍ０の座標を計算する。輪郭計算モジュール１１０は、点Ｐ１と点Ｐ３の中点Ｍ３の座標を計算する。輪郭計算モジュール１１０は、点Ｍ０と点Ｍ３の中点Ｎの座標を計算する。輪郭計算モジュール１１０は、点Ｎを用いて、データを前半と後半に分割する。前半は、命令Ｃｕｒｖｅ２および引数Ｐ０、Ｍ０、Ｎを含むデータであり、後半は、命令Ｃｕｒｖｅ２および引数Ｎ、Ｍ３、Ｐ３を含むデータである。分割後のデータにおいて点Ｎは、新たな点Ｐ０またはＰ３として扱われる。点Ｍ０およびＭ３は、新たな点Ｐ１として扱われる。
【００４５】
図９（Ｃ）は、命令Ｃｕｒｖｅ３の場合を示している。この場合、「データによって表される距離」は、線分Ｐ０Ｐ３、Ｐ０Ｐ１、Ｐ１Ｐ２およびＰ２Ｐ３の長さである。データの分割は次のように行われる。輪郭計算モジュール１１０は、点Ｐ０と点Ｐ１の中点Ｍ０の座標を計算する。輪郭計算モジュール１１０は、点Ｐ１と点Ｐ２の中点Ｍ１の座標を計算する。輪郭計算モジュール１１０は、点Ｐ２と点Ｐ３の中点Ｍ３の座標を計算する。輪郭計算モジュール１１０は、点Ｍ０と点Ｍ１の中点Ｎ０の座標を計算する。輪郭計算モジュール１１０は、点Ｍ１と点Ｍ３の中点Ｎ３の座標を計算する。輪郭計算モジュール１１０は、点Ｎ０と点Ｎ３の中点Ｌの座標を計算する。輪郭計算モジュール１１０は、点Ｌを用いて、データを前半と後半に分割する。前半は、命令Ｃｕｒｖｅ３および引数Ｐ０、Ｍ０、Ｎ０、Ｌを含むデータであり、後半は、命令Ｃｕｒｖｅ２および引数Ｌ、Ｎ３、Ｍ３、Ｐ３を含むデータである。分割後のデータにおいて点Ｌは、新たな点Ｐ０またはＰ３として扱われる。点Ｍ０およびＮ３は、新たな点Ｐ１として扱われる。点Ｎ０およびＭ３は、新たな点Ｐ２として扱われる。
【００４６】
再び図８を参照する。ステップＳ２６７において、輪郭計算モジュール１１０は、点Ｐ０と点Ｐ３の差分ベクトルを計算する。ステップＳ２６８において、輪郭計算モジュール１１０は、差分ベクトルがゼロベクトルであるか判断する。差分ベクトルがゼロベクトルであると判断された場合（Ｓ２６８：ＹＥＳ）、輪郭計算モジュール１１０は、処理をステップＳ２５０に移行する。差分ベクトルがゼロベクトルでないと判断された場合（Ｓ２６８：ＮＯ）、輪郭計算モジュール１１０は、ステップＳ２６９において、描画位置計算モジュール１１１に、命令ｄＶｅｃｔｏｒおよびその引数、あるいは必要に応じて他の命令および引数を出力する。命令ｄＶｅｃｔｏｒは、次に輪郭線が通る画素すなわち輪郭線として塗りつぶさせる画素を特定する命令であり、差分ベクトルを引数として含む。命令ｄＶｅｃｔｏｒは、命令Ｌｉｎｅ、Ｃｕｒｖｅ２またはＣｕｒｖｅ３が細分化されたものである。
【００４７】
このように、輪郭計算モジュール１１０は、グリフデータに記述された命令Ｌｉｎｅ、Ｃｕｒｖｅ２およびＣｕｒｖｅ３を細分化し、細分化したデータを後段のモジュールに出力する。
【００４８】
２−３−３．描画位置計算モジュール１１１の動作
図１０は、描画位置計算モジュール１１１の構成を示す図である。輪郭計算モジュール１１０から出力された命令は、入力ｃｍｄとして描画位置計算モジュール１１１に入力される。描画位置計算モジュール１１１に入力される命令は、Ｍｏｖｅ、ｄＶｅｃｔｏｒ、ＥＯＣのいずれかである。セレクタ２０１は、入力された命令がｄＶｅｃｔｏｒｅであった場合は「１」を出力し、命令がＭｏｖｅまたはＥＯＣであった場合は「０」を出力する。ラッチ２０２は、命令をラッチする。ラッチされた命令は、出力ｃｍｄとして後段の輪郭描画モジュール１０４に出力される。
【００４９】
輪郭計算モジュール１１０から出力される命令の引数は、入力ｄｙおよびｄｘとして描画位置計算モジュール１１１に入力される。具体的には、入力ｄｙおよびｄｘは、入力された命令がｄＶｅｃｔｏｒのときは差分ベクトルのｙ成分およびｘ成分であり、命令がＭｏｖｅのときは移動先の位置ベクトルのｙ成分およびｘ成分である。セレクタ２０３は、セレクタ２０１の出力が「０」であるとき（すなわち輪郭計算モジュール１１０から命令ＭｏｖｅまたはＥＯＣが入力されたとき）は入力ｄｙを出力し、セレクタ２０１の出力が「１」であるとき（すなわち輪郭計算モジュール１１０から命令ｄＶｅｃｔｏｒが入力されたとき）は加算器２０４からの入力を出力する。加算器２０４は、入力ｄｙおよびラッチ２０５からの入力を加算する。ラッチ２０５は、現在処理対象となっている画素のｙ座標（ｙ）をラッチする。ラッチ２０６は、ラッチ２０５からの入力、すなわち１クロック前のｙ座標（ｐｙ）をラッチする。セレクタ２０７は、入力ｄｙがｄｙ≧０のときはｐｙを、ｄｙ＜０のときはｙを出力する。
【００５０】
セレクタ２０８は、セレクタ２０１の出力が「０」であるときは入力ｄｘを出力し、セレクタ２０１の出力が「１」であるときは加算器２０９からの入力を出力する。加算器２０９は、入力ｄｘおよびラッチ２１０からの入力を加算する。ラッチ２１０は、現在処理対象となっている画素のｘ座標（ｘ）をラッチする。ラッチ２１１は、ラッチ２１０からの入力、すなわち１クロック前のｘ座標（ｐｘ）をラッチする。セレクタ２１２は、入力ｄｙ（入力ｄｘではない）がｄｙ≧０のときはｐｘを、ｄｙ＜０のときはｘを出力する。
【００５１】
クリッピングモジュール２１３は、対象画素の座標を、クリップされる領域（クリップ領域）内に修正する機能を有する。クリップ領域は、プログラムに従って動作するＣＰＵ１０によって指定される。ＣＰＵ１０は、クリップ領域のｘ座標およびｙ座標の最大値および最小値をｃｌ＿ｘｍａｘ、ｃｌ＿ｘｍｉｎ、ｃｌ＿ｙｍａｘおよびｃｌ＿ｙｍｉｎとしてフォントプロセッサ１００に出力する。
【００５２】
図１１は、クリッピングモジュール２１３の構成を示す図である。セレクタ２０７の出力すなわち対象画素のｙ座標は、入力ａとしてクリッピングモジュール２１３に入力される。ＣＰＵ１０の出力ｃｌ＿ｙｍａｘおよびｃｌ＿ｙｍｉｎは、それぞれ入力ａｍａｘおよびａｍｉｎとしてクリッピングモジュール２１３に入力される。減算器３０１は、ａからａｍａｘを減算した結果を出力する。セレクタ３０２は、ａ−ａｍａｘ＜０の場合すなわちａ＜ａｍａｘの場合、「０」を出力し、ａ−ａｍａｘ≧０の場合すなわちａ≧ａｍａｘの場合、「１」を出力する。減算器３０３は、ａからａｍｉｎを減算した結果を出力する。セレクタ３０４は、ａ−ａｍｉｎ≧０の場合すなわちａ≧ａｍｉｎの場合、「０」を出力し、ａ−ａｍｉｎ＜０の場合すなわちａ＜ａｍｉｎの場合、「１」を出力する。セレクタ３０２またはセレクタ３０４の出力が「１」であるということは、対象画素の座標を、クリップ領域内に修正する必要があることを示す。セレクタ３０５は、セレクタ３０４の出力が「０」である場合にはａを出力し、セレクタ３０４の出力が「１」である場合にはａｍｉｎを出力する。セレクタ３０６は、セレクタ３０２の出力が「１」である場合にはａｍａｘを出力ｒａとして出力し、セレクタ３０２の出力が０である場合にはセレクタ３０５からの入力を出力ｒａとして出力する。出力ｒａは、クリップ領域内に修正された対象画素の座標を示す。ＯＲ回路３０７は、セレクタ３０２の出力とセレクタ３０４の出力の論理和を、出力ｃｌｉｐｐｅｄとして出力する。出力ｃｌｉｐｐｅｄは、「０」のときクリッピングが行われていないことを示し、「１」のときクリッピングが行われたことを示す。
【００５３】
再び図１０を参照する。最大最小更新モジュール２１４は、レジスタ１１２に記憶されている、ｙ座標の最大値（ｙｍａｘ）および最小値（ｙｍｉｎ）を更新する。レジスタ１１２は、出力ｙｍａｘおよびｙｍｉｎを出力する。最大最小更新モジュール２１４には、クリッピングモジュール２１３の出力ｒａ、レジスタ１１２の出力ｙｍａｘおよびｙｍｉｎが入力される。
【００５４】
図１２は、最大最小更新モジュール２１４の構成を示す図である。入力ａは、クリッピングモジュール２１３の出力ｒａ、すなわちクリップ領域内に修正された対象画素の座標である。入力ａｍａｘおよびａｍｉｎは、レジスタ１１２の出力ｙｍａｘおよびｙｍｉｎ、すなわちｙ座標の最大値および最小値である。減算器４０１は、ａからａｍａｘを減算した結果を出力する。セレクタ４０２は、ａ−ａｍａｘ≧０の場合すなわちａ≧ａｍａｘの場合、出力ｒａｍａｘとしてａを出力し、ａ−ａｍａｘ＜０の場合すなわちａ＜ａｍａｘの場合、出力ｒａｍａｘとしてａｍａｘを出力する。すなわち、最大最小更新モジュール２１４は、対象画素のｙ座標がレジスタ１１２に記憶されている最大値よりも大きければ対象画素のｙ座標を出力し、対象画素のｙ座標が最大値よりも小さければ最大値を出力する。減算器４０３は、ａからａｍｉｎを減算した結果を出力する。セレクタ４０４は、ａ−ａｍｉｎ＜０の場合すなわちａ＜ａｍｉｎの場合、出力ｒａｍｉｎとしてａを出力し、ａ−ａｍｉｎ≧０の場合すなわちａ≧ａｍｉｎの場合、出力ｒａｍｉｎとしてａｍｉｎを出力する。すなわち、最大最小更新モジュール２１４は、対象画素のｙ座標がレジスタ１１２に記憶されている最小値よりも小さければ対象画素のｙ座標を出力し、対象画素のｙ座標が最小値よりも大きければ最小値を出力する。
【００５５】
再び図１０を参照する。最大最小更新モジュール２１４の出力ｒａｍａｘおよびｒａｍｉｎは、それぞれｒｙｍａｘおよびｒｙｍｉｎとしてレジスタ１１２に出力される。こうしてレジスタ１１２は、更新された最大値および最小値を記憶し、それぞれｙｍａｘおよびｙｍｉｎとして再び描画位置計算モジュール１１１に出力する。
【００５６】
クリッピングモジュール２１５および最大最小更新モジュール２１６は、クリッピングモジュール２１３および最大最小更新モジュール２１４と同一の構成を有しているが、ｙ座標ではなくｘ座標が入力される点が異なる。したがって、ｒａはｒｘとして輪郭描画モジュール１０４に出力される。また、ｒａｍａｘおよびｒａｍｉｎは、ｒｘｍａｘおよびｒｘｍｉｎとしてレジスタ１１２に出力される。こうしてレジスタ１１２は、更新された最大値および最小値を記憶し、それぞれｘｍａｘおよびｘｍｉｎとして再び描画位置計算モジュール１１１に出力する。
【００５７】
ＯＲ回路２１７は、クリッピングモジュール２１３の出力ｃｌｉｐｐｅｄおよびクリッピングモジュール２１５の出力ｃｌｉｐｐｅｄの論理和を出力ｓｔｒｏｋｅとして出力する。出力ｓｔｒｏｋｅは、「１」のときｘ座標およびｙ座標のいずれかでクリッピングが行われたことを示し、「０」のときｘ座標およびｙ座標のどちらでもクリッピングが行われていないことを示す。セレクタ２１８は、クリッピングモジュール２１３の出力ｃｌｉｐｐｅｄが「０」の場合はｄｙを出力し、出力ｃｌｉｐｐｅｄが「１」の場合は「０」を出力する。描画位置計算モジュール１１１は、セレクタ２１８の出力を、出力ｄｗｎとして輪郭描画モジュール１０４に出力する。出力ｄｗｎは、輪郭線のｙ方向における変化量を示す。
【００５８】
以上で説明したように、描画位置計算モジュール１１１は、ｃｍｄ、ｄｙ、ｄｘ、ｃｌ＿ｙｍａｘ、ｃｌ＿ｙｍｉｎ、ｙｍａｘ、ｙｍｉｎ、ｃｌ＿ｘｍａｘ、ｃｌ＿ｘｍｉｎ、ｘｍａｘおよびｘｍｉｎが入力されると、ｃｍｄ、ｓｔｒｏｋｅ、ｒｙ、ｒｘ、ｄｗｎ、ｒｙｍａｘ、ｒｙｍｉｎ、ｒｘｍｉｎ、ｒｘｍｉｎを出力する。
【００５９】
２−３−４．輪郭描画モジュール１０４の動作
図１３は、輪郭描画モジュール１０４の動作を示すフローチャートである。ステップＳ３００において、輪郭描画モジュール１０４は、輪郭計算モジュール１１０から出力された命令がＥＯＣであるか判断する。与えられた命令がＥＯＣであると判断された場合（Ｓ３００：ＹＥＳ）、輪郭描画モジュール１０４は、処理をステップＳ３０８に移行する。与えられた命令がＥＯＣでないと判断された場合（Ｓ３００：ＮＯ）、輪郭描画モジュール１０４は、処理をステップＳ３０１に移行する。
【００６０】
ステップＳ３０１において、輪郭描画モジュール１０４は、与えられた命令がＭｏｖｅであるか判断する。与えられた命令がＭｏｖｅであると判断された場合（Ｓ３０１：ＹＥＳ）、ワークメモリ１０５にアクセスする必要がないので、輪郭描画モジュール１０４は、その画素については何も処理をしない。与えられた命令がＭｏｖｅでないと判断された場合（Ｓ３０１：ＮＯ）、すなわち、命令ｄＶｅｃｔｏｒが与えられた場合、輪郭描画モジュール１０４は、処理をステップＳ３０２に移行する。
【００６１】
ステップＳ３０２において、輪郭描画モジュール１０４は、ｓｔｒｏｋｅ＝０かつｄｗｎ＝０であるか判断する。ｓｔｒｏｋｅ＝０かつｄｗｎ＝０であると判断された場合（Ｓ３０２：ＹＥＳ）、ワークメモリ１０５にアクセスする必要がないので、輪郭描画モジュール１０４は、その画素については何も処理をしない。ｓｔｒｏｋｅ＝０かつｄｗｎ＝０でないと判断された場合（Ｓ３０２：ＮＯ）、輪郭描画モジュール１０４は、処理をステップＳ３０３に移行する。
【００６２】
ステップＳ３０３において、輪郭描画モジュール１０４は、画素の位置（ｒｘ，ｒｙ）から、その画素のデータを記憶しているワークメモリ１０５のアドレスを算出する。
ステップＳ３０４において、輪郭描画モジュール１０４は、ワークメモリ１０５のうちステップＳ３０３で算出されたアドレスから、画素のデータを読み出す。この例で画素のデータは、ストロークｓｔｒｏｋｅ（ストローク情報）および巻き数変化量ｄｗｎを含んでいる。複合グリフの場合はもちろん、単純グリフの場合でも、１つの画素で線が交わる場合など、ある画素に対して処理が複数回行われることがある。したがって、既に処理が行われた画素については、初期値以外のストローク情報および巻き数変化量ｄｗｎが記録されている。
【００６３】
ステップＳ３０５において、輪郭描画モジュール１０４は、ストローク情報を上書きする。描画位置計算処理から与えられたストロークがｓｔｒｏｋｅ＝０である場合、輪郭描画モジュール１０４は、その画素のストローク情報を変更しない。与えられたストロークがｓｔｒｏｋｅ＝０である場合、輪郭描画モジュール１０４は、その画素のストローク情報を、「１」に変更する。ステップＳ３０６において、輪郭描画モジュール１０４は、画素の巻き数変化量にｄｗｎを加算する。例えば、画素の巻き数変化量として「２」が記憶されており与えられた巻き数変化量ｄｗｎ＝＋１であった場合、画素の巻き数変化量は「３」となる。ステップＳ３０７において、輪郭描画モジュール１０４は、更新したデータでワークメモリ１０５上のデータを上書きする。
【００６４】
ステップＳ３０８において、輪郭描画モジュール１０４は、輪郭描画処理が終了したことを塗り潰しモジュール１０６に通知する。
【００６５】
２−３−５．塗り潰しモジュール１０６の動作
図１４は、フォントプロセッサ１００の塗り潰しモジュール１０６の動作を示すフローチャートである。本実施形態において、塗り潰しモジュール１０６は、輪郭線の内部を塗りつぶす塗りつぶし処理、グリフの画像と背景を合成する背景合成処理、および生成されたデータをＶＲＡＭ５０に転送する転送処理を実行する機能を有する。図１４のフローは、図１３のステップＳ３０８において輪郭描画モジュール１０４から塗り潰しモジュール１０６に輪郭描画処理の終了が通知されたことを契機として開始される。
【００６６】
ステップＳ４００において、塗り潰しモジュール１０６は、パラメータｙを初期化する。パラメータｘおよびｙは、画素の座標を示す。この例で、塗り潰しモジュール１０６は、ｙ＝ｙＭｉｎとしてパラメータｙを初期化する。ｙＭｉｎはフォントを描画する領域のｙ座標の最小値である。以下、マトリクス状に配置された複数の画素のうちパラメータｙで特定される行を「対象行」という。
【００６７】
ステップＳ４０１において、塗り潰しモジュール１０６は、まだ対象行となっていない行があるか、具体的にはパラメータｙがｙ≦ｙＭａｘを満たすか判断する。ｙＭａｘはフォントを描画する領域のｙ座標の最大値である。まだ処理されていない行があると判断された場合（Ｓ４０１：ＹＥＳ）、塗り潰しモジュール１０６は、処理をステップＳ４０２に移行する。処理されていない行はないと判断された場合（Ｓ４０１：ＮＯ）、塗り潰しモジュール１０６は、図１４の処理を終了する。
【００６８】
ステップＳ４０２において、塗り潰しモジュール１０６は、パラメータｗｎにゼロを代入する。パラメータｗｎは巻き数（winding number）を示す。巻き数は、対象行と輪郭線とがある向き（例えば、上向き）で交わるときに増加し、対象行と輪郭線とが別の向き（例えば、下向き）で交わるときに減少する。
【００６９】
ステップＳ４０３において、塗り潰しモジュール１０６は、パラメータｘを初期化する。この例で、塗り潰しモジュール１０６は、ｘ＝ｘＭｉｎとしてパラメータｘを初期化する。ｘＭｉｎはフォントを描画する領域のｘ座標の最小値である。塗り潰し処理において対象行のうちパラメータｘで特定される画素を「対象画素」という。
【００７０】
ステップＳ４０４において、塗り潰しモジュール１０６は、対象行の中にまだ対象画素となっていない画素があるか、具体的にはパラメータｘがｘ≦ｘＭａｘを満たすか判断する。ｘＭａｘはフォントを描画する領域のｘ座標の最大値である。まだ対象画素となっていない画素があると判断された場合（Ｓ４０４：ＹＥＳ）、塗り潰しモジュール１０６は、処理をステップＳ４０６に移行する。対象画素となっていない画素はないと判断された場合（Ｓ４０４：ＮＯ）、塗り潰しモジュール１０６は、処理をステップＳ４０５に移行する。
【００７１】
ステップＳ４０５において、塗り潰しモジュール１０６は、パラメータｙを更新する。この例で、塗り潰しモジュール１０６は、ｙ＝ｙ＋１としてパラメータｙを更新する。パラメータｙを更新すると、塗り潰しモジュール１０６は、処理をステップＳ４０１に移行する。
【００７２】
ステップＳ４０６において、塗り潰しモジュール１０６は、対象画素の背景データ（背景の階調を示すデータ）を、ワークメモリ１０５に書き込む。背景データは、例えばＲＡＭ３０から読み出される。
【００７３】
ステップＳ４０７において、塗り潰しモジュール１０６は、ワークメモリ１０５に記憶されている輪郭を示すビットマップデータ（輪郭データ）から、巻き数変化量ｄｗｎを取得する。詳細には以下のとおりである。塗り潰しモジュール１０６は、パラメータｘおよびｙから、対象画素のデータを記憶しているアドレスを算出する。塗り潰しモジュール１０６は、算出されたアドレスから対象画素のデータを読み出す。塗り潰しモジュール１０６は、読み出されたデータから巻き数変化量ｄｗｎを抽出する。
【００７４】
ステップＳ４０８において、塗り潰しモジュール１０６は、パラメータｗｎの値をｗｎ＝ｗｎ＋ｄｗｎとして更新する。パラメータｗｎは対象行が更新されるたびにゼロに初期化される（ステップＳ４０２）から、パラメータｗｎは、対象行を基準点（この例では左端点）から１画素ずつ順番に、巻き数変化量ｄｗｎを積算した値である。
【００７５】
図１５は、巻き数ｗｎの変化を例示する図である。図１５（Ａ）は、輪郭が描画されたビットマップデータの一部を示す。この例では、４本の輪郭線が描かれている。マトリクスの上部に記載されている矢印は、輪郭線の向きを示している。図１５（Ｂ）は、図１５（Ａ）のビットマップデータのうち上から２行目の画素の巻き数の変化を示している。処理の始点（左端点）においては巻き数ｗｎの初期値としてゼロが与えられる。１画素ずつ右に向かって処理され、輪郭線が現れるたびにその向きに応じて巻き数が増加または減少する。
【００７６】
再び図１４を参照する。ステップＳ４０９において、塗り潰しモジュール１０６は、画素を塗り潰す条件が満たされたか判断する。ここでは、画素を塗り潰す条件として、巻き数ｗｎとストロークｓｔｒｏｋｅの値が、（ｗｎ，ｓｔｒｏｋｅ）＝（０，０）以外であるという条件が用いられる。画素を塗り潰す条件が満たされたと判断された場合（Ｓ４０９：ＹＥＳ）、塗り潰しモジュール１０６は、処理をステップＳ４１０に移行する。画素を塗り潰す条件が満たされていないと判断された場合（Ｓ４０９：ＮＯ）、塗り潰しモジュール１０６は、処理をステップＳ４１１に移行する。
【００７７】
ステップＳ４１０において、塗り潰しモジュール１０６は、対象画素を塗り潰す。すなわち、対象画素の階調（カラー表示の場合、各色要素の階調）を指定された値にする。
【００７８】
ステップＳ４１１において、塗り潰しモジュール１０６は、パラメータｘをｘ＝ｘ＋１として更新する。これにより対象行が更新される。対象行を更新すると、塗り潰しモジュール１０６は、処理をステップＳ４０４に移行する。
【００７９】
以上の処理により、ワークメモリ１０５に記憶された輪郭線のビットマップデータの内部は塗りつぶされる。塗り潰しモジュール１０６は、こうして生成されたデータを、バスインターフェースモジュール１０７およびバス８０を介してＶＲＡＭ５０に転送する。塗り潰し処理が完了すると、フォントプロセッサ１００は、塗り潰し処理の完了をＣＰＵ１０に通知する。
【００８０】
２−４．実施形態の効果
以上で説明したように本実施形態によれば、レンダリングメモリにおけるグリフが占める部分、すなわち水平方向および垂直方向の最大値および最小値が、グリフが描画されるたびに逐一、動的に計算される。この計算はハードウェアで、後段への出力と並列で行われるので、計算に必要な時間すなわちこの計算による後段への出力の遅延は実質的にゼロである。
【００８１】
Ｂ．第２実施形態
続いて、本発明の第２実施形態について説明する。第１実施形態では、情報表示装置１の電源制御について特に言及しなかったが、第２実施形態においては最大値および支障地の計算と情報表示装置１の電源制御とを組み合わせた動作について説明する。さらに、第１実施形態では、１つ（１文字）のグリフが描画される例について説明したが、第２実施形態では、複数のグリフが描画される例について説明する。以下において、第１実施形態と共通する事項および要素については説明を省略する。
【００８２】
図１６は、第２実施形態に係る情報表示装置２の構成を示す図である。情報表示装置２において、フォントプロセッサ１００に代わりフォントプロセッサ５００が用いられる。フォントプロセッサ５００の詳細は後述する。電源４００は、情報表示装置２の構成要素に電力を供給する装置、例えば電池である。電源制御回路２００は、ＣＰＵ１０またはフォントプロセッサ５００の制御下で、情報表示装置２の構成要素に対する、電源４００からの電力の供給を開始または停止させる。以下、ある構成要素に対し電力の供給を開始することを「電源をオンする」といい、電力の供給を停止することを「電源をオフする」という。ＮＶＲＡＭ（Non-Volatile Random Access Memory）３００は、種々のデータを記憶する、不揮発性の記憶装置である。
【００８３】
図１７は、フォントプロセッサ５００の構成を示す図である。メモリコントローラ５０１は、ＣＰＵ１０の制御下でメモリにアクセスする。ここで、「メモリ」とは、ＲＯＭ２０、ＲＡＭ３０、ワークメモリ１０５、ＮＶＲＡＭ３００など複数の記憶装置を包括する概念である。これらの記憶装置は物理的には別の装置として構成されているが、単一のメモリ空間を構成する。メモリ空間におけるデータの記憶位置はアドレスにより一意に特定される。ＲＯＭ２０は、各々がグリフの描画の命令を示し、順番に実行される複数の描画命令を記憶する第１の記憶領域として機能する。ワークメモリ１０５は、２次元座標系を用いて各画素の位置が特定される複数の画素のデータを記憶する第２の記憶領域として機能する。この例で、ワークメモリ１０５は不揮発性の記憶装置である。ＮＶＲＡＭ３００は、各々が前記２次元座標系における座標の最大値および最小値を含む複数のデータセットを記憶する第３の記憶領域として機能する。
【００８４】
図１８は、情報表示装置２のメモリマップを例示する図である。図１８には、記憶領域を示すアドレス、そのアドレスで指定される領域に記憶されるデータの内容、および各記憶領域の機能が示されている。説明の便宜上アドレスは１０進数で示されている。
【００８５】
アドレス１０００番地から１９９９番地までの記憶領域は、描画命令格納ＲＡＭすなわち第１の記憶領域である。アドレス１０００番地−１００２番地には、命令ＤｒａｗＣｈａｒ２０００、ＤｒａｗＣｈａｒ２１００およびＤｒａｗＣｈａｒ２２００が記憶されている。これらは、それぞれグリフ「Ａ」、「Ｂ」および「Ｃ」を描画させる命令である。アドレス１００３番地には、命令Ｆｉｎｉｓｈが記憶されている。これは、グリフの描画を終了させる命令である。
【００８６】
アドレス２０００番地から２９９９番地までの記憶領域は、グリフデータ格納ＲＯＭである。「Ａ」、「Ｂ」および「Ｃ」のグリフデータを含め、その他複数のグリフデータが記憶される。
【００８７】
アドレス３０００番地から３９９９番地までの記憶領域は、最大値・最小値格納ＮＶＲＡＭすなわち第３の記憶領域である。アドレス３０００、３００１、３００２および３００３番地には、グリフ「Ａ」のｘ方向の最小値、ｘ方向の最大値、ｙ方向の最小値およびｙ方向の最大値が記憶されている。２次元座標系が用いられるので、２つの座標軸の最大値および最小値の計４つの値が、グリフ「Ａ」の最大値および最小値を含むデータセットを構成する。以下、グリフ「Ｂ」および「Ｃ」についても同様である。
【００８８】
アドレス４０００番地以降の記憶領域は、フレームバッファ（レンダリング用ＮＶＲＡＭ）すなわち第２の記憶領域である。ここには複数の画素のデータが記憶される。
【００８９】
図１９は、レジスタ１０２の詳細を説明する図である。レジスタ１０２は、詳細には少なくとも以下の４つのレジスタを有する。レジスタＣｍｄＡｄｒｓ（第１のレジスタの一例）は、次に実行すべき命令が記憶されているアドレスを記憶する。レジスタＣｍｄＲｕｎは、命令の実行開始すなわちフォントプロセッサ５００を起動させるフラグを記憶する。レジスタＣｍｄＲｕｎの値が「０」である間、フォントプロセッサ５００はグリフの描画に関する処理を行わず、レジスタＣｍｄＲｕｎに「１」が書き込まれると、フォントプロセッサ５００は起動する。レジスタＭｉｎＭａｘＭｏｄｅ（第４のレジスタの一例）は、最大値・最小値出力モード、すなわち最大値および最小値の出力を行うかを示すフラグを記憶する。レジスタＭｉｎＭａｘＭｏｄｅに「０」が記憶されている場合は最大値および最小値の出力が行われず、レジスタＭｉｎＭａｘＭｏｄｅに「１」が記憶されている場合は最大値および最小値の出力が行われる。レジスタＭｉｎＭａｘＡｄｒｓ（第２のレジスタの一例）は、最大値または最小値の出力先のアドレス、すなわち次に最大値または最小値を記憶すべきアドレスを記憶する。
【００９０】
図２０は、フォントプロセッサ５００が実行可能な命令を示す図である。命令ＤｒａｗＣｈａｒは、引数ＳｒｃＡｄｒｓとともに用いられる。命令ＤｒａｗＣｈａｒが与えられると、フォントプロセッサ５００は、アドレスＳｒｃＡｄｒｓに記憶されている１文字分のグリフデータを読み出し、読み出したグリフデータに従ってグリフを描画する。このとき、レジスタＭｉｎＭａｘＭｏｄｅに「１」が記憶されていれば、フォントプロセッサ５００は、そのグリフに関する最大値および最小値を、レジスタＭｉｎＭａｘＡｄｒｓに記憶されているアドレスで指定される記憶領域に書き込む。さらにフォントプロセッサ５００は、レジスタＭｉｎＭａｘＡｄｒｓの値に４を加算し、次に最大値または最小値を記憶すべきアドレスを示すように更新する。命令Ｆｉｎｉｓｈは、フォントプロセッサ５００に命令の実行を終了させる命令である。命令Ｆｉｎｉｓｈは、さらに、フォントプロセッサ５００の電源をオフさせる信号を、電源制御回路２００に出力させる命令である。フォントプロセッサ５００はこれ以外の命令（例えば第１実施形態で説明したＤｒａｗＣｈａｒＦｉｌｌ）も実行可能であるが、ここではその説明を省略する。
【００９１】
図２１は、情報表示装置２の動作を示すフローチャートである。図２１は、特に、複数のグリフに関する最大値および最小値を取得する際のＣＰＵ１０の処理を示している。図２１のフローは、例えば、入力装置７０を介して複数のグリフ（例えば、グリフ「Ａ」、「Ｂ」および「Ｃ」の３つのグリフ）を描画する指示が入力されたことを契機として開始される。
【００９２】
ステップＳ５００において、ＣＰＵ１０は、メモリ上の所定の記憶領域に、複数のグリフを描画させる命令を書き込む。この例では、図１８に示されるように、１０００番地から始まる領域に、ＤｒａｗＣｈａｒ２０００、ＤｒａｗＣｈａｒ２１００、ＤｒａｗＣｈａｒ２２００およびＦｉｎｉｓｈの４つの命令が書き込まれる。
ステップＳ５１０において、ＣＰＵ１０は、フォントプロセッサ５００のレジスタＣｍｄＡｄｒｓに、ステップＳ５００で命令を書き込んだアドレスを書き込む。この例では、レジスタＣｍｄＡｄｒｓに「１０００」が書き込まれる。
ステップＳ５２０において、ＣＰＵ１０は、フォントプロセッサ５００のレジスタＭｉｎＭａｘＭｏｄｅに「１」を書き込む。
ステップＳ５３０において、ＣＰＵ１０は、フォントプロセッサ５００のレジスタＭｉｎＭａｘＡｄｒｓに最大値・最小値格納ＮＶＲＡＭの先頭アドレスを書き込む。この例では、レジスタＭｉｎＭａｘＡｄｒｓに「３０００」が書き込まれる。
ステップＳ５４０において、ＣＰＵ１０は、フォントプロセッサ５００のレジスタＣｍｄＲｕｎに「１」を書き込む。レジスタＣｍｄＲｕｎに「１」が書き込まれると、フォントプロセッサ５００は起動し、後述する処理を実行する。
【００９３】
ステップＳ５５０において、ＣＰＵ１０は、ＣＰＵ１０の電源をオフさせる命令を示す信号を、電源制御回路２００に出力する。この信号を受け取ると、ステップＳ５６０において、電源制御回路２００は、ＣＰＵ１０への電力の供給を停止する。
ステップＳ５７０において、電源再投入イベント、例えばユーザがページ送りボタンを押したというイベントが発生すると、ステップＳ５８０において、電源制御回路２００は、ＣＰＵ１０への電力の供給を開始する。この例で電源制御回路２００は電源再投入イベントの発生を監視しており、電源再投入イベントが発生したことを契機としてＣＰＵ１０の電源をオンする。
【００９４】
電源がオンされると、ステップＳ５９０において、ＣＰＵ１０は、最大値・最小値格納ＮＶＲＡＭから、ステップＳ５００で命令した文字数分の最大値および最小値を取得する。この例では、ＣＰＵ１０は、最大値・最小値格納ＮＶＲＡＭから３文字分のデータセットを読み出す。読み出されたデータセットは、プログラムで要求される処理、例えば、グリフ部分以外の背景領域の画像処理を行う際のパラメータとして用いられる。
【００９５】
図２２は、フォントプロセッサ５００の動作を示すフローチャートである。図２２のフローは、図２１のステップＳ５４０においてレジスタＣｍｄＲｕｎに「１」が書き込まれたことを契機として開始される。
【００９６】
ステップＳ６０１において、フォントプロセッサ５００のメインコントローラ１０１は、レジスタＣｍｄＡｄｒｓに記憶されているアドレスにより指定される記憶領域から、１つの命令を読み出す。
ステップＳ６０２において、メインコントローラ１０１は、レジスタＣｍｄＡｄｒｓに記憶されているアドレスに１を加算し、更新する。
ステップＳ６０３において、メインコントローラ１０１は読み出した命令に応じて処理を分岐する。命令がＦｉｎｉｓｈであった場合（Ｓ６０３：Ｆｉｎｉｓｈ）、メインコントローラ１０１は、図２２のフローを終了する。図２２のフローを終了するとき、メインコントローラ１０１は、処理の終了をＣＰＵ１０に通知する。命令がＤｒａｗＣｈａｒであった場合（Ｓ６０３：ＤｒａｗＣｈａｒ）、メインコントローラ１０１は、処理をステップＳ６０４に移行する。その他の命令が与えられた場合（Ｓ６０３：その他）、メインコントローラ１０１は、処理をステップＳ６１５に移行する。
【００９７】
ステップＳ６０４において、メインコントローラ１０１は、命令ＤｒａｗＣｈａｒの引数ＳｒｃＡｄｒｓにより指定される記憶領域から、グリフデータを読み出す。
ステップＳ６０５において、メインコントローラ１０１は、輪郭計算モジュール１１０・描画位置計算モジュール１１１・輪郭描画モジュール１０４を制御し、最大値および最小値を計算させながら、フレームバッファにグリフを描画する。この処理の詳細は、第１実施形態で説明したとおりである。最大値および最小値は、レジスタ１１２に記憶される。メインコントローラ１０１は、１つのグリフ（文字）について処理が完了すると、レジスタ１１２を初期化する。すなわち、レジスタ１１２は、１つのグリフについて処理が開始されてから終了するまでの最大値および最小値を記憶する。
【００９８】
ステップＳ６０６において、メインコントローラ１０１は、レジスタＭｉｎＭａｘＭｏｄｅの値が「１」であるか、すなわち最大値および最小値の出力を行うように設定されているか判断する。レジスタＭｉｎＭａｘＭｏｄｅの値が「１」である場合（Ｓ６０６：ＹＥＳ）、メインコントローラ１０１は、処理をステップＳ６０７に移行する。レジスタＭｉｎＭａｘＭｏｄｅの値が「１」でない場合（Ｓ６０６：ＮＯ）、メインコントローラ１０１は、処理をステップＳ６０１に移行する。
【００９９】
ステップＳ６０７において、メインコントローラ１０１は、レジスタＭｉｎＭａｘＡｄｒｓに記憶されているアドレスにより指定される記憶領域に、ｘ方向の最小値を書き込む。ステップＳ６０８において、メインコントローラ１０１は、レジスタＭｉｎＭａｘＡｄｒｓに記憶されているアドレスに１を加算し、更新する。ステップＳ６０９において、メインコントローラ１０１は、レジスタＭｉｎＭａｘＡｄｒｓに記憶されているアドレスにより指定される記憶領域に、ｘ方向の最大値を書き込む。ステップＳ６１０において、メインコントローラ１０１は、レジスタＭｉｎＭａｘＡｄｒｓに記憶されているアドレスに１を加算し、更新する。ステップＳ６１１において、メインコントローラ１０１は、レジスタＭｉｎＭａｘＡｄｒｓに記憶されているアドレスにより指定される記憶領域に、ｙ方向の最小値を書き込む。ステップＳ６１２において、メインコントローラ１０１は、レジスタＭｉｎＭａｘＡｄｒｓに記憶されているアドレスに１を加算し、更新する。ステップＳ６１３において、メインコントローラ１０１は、レジスタＭｉｎＭａｘＡｄｒｓに記憶されているアドレスにより指定される記憶領域に、ｙ方向の最大値を書き込む。ステップＳ６１４において、メインコントローラ１０１は、レジスタＭｉｎＭａｘＡｄｒｓに記憶されているアドレスに１を加算し、更新する。ステップＳ６１４の処理を終えると、メインコントローラ１０１は、処理をステップＳ６０１に移行する。
【０１００】
ステップＳ６１５に応じて、メインコントローラ１０１は、その命令に応じた処理を行う。例えば、命令ＤｒａｗＣｈａｒＦｉｌｌが与えられた場合、メインコントローラ１０１は、第１実施形態で説明した処理を行う。
【０１０１】
以上で説明したように、本実施形態によれば、ＣＰＵ１０およびメモリに対する電力の供給が停止されても、情報表示装置２は、計算された最大値および最小値を保持することができる。また、ＣＰＵ１０がフォントプロセッサ５００に、複数のグリフを描画する命令をまとめて与えた場合でも、ＣＰＵ１０は、複数の文字分の最大値および最小値を取得することができる。第１実施形態に説明したように単に最大値および最小値をレジスタに記憶しているだけでは、複数の複数のグリフを描画する命令をまとめて与えた場合にＣＰＵ１０が取得できるのは、一番最後に描画されたグリフに関する最大値および最小値のみである。
【０１０２】
Ｃ．他の実施形態
本発明は上述の実施形態に限定されるものではなく種々の変形実施が可能である。以下、変形例をいくつか説明する。変形例の説明において実施形態と共通する要素には共通の参照符号が用いられる。以下で説明する変形例のうち２つ以上のものが組み合わせて用いられてもよい。また、第１実施形態、第２実施形態および変形例に含まれる事項がそれぞれ組み合わせて用いられてもよい。
【０１０３】
１．変形例１
メモリの記憶領域と物理的な記憶装置との対応関係は、第２実施形態で説明したものに限定されない。実施形態で説明した第１−第３の記憶領域を全体として有し、アドレスによって一意に特定可能な記憶領域を有するのであれば、物理的にはどのような記憶装置が用いられてもよい。また、第２実施形態において、レジスタ１０２が図１９に示される４つのレジスタとしての機能を兼ね備えていたが、これら４つのレジスタの機能はそれぞれ別のレジスタにより実装されてもよい。さらに、第１実施形態の情報表示装置２がＮＶＲＡＭ３００を有していてもよい。
【０１０４】
２．変形例２
第２実施形態において、フォントプロセッサ５００は、メモリコントローラ５０１を内蔵していなくてもよい。メモリコントローラ５０１は、第２実施形態において、メモリにアクセスするメモリアクセス手段として機能していた。フォントプロセッサ５００がメモリコントローラ５０１を内蔵しない場合、フォントプロセッサ５００の外部にメモリコントローラ５０１が設けられる。この場合でも、フォントプロセッサ５００は、バスインターフェースモジュール１０７・バス８０・メモリコントローラ５０１を介してメモリにアクセス可能であるので、バスインターフェースモジュール１０７がメモリアクセス手段としての機能を有している。
【０１０５】
３．変形例３
第２実施形態において、メインコントローラ１０１が、最大最小書き込み手段および更新手段としての機能を兼ね備えていた。最大最小更新手段は、１つのグリフについて輪郭描画処理が完了すると、第２のレジスタに記憶されているアドレスで指定される記憶領域に、第３のレジスタに記憶されている最大値または最小値を、メモリアクセス手段を介して書き込む書き込み処理を行う。更新手段は、書き込み処理が終了すると、第２のレジスタに記憶されているアドレスを更新する。これらの機能は、それぞれ別のモジュールにより実行されてもよい。
【０１０６】
４．変形例４
複数の最大値および最小値をメモリに書き込む処理は、図２２に示されるものに限定されない。最終的にｘ方向およびｙ方向それぞれの、最大値および最小値をメモリに書き込むものであれば、データを書き込む順番はどのようなものでもよい。
【０１０７】
５．変形例５
第２実施形態においてフォントプロセッサ５００が有するレジスタの内容は、図１９に示されるものに限定されない。例えば、フォントプロセッサ５００は、レジスタＣｍｄＲｕｎを有していなくてもよい。この場合、フォントプロセッサ５００は、レジスタＣｍｄＲｕｎに「１」が書き込まれたというイベント以外のイベントを契機として起動される。また、フォントプロセッサ５００は、レジスタＭｉｎＭａｘＭｏｄｅを有していなくてもよい。この場合、フォントプロセッサ５００は、常に最大値および最小値の出力を行う。
【０１０８】
６．変形例６
グリフデータの形式は、図４で説明したものに限定されない。Ｍｏｖｅ、Ｌｉｎｅ、Ｃｕｒｖｅ２、Ｃｕｒｖｅ３、ＥＯＣ以外の命令が用いられてもよい。曲線を記述する関数として、４次以上の高次のベジェ曲線が用いられてもよいし、ベジェ曲線以外の曲線が用いられてもよい。要は、グリフの輪郭および前記輪郭の向きを示すものであれば、どのような形式のデータが用いられてもよい。また、実施形態では、複合グリフが２つのパーツグリフから構成される例を説明したが、複合グリフは３つ以上のパーツグリフを含んでいてもよい。また、パーツグリフが複合グリフであってもよい。
【０１０９】
７．変形例７
輪郭線の向きに応じて増減するパラメータは、実施形態で説明した巻き数ｗｎに限定されない。巻き数ｗｎは輪郭線の向きに応じて１ずつ増減するパラメータであったが、増減の単位は１でなくてもよい。また、実施形態では対象行を決めて、対象行について１画素ずつ横方向に処理を進める例を説明したが、処理の順序はこれに限定されない。対象列を決め、対象列について１画素ずつ縦方向に処理を進める構成としてもよい。この場合、巻き数変化量ｄｗｎは、輪郭線が右から左に向いている場合、輪郭線が鉛直方向を向いている場合、輪郭線が左から右に向いている場合で異なる。要は、輪郭線の向きに応じて増減するパラメータは、画素のマトリクスの１つの行または１つの列を対象線とし、対象線に沿って一画素ずつ処理していったときに、対象線と輪郭線とが交わる向きに応じて増減するものであれば、どのようなパラメータが用いられてもよい。さらに、このパラメータを用いて画素を塗り潰すか塗り潰さないかが決定されるのであれば、どのような処理が塗り潰し処理として用いられてもよい。
【０１１０】
８．変形例８
実施形態において、輪郭計算処理、描画位置計算処理、および輪郭描画処理は、それぞれ異なるモジュールにより実行された。しかし、単一のモジュールまたはプロセッサが、複数の処理を行う機能を有していてもよい。あるいは、複数のモジュールまたはプロセッサの集合が全体として、単一の処理を行う機能を有していてもよい。
また、実施形態において、レジスタ１１２は、描画位置計算モジュール１１１の外部に設けられていた。しかし、描画位置計算モジュール１１１がレジスタ１１２を内蔵する構成であってもよい。あるいは、最大最小更新モジュール２１４がレジスタ１１２を内蔵する構成であってもよい。
さらに、スタックの記憶領域はその機能を発揮できる限りにおいてどの記憶装置上に設けられてもよい。
【０１１１】
９．変形例９
第２実施形態において、電源再投入イベントを監視する監視手段としての機能は、電源制御回路２００以外のハードウェア要素が有していてもよい。この場合、監視手段として機能するハードウェアは、電源再投入イベントが発生したことを電源制御回路２００に通知する。
【０１１２】
１０．変形例１０
第１実施形態では、情報表示装置の電源管理機能について説明しなかったが、情報表示装置１が、第２実施形態で説明したような電源管理機能を有していてもよい。また、情報表示装置１は、ＮＶＲＡＭ３００を有していてもよい。この場合、第１実施形態においてＲＡＭ３０に記憶されているものとして説明したデータの一部または全部が、ＮＶＲＡＭ３００に記憶されてもよい。さらに、第２実施形態では、複数のグリフが描画される例について説明したが、単一のグリフが描画されてもよい。すなわち、第１の記憶領域に記憶される描画命令は１つであってもよい。
【０１１３】
１１．他の変形例
情報表示装置のハードウェア構成は図１および図１６に示されるものに限定されない。必要な機能構成を実現できるものであれば、どのようなハードウェア構成を有する装置が用いられてもよい。フォントプロセッサ１００についても同様である。また上述の実施形態では情報表示装置１が電子ペーパである例について説明したが、必要な機能を有するものであれば、パーソナルコンピュータ、ＰＤＡ（Personal Digital Assistant）、携帯電話機、印刷装置など電子ペーパ以外の装置であってもよい。実施形態において情報表示装置１は表示装置（表示体１０７）を内蔵していたが、表示装置は外付けであってもよい。
【０１１４】
上述の実施形態においてＣＰＵ１０によって実行されるプログラムは、磁気記録媒体（磁気テープ、磁気ディスク（ＨＤＤ（Hard Disk Drive）、ＦＤ（Flexible Disk））など）、光記録媒体（光ディスク（ＣＤ（Compact Disk）、ＤＶＤ（Digital Versatile Disk））など）、光磁気記録媒体、半導体メモリ（フラッシュＲＯＭなど）などのコンピュータ読取り可能な記録媒体に記憶した状態で提供されてもよい。また、このプログラムは、インターネットのようなネットワーク経由でダウンロードされてもよい。
【図面の簡単な説明】
【０１１５】
【図１】第１実施形態に係る情報表示装置１のハードウェア構成を示す図である。
【図２】フォントプロセッサ１００の構成を示す図である。
【図３】情報表示装置１の外観を示す図である。
【図４】グリフデータを例示する図である。
【図５】本実施形態に係る転送領域計算方法を概説する図である。
【図６】情報表示装置１の動作を示すフローチャートである。
【図７】輪郭計算処理の前段を示すフローチャートである。
【図８】輪郭計算処理の後段を示すフローチャートである。
【図９】データの分割を説明する図である。
【図１０】描画位置計算モジュール１１１の構成を示す図である。
【図１１】クリッピングモジュール２１３の構成を示す図である。
【図１２】最大最小更新モジュール２１４の構成を示す図である。
【図１３】輪郭描画モジュール１０４の動作を示すフローチャートである。
【図１４】塗り潰しモジュール１０６の動作を示すフローチャートである。
【図１５】巻き数ｗｎの変化を例示する図である。
【図１６】第２実施形態に係る情報表示装置２の構成を示す図である。
【図１７】フォントプロセッサ５００の構成を示す図である。
【図１８】情報表示装置１のメモリマップを例示する図である。
【図１９】レジスタ１０２の詳細を説明する図である。
【図２０】フォントプロセッサ１００が実行可能な命令を示す図である。
【図２１】情報表示装置１の動作を示すフローチャートである。
【図２２】フォントプロセッサ１００の動作を示すフローチャートである。
【符号の説明】
【０１１６】
１…情報表示装置、２…情報表示装置、１０…ＣＰＵ、２０…ＲＯＭ、３０…ＲＡＭ、４０…表示体、５０…ＶＲＡＭ、６０…表示制御装置、７０…入力装置、８０…バス、９０…バスコントローラ、１００…フォントプロセッサ、１０１…メインコントローラ、１０２…レジスタ、１０３…フォント描画コントローラ、１０４…輪郭描画モジュール、１０５…ワークメモリ、１０６…塗り潰しモジュール、１０７…バスインターフェースモジュール、１０８…メインバス、１０９…サブバス、１１０…輪郭計算モジュール、１１１…描画位置計算モジュール、１１２…レジスタ、２００…電源制御回路、２０１…セレクタ、２０２…ラッチ、２０３…セレクタ、２０４…加算器、２０５…ラッチ、２０６…ラッチ、２０７…セレクタ、２０８…セレクタ、２０９…加算器、２１０…ラッチ、２１１…ラッチ、２１２…セレクタ、２１３…クリッピングモジュール、２１４…最大最小更新モジュール、２１５…クリッピングモジュール、２１６…最大最小更新モジュール、２１７…ＯＲ回路、２１８…セレクタ、３００…ＮＶＲＡＭ、３０１…減算器、３０２…セレクタ、３０３…減算器、３０４…セレクタ、３０５…セレクタ、３０６…セレクタ、３０７…ＯＲ回路、４００…電源、４０１…減算器、４０２…セレクタ、４０３…減算器、４０４…セレクタ、５００…フォントプロセッサ、５０１…メモリコントローラ
【図１】
2009265414.tif 000003
【図２】
2009265414.tif 000004
【図３】
2009265414.tif 000005
【図４】
2009265414.tif 000006
【図５】
2009265414.tif 000007
【図６】
2009265414.tif 000008
【図７】
2009265414.tif 000009
【図８】
2009265414.tif 000010
【図９】
2009265414.tif 000011
【図１０】
2009265414.tif 000012
【図１１】
2009265414.tif 000013
【図１２】
2009265414.tif 000014
【図１３】
2009265414.tif 000015
【図１４】
2009265414.tif 000016
【図１５】
2009265414.tif 000017
【図１６】
2009265414.tif 000018
【図１７】
2009265414.tif 000019
【図１８】
2009265414.tif 000020
【図１９】
2009265414.tif 000021
【図２０】
2009265414.tif 000022
【図２１】
2009265414.tif 000023
【図２２】
2009265414.tif 000024