(57)【要約】【課題】  本発明は、文字列によって使用されるフォントが異なる場合でも、統一感のある文字列の表示環境を提供することを目的とする。【解決手段】  本発明に係る情報処理装置１００は、複数のフォントを用いて文字列を描画可能であって、表示画面に表示させる文字列を示す情報を取得する文字列取得部１１１と、前記情報処理装置に設定された言語情報を取得する言語情報取得部１１９と、前記複数のフォントのうち、前記表示画面に表示させる文字列に含まれる各文字のそれぞれの描画に用いるフォントを決定するフォント決定部１１２と、前記複数のフォントのうち、前記取得された言語情報に対応するフォントの属性情報、及び、前記決定されたフォントの属性情報に基づいて、前記文字列を描画する描画位置を決定する描画位置決定部１１６と、前記決定された描画位置に従って、前記文字列を描画する描画制御部１１７とを備える。【選択図】  図１
2015210417.tif 000002
【特許請求の範囲】
【請求項１】
複数のフォントを用いて文字列を描画可能な情報処理装置であって、
表示画面に表示させる文字列を示す情報を取得する文字列取得手段と、
前記情報処理装置において設定された言語情報を取得する言語情報取得手段と、
前記複数のフォントのうち、前記表示画面に表示させる文字列に含まれる各文字のそれぞれの描画に用いるフォントを決定するフォント決定手段と、
前記複数のフォントのうち、前記言語情報取得手段によって取得された言語情報に対応するフォントの属性情報、及び、前記フォント決定手段によって決定されたフォントの属性情報に基づいて、前記文字列を描画する描画位置を決定する描画位置決定手段と、
前記描画位置決定手段によって決定された描画位置に従って、前記文字列取得手段によって取得された情報が示す文字列の各文字のそれぞれを、前記フォント決定手段によって決定されたフォントを用いて描画する描画手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記描画位置決定手段は、前記言語情報取得手段によって取得された言語情報に対応するフォントとして、前記言語情報取得手段によって取得された言語情報が示す言語の代表文字の形状情報が格納されたフォントを特定し、前記特定したフォントのアセンド幅と、前記フォント決定手段によって決定されたフォントのアセンド幅のうち、最大のアセンド幅に基づいて、前記文字列を描画するベースラインを決定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記複数のフォントのうち、少なくとも一部の複数のフォントのそれぞれについて、予め定められた優先順位を取得する優先順位取得手段を更に備え、
前記フォント決定手段は、前記優先順位取得手段が取得した優先順位に基づいて、前記文字列に含まれる各文字のそれぞれの描画に用いるフォントを決定することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
複数のフォントを用いて文字列を描画可能な情報処理装置であって、
表示画面に表示させる文字列を示す情報を取得する文字列取得手段と、
前記複数のフォントのうち、少なくとも一部の複数のフォントのそれぞれについて、予め定められた優先順位を取得する優先順位取得手段と、
前記複数のフォントのうち、前記表示画面に表示させる文字列に含まれる各文字のそれぞれの描画に用いるフォントを決定するフォント決定手段と、
前記優先順位取得手段によって取得された優先順位のうち、上位から２以上の所定の数の優先順位に対応する各フォントの属性情報、及び、前記フォント決定手段によって決定されたフォントの属性情報に基づいて、前記文字列を描画する描画位置を決定する描画位置決定手段と、
前記描画位置決定手段によって決定された描画位置に従って、前記文字列取得手段によって取得された情報が示す文字列の各文字のそれぞれを、前記フォント決定手段によって決定されたフォントを用いて描画する描画手段と
を備えることを特徴とする情報処理装置。
【請求項５】
前記描画位置決定手段は、前記優先順位取得手段が取得した優先順位のうち、上位から２以上の所定の数の優先順位に対応する各フォントのアセンド幅のうち最大のアセンド幅と、前記フォント決定手段によって決定されたフォントのアセンド幅のうち、大きいアセンド幅に基づいて、前記文字列を描画するベースラインを決定することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記表示画面に表示させる文字列を配置する基準となる基準位置を取得する基準位置取得手段を更に備え、
前記描画位置決定手段は、前記基準位置取得手段が取得した基準位置に対して、前記文字列のベースラインをシフトさせる幅を特定することで、前記描画位置として決定することを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記基準位置取得手段は、前記文字列が重畳される領域に関する座標を、前記基準位置として取得することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記複数のフォントのうち、前記描画位置を決定する処理に用いる少なくとも１つ以上のフォントの属性情報判定手段を更に備え、
前記描画位置決定手段は、前記属性情報判定手段の判定結果に応じて、前記描画位置を決定する処理に用いる少なくとも１つ以上のフォントから除外するフォントを特定することを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
複数のフォントを用いて文字列を描画可能な情報処理装置の制御方法であって、
文字列取得手段により、表示画面に表示させる文字列を示す情報を取得する文字列取得工程と、
言語情報取得手段により、前記情報処理装置において設定された言語情報を取得する言語情報取得工程と、
フォント決定手段により、前記複数のフォントのうち、前記表示画面に表示させる文字列に含まれる各文字のそれぞれの描画に用いるフォントを決定するフォント決定工程と、
描画位置決定手段により、前記言語情報取得工程において取得された言語情報に対応するフォントの属性情報、及び、前記フォント決定工程において決定されたフォントの属性情報に基づいて、前記文字列を描画する描画位置を決定する描画位置決定工程と、
描画手段により、前記描画位置決定工程において決定された描画位置に従って、前記文字列取得工程において取得された情報が示す文字列の各文字のそれぞれを、前記フォント決定工程において決定されたフォントを用いて描画する描画工程と
を備えることを特徴とする情報処理装置の制御方法。
【請求項１０】
複数のフォントを用いて文字列を描画可能な情報処理装置の制御方法であって、
文字列取得手段により、表示画面に表示させる文字列を示す情報を取得する文字列取得工程と、
優先順位取得手段により、前記複数のフォントのうち、少なくとも一部の複数のフォントのそれぞれについて、予め定められた優先順位を取得する優先順位取得工程と、
フォント決定手段により、前記複数のフォントのうち、前記表示画面に表示させる文字列に含まれる各文字のそれぞれの描画に用いるフォントを決定するフォント決定工程と、
描画位置決定手段により、前記優先順位取得工程において取得された優先順位のうち、上位から２以上の所定の数の優先順位に対応する各フォントの属性情報、及び、前記フォント決定工程において決定されたフォントの属性情報に基づいて、前記文字列を描画する描画位置を決定する描画位置決定工程と、
描画手段により、前記描画位置決定工程において決定された描画位置に従って、前記文字列取得工程において取得された情報が示す文字列の各文字のそれぞれを、前記フォント決定工程において決定されたフォントを用いて描画する描画工程と
を備えることを特徴とする情報処理装置の制御方法。
【請求項１１】
コンピュータに読み込ませ実行させることで、前記コンピュータを請求項１又は４に記載の情報処理装置として機能させるためのプログラム。
【請求項１２】
請求項１１に記載されたプログラムを格納したコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はフォントデータを用いて文字を描画する技術に関する。
【背景技術】
【０００２】
機器の表示画面に文字を表示するには、フォントの種類・表示する位置・大きさなどの指定を受け、フォントデータから表示させる文字に該当する形状情報を取得し、指定された表示位置や大きさなどに合わせるように描画した画像を表示画面に出力する。
【０００３】
一般的には、文字を並べて表示させて文字列とする場合、各文字のベースラインが揃うように描画されることが望ましい。ベースラインとは、文字列の位置揃えの基準となる仮想的な線をいう。各文字が、全て同じ大きさの画像（イメージデータ）として用意されたビットマップフォントの場合、文字の画像をタイルのように並べるだけでベースラインが揃うようにデザインされている。しかし、フォントの全体のデータサイズを抑えるために、画像の大きさが文字によって異なる場合もある。そこで特許文献１では、各文字の画像に対してベースラインより上の幅と下の幅の情報を保持しておくことで、ウムラウト文字やベースラインより下にはみ出る文字が混在した文字列でも、ベースラインを揃えて表示する方法が提案されている。
【０００４】
また１つの文字列に複数のフォントが使用されると、フォント毎にデザインされたベースラインの位置や文字の高さが異なるため、並べて描画された際にずれて見えることがある。そこで特許文献２では、入力された文字列に和文書体と欧文書体が含まれていることを検出し、欧文文字をビットマップ展開した後の文字上端と下端の幅に基づいて、和文書体の高さを変倍することでベースラインを揃えて印字する方法が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−２６７６４５号公報
【特許文献２】特開２００７−７２５７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら従来は、文字領域毎に、画面毎に、あるいは行毎に、設定されるベースラインの位置が変わってしまい、見た目の統一感が損なわれる場合があるという課題があった。
本発明は、上記課題を鑑みてなされたものであり、文字列によって使用されるフォントが異なる場合でも、統一感のある文字列の表示環境を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明に係る情報処理装置は、複数のフォントを用いて文字列を描画可能であって、表示画面に表示させる文字列を示す情報を取得する文字列取得手段と、前記情報処理装置において設定された言語情報を取得する言語情報取得手段と、
前記複数のフォントのうち、前記表示画面に表示させる文字列に含まれる各文字のそれぞれの描画に用いるフォントを決定するフォント決定手段と、前記複数のフォントのうち、前記言語情報取得手段によって取得された言語情報に対応するフォントの属性情報、及び、前記フォント決定手段によって決定されたフォントの属性情報に基づいて、前記文字列を描画する描画位置を決定する描画位置決定手段と、前記描画位置決定手段によって決定された描画位置に従って、前記文字列取得手段によって取得された情報が示す文字列の各文字のそれぞれを、前記フォント決定手段によって決定されたフォントを用いて描画する描画手段とを備える。
【発明の効果】
【０００８】
本発明により、文字列によって使用されるフォントが異なる場合でも、統一感のある文字列の表示環境を提供することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態のハードウェア構成及び機能構成の一例を示すブロック図
【図２】フォントデータを用いて描画される文字の詳細を表す図
【図３】文字列を描画する処理の流れの例を示すフローチャート
【図４】文字の形状情報を取得する処理の流れの例を示すフローチャート
【図５】文字の描画位置を決定する処理の流れの例を示すフローチャート
【図６】本実施形態による文字列の描画結果の一例を示した図
【図７】文字の描画位置を決定する処理の流れの例を示すフローチャート
【図８】文字の描画位置を決定する処理の流れの例を示すフローチャート
【図９】アセンド幅の大きいフォントの属性情報の一例を示した図
【図１０】変形例における情報処理装置の機能構成の一例を示した図
【図１１】従来の方法での文字の描画結果の一例を示した図
【図１２】従来の方法での文字の描画結果の一例を示した図
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について図面を参照して説明する。なお、以下の実施の形態は特許請求の範囲に関る本発明を限定するものではなく、また、本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一な構成については、同じ符号を付して説明する。
【００１１】
＜第１の実施形態＞
第１の実施形態では、複数のフォントによって文字列を描画可能な場合に、文字列を描画する表示画面における位置を、指定されたフォントと、使用される頻度の高いとみなされるフォントのうち少なくとも１つ以上のフォントの情報に基づいて決定する。
【００１２】
本実施形態の情報処理装置１００の構成について、図１を参照して説明する。図１（ａ）は、情報処理装置１００のハードウェア構成を示す図である。ＣＰＵ１０１はシステム制御部であり、システムバス１０７を介して接続される各ユニットを制御する。ＲＯＭ１０２は変更を必要としないプログラムやパラメータを格納する読み取り専用のメモリである。ＲＡＭ１０３は外部装置などから供給されるプログラムやデータを一時記憶する書き換え可能なメモリである。描画処理部１０４は、ＧＵＰ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等であり、プログラムによって描画したグラフィックスを出力する。描画処理部１０４で描画したグラフィックスやユーザインターフェースを表示するためのモニタやプロジェクタとのインターフェースである表示部１０５が構成に加わってもよい。また、描画処理部１０４で描画する対象となる文字列の入力として、キーボードやタッチパネルなどの入力部１０６が構成に加わってもよい。記憶部１０８はハードディスクドライブ、またはネットワークで接続された外部記憶装置などであり、本実施形態に係る各種データを記憶する。説明した構成に対して、プログラムコードを供給するための記憶媒体としてＲＯＭ１０２のほかに以下のものがある。例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、メモリカード、ＤＶＤなどが本実施形態の情報処理装置の構成に加わってもよい。
【００１３】
図１（ｂ）は、本実施形態の情報処理装置１００の機能構成を示す図である。各機能部は、ＣＰＵ１０１が、ＲＯＭ１０２に格納されたプログラムをＲＡＭ１０３に展開し、後述する各フローチャートに従った処理を実行することで実現されている。また例えば、ＣＰＵ１０１を用いたソフトウェア処理の代替としてハードウェアを構成する場合には、ここで説明する各機能部の処理に対応させた演算部や回路を構成すればよい。
【００１４】
文字列取得部１１１は表示画面に描画する文字列を示す情報を取得する。描画する文字列は、予め決められた文言がＲＯＭ１０２などに格納されていてもよく、キーボードやタッチパネル、マイクなどの入力デバイスによるユーザからの操作で入力される任意の文言であっても構わない。優先順位取得部１１８は、情報処理装置１００が描画可能な複数のフォントのうち、少なくとも一部の複数のフォントについて、予め定められた優先順位に関する情報を取得する。この優先順位は、表示画面に文字情報を表示させる場合に、優先的に用いることが予め指定されたフォントの優先順位である。フォント決定部１１２は、文字列を構成する各文字をそれぞれ描画するために、ＲＯＭ１０２や記憶部１０８に予め記憶された１以上のフォントデータから、どのフォントを使用するかを決定する。このとき、優先順位取得部１１８で取得した優先順位に基づいて使用するフォントを決定する。
【００１５】
属性情報取得部１１３は、フォントの属性情報をフォントデータから取得する。属性情報はフォントデータに格納されているフォント固有のメトリクス情報であり、例えばＵｎｉｔｓＰｅｒＥｍ、アセンド幅、ディセンド幅、格納されている文字の最大の送り幅などがある。各用語の説明は、具体例を用いて後述する。形状情報取得部１１４は、文字列を構成する各文字に該当する形状情報を、フォント決定部１１２で決定したフォントデータから取得する。形状情報には文字の描画結果を画像形式で表したものや、文字の輪郭（アウトライン）をベクター形式で表したものなどがあるが、形状情報の形式は限定しない。基準位置取得部１１５は、文字列の描画位置を決めるための基準となる位置情報を取得する。位置情報は、予め決められていて、ＲＯＭ１０２などから読み込むことができる。また、ユーザの操作により入力デバイスを介して取得することができる。言語情報取得部１１９は、表示する文字列について、言語設定して指定された言語情報を取得する。言語設定で指定された言語情報とは、表示画面に表示する文字情報を、どの言語を用いて表示させるかを示す情報であって、本実施形態では予め装置の設計段階で初期値が設定されていることを想定している。ただし、操作者によって、任意のタイミングで言語設定が変更されてもよい。また、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）センサにより、装置の現在の位置情報を取得し、位置情報と公用語との対応付け情報を参照することで、言語情報を取得する構成としてもよい。
【００１６】
描画位置決定部１１６は、基準位置取得部１１５で取得した基準位置と、属性情報取得部１１３により取得された属性情報とに基づいて、文字列の描画位置を決定する。このとき、情報処理装置１００の使用環境において、文字の描画に使用される頻度が高いとみなされる１つ以上のフォントの属性情報に従って、描画位置を決定する。第１の実施形態では、言語情報取得部１１９で取得された言語情報によって特定されるフォントの属性情報に従って、描画位置を決定する。描画制御部１１７は、形状情報取得部１１４で取得した文字の形状情報に基づいて、描画位置決定部１１６で決定した位置に文字を描画する。描画制御部１１７による描画結果は、ディスプレイなどの表示部に転送されて表示されることを想定しているが、出力デバイスは限定しない。
【００１７】
まず、図２を参照して、フォントデータを用いて描画される文字の詳細を説明する。機器の表示画面において、図２（ａ）のようなボタンを模した部品２０１や、図２（ｂ）のような文字列編集領域を囲っている矩形２０２上に文字列を重畳させて表示することがある。その際、文字列の表示位置を示す座標は、部品２０１や矩形２０２から文字列がはみ出て表示されるのを避けるため、部品や矩形に関する座標を基準として指定されることが多い。ここでは、文字列を重ねる部品や矩形の左上座標を、文字列を表示する基準位置とする。図２（ａ）では部品２０１の左上位置２０３が基準位置であり、図２（ｂ）では矩形２０２の左上２０４の座標が基準位置である。次に、フォントデータの属性情報について図２（ｃ）を参照して具体的に説明する。図２（ｃ）は左からアルファベットフォント、漢字フォント、数字フォントの３種類の異なるフォントデータに格納されている形状情報「ｐ」「日」「３」を画像化したものである。形状情報の形式はアウトライン形式でも画像形式でも構わない。フォントの属性情報の１つにＵｎｉｔｓＰｅｒＥｍがある。これは活字のサイズを一辺とする正方形を、組版における相対的な長さの単位としたものがｅｍであり、１ｅｍあたりの長さを定義したものがＵｎｉｔｓＰｅｒＥｍである。図２（ｃ）に示す幅２２２がＵｎｉｔｓＰｅｒＥｍであり、図２（ｃ）に示す３種類のフォントのＵｎｉｔｓＰｅｒＥｍは全て同じ値とする。ベースラインは文字列の位置揃えの基準となる仮想的な線のことであり、図２（ｃ）において、線２１１、２１４、２１７は各フォントのベースラインを示したものである。線２２０は文字の上端を示すアセンダラインであり、線２２１は文字の下端を示すディセンダラインである。ベースラインからアセンダラインまでの高さをアセンド幅、ベースラインからディセンダラインまでの高さをディセンド幅と呼ぶ。一般的にアセンド幅とディセンド幅を足したものがＵｎｉｔｓＰｅｒＥｍとなるフォントが多い。図２（ｃ）において、幅２１２、２１５、２１８は各フォントのアセンダ幅を示したものであり、幅２１３、２１６、２１９はディセンダ幅を示したものである。
【００１８】
ここで、本実施形態との比較のため、本実施形態が解決する課題の詳細について図１１及び図１２を用いて説明する。図１１は、文字種ごとに図２（ｃ）に示したアルファベットフォントと漢字フォントを使って、文字列「Ｊｐ」「Ｊｐ日本」を描画した様子を表す。図２（ａ）または（ｂ）に示したような部品や矩形領域の左上座標が、基準位置１１０１として指定された場合を想定し、アセンダラインを合わせるように複数の文字が並べられている。図１１（ａ）の左は、基準位置１１０１のｙ座標にアルファベットフォントのアセンダラインが合わせられている。従って、基準位置１１０１から、アルファベットフォントのアセンド幅２１２だけ下にシフトしたい位置にベースライン位置１１０２が来るように文字列「Ｊｐ」を描画したものである。一方で図１１（ａ）の右は、文字列「Ｊｐ」を描画した段階でアルファベットフォントのデザインに基づいて決定されたベースライン位置１１０２を維持した状態で、続けて文字列「日本」を漢字フォントで描画した結果を示す。アルファベットフォントと比べて漢字フォントはアセンド幅が広いため、漢字は基準位置１１０１のｙ座標を超える可能性がある。つまり、部品２０１や矩形２０２からはみ出してしまう場合が生じる。
【００１９】
そこで、従来、文字列描画で複数のフォントが使用された場合には、実際に使用されるフォントの中で最も広いアセンド幅によって、ベースライン位置を決定して描画するという方法が用いられることがある。この方法を用いて描画を行った結果が図１１（ｂ）である。図１１（ｂ）左のベースライン位置１１０３は、アルファベットフォントのアセンド幅に基づく位置であり、図１１（ｂ）右のベースライン位置１１０４は、アルファベットフォントよりアセンド幅の広い漢字フォントに基づく描画位置である。この方法では、文字列「Ｊｐ」と「Ｊｐ日本」とで幅１１０５だけベースライン位置のずれが生じる。つまり、例えばアルファベットフォントだけで構成される文字列が配置された部品と、アルファベットフォントと漢字フォントとで構成される文字列が配置された部品とでは、ベースライン位置が異なる。そのため、並べて表示された場合には見た目の統一感が損なわれる。さらに、この課題を解決するために、従来、文字列の描画で使用される可能性のある全てのフォントを考慮し、その中で最も広いアセンド幅によってベースライン位置を決定するという考え方があった。この方法を用いた場合の描画結果が図１１（ｃ）である。文字列「Ｊｐ」、「Ｊｐ日本」ともに、アセンド幅の大きい漢字フォントによってベースライン位置を決定するため、描画する文字列によってベースライン位置１１０６は変わらない。ここで、使用する可能性がある全てのフォントを考慮する方法としては、予め登録されたフォントや、装置に記憶されている全てのフォントを考慮することができる。例えば、フォントリストと呼ばれる技術を利用することができる。ここで、フォントリストについて説明する。１つのフォントデータに、入力される全ての文字の情報が格納されているとは限らない。従って、フォントデータに格納されていない文字が入力された場合、その文字は代替文字（Ｍｉｓｓｉｎｇ−Ｇｌｙｐｈ）に置き換わるため、所望とされる文字列を正しく表示できない。そこで、複数のフォントに対して予め使用する優先順位を設定しておき、優先順位の高いフォントデータに格納されていない文字は、次に優先順位の高いフォントデータを用いた描画に置き換える。このようにして、代替文字へ置換される事象を低減させる技術を、複数のフォントデータを一覧として管理することから、フォントリストと呼ぶ。従って、フォントリストとして指定された複数のフォントの全てを、文字列の描画で使用される可能性のある全てのフォントであるとみなすことができる。
【００２０】
しかし、この方法でも課題が生じる。それを、図１２（ａ）を参照して説明する。図１２の左右の文字列はともに、文字列「ｅｇ」を描画する基準位置１２０１は同じ座標であるが、図１２左はアルファベットフォントだけを考慮してベースライン位置を決めて、文字列「ｅｇ」を描画した結果である。一方、図１２右は使用するフォントの優先順位をアルファベットフォント、漢字フォント、数字フォントの順に、フォントリストが設定されていることを想定して、図１１（ｃ）で説明したような方法でベースライン位置を決めて描画した結果である。描画する文字列「ｅｇ」には、アルファベットよりアセンド幅の大きいフォントを使用する文字は含まれていないが、図１２（ｂ）では、使用する可能性があるという理由から、ベースライン位置を低い位置に定めている。そのため、図１２左のベースライン位置１２０２と比べて、図１２右のベースライン位置１２０３は下がっている。このように、使用する可能性があっても、実際には使用されないフォントを考慮してベースラインを決定すると、図１２右のように、文字列上部のスペース１２０４部分に必要以上の空白が存在するように感じられることがある。このように、使用頻度が低く、かつアセンド幅が広いフォントを考慮してしまうと、空白部分が増え、描画領域を有効に活用できなくなる場合がある。
【００２１】
以上のような従来の課題を解決するため、本実施形態では、入力される文字列、使用する優先順位が予め決定されているフォント情報、及びユーザが指定する言語情報を考慮して、ベースラインの基準とするフォントを特定する。本実施形態の処理フローについて図３、図４、図５を用いて説明する。
【００２２】
図３は本実施形態の文字列描画の処理フローの一例を示している。本実施形態では、装置の電源が起動、あるいは特定のアプリケーションが実行され、表示画面に表示する画像の描画処理が開始されたことに応じて、図３のフローチャートが開始される。なお、本実施形態では、上述したフォントリスト技術によって、入力される文字列に対し、優先順位が定められた複数のフォントが指定されることを想定している。
【００２３】
ステップＳ３０１で、文字列取得部１１１が、描画する文字列を示す情報を取得する。例えば、ＲＯＭ１０２や記憶部１０８などに格納された画面情報（例えば構造化文書）を解析することで、描画される文字列の各文字を示す文字コードを取得する。あるいは、キーボードやタッチパネルなどの入力デバイスから、ユーザによる指示を取得し、解析することで情報を取得する。次に、ステップＳ３０２では、優先順位取得部１１８が、使用する可能性のあるフォントの優先順位情報を取得する。本実施形態では、優先順位は少なくとも１つ以上のフォントに対して、フォントリストの形式で設定される。ステップＳ３０３では、基準位置取得部１１５が、ステップＳ３０１で取得された文字列の描画位置を決めるための基準位置を取得する。本実施形態では、文字列の表示領域の左上座標を、基準位置として取得する。ただし、基準位置は領域の左上座標に限定されるわけではない。基準位置とフォントの属性情報とを参照することによって、文字列の描画位置が一意に決まる座標であればよい。本実施形態における描画位置とは、描画する文字列のベースライン位置である。ステップＳ３０４では、描画位置決定部１１６が、優先順位情報に含まれるフォントのうち、少なくとも１つ以上のフォントに関する属性情報によって文字列の描画位置を決定する。本実施形態の場合は、描画位置として、文字列を配置する基準となるベースラインの位置を決定する。本実施形態において、ステップＳ３０４で属性情報を考慮する少なくとも１つ以上のフォントは、情報処理装置１００の使用環境において、文字列の描画に用いる頻度の高いフォントが選択される。第１の実施形態では、言語設定で設定されている言語に対応づけられたフォントのアセンド幅を考慮して、ベースラインを決定する例を説明する。第１の実施形態のステップＳ３０４において実行される処理の詳細な内容は、図４を参照して後述する。
【００２４】
ステップＳ３０５では、形状情報取得部１１４が、ステップＳ３０１で取得した文字列の各文字の情報のうち、先頭文字を現在の文字としてセットする。すなわち、先頭の文字を示す文字コードをカレント処理の対象文字を示す情報としてＲＡＭ１０３に保持する。ステップＳ３０６では、形状情報取得部１１４が、現在の文字に該当する形状情報を、優先順位情報に含まれるフォントから取得する。本実施形態で扱うフォントデータでは、文字コードに関連付けられたアウトライン形式のデータが形状情報として格納されていることを想定している。ただし、形状情報は画像形式であっても構わない。ステップＳ３０６におけるフォントからの形状情報の取得処理の詳細は後述する。ステップＳ３０７では、描画制御部１１７が、現在の文字に該当する形状情報に基づいて、ステップＳ３０４で決定された描画位置に文字を描画する。ステップＳ３０８では、形状情報取得部１１４が、文字列に含まれる全ての文字に対して描画処理を終えたか判定する。全ての文字を処理したと判定された場合（ステップＳ３０８でＹＥＳ）は、処理を終了する。一方、全ての文字を処理したと判定された場合（ステップＳ３０８でＹＥＳ）は、すなわち、取得された文字列に未処理の文字が残っている場合は、ステップＳ３０９に進む。ステップＳ３０９では、形状情報取得部１１４が、次の文字を現在の文字にセットして処理をステップＳ３０６に移す。そして、文字列に含まれる全ての文字が処理されるまで、ステップＳ３０６からステップＳ３０９の処理を繰り返す。
【００２５】
なお本実施形態では、画面に表示する画像の構成要素として、文字列が描画される部品が複数存在する等、１以上の独立した文字列が存在する場合でも、ステップＳ３０１において全ての要素の文字列の情報を取得して、後に続く描画処理を行う。これにより、１画面の中の１以上の独立した文字列が含まれる画面においても、統一された描画位置に沿って文字が描画されるので、処理負荷を低減しつつ、各文字列の見た目の統一性を向上させることができる。さらに、本実施形態では、ユーザ操作などに応じて、既に描画処理を終え表示された画像の一部に再描画の必要が生じた場合は、再描画により更新される部分に対して図３のフローチャートの処理が実行されるとする。ただし、１以上の独立した文字列についてそれぞれ図３のフローチャートの処理を行う場合、ステップＳ３０４が実行される度に、同一の描画位置が決定されるので、各文字列の見た目の統一性を向上させることができる。
【００２６】
次に、ステップＳ３０６において実行される、文字の形状情報の取得処理の詳細な流れを図４のフローチャートを参照して説明する。なお本実施形態では、優先順位情報に少なくとも１つ以上のフォントが含まれているものとする。以下では、本実施形態で扱うフォントの一例として、ＴｒｕｅＴｙｐｅ形式のアウトラインフォントを想定し、ＴｒｕｅＴｙｐｅ形式のフォントに由来する用語を用いて処理を説明する。ただし、用いるフォントはこれに限定されない。
【００２７】
ステップＳ４０１では、フォント決定部１１２が、ステップＳ３０２で取得された優先順位情報のうち、最優先に使用することが定義されたフォントを現在の（その時点での描画処理の対象とされている）フォントにセットする。ステップＳ４０２では、フォント決定部１１２が、ＲＯＭ１０２や記憶部１０８に記憶されている１以上のフォントのフォントデータのうち、現在のフォントのフォントデータから、現在の文字に該当するグリフインデックスを取得する。グリフインデックスとは、フォントデータに格納されている、各文字の形状情報と、文字コードとをマッピングするための識別情報である。以降、グリフインデックスはＧＩＤと表記する。フォント決定部１１２は、本実施形態の現在の文字に該当する形状情報が、現在のフォントに格納されていれば０ではないＧＩＤを取得し、該当する形状情報がなければ０を返す。ＴｒｕｅＴｙｐｅ形式のフォントにおいては、ＧＩＤが０にマッピングされている形状情報は代替文字（Ｍｉｓｓｉｎｇ−Ｇｌｙｐｈ）と呼ばれ、該当する形状情報が存在しない文字に対しては、この代替文字の形状情報が取得される仕組みとなっている。ステップＳ４０３では、フォント決定部１１２が、ＧＩＤが０か否かを判定する。ＧＩＤが０でないと判定された場合（ステップＳ４０３でＮＯ）、現在の文字に該当する形状情報が、現在のフォントのフォントデータに格納されている。従って、フォント決定部１１２は、現在のフォントを、現在の文字を描画するのに用いるフォントとして決定することができる。この場合、ステップＳ４０４において、形状情報取得部１１４が、ＧＩＤに該当する文字の形状情報を取得する。
【００２８】
一方、ステップＳ４０３で、ＧＩＤが０であると判定された場合（ステップＳ４０３でＹＥＳ）、処理はステップＳ４０５に進む。ステップＳ４０５において、フォント決定部１１２が、ステップＳ３０２で取得された優先順位情報において、現在のフォントの次に優先されるフォントが設定されているかを判定する。現在のフォントの次に優先されるフォントが設定されていると判定された場合（ステップＳ４０５でＹＥＳ）、ステップＳ４０６に進む。ステップＳ４０６でフォント決定部１１２は、現在のフォントの次に優先されるフォントを現在のフォントにセットし、処理をステップＳ４０２に移す。そして、優先順位情報に含まれるフォントがなくなるか、０ではないＧＩＤが取得できるまで、ステップＳ４０２〜ステップＳ４０６までの処理を繰り返す。一方、現在のフォントの次に優先されるフォントが設定されてないと判定された場合（ステップＳ４０５でＮＯ）、処理はステップＳ４０７に進み、フォント決定部１１２は、優先順位情報で定義されている最優先フォントを現在のフォントにセットする。この場合はステップＳ４０４で、フォント決定部１１２が、ＧＩＤが０に該当する形状情報として、代替文字の形状情報を取得して処理を終了する。
【００２９】
次に、図３のステップＳ３０４において実行される、描画位置を決定する処理の流れを、図５のフローチャートを参照して説明する。ステップＳ５０１において、描画位置決定部１１６が、現在のアセンド幅を示す変数Ｃｕｒを０に初期化する。次に、ステップＳ５０２において、言語情報取得部１１９が、描画する文字列に対する言語情報を取得する。本実施形態の情報処理装置１００では、機器の表示画面における文字情報を表す言語を、言語設定として、操作者などが意図して設定可能である。言語情報取得部１１９は、英語、日本語、アラビア語などを示す言語情報を取得する。ステップＳ５０３では、言語情報取得部１１９が、ステップＳ３０２で取得された優先順位情報に含まれるフォントの中に、取得した言語情報の代表文字に該当する形状情報を含んだフォントがあるか判定する。本実施形態では、一例として、コンピュータでの利用を目的とした８ビット文字コードの標準であるＩＳＯ／ＩＥＣ８８５９で分類されているコードポイントに従い、各言語の代表文字を決定する。そして、代表文字に該当する形状情報を、優先順位情報に含まれるフォントから検索し、見つかれば言語情報の代表文字の形状情報を含んだフォントがあると判定する。優先順位情報に含まれるフォントの中に、取得した言語情報の代表文字の形状情報を含んだフォントがあると判定された場合（ステップＳ５０３でＹＥＳ）、処理はステップＳ５０４に進む。ステップＳ５０４では、属性情報取得部１１３が、取得された言語情報の代表文字を含んだフォントの属性情報を取得して、アセンド幅をＣｕｒにセットする。一方、優先順位情報に含まれるフォントの中に、取得した言語情報の代表文字の形状情報を含んだフォントがないと判定された場合（ステップＳ５０３でＮＯ）、ステップＳ５０４の処理を省略し、処理はステップＳ５０５に進む。
【００３０】
ステップＳ５０５では、描画位置決定部１１６が、優先順位情報で最優先に定義されているフォントを、現在のフォントにセットする。ステップＳ５０６では、描画位置決定部１１６が、現在のフォントが図３のステップＳ３０１で取得した文字列の描画で実際に使用されるか否かを判定する。具体的には、ステップＳ３０１で取得した文字コードに基づいて、現在のフォントのフォントデータに当該文字コードに対応する形状情報が格納されているかを判定する。取得した文字列のうち１文字でも、該当する形状情報が現在のフォントに格納されている場合は、現在のフォントは実際に使用されると判定する。現在のフォントは実際には使用されないと判定された場合（ステップＳ５０６でＮＯ）は、処理はステップＳ５０７に進む。現在のフォントは実際に使用されると判定された場合（ステップＳ５０６でＹＥＳ）は、処理はステップＳ５０８に進む。ステップＳ５０８では、属性情報取得部１１３が、現在のフォントのアセンド幅を取得する。ステップＳ５０９では、描画位置決定部１１６が、取得されたアセンド幅がＣｕｒにセットされている値より大きいか否かを判定する。アセンド幅がＣｕｒにセットされている値より大きいと判定された場合（ステップＳ５０９でＹＥＳ）、ステップＳ５１０に進む。アセンド幅がＣｕｒにセットされている値より小さいと判定された場合（ステップＳ５０９でＮＯ）は、ステップＳ５０７に進む。ステップＳ５１０では、属性情報取得部１１３が、ステップＳ５０８で取得したアセンド幅をＣｕｒにセットして、ステップＳ５０７に進む。
【００３１】
ステップＳ５０７では、描画位置決定部１１６が、ステップＳ３０２で取得された優先順位情報において、現在のフォントの次に優先されるフォントの設定があるかを判定する。現在のフォントの次に優先されるフォントの設定があると判定された場合（ステップＳ５０７でＹＥＳ）、ステップＳ５１２に進む。ステップＳ５１２においては、現在のフォントの次に優先されるフォントを現在のフォントにセットして、ステップＳ５０６に戻る。そして、次の優先フォントがなくなるまで、ステップＳ５０６からステップＳ５１２までの処理を繰り返す。一方、現在のフォントの次に優先されるフォントの設定がないと判定された場合（ステップＳ５０７でＮＯ）、処理はステップＳ５１１に進む。ステップＳ５１１では、描画位置決定部１１６が、Ｃｕｒの値によってベースライン位置を決定して処理を終了する。本実施形態では、描画位置決定部１１６は、ベースラインの位置は、基準位置である文字列描画領域の左上座標からＣｕｒの値だけｙ座標を、文字に向かって下側にシフトした位置と決定する。
【００３２】
以上の処理により、本実施形態では、予め定められた優先度が高かったとしても、入力される文字列の中で使用されないフォントは、ベースラインを決定する処理に考慮しない。その一方で、優先順位を付けられているフォントの中で、ユーザが使用する言語情報に則したフォントのアセンド幅は、当該フォントに使用の有無に関わらず、ベースラインを決定する処理に考慮する。言語設定で指定されている言語は、文字情報を表示するために使用することが指示されている言語であるため、機器に表示される画面において使用頻度が高いとみなすことができる。従って、現在描画している画像に、設定された言語の文字が含まれなかったとしても、例えば画面遷移などにより表示画面に表示した画像の一部、あるいは全体が更新された場合には、当該言語の文字が表示される可能性が高い。そこで本実施形態では、優先順位を付けられているフォントの中で、ユーザが使用する言語情報に則したフォントのアセンド幅は常に文字の描画位置の決定に考慮する。これにより、表示画面の更新の前後において、文字列のベースラインに極端な違いを生じさせず、見た目に統一感を持たせることができる。
【００３３】
本実施形態を適用した場合と、従来法を用いた場合とでの描画結果の違いを図１２と図６の比較により示す。文字列「Ｊｐ」「Ｊｐ日本」を描画するにあたり、英語フォント、日本語フォント、アラビア語フォントの順で優先順位を設定し、これらのＵｎｉｔｓＰｅｒＥｍ値は全て１０２４とする。英語フォントのアセンド幅とディセンド幅が６２４ｐｘ、４００ｐｘ、日本語フォントでは７５０ｐｘ、２７４ｐｘ、アラビア語フォントで９２４ｐｘ、１００ｐｘとする。基準位置６０１の座標を（０、０）とし、言語設定は日本語で、フォントサイズは１０２４ｐｘとする。図１２（ｂ）は、従来法に沿って、使用の有無に関わらず優先順位情報に含まれる全てのフォントの属性情報を考慮してベースライン位置を決めた時の描画結果であって、図１２（ａ）の左の状態に相当する状態である。描画する文字列にはアラビア語が含まれていないが、アセンド幅が最も大きいアラビア語フォントによってベースライン位置が決まるので、基準位置から９２４ｐｘ下にベースライン位置がある。そのため、文字列上部が少し空いて見える。また、図１２（ｃ）は、従来法に沿って、優先順位情報に含まれるフォントのうち、入力文字列中で実際に使用されるフォントの属性情報によってベースライン位置を決定した時の描画結果である。描画する文字列によって使用するフォントが異なるためにベースライン位置も異なってしまう。上述したように、ここで想定されている使用環境では、ユーザは言語設定を日本語としているため、「Ｊｐ」のように和文書体が含まれない文字列が入力されても、その周囲等には和文書体が含まれる文字列が配置される可能性が十分高い。その場合、見た目に統一感が損なわれてしまう。
【００３４】
このような従来例に対し、図６は、本実施形態に従い図５のフローチャートに示した処理によって描画された結果の例を示す。主として情報交換用の２バイト符号化文字集合を規定する日本工業規格であるＪＩＳ  Ｘ  ０２０８に割り当てられたコードポイントに対する形状情報を持つ日本語フォントのアセンド幅を少なくとも考慮してベースラインを決定する。そのため、文字列「Ｊｐ」のように日本語が含まれていなくても、日本語フォントのアセンド幅を考慮したベースライン位置となるため、和文書体を含む文字列が配置された場合には統一感を損なわない。使用頻度が低いアラビア文字の文字列の描画が指示される場合でのみベースラインが変更されるが、ほとんどの場合においてベースライン位置は揃い、文字列上部の余分なスペースも生じない。
【００３５】
以上説明したように、本実施形態では、入力文字列に対して実際に使用される文字に応じたフォントと、入力される頻度が高いことが推定される言語設定に対応したフォントを考慮して、ベースラインを決定する。
【００３６】
＜変形例１＞
第１の実施形態では、文字の描画位置を決定するために、属性情報を参照する文字列の描画に用いられ頻度の高いとみなされる少なくとも１つ以上のフォントとして、言語設定により指定されている言語に対応づけられたフォントを選択した。それに対し、変形例１として、予め優先することが定められた複数のフォントのうち、優先順位の高い所定の数（所定の数は複数）のフォントを選択する例を説明する。
【００３７】
変形例１に係る情報処理装置１００のハードウェア構成は、実施形態１で説明した図１（ａ）に準ずるため、詳細な説明を省略する。変形例１に係る情報処理装置１００の機能構成は、図１０（ａ）に示される。ただし、実施形態１の図１（ｂ）と共通する機能部については、同番号を付し、説明を省略する。ＣＰＵ１０１のソフトウェア処理によって実現されるフォント数取得部１００１は、文字列の描画位置を決定するために考慮するフォント数を取得する。本実施形態では、フォント数は予め定められ、ＲＯＭ１０２に格納されている。描画位置決定部１１６はこのフォント数までの優先順位の高い複数のフォントの属性情報によって描画位置を決定する。
【００３８】
変形例１においても、文字を描画する処理は図３のフローチャートに従って実行される。ただし、ステップＳ３０４における描画位置を決定する処理は、図７のフローチャートに従う。なお、図７において、図５と同じステップ番号が付してある処理については、図５のフローチャートと同様の処理が行われるため、説明を省略する。
【００３９】
ステップＳ７０１では、フォント数取得部１００１が、描画位置を決定するためのフォント数Ｎを取得する。本実施形態では、優先順位の高いフォントから数えてＮ番目までのフォントによって描画位置を決定する。ステップＳ７０２では、属性情報取得部１１３が、Ｎ番目までのフォントのアセンド幅で最も大きい値を取得し、Ｃｕｒにセットする。図６で説明した描画する文字列、使用するフォントの優先順位、基準位置の座標で、描画位置を決定するためのフォントを第２優先フォントまでとしたときに本実施形態を適用した場合の描画結果は、図６と同じになる。本実施形態は、描画する文字列のほとんどが、指定した優先順位のフォントで網羅できる場合に有用である。
【００４０】
以上の処理により、変形例１においては、優先順位を付けられているフォントのうち、優先順位が高い１以上のフォントのうち最大のアセンド幅を、当該フォントに使用の有無に関わらず、ベースラインを決定する処理に考慮する。予め優先順位を付けられているフォントのうち、優先順位が上位のものは、特に使用される可能性が高いとみなすことができる。そのうちアセンド幅が最大のフォントに合わせて描画位置を決定することで、優先順位が上位のフォントのうちいずれを用いた描画の場合でも、文字列のベースラインに極端な違いが生じさせず、見た目に統一感を持たせることができる。
【００４１】
＜変形例２＞
第１の実施形態、及びその変形例１では、文字の描画位置を決定するために必ず考慮するフォントを決定する例を説明した。それに対し、第１の実施形態の変形例２として、文字の描画位置を決定するために用いる少なくとも１つ以上のフォントから、除外するフォントを特定する例を説明する。
【００４２】
変形例２に係る情報処理装置１００のハードウェア構成もまた、実施形態１で説明した図１（ａ）に準ずるため、詳細な説明を省略する。変形例２に係る情報処理装置１００の機能構成は、図１０（ｂ）に示される。ただし、実施形態１の図１（ｂ）と共通する機能部については、同番号を付し、説明を省略する。属性情報判定部１００２は、属性情報取得部１１３で取得した属性情報が所定の条件を満たすか否かを判定する。判定の条件は後述するが、判定結果に応じて、当該属性情報が、描画位置決定部１１６により描画位置を決定する処理に用いられるか否かが決定される。
【００４３】
変形例１においても、文字を描画する処理は図３のフローチャートに従って実行される。ただし、ステップＳ３０４における描画位置を決定する処理は、図８のフローチャートに従う。なお、図８において、図５及び図７と同じステップ番号が付してある処理については、上述した同番号のステップと同様の処理が行われるため、ここでは説明を省略する。
【００４４】
変形例２では、ステップＳ５０９で、現在のフォントのアセンド幅がＣｕｒより大きいと判定される場合、ステップＳ８０１で、属性情報判定部１００２が、アセンド幅が所定の条件を満たしているか否かを判定する。
【００４５】
この判定処理に用いられる所定の条件について図９を用いて説明する。図９は優先順位情報に含まれているフォントの１つに関して、そのフォントに格納されている文字の中で最大の高さをもつ文字（ここではÅとする）の形状情報を画像化したものである。線９０１はベースライン、線９０２はアセンダライン、線９０３はディセンダラインを表す。文字の形状情報は、それをデザインするフォントデザイナーによって大きく異なる。例えば、フォントのＵｎｉｔｓＰｅｒＥｍが１０２４ｐｘ、アセンド幅とディセンド幅がそれぞれ９２４ｐｘ、１００ｐｘであったとする。ところが、デザインされた文字形状の最大の高さが図９のように４００ｐｘしかなく、アセンダライン１３０２までの間が大きく空いていても、フォント自体の妥当性を損なうものではない。本実施形態では、ステップＳ８０１の所定の条件として、フォントに格納されている文字の中で、高さが最大の文字の高さの値よりも、フォントにデザインされたアセンド幅の方が、所定の閾値以上大きいかを判定する。アセンド幅と、高さが最大の文字の高さの値の差分の絶対値が、所定の閾値より大きいかを判定する。差分が所定の閾値より大きい場合には、当該アセンド幅は、描画位置を決める上で適切なフォントのアセンド幅ではないとみなし、ベースラインの決定には考慮しない。なお、所定の閾値は、ユーザあるいは表示画面に表示させる画像の設計者によって予め指定されていても構わない。
【００４６】
ステップＳ８０１で、アセンド幅が条件を満たしていないと判定された場合（ステップＳ８０１でＮＯ）、処理はステップＳ５０７に進み、条件を満たしていると判定された場合（ステップＳ８０１でＹＥＳ）、ステップＳ８０２に進む。ステップＳ８０２では、属性情報取得部１１３が、現在のフォントのアセンド幅をＣｕｒにセットして、処理をステップＳ５０７に移す。以降の処理は、図５での説明と重複するため省略する。なお、所定の条件の一例として、フォントに格納された文字形状の最大高さとアセンド幅との関係から閾値を設ける例を説明したが、他の条件に基づいて判定しても構わない。
【００４７】
なお、変形例２は、第１の実施形態またはその変形例１と組み合わせることが可能である。すなわち、第１の実施形態の図５のフローチャート、あるいは変形例の図７のフローチャートにおいて、ステップＳ５０９の判定がＹＥＳであった場合、ステップＳ５１０の処理の前に、ステップＳ８０１を実行すればよい。
【００４８】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００４９】
１１１  文字列取得部
１１２  フォント決定部
１１３  属性情報取得部
１１４  形状情報取得部
１１５  基準位置取得部
１１６  描画位置決定部
１１７  描画処理部
１１８  優先順位取得部
１１９  言語情報取得部
１００１  フォント数取得部
１００２  属性情報判定部
【図１】
2015210417.tif 000003
【図２】
2015210417.tif 000004
【図３】
2015210417.tif 000005
【図４】
2015210417.tif 000006
【図５】
2015210417.tif 000007
【図６】
2015210417.tif 000008
【図７】
2015210417.tif 000009
【図８】
2015210417.tif 000010
【図９】
2015210417.tif 000011
【図１０】
2015210417.tif 000012
【図１１】
2015210417.tif 000013
【図１２】
2015210417.tif 000014