(57)【要約】【課題】  仮想マシン上でアプリケーションを動作させる情報処理装置において、フォントのフォントサイズの詳細な設定を行うことを目的とする。【解決手段】  仮想マシン上でアプリケーションを動作させる情報処理装置であって、前記仮想マシン上で動作する前記アプリケーションが指定するフォントサイズと、フォントサイズの変換規則を含むフォントの設定データとを取得する取得手段と、前記指定されたフォントサイズと前記フォントの設定データとに基づくフォントサイズのフォントを、表示装置に表示させる制御手段と、を有することを特徴とする。【選択図】  図５
2017215469.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシン上でアプリケーションを動作させる情報処理装置であって、
前記仮想マシン上で動作する前記アプリケーションが指定するフォントサイズと、フォントサイズの変換規則を含むフォントの設定データとを取得する取得手段と、
前記指定されたフォントサイズと前記フォントの設定データとに基づくフォントサイズのフォントを、表示装置に表示させる制御手段と、を有することを特徴とする情報処理装置。
【請求項２】
前記制御手段は、スケーラブルフォントとビットマップフォントとを含むフォントデータを用いて、前記表示装置にフォントを表示させることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御手段は、フォントファミリーごとにフォントの表示を異ならせることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記制御手段は、前記情報処理装置に設定されている言語ごとにフォントの表示を異ならせることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記フォントの設定データにはフォントスタイルの変換規則が含まれ、
前記制御手段は、前記フォントの設定データに基づくフォントスタイルのフォントを、前記表示装置に表示させることを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記制御手段は、前記スケーラブルフォントよりも前記ビットマップフォントを優先して用いて、前記表示装置にフォントを表示させることを特徴とする請求項２に記載の情報処理装置。
【請求項７】
前記フォントの設定データにはフォントサイズごとのフォントメトリクスが含まれ、
前記制御手段は、前記フォントの設定データに基づくフォントメトリクスで、前記表示装置にフォントを表示させることを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記制御手段は、フォントファミリーごとにフォントメトリクスを設定して、前記表示装置にフォントを表示させることを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
更に、前記仮想マシンにおけるフォントの書体を自動で太字にする機能を無効化する無効化手段を有することを特徴とする請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
仮想マシン上でアプリケーションを動作させる情報処理装置の情報処理方法であって、
取得手段が、前記仮想マシン上で動作する前記アプリケーションが指定するフォントサイズと、フォントサイズの変換規則を含むフォントの設定データとを取得する取得工程と、
制御手段が、前記指定されたフォントサイズと前記フォントの設定データとに基づくフォントサイズのフォントを、表示装置に表示させる制御工程と、を有することを特徴とする情報処理方法。
【請求項１１】
コンピュータを、
仮想マシン上でアプリケーションを動作させる情報処理装置であって、
前記仮想マシン上で動作する前記アプリケーションが指定するフォントサイズと、フォントサイズの変換規則を含むフォントの設定データとを取得する取得手段と、
前記指定されたフォントサイズと前記フォントの設定データとに基づくフォントサイズのフォントを、表示装置に表示させる制御手段と、を有することを特徴とする情報処理装置として機能させるためのコンピュータのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン上でアプリケーションを動作させる情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
従来から、画面表示を伴うコンピュータプログラムを実行するための仮想マシン技術が知られている。当該技術により、プログラムが指定したフォントの文字は、表示画面に表示される。しかし、仮想マシンの実行環境によって、表示すべきフォントは変わり得る。そこで、仮想マシンには表示するフォントを設定する機能が備わっている。
【０００３】
表示するフォントの設定のためには、仮想マシンに標準の設定ファイルを用いることが一般的である。しかし、仮想マシンに標準の設定ファイルだけでは不十分なことがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−３０８２０４号公報
【特許文献２】特開２００７−７９８３０号公報
【特許文献３】特開２０１０−１９１７０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１、特許文献２、特許文献３には、フォントの設定を変更する方法が開示されている。
【０００６】
特許文献１には、プログラムが備える属性ファイルに基づいて、そのプログラムが実行する描画命令を変更することが開示されている。描画命令の変更においては、属性ファイルに含まれる画面サイズの情報を参照し、参照した画面サイズの情報に応じてフォントのサイズを拡大して表示する。拡大表示によって、小さい画面でもフォントを読みやすくしている。しかしながら、拡大後のサイズは１種類しかないため、見栄えが均一になってしまう。
【０００７】
特許文献２には、ユーザ識別情報とＵＩ設定情報とを記憶しておき、文書データのフォントのサイズや色などを、ＵＩ設定情報の示すスタイルに変更して出力することが開示されている。
【０００８】
しかし、フォントのサイズについて、詳細な設定を行うことは出来ない。
【０００９】
特許文献３には、プログラムが画面中の最小フォントサイズより小さなサイズを指定した場合、デバイスが備える最小サイズに変換されたサイズでフォントを描画することが開示されている。しかし、フォントの変換後のサイズは１種類だけであり、画面のレイアウトがプログラムの意図を反映したものになりにくい。
【００１０】
本発明は上記の課題に鑑みてなされたものであり、仮想マシン上でアプリケーションを動作させる情報処理装置において、フォントのフォントサイズの詳細な設定を行うことを目的とする。
【課題を解決するための手段】
【００１１】
仮想マシン上でアプリケーションを動作させる情報処理装置であって、前記仮想マシン上で動作する前記アプリケーションが指定するフォントサイズと、フォントサイズの変換規則を含むフォントの設定データとを取得する取得手段と、前記指定されたフォントサイズと前記フォントの設定データとに基づくフォントサイズのフォントを、表示装置に表示させる制御手段と、を有することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、仮想マシン上でアプリケーションを動作させる情報処理装置において、フォントのフォントサイズの詳細な設定を行うことが出来る。
【図面の簡単な説明】
【００１３】
【図１】情報処理装置のハードウェア構成の一例を示す概略図である。
【図２】情報処理装置上に構築するシステム構成の一例を示す模式図である。
【図３】仮想マシンの構成を示す模式図である。
【図４】実施形態１にかかる仮想マシンの起動処理のフローチャートである。
【図５】実施形態１にかかるフォントインスタンス作成処理のフローチャートである。
【図６】実施形態２にかかるフォントインスタンス作成処理のフローチャートである。
【図７】実施形態３にかかるフォントインスタンス作成処理のフローチャートである。
【図８】実施形態４にかかるフォントインスタンス作成処理のフローチャートである。
【図９】実施形態５にかかるフォントデータ取得処理のフローチャートである。
【図１０】実施形態１にかかるフォントサイズの変換表である。
【図１１】実施形態１にかかるフォント設定拡張ファイルの記載例である。
【図１２】実施形態２にかかるフォント設定拡張ファイルの記載例である。
【図１３】実施形態３にかかるフォント設定拡張ファイルの記載例である。
【図１４】実施形態４にかかるフォント設定拡張ファイルの記載例である。
【図１５】実施形態６にかかるフォント設定拡張ファイルの記載例である。
【図１６】実施形態６にかかるフォントメトリックス変換処理のフローチャートである。
【図１７】実施形態７にかかるフォントメトリックス変換処理のフローチャートである。
【図１８】実施形態８にかかるフォント設定拡張ファイルの記載例である。
【図１９】実施形態８にかかるフォント描画処理のフローチャートである。
【発明を実施するための形態】
【００１４】
以下、添付の図面を参照して、本発明の好適な実施形態を詳細に説明する。
【００１５】
（実施形態１）
図１は、一般的な情報処理装置１０１のハードウェア構成の一例を示す図である。図１に示すように情報処理装置１０１は、ハードウェア構成として、ＣＰＵ１１を含む。
【００１６】
ＣＰＵ１１が、記憶装置１３に記憶されている後述するアプリケーションやプログラム実行環境等の各々に対応するプログラムに基づき処理を行うことによって、後述する各機能、又はフローチャートを実現する。
【００１７】
また、ＣＰＵ１１には、バス１０を介して、入力装置１２、記憶装置１３、表示装置１４及び外部接続ＩＦ１５が接続されている。入力装置１２は、情報を入力するキーボード及び／又はマウスである。記憶装置１３は、例えば、ＲＯＭ、ＲＡＭ、ハードディスク装置等を含み、上述した各プログラム以外に、プログラムに基づく処理で用いられるデータ等を記憶する。表示装置１４は、画面等を表示するディスプレイである。外部接続ＩＦ１５は、ネットワークインタフェース、外部機器との各種接続インタフェースである。
【００１８】
尚、ＣＰＵ１１はプログラムを実行することで各種の手段として機能することが可能である。なお、ＣＰＵ１１と協調して動作するＡＳＩＣなどの制御回路がこれらの手段として機能してもよい。また、ＣＰＵ１１と情報処理装置１０１の動作を制御する制御回路との協調によってこれらの手段が実現されてもよい。また、ＣＰＵ１１は単一のものである必要はなく、複数であってもよい。この場合、複数のＣＰＵ１１は分散して処理を実行することが可能である。また、複数のＣＰＵ１１は単一のコンピュータに配置されていてもよいし、物理的に異なる複数のコンピュータに配置されていてもよい。なお、ＣＰＵ１１がプログラムを実行することで実現する手段が専用の回路によって実現されてもよい。
【００１９】
次に、情報処理装置１０１上に構築するシステム構成について、図２を用いて説明する。図２は、情報処理装置１０１のシステム構成の一例を示す図である。
【００２０】
オペレーティングシステム２０１は、システム全体の基盤となるソフトウェアである。仮想マシン２０２は、オペレーティングシステム２０１上のプロセスでありながら、自身の上でアプリケーションが動作する環境を提供するソフトウェアである。アプリケーション２０３は仮想マシン上２０２で実行され、動作するプログラムである。
【００２１】
次に、仮想マシン２０２の具体的な構成を、図３を用いて説明する。図３は仮想マシン２０２が備える機能および関連するファイルを示す図である。仮想マシン２０２は、情報処理装置１０１に備わるフォントファイル３０１のフォントを読み込むためのフォントファイル読み込み手段３０３を備える。フォントファイル３０１は、文字の形を表現するためのフォントデータで構成される。フォントファイル３０１は後述する論理フォントごと、フォントのフォントスタイルによって複数のファイルとして存在する。
【００２２】
また、仮想マシン２０２は、アプリケーション２０３が文字を描画するときに指定するフォントのパラメータ指定を受け付けるためのフォント描画パラメータ設定手段３０４を備える。フォント描画パラメータ設定手段３０４は、情報処理装置１０１に備わるフォント設定拡張ファイル３０６を読み込んでフォント描画用のパラメータの変換ルールを読み込む機能も備える。
【００２３】
また、仮想マシン２０２は、フォントファイル読み込み手段３０３で読み込んだフォントを画面に描画するためのフォント描画手段３０５を備える。
【００２４】
具体的に、本実施形態における仮想マシン２０２はＪＲＥ（Ｊａｖａ  Ｒｕｎｔｉｍｅ  Ｅｎｖｉｒｏｎｍｅｎｔ）とする。ＪＲＥとは、Ｊａｖａ（登録商標）言語で開発されたソフトウェアを実行するために必要なソフトウェアのセットである。ＪＲＥは、クラスライブラリ、ＪａｖａＶＭ（Ｊａｖａ言語にて記述されたアプリケーションを実行するためのソフトウェア）を含む。ＪＲＥは、ＪａｖａＶＭ用のデフォルトフォントファイル３０７と合わせて情報処理装置１０１に配置される。以降では、情報処理装置１０１を機器と記す。
【００２５】
仮想マシン２０２は、必ず５つの論理フォント（ｓｅｒｉｆ、ｓａｎｓｓｅｒｉｆ、ｍｏｎｏｓｐａｃｅｄ、ｄｉａｌｏｇ、ｄｉａｌｏｇｉｎｐｕｔ）を備える。各論理フォントは４つの標準スタイル（ｐｌａｉｎ、ｂｏｌｄ、ｉｔａｌｉｃ、ｂｏｌｄｉｔａｌｉｃ）を適用できる。論理フォントは、機器の実行環境に応じて追加することもできる。
【００２６】
フォント設定標準ファイル３０２には、機器が備えるフォントファイル３０１と各論理フォントおよび各スタイルへの対応付けの設定が記載される。仮想マシン２０２は、起動時にフォント設定標準ファイル３０２を読み込み、フォントの設定を行う。フォント設定標準ファイル３０２は、デフォルトフォントファイル３０７と同様に仮想マシン２０２のＪＲＥと合わせて配置されるものである。フォント設定標準ファイル３０２は、ＪａｖａＶＭが標準で備えるフォント構成ファイルを指している。
【００２７】
仮想マシン２０２が読み込むことのできるフォントファイル３０１の形式としては、ＴｒｕｅＴｙｐｅ、ＰｏｓｔＳｃｒｉｐｔ、ＯｐｅｎｔＴｙｐｅなどがある。これらの形式は拡縮自由なスケーラブルフォントから構成される。また、これらの形式のフォントには、ドットの組み合わせで文字を表現するビットマップフォントを埋め込むことができる。ビットマップフォントは拡縮できない反面、人為的に字形を整えたフォントであるため、スケーラブルフォントより読みやすい。
【００２８】
しかし、仮想マシン２０２が備える標準のフォント設定標準ファイル３０２では、ビットマップフォントを埋め込んだフォントファイルを扱う上で、含まれるビットマップフォントを考慮した設定を指定できない。
【００２９】
例えば、機器が１０ｐｔと１５ｐｔのビットマップフォントを埋め込んだフォントファイル３０１を備えるとする。また、アプリケーション２０３がフォントサイズ１２ｐｔと１６ｐｔで見出しと本文を描画するプログラムであるとする。この場合、１２ｐｔと１６ｐｔに対応するビットマップフォントがないため、スケーラブルフォントが１２ｐｔと１６ｐｔに拡縮されて描画される。しかし、機器が備える１０ｐｔと１５ｐｔのビットマップフォントで描画した方が、見出しと本文でフォントサイズを変えつつも、より読みやすいフォントを描画できる。
【００３０】
また、アプリケーション２０３は機器上で複数動くため、アプリケーションごとに描画するフォントのサイズが異なると、ユーザにとって統一感のない画面インタフェースとなってしまう。アプリケーション２０３が描画するフォントのサイズを、機器が備えるビットマップフォントに統一することで、統一感のある画面インタフェースを実現できる。
【００３１】
そこで、デバイスが備えるビットマップフォントに応じてアプリケーションが描画するフォントのサイズを変換する仕組みが必要となる。
【００３２】
この仕組みを実現する手順を、図４を用いて説明する。図４は仮想マシン２０２の起動処理のフローチャートである。
【００３３】
本手順では、機器が備えるビットマップフォントにフォントのサイズを振り分ける設定を記述したフォント設定拡張ファイル３０６を用いて、アプリケーション２０３が描画するフォントのサイズを振り分ける方法について説明する。
【００３４】
機器は、画面サイズがＳＶＧＡ（横８００×縦６００ドット）とＶＧＡ（横６４０×縦４８０ドット）の２機種が存在するものとする。図１０に、描画するフォントのサイズを各機種が備えるビットマップフォントのサイズに変換する規則を示す表を示す。図１０に示したように、ＳＶＧＡ機種は１２ｐｔ、１６ｐｔ、１８ｐｔ、２４ｐｔのビットマップフォントを備え、ＶＧＡ機種は１２ｐｔ、１６ｐｔ、１８ｐｔ、２２ｐｔのビットマップフォントを備える。
【００３５】
フォント設定拡張ファイル３０６の記載例を、図１１に示す。図１１は、アプリケーション２０３が描画を指示したフォントのサイズをｓとして、ｓの値が満たす条件によって、変換するサイズを記述している。記載の書式は、図１０に示したビットマップフォントのサイズに変換する規則を表現できるものであれば、とくに制限はない。フォント設定拡張ファイル３０６を機種ごとに用意し、仮想マシン２０２は各機種で共通のものとすることで、開発効率が高くなる。
【００３６】
機器の起動が開始されると、オペレーティングシステム２０１が起動する。そして、アプリケーション２０３を実行するための仮想マシン２０２の起動が開始される。仮想マシン２０２は、起動開始時に引数としてパラメータを受け取り、そのパラメータを読み込む（Ｓ４０１）。パラメータには、フォント設定標準ファイル３０２のパスや、フォント設定拡張ファイル３０６のパスが含まれる。
【００３７】
仮想マシン２０２は、受け取ったパスのフォント設定標準ファイル３０２が存在するかどうかを、フォント描画パラメータ設定手段３０４を用いて確認する（Ｓ４０２）。存在すれば、その設定内容を読み込んで適用する（Ｓ４０３）。
【００３８】
ステップＳ４０２において、フォント設定標準ファイル３０２が存在しない場合は、デフォルトの設定を適用する（Ｓ４０４）。デフォルトの設定は、デフォルトフォントファイル３０７を表示するための設定である。デフォルトの設定によって、フォント設定標準ファイル３０２が破損した場合や起動開始時に引数として与えられたパラメータが誤っていた場合でも、画面に文字を描画することが可能となり、ユーザが機器の操作を行えなくなることを防いでいる。
【００３９】
そして、仮想マシン２０２は、フォント設定拡張ファイル３０６が存在するかどうかを、フォント描画パラメータ設定手段３０４を用いて確認する（Ｓ４０５）。存在すれば、その設定データを読み込んで適用する（Ｓ４０６）。
【００４０】
ステップＳ４０５において存在しない場合は、デフォルトの設定を適用する（Ｓ４０８）。もっとも単純なデフォルトの設定例は、フォントのサイズ変換を行わない設定である。また、なんらかの設定値を定めてもよい。
【００４１】
次に、仮想マシン２０２はフォントファイル読み込み手段３０３を用いて、フォントファイル３０１を読み込む（Ｓ４０７）。
【００４２】
以上、フォント設定拡張ファイル３０６を読み込んで仮想マシン２０２が起動する処理について説明した。
【００４３】
次に、仮想マシン２０２がアプリケーション２０３の文字の描画指示を受けてフォントを描画する処理について、説明する。
【００４４】
仮想マシン２０２が文字を画面に描画するには、ステップＳ４０７で説明したように、フォントファイル読み込み手段３０３でフォントファイル３０１を読み込んでおく。そして、アプリケーション２０３が文字の描画指示を行うと、フォント描画手段３０５がフォントファイル３０１の備えるフォントを用いて文字を画面に描画する。
【００４５】
アプリケーション２０３が文字の描画を実行するには、アプリケーション２０３自身がフォントオブジェクトのインスタンス（以降、フォントインスタンスと記載）を作成しておく必要がある。フォントインスタンスの作成では、フォントのファミリー、フォントのサイズ、フォントのスタイルを指定する。この指定はフォント描画パラメータ設定手段３０４を用いて行う。フォントのファミリーには、論理フォントの名前を指定する。このフォントインスタンスを引数として仮想マシン２０２が提供する文字列描画ＡＰＩを実行することで、文字の描画が行われる。
【００４６】
アプリケーション２０３は、機器が備えるビットマップフォントのサイズを把握できない。また、把握できたとしても、各アプリケーション２０３が個別にサイズの対応を実装することは、開発効率の低下につながる。そこで、アプリケーション２０３がフォントインスタンスに指定するフォントのサイズを仮想マシン２０２が適切に変換することで、アプリケーション２０３が描画するフォントを実行環境に適したものにする。
【００４７】
仮想マシン２０２がフォントのサイズを変換する処理について、図５を用いて説明する。図５はフォントインスタンス作成処理のフローチャートである。
【００４８】
アプリケーション２０３が、作成するフォントのパラメータを仮想マシン２０２が提供するＡＰＩに与えることで、フォントインスタンスの作成が開始される。仮想マシン２０２は、受け取ったパラメータをフォント描画パラメータ設定手段３０４に与える。フォント描画パラメータ設定手段３０４は、指定されたフォントのサイズを確認する（Ｓ５０１）。
【００４９】
そして、指定されたサイズに対応する変換規則が、ステップＳ４０６あるいはＳ４０７で適用した変換規則に含まれるかを確認する（Ｓ５０２）。
【００５０】
対応する変換規則がある場合、指定されたサイズを変換規則に従って変換する（Ｓ５０３）。そして、変換したサイズのフォントインスタンスを作成する（Ｓ５０４）。
【００５１】
ステップＳ５０２において、対応する変換規則がない場合、指定されたサイズのフォントインスタンスを作成する（Ｓ５０５）。
【００５２】
ステップＳ５０４，ステップＳ５０５のいずれかの処理が終われば、フォントインスタンスの作成処理は終了する。
【００５３】
以上、デバイスが備えるビットマップフォントに応じてアプリケーションが描画するフォントのサイズを変換する方法について説明した。
【００５４】
（実施形態２）
実施形態１では、フォントのサイズを変換する方法について説明した。しかし、フォントのサイズの変換は、フォントのファミリーによって異なる変換方法になることがある。例えば、ビットマップフォントが埋め込まれているフォントが特定のファミリーのフォントだけである場合、ビットマップフォントが埋め込まれていないフォントのサイズを変換する必要性は低い。
【００５５】
そこで、ファミリーを参照してフォントのサイズの変換を行う方法を、実施形態２として説明する。説明は図６と図１２を用いて行う。図６はフォントインスタンス作成処理のフローチャートである。図１２はフォント設定拡張ファイル３０６の記載例である。図１２の例では、ファミリーがＤＩＡＬＯＧとＭＯＮＯＳＰＡＣＥＤのときはサイズを変換するルールを示している。
【００５６】
フォント描画パラメータ設定手段３０４は、ファミリー、サイズ、スタイルを受け取ってフォントインスタンスの作成を開始する。フォント描画パラメータ設定手段３０４は、作成するフォントのファミリーがサイズ変換対象のファミリーであるかを確認する（Ｓ６０１）。
【００５７】
サイズ変換対象のファミリーであれば、図５で示したサイズ変換の処理を行う（Ｓ６０２）。サイズ変換対象のファミリーでなければ、サイズ変換を行わずに、指定されたサイズでフォントインスタンスを作成する（Ｓ６０３）。
【００５８】
ステップＳ６０２，ステップＳ６０３のいずれかの処理が終われば、フォントインスタンスの作成処理は終了する。
【００５９】
以上、ファミリーを参照してフォントのサイズの変換を行う方法を説明した。
【００６０】
（実施形態３）
フォントはファミリーだけでなく、表示する言語によっても影響される。例えば表示言語が日本語であれば日本語用のフォントファイル３０１を用い、表示言語が英語であれば英語用のフォントファイル３０１を用いる。日本語の文字は英語の文字より複雑な形状のため、適切なフォントのサイズが日本語と英語で異なることがある。
【００６１】
そこで、表示する言語に応じてフォントのサイズを変換する方法を、実施形態３として説明する。説明は図７と図１３を用いて行う。図７は、フォントインスタンス作成処理のフローチャートである。図１３はフォント設定拡張ファイル３０６の記載例である。図１３の例では、言語が英語（Ｅｎ）のときと日本語（ＪＰ）のときに、サイズを変換するルールを示している。
【００６２】
フォント描画パラメータ設定手段３０４は、ファミリー、サイズ、スタイルを受け取ってフォントインスタンスの作成を開始する。フォント描画パラメータ設定手段３０４は、機器に表示するように設定されている言語に対応する変換規則があるかどうかを確認する（Ｓ７０１）。機器に表示するように設定されている言語を取得するには、仮想マシン２０２が提供しているＡＰＩを用いる。
【００６３】
変換規則があれば、図５で示したサイズ変換の処理を行う（Ｓ７０２）。変換規則がなければ、サイズ変換を行わずに、指定されたサイズでフォントインスタンスを作成する（Ｓ７０３）。
【００６４】
ステップＳ７０２，ステップＳ７０３のいずれかの処理が終われば、フォントインスタンスの作成処理は終了する。
【００６５】
以上、表示する言語の設定を参照してフォントのサイズを変換する行う方法を説明した。
【００６６】
（実施形態４）
フォントが読みにくくなる問題は、フォントのサイズだけでなく、フォントのスタイルにも依存する。スタイルが標準の場合、小さいサイズでは線も細く描画され、読みにくくなる。この問題を解決するには、小さいサイズのフォントだけ、スタイルを標準（ＰＬＡＩＮ）でなく太字（ＢＯＬＤ）に変換すればよい。
【００６７】
そこで、フォントのスタイルの変換を行う方法を、実施形態４として説明する。説明は図８と図１４を用いて行う。図８はフォントインスタンス作成処理のフローチャートである。図１４はフォント設定拡張ファイル３０６の記載例である。
【００６８】
図１４の例では、ルールの上から走査して最初にマッチしたルールを適用する。フォントインスタンスを作成するときに指示されたスタイルがＰｌａｉｎかつサイズが１４ｐｔ以下の場合は、サイズを１２、スタイルをＢｏｌｄに変換するルールがマッチする。指示されたスタイルがＰｌａｉｎ以外の場合は、「Ｓｔｙｌｅ＝＊」から始まるブロックにマッチし、サイズの変換のみを行う。
【００６９】
フォント描画パラメータ設定手段３０４は、ファミリー、サイズ、スタイルを受け取ってフォントインスタンスの作成を開始する。フォント描画パラメータ設定手段３０４は、指示されたサイズ、スタイルに対応する変換規則があるかを確認する（Ｓ８０１）。
【００７０】
変換規則があれば、変換規則に従ってスタイルとサイズを変換する（Ｓ８０２）。そして、変換したスタイルとサイズの値でフォントインスタンスを作成する（Ｓ８０３）。
【００７１】
ステップＳ８０１において対応する変換規則がなければ、変換を行わずに、指定されたスタイルとサイズでフォントインスタンスを作成する（Ｓ８０４）。
【００７２】
ステップＳ８０３，ステップＳ８０４のいずれかの処理が終われば、フォントインスタンスの作成処理は終了する。
【００７３】
以上、フォントのスタイルの変換を行う方法を説明した。
【００７４】
（実施形態５）
実施形態１では、フォント描画手段３０５がフォントファイル３０１の備えるフォントを用いて文字を画面に描画すると説明した。フォントファイル３０１は言語やスタイルごとに別ファイルであることが一般的である。そのため、複数のフォントファイル３０１が機器中に存在する。
【００７５】
フォント描画手段３０５は、フォント設定標準ファイル３０２にもとづいて、用いるフォントファイル３０１を選択する。フォント設定標準ファイル３０２の指定では、ある一つの条件に対して複数のフォントファイル３０１が対応づくようにできる。フォント描画手段３０５は文字の描画時に、対応付けられたフォントファイル３０１がその文字を備えているかを順に探索し、文字が見つかればそのフォントを描画する。
【００７６】
フォントファイル３０１がスケーラブルフォントのみをもつ場合、探索の結果はスケーラブルフォントか見つかったか、見つからなかったかの２種類である。しかし、ビットマップフォントを埋め込んだフォントの場合、ビットマップフォントが見つかったという結果も加わり、３種類となる。
【００７７】
そこで、ビットマップフォントを埋め込んだフォントファイル３０１を扱うときのフォント描画手段３０５の処理について、図９を用いて説明する。図９は、フォント描画手段３０５がフォントデータを取得する処理のフローチャートである。
【００７８】
フォント描画手段３０５は、フォント設定標準ファイル３０２によって対応付けられた複数のフォントファイル３０１の全てを探索したかを確認する（Ｓ９０１）。全てのフォントファイルを探索していなければ、検索順位が最も高い未探索のフォントファイル３０１を選択する（Ｓ９０２）。検索順位は、フォント設定標準ファイル３０２中のフォントファイル３０１の記載順である。
【００７９】
そして、選択したフォントファイル３０１に、探索している文字に対応するビットマップフォントがあるかどうかを確認する（Ｓ９０３）。確認方法はフォントファイル３０１のフォーマットが備える標準的な索引を用いて行う。
【００８０】
文字に対応するビットマップフォントがフォントファイル３０１にあれば、そのデータを取得し、フォントデータの取得は終了する（Ｓ９０４）。
【００８１】
ビットマップフォントがなければ、その文字に対応するスケーラブルフォントがあるかどうかを確認する（Ｓ９０５）。
【００８２】
文字に対応するスケーラブルフォントがフォントファイル３０１にあれば、そのデータを取得し、フォントデータの取得は終了する（Ｓ９０６）。
【００８３】
スケーラブルフォントがなければ、ステップＳ９０１を再度実行する。ステップＳ９０１において全てのフォントファイルを探索していたらなら、フォントのデータの取得失敗として、フォントデータの取得は終了する（Ｓ９０７）。なお、失敗した時には、文字化けとわかるように特殊な記号が取得されることもある。これは、フォントファイルが失敗用の文字を定義している場合である。
【００８４】
以上、ビットマップフォントを埋め込んだフォントファイル３０１を扱うときのフォント描画手段３０５の処理について説明した。フォントファイル３０１からフォントデータを探索するときにビットマップフォントを優先することで、機器がビットマップフォントを優先して表示するようになる。
【００８５】
（実施形態６）
実施形態１では、デバイスが備えるビットマップフォントに応じてアプリケーションが描画するフォントのサイズを変換する方法について説明した。しかし、フォントが描画する文字を指定のサイズにするだけでは不十分である。文字の上下の余白や描画位置の情報であるフォントメトリクスについても、指定のサイズに適した値に変換する必要がある。
【００８６】
そこで、フォントメトリクスを変換する方法を実施形態６として説明する。図１５はフォント設定拡張ファイル３０６の記載例である。図１６はフォントメトリクス変換処理のフローチャートである。
【００８７】
フォントメトリクスはベースラインから文字の上端までの量であるａｓｃｅｎｔ、ベースラインから文字の下部の下端までの量であるｄｅｓｃｅｎｔ、複数行の行間であるｌｅａｄｉｎｇの３つの値をもつ。これらの値はフォントのサイズごとに適切な値が異なる。図１５では、フォントサイズ、ａｓｃｅｎｔ値、ｄｅｓｃｅｎｔ値、ｌｅａｄｉｎｇ値を各行に記載している。この記載がフォントメトリクスの変換規則となる。
【００８８】
フォント描画パラメータ設定手段３０４は、フォントインスタンスを取得してフォントメトリクスの変換処理を開始する（Ｓ１６０１）。フォント描画パラメータ設定手段３０４は、フォント設定拡張ファイル３０６が存在し、取得したフォントインスタンスのサイズに対応するフォントメトリクスの変換規則があるかを確認する（Ｓ１６０２）。
【００８９】
変換規則があれば、その規則にしたがって取得したフォントインスタンスのフォントメトリクスの値を設定する（Ｓ１６０３）。
【００９０】
一方、変換規則がなければ、フォントメトリクスの値は初期値のままとなる。初期値はフォントファイルの各種データから算出されたものであり、どのような値になるかはフォントファイルのデータとフォントファイル読み込み手段３０３の実装に依存する。
【００９１】
以上、フォントメトリクスの変換を行う方法を説明した。
【００９２】
（実施形態７）
実施形態６では、フォントのサイズに応じてフォントメトリクスを変換する方法を説明した。しかし、フォントには可変長フォントと固定長フォントがあるため、フォントメトリックスを変換すべきかどうかはフォントファミリーに依存する。
【００９３】
フォントファミリーに応じてフォントメトリックスの変換を行うかどうかを選択する方法について、実施形態７として説明する。図１７はフォントメトリクス変換処理のフローチャートである。
【００９４】
フォント描画パラメータ設定手段３０４は、フォントインスタンスを取得してフォントメトリクスの変換処理を開始する（Ｓ１７０１）。そして、取得したフォントファミリーがフォントメトリクス変換対象のファミリーであるかを判定する（Ｓ１７０２）。判定方法としては、フォント描画パラメータ設定手段３０４の処理のコードとして実装してもよいし、フォント設定拡張ファイル３０６のフォントメトリクス変換ルールにフォントファミリーを追加してもよい。
【００９５】
ステップＳ１７０２において変換対象と判定すれば、ステップＳ１６０２，Ｓ１６０３と同様の処理を行う（Ｓ１７０３，Ｓ１７０４）。変換対象でないと判定すれば、処理は終了する。
【００９６】
以上、フォントファミリーに応じてフォントメトリクスの変換を行う方法を説明した。
【００９７】
（実施形態８）
仮想マシン２０２には複数のバージョンが存在し、新しいバージョンではフォントサイズが大きいときに自動で太字にする機能が追加されている。しかし、旧バージョンの仮想マシン２０２が搭載されていた製品の仮想マシン２０２をアップデートすると、アップデート前までは太字でなかった文字の書体が太字になり、見栄えが変わってしまう。フォント入手の契約によっては、フォントを変形させて表示することは禁止されることもある。この場合、見栄えが変わることは問題となる。
【００９８】
この問題を解決するには、自動で太字にする機能を無効化する仕組みを仮想マシン２０２に追加すればよい。
【００９９】
描画するフォントを自動で太字にしないようにする方法について、実施形態８として説明する。図１８はフォント設定拡張ファイル３０６の記載例である。図１９はフォントファイル読み込み処理のフローチャートである。
【０１００】
図１８のフォント設定拡張ファイル３０６では、自動で太字にする機能をｏｆｆに設定している。ステップＳ４０７でフォントファイル読み込み手段３０３を用いて、フォントファイル３０１を読み込むときに、自動で太字にする機能が有効であるか確認する（Ｓ１９０１）。有効であれば、フォント描画用のパラメータを太字のものに設定する（Ｓ１９０２）。無効であれば、そのまま処理は終了する。
【０１０１】
以上、描画するフォントが意図せず太字になることを防ぐ方法について説明した。
【０１０２】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2017215469.tif 000003
【図２】
2017215469.tif 000004
【図３】
2017215469.tif 000005
【図４】
2017215469.tif 000006
【図５】
2017215469.tif 000007
【図６】
2017215469.tif 000008
【図７】
2017215469.tif 000009
【図８】
2017215469.tif 000010
【図９】
2017215469.tif 000011
【図１０】
2017215469.tif 000012
【図１１】
2017215469.tif 000013
【図１２】
2017215469.tif 000014
【図１３】
2017215469.tif 000015
【図１４】
2017215469.tif 000016
【図１５】
2017215469.tif 000017
【図１６】
2017215469.tif 000018
【図１７】
2017215469.tif 000019
【図１８】
2017215469.tif 000020
【図１９】
2017215469.tif 000021