(57)【要約】【課題】  本発明では、複数のフォントが混在した文字列のフォント同士の見た目の整合性を管理することを目的とする。【解決手段】  本発明は、上記課題を鑑みてなされたものであり、複数のフォントを用いて文字列を描画可能な情報処理装置１００であって、描画処理の対象となる文字列を取得し（Ｓ２０３）、前記描画処理の対象となる文字列に含まれる各文字について、前記複数のフォントのうち、描画に用いるフォントを特定し（Ｓ２０４）、前記特定されたフォントが個別にフォントスタイルが設定された少なくとも１つの特定のフォントである文字を、前記特定されたフォントに対して個別に設定されたフォントスタイルを反映して描画し、そうではない文字を、前記描画対象の文字列に対して設定された、描画に使用されるフォントに依存しないフォントスタイルを反映して描画する（Ｓ２０９）。【選択図】  図２
2015206986.tif 000002
【特許請求の範囲】
【請求項１】
複数のフォントを用いて文字列を描画可能な情報処理装置であって、
描画処理の対象となる文字列に対応する情報を取得する文字列取得手段と、
前記複数のフォントのうち、少なくとも１つの特定のフォントに対して個別に設定されたフォントスタイルを示す情報と、前記描画対象の文字列に対して設定された、描画に使用されるフォントに依存しないフォントスタイルを示す情報とを取得する描画情報取得手段と、
前記文字列取得手段によって取得された情報に基づいて、前記描画処理の対象となる文字列に含まれる各文字について、前記複数のフォントのうち、描画に用いるフォントを特定する特定手段と、
前記特定手段によって特定されたフォントが前記少なくとも１つの特定のフォントである文字を、前記特定されたフォントに対して個別に設定されたフォントスタイルを反映して描画し、前記特定手段によって特定されたフォントが前記少なくとも１つの特定のフォントではない文字を、前記描画対象の文字列に対して設定された、前記描画に使用されるフォントに依存しないフォントスタイルを反映して描画する描画手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記フォントスタイルは、ノーマル、長体、平体、斜体のいずれかないし複数で構成されることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
複数のフォントを用いて文字列を描画可能な情報処理装置であって、
描画処理の対象となる文字列に対応する情報を取得する文字列取得手段と、
前記複数のフォントのうち、少なくとも１つの特定のフォントに対して個別に設定されたベースラインの位置を示す情報と、前記描画対象の文字列に対して設定された、描画に使用されるフォントに依存しないベースラインの位置を示す情報とを取得する描画情報取得手段と、
前記文字列取得手段によって取得された情報に基づいて、前記描画処理の対象となる文字列に含まれる各文字について、前記複数のフォントのうち、描画に用いるフォントを特定する特定手段と、
前記特定手段によって特定されたフォントが前記少なくとも１つの特定のフォントである文字を、前記特定されたフォントに対して個別に設定されたベースラインを反映して描画し、前記特定手段によって特定されたフォントが前記少なくとも１つの特定のフォントではない文字を、前記描画対象の文字列に対して設定された、前記描画に使用されるフォントに依存しないベースラインを反映して描画する描画手段と、
を備えることを特徴とする情報処理装置。
【請求項４】
前記描画情報取得手段は、前記特定手段によって特定された１以上のフォントの字形データに基づいて、前記少なくとも１つの特定のフォントに対して個別に設定されたベースラインの位置を示す情報を取得することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
複数のフォントを用いて文字列を描画可能な情報処理装置であって、
描画処理の対象となる文字列に対応する情報を取得する文字列取得手段と、
前記複数のフォントのうち、少なくとも１つの特定のフォントに対して個別に設定された相対値で示された描画設定情報を示す情報と、前記描画対象の文字列に対して設定された、描画に使用されるフォントに依存しない描画設定情報とを取得する描画情報取得手段と、
前記文字列取得手段によって取得された情報に基づいて、前記描画処理の対象となる文字列に含まれる各文字について、前記複数のフォントのうち、描画に用いるフォントを特定する特定手段と、
前記特定手段によって特定されたフォントが前記少なくとも１つの特定のフォントである文字を、前記特定されたフォントに対して個別に設定された前記相対値で示された描画設定情報に基づいて描画し、前記特定手段によって特定されたフォントが前記少なくとも１つの特定のフォントではない文字を、前記描画対象の文字列に対して設定された、前記描画に使用されるフォントに依存しない描画設定情報を反映して描画する描画手段と、
を備えることを特徴とする情報処理装置。
【請求項６】
前記少なくとも１つの特定のフォントに対して個別に設定された相対値で示された描画設定情報を示す情報とは、フォントサイズのサイズ倍率であって、
前記描画手段は、前記特定手段によって特定されたフォントが前記少なくとも１つの特定のフォントである文字を、基準となるフォントサイズを示す値と、前記特定されたフォントに対して個別に設定されたサイズ倍率とから算出されるフォントサイズを反映して描画することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記文字列取得手段は、前記文字列を示す情報として文字コードの配列を取得するとともに、前記文字列に対して指定されたフォントを示す情報を取得し、
前記特定手段は、前記取得された文字コードの配列を、前記取得されたフォントを示す情報に基づいて、グリフインデックス列に変換し、
前記描画手段は、前記グリフインデックス列に基づいて、前記描画処理の対象となる文字列のうち、同一のフォントで描画される部分毎に、描画処理を実行することを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記特定手段は、前記文字列取得手段によって取得された配列に含まれる文字コードに対応する字形が、前記指定されたフォントのデータに存在しない場合、予め定められた優先順に従って、前記複数のフォントのうち、前記指定されたフォントとは異なるフォントを、前記文字コードに対応する文字を描画するフォントとして特定することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
複数のフォントを用いて文字列を描画可能な情報処理装置の制御方法であって、
文字列取得手段により、描画処理の対象となる文字列に対応する情報を取得する文字列取得工程と、
描画情報取得手段により、前記複数のフォントのうち、少なくとも１つの特定のフォントに対して個別に設定されたフォントスタイルを示す情報と、前記描画対象の文字列に対して設定された、描画に使用されるフォントに依存しないフォントスタイルを示す情報とを取得する描画情報取得工程と、
特定手段により、前記文字列取得工程において取得された情報に基づいて、前記描画処理の対象となる文字列に含まれる各文字について、前記複数のフォントのうち、描画に用いるフォントを特定する特定工程と、
描画手段により、前記特定工程において特定されたフォントが前記少なくとも１つの特定のフォントである文字を、前記特定されたフォントに対して個別に設定されたフォントスタイルを反映して描画し、前記特定工程において特定されたフォントが前記少なくとも１つの特定のフォントではない文字を、前記描画対象の文字列に対して設定された、前記描画に使用されるフォントに依存しないフォントスタイルを反映して描画する描画工程と、
を備えることを特徴とする情報処理装置の制御方法。
【請求項１０】
複数のフォントを用いて文字列を描画可能な情報処理装置の制御方法であって、
文字列取得手段により、描画処理の対象となる文字列に対応する情報を取得する文字列取得工程と、
描画情報取得手段により、前記複数のフォントのうち、少なくとも１つの特定のフォントに対して個別に設定されたベースラインの位置を示す情報と、前記描画対象の文字列に対して設定された、描画に使用されるフォントに依存しないベースラインの位置を示す情報とを取得する描画情報取得工程と、
特定手段により、前記文字列取得工程において取得された情報に基づいて、前記描画処理の対象となる文字列に含まれる各文字について、前記複数のフォントのうち、描画に用いるフォントを特定する特定工程と、
描画手段により、前記特定工程において特定されたフォントが前記少なくとも１つの特定のフォントである文字を、前記特定されたフォントに対して個別に設定されたベースラインを反映して描画し、前記特定工程において特定されたフォントが前記少なくとも１つの特定のフォントではない文字を、前記描画対象の文字列に対して設定された、前記描画に使用されるフォントに依存しないベースラインを反映して描画する描画工程と、
を備えることを特徴とする情報処理装置の制御方法。
【請求項１１】
複数のフォントを用いて文字列を描画可能な情報処理装置の制御方法であって、
文字列取得手段により、描画処理の対象となる文字列に対応する情報を取得する文字列取得工程と、
描画情報取得手段により、前記複数のフォントのうち、少なくとも１つの特定のフォントに対して個別に設定された相対値で示された描画設定情報を示す情報と、前記描画対象の文字列に対して設定された、描画に使用されるフォントに依存しない描画設定情報とを取得する描画情報取得工程と、
特定手段により、前記文字列取得工程において取得された情報に基づいて、前記描画処理の対象となる文字列に含まれる各文字について、前記複数のフォントのうち、描画に用いるフォントを特定する特定工程と、
描画手段により、前記特定手段によって特定されたフォントが前記少なくとも１つの特定のフォントである文字を、前記特定されたフォントに対して個別に設定された前記相対値で示された描画設定情報に基づいて描画し、前記特定手段によって特定されたフォントが前記少なくとも１つの特定のフォントではない文字を、前記描画対象の文字列に対して設定された、前記描画に使用されるフォントに依存しない描画設定情報を反映して描画する描画工程と、
を備えることを特徴とする情報処理装置の制御方法。
【請求項１２】
コンピュータに読み取らせ実行させることによって、前記コンピュータに請求項９乃至１１のいずれか１項に記載の制御方法を実行させるプログラム。
【請求項１３】
請求項１２に記載のプログラムが記憶されたコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はフォントを用いて文字を描画する処理に関する。
【背景技術】
【０００２】
従来、指示された文字列を、フォントを用いて描画する技術が知られている。ここでフォントとは、レイアウトの基準となる情報と文字コードに対応するインデックス、インデックスに関連付けられた字形のデータと字形のレイアウトに関する情報を持つデータを差す。従って、指示された文字列の字形をどのようにレイアウトするか、上部・下部にどの程度空白を持たせるか、などのデザインは個々のフォントのデザインに従って決定される。
【０００３】
同一のフォントを有さない複数の装置では、同じ文字列を、同一の見た目となるように描画することが困難となる。特許文献１では、搭載するフォントが異なるＰＣとプリンタで、描画結果の見た目の整合性をとるため、ＰＣで決定されたフォントをプリンタが持たない場合には、プリンタ上のフォントのサイズをＰＣで決定されたフォントに近づくようにスケールする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１９０４６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
単一のフォントが全ての文字コードに対して字形の情報を持っているとは限らない。従って、任意の入力文字列を単一のフォントで描画しようとしても、全ての文字を描画できない場合がある。このような場合に対応するため、フォントリスト技術が知られている。ここでいうフォントリスト技術では、あるフォントに対して、当該フォントが描画できない文字を代わりに描画させる他の複数のフォントが優先順のリスト状で関連付けられている。つまり、指定されたフォントが特定の文字コードに対応する字形をフォントが含まない場合、そのフォントに関連付けられた他のフォントを優先度の順番で選択し、該当する文字コードの字形を検索し、見つかった字形を用いて描画処理を実行する。
【０００６】
文字列を描画させる際には、文字サイズを指示したり字形を斜体にしたりなどの見た目の装飾に関する指示を、ある程度まとまった文字列毎に指示することが広く行われている。しかしながら、従来技術では、フォントリストなどにより、複数のフォントが混在した文字列を描画する場合、複数のフォント同士の見た目の整合性を管理することができず、描画結果の視認性が低下するという課題があった。
【０００７】
そこで本発明では、複数のフォントが混在した文字列のフォント同士の見た目の整合性を管理することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、上記課題を鑑みてなされたものであり、複数のフォントを用いて文字列を描画可能な情報処理装置であって、描画処理の対象となる文字列に対応する情報を取得する文字列取得手段と、前記複数のフォントのうち、少なくとも１つの特定のフォントに対して個別に設定されたフォントスタイルを示す情報と、前記描画対象の文字列に対して設定された、描画に使用されるフォントに依存しないフォントスタイルを示す情報とを取得する描画情報取得手段と、前記取得手段によって取得された情報に基づいて、前記描画処理の対象となる文字列に含まれる各文字について、前記複数のフォントのうち、描画に用いるフォントを特定する特定手段と、前記特定手段によって特定されたフォントが前記少なくとも１つの特定のフォントである文字を、前記特定されたフォントに対して個別に設定されたフォントスタイルを反映して描画し、前記特定手段によって特定されたフォントが前記少なくとも１つの特定のフォントではない文字を、前記描画対象の文字列に対して設定された、前記描画に使用されるフォントに依存しないフォントスタイルを反映して描画する描画手段と、を備える。
【発明の効果】
【０００９】
本発明により、複数のフォントが混在した文字列のフォント同士の見た目の整合性を管理することができる。
【図面の簡単な説明】
【００１０】
【図１】実施例１における情報処理装置を含むシステムの構成の一例を示す模式図。
【図２】実施例１の情報処理装置の処理の流れの一例を示すフローチャート。
【図３】変形例の情報処理装置の処理の流れの一例を示すフローチャート。
【図４】描画設定情報としてフォントスタイルを設定した場合の例を示す図。
【図５】描画設定情報としてベースラインを設定した場合の例を示す図。
【図６】描画設定情報としてフォントサイズあるいはサイズ比率を設定した場合の例を示す図。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施の形態は特許請求の範囲に関る本発明を限定するものではなく、また、本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一な構成については、同じ符号を付して説明する。
【００１２】
＜実施例１＞
本実施例では、複数のフォントが混在した文字列に対して、フォントスタイル、フォントサイズ、レイアウト等見た目を変化させるための情報が設定された場合に、フォント毎に、設定された情報を反映するか否かを管理する例を説明する。
【００１３】
図１（ａ）は本実施例に係る情報処理装置１００の概要を示した構成図である。ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１は、システム制御部であり、システムバス１０８を介して、接続された各要素を制御する。ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２は、ＣＰＵの制御プログラムや、情報処理装置１００が描画可能なフォントのデータなど各種固定データを格納するものである。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３は、ＳＲＡＭ、ＤＲＡＭ等で構成され、プログラム制御変数等を格納するためのものである。また、各種設定パラメータ、各種ワーク用バッファもＲＡＭ１０３に格納されるものである。記憶装置１０４はハードディスク等で構成され、文書や画像などのファイルデータを格納するためのものである。入力部１０５は、キーボード、タッチパネル等で構成され、操作者が各種入力操作を行うためのものである。表示部１０６は、ＬＣＤ、ＬＥＤ等で操作者に表示通知するためのものである。通信インターフェース１０７は、ネットワークに接続するためのインターフェースである。接続方法としてはＬＡＮ、ＵＳＢ等がある。同図に示した構成は、本発明の実施例に係る情報処理装置の一部を示したものであり、装置によっては、この他、スキャナ部、プリンタ部、モデム、スピーカ等が装置の構成に加わる場合がある。また、各構成要素は、必ずしも装置内で接続される構成に限定されず、各種インターフェースを介して接続された外部装置であっても構わない。
【００１４】
図１（ｂ）は、情報処理装置１００の機能構成の一例を示すブロック図である。各機能部は、ＣＰＵ１０１が、ＲＯＭ１０２に格納されたプログラムをＲＡＭ１０３に展開し、後述する各フローチャートに従った処理を実行することで実現されている。ただし、本発明は、これらの機能部をハードウェアで実現する情報処理装置によっても同様に実現可能である。以下、各要素について説明する。
【００１５】
文字列取得部１１１は、入力部１０５を介してユーザ操作により入力された指示に従ったり、構造化文書を読み込んで解析したりすることで、表示部１０６が表示する表示画面を構成する要素から、描画対象となる文字列を取得する。また、本実施例では、取得した文字列を描画するために指定されたフォントを指定する情報を取得する。本実施形態では、表示画面の構成要素として、描画すべき文字列が複数存在する場合でも、１つ１つの要素ごとに文字列の情報を取得し、描画処理を行うことを繰り返す。
【００１６】
描画情報取得部１１２は、入力部１０５を介してユーザ操作により入力された指示に従ったり、構造化文書を読み込んで解析したりすることで、描画する文字列に対して、見た目の変化を指示するために設定された描画設定情報を取得する。さらに、本実施例では、情報処理装置１００が描画可能なフォントのうち、少なくとも１つの特定のフォントに対して、個別に設定された描画設定情報を取得する。なお、本実施例において、フォントに個別に設定される描画設定情報は、表示画面の設計段階で予め定められた情報であって、個々の文字列の描画に当該フォントが使用されるか否かに関わらず、設定に従って取得される。ただし、情報処理装置１００の操作者によって任意に変更可能な、言語環境などに従って定められてもよい。本実施例で扱う描画設定情報は、フォントスタイル、飾り文字、フォントカラー、フォントサイズ等、文字の見た目を変化させるための情報のうち、必要に応じて設計者が設定したものである。
【００１７】
特定部１１３は、文字列取得部１１１が取得した文字列の各文字について、描画に用いるフォントを特定する。そして、文字列を文字コードの配列から、各文字の描画に用いるフォントに応じたインデックスの配列に変換する。本実施例では、取得された文字列の全ての文字が、文字列取得部１１１に取得された情報で指示された通りのフォントで描画できない場合は、フォントリスト技術を用いて、当該文字を描画するフォントを選択する。つまり、本実施例では、ある文字について指定されたフォントが、当該文字に対応する字形を持たない場合、フォントリスト技術を用いて、優先順に他のフォントのデータを参照し、該当する文字の字形を有する他のフォントを特定する。従って、１つの文字列であっても、複数のフォントの字形が混在するように描画される場合がある。このとき、同じ文字であっても、フォントよって、対応する字形のインデックスは一致するとは限らない。例えば文字「Ａ」に対応する字形のインデックスが、あるフォントでは１０となり、別のフォントでは１００となることがある。そのため、字形のインデックスは用いられるフォントの情報と合わせて管理される。以下、生成した字形のインデックスの配列をグリフインデックス列、グリフインデックス列とそれに対応するフォント情報を合わせてグリフインデックス列情報と表記する。
【００１８】
描画部１１４は、変換された配列情報に基づいて、文字列のうち、同一のフォントで描画される部分毎に、描画設定情報を反映した描画を繰り返し行うことで、文字列全体の描画処理を実行する。特に本実施例では、描画に用いるフォントに個別に描画設定情報が設定されている文字（部分配列）は、文字列全体に設定されたフォントに依存しない描画設定情報を反映せずに、フォントに個別に設定された描画設定情報を反映して描画する。一方で、描画に用いるフォントに個別に描画設定情報が設定されていない文字（部分配列）は、文字列全体に設定されたフォントに依存しない描画設定情報を反映して描画する。つまり、描画対象の文字が、描画情報取得部１１２によって、個別に設定された描画設定情報が取得された少なくとも１つの特定のフォントであるか否かに応じて、描画の際に反映する描画設定情報を変える。判定部１１５は、グリフインデックス列情報と描画情報取得部１１２が取得した情報とに基づいて、描画対象とされている部分配列に、当該フォントに個別に描画設定情報が設定されているか否かを判定し、描画部１１４の処理を切り替えさせる。
【００１９】
保持部１１６は、描画部１１４が、個別に描画設定情報が設定されたフォントの描画を行っている間、文字列全体に設定されたフォントに依存しない描画設定情報文字列全体に設定されたフォントに依存しない描画設定情報を保持する。
【００２０】
以下、図２のフローチャートに沿って実施例の動作を説明する。本実施例では、表示部１０６に表示される画面において画面遷移、または更新が実行されるトリガーとなるイベントが発生したことに応じて、文字列の描画処理が呼び出される。図２のフローチャートは、遷移後（更新後）の画面を表示するために描画すべき文字列の情報が、所定の単位毎（例えば、個々のＧＵＩ部品に描画される文字列毎）にアプリケーション等から通知される度に実行される。
【００２１】
ステップＳ２０１では、描画情報取得部１１２が、情報処理装置１００が描画可能なフォントのうち少なくとも１つの特定のフォントに対して、見た目の変化を指示するために設定された描画設定情報を取得する。本実施例では、描画設定情報の一例として、フォントスタイルの指示を取得する。フォントスタイルとは、フォントを使って文字を描画する際に指示することが可能な、見た目の変形をいう。第１実施例の情報処理装置１００では、フォントスタイルとして、通常の（見た目の変化が無い状態の）フォントより字形の幅を細くする長体、通常のフォントより字形の幅を太くする平体、字形を傾ける斜体などを指示することが可能である。フォントスタイルは、数値や名称を示す文字列といった定数の指定を受けることで決定される。予め、ＲＯＭなどの記憶手段において、通常の字形をもったフォントに対して、フォントスタイルに合わせて変形された字形をもったフォントが対応付けられていることがある。このような１以上のフォントのまとまりはフォントファミリと呼ばれる。指示されたフォントスタイルに対応するフォントがフォントファミリにある場合、そのフォントが描画に使用される。一方で、フォントスタイルに対応するフォントがフォントファミリに存在しない場合には、フォントスタイルに応じた変形処理を、通常のフォントの字形に対して行い描画することもある。例えば平体のフォントスタイルが決定された場合、通常の字形を水平方向に拡大もしくは垂直方向に縮小して描画を行う。例えば長体のフォントスタイルが決定された場合、通常の字形を水平方向に縮小もしくは垂直方向に拡大して描画を行う。拡大率・縮小率は描画環境に応じて定められる。拡大率・縮小率はレイアウトや、文字列を入力するユーザの決定に応じて動的に変更してもよい。一例として、実施例１の情報処理装置１００では、長体のフォントスタイルが決定された場合、水平方向の縮小率が０．５で描画される。
【００２２】
なお、描画設定情報として取得されるのは、フォントスタイルに限らない。例えば、文字のベースラインの位置やフォントのサイズのように、字形をレイアウトする基準を絶対値で決定する情報も、ステップＳ２０１において、描画設定情報として取得される。
【００２３】
ステップＳ２０２では、描画情報取得部１１２が、描画すべき表示画面において設定されている、アイコンに依存しない描画設定情報を取得する。そして、取得した描画設定情報を、描画コンテキストに設定する。
【００２４】
ステップＳ２０３では、文字列取得部１１１が、描画する文字列の各文字を示す情報と、指定されたフォントを示す情報を取得する。具体的には、文字コードの配列と、それらを描画するために指定された１以上のフォントを示す情報を取得する。
【００２５】
ステップＳ２０４では、特定部１１３が、取得した文字列の各文字を描画するフォントを特定し、文字列の文字コードの配列から、特定されたフォントのデータに格納された字形のインデックスの配列に変換する。具体的には、ＲＯＭ１０２に記憶された複数のフォントの情報のうち、ステップＳ２０３で情報を取得したフォントの情報を参照して、取得した文字列の各文字の文字コードに対応するインデックスを探索する。文字コードに対応するインデックスがある場合、指定されたフォントを、描画に用いるフォントとして特定し、グリフインデックス列情報を生成する。文字コードに対応するインデックスが存在しない場合、フォントリスト技術を用いて、優先順に他のフォントのデータを参照し、該当する文字コードについての字形を有する他のフォントからインデックスを得る。これにより、全ての文字について、いずれかのフォントを特定し、特定されたフォントに応じたインデックスからなるグリフインデックス列を生成することができる。いずれのフォントのデータにおいても字形が見つからない場合は、当該文字は、ミッシンググリフとして、不明な文字用にフォントで定義された字形のインデックスを使用して、グリフインデックス列が生成される。なお本実施例では、指定されたフォントの代替として用いるフォントを決定する方法として、フォントリスト技術を用いる例を説明したが、これに限らない。例えば、予め、特定の文字コードに対しては、特定のフォントから字形を取得するように設定しておくこともできる。なお、描画する文字列が定型文である場合、文字列取得部１１１は、文字列を文字コードの配列ではなく、数値や文字列で表現される定数として、取得する場合もある。その場合も、ＲＯＭ１０２に記憶された情報を参照して、取得した定数に対応するグリフインデックス列情報を生成する。ただし、参照先はＲＯＭ１０２に限らず、記憶装置１０４が保持するフォントを参照してもよいし、通信インターフェース１０７経由で、外部装置からフォントデータを取得し、ＲＡＭ１０３に展開して参照してもよい。
【００２６】
また、描画環境がアラビア語などの右から左に描画する文字列が含まれる言語向けである場合や、受け取った文字列の一部にアラビア語が含まれるなどの場合には、文字列の論理的な順序と、描画する順序が異なる場合がある。こうした場合、特定部１１３は、Ｕｎｉｃｏｄｅ  Ｓｔａｎｄａｒｄ  Ａｎｎｅｘ  ＃９（ｈｔｔｐ：／／ｗｗｗ．ｕｎｉｃｏｄｅ．ｏｒｇ／ｒｅｐｏｒｔｓ／ｔｒ９／ｔｒ９−２９．ｈｔｍｌ）の仕様に従い、まず文字を、描画する順序に並び替える。そして、指定されたフォントの情報を参照して、並び替え後の文字列をグリフインデックス列情報へ変換する。なお本実施例では、横書きの文字列は、より左側に配置される文字から順に描画し、縦書きの文字列は、より上側に配置される文字から順に描画を行う。
【００２７】
ステップＳ２０５では、描画部１１４が、グリフインデックス列から、描画順に沿って、同一のフォントで描画される部分配列を選択し、描画処理の処理対象とする。
【００２８】
ステップＳ２０６では、判定部１１５が、グリフインデックス列情報に基づいて、選択した部分配列に相当する文字を描画するフォントを特定し、特定したフォントに対して個別に描画設定情報が決定されているかどうかを判定する。選択した部分配列に相当する文字を描画するフォントに、個別に描画設定情報が決定されている場合（ステップＳ２０６でＹＥＳ）、ステップＳ２０７に進む。一方、選択した部分配列に相当する文字を描画するフォントに、個別に描画設定情報が決定されていない場合（ステップＳ２０６でＮＯ）は、ステップＳ２０９に進む。ステップＳ２０７において、描画部１１４は、描画コンテキストにセットされた描画設定情報を、保持部１１６に保持させる。つまり、フォントに個別に設定された描画設定情報を用いて描画をする間、フォントに依存せず文字列全体に対して設定された描画設定情報の情報を退避させる。
【００２９】
ステップＳ２０８において、描画部１１４は、選択した部分配列に相当する文字を描画するフォントに個別に設定された描画設定情報を取得し、描画コンテキストの描画設定情報を更新する。ステップＳ２０６〜ステップＳ２０８の処理により、フォントに個別に描画設定情報が設定されている場合は当該描画設定情報が、フォントに個別に描画設定情報が設定されていない場合は文字列全体に設定された描画設定情報が、描画コンテキストに設定される。
【００３０】
ステップＳ２０９では、描画部１１４が、描画コンテキストに設定された描画設定情報を反映するように、部分配列に対応する文字列を描画する。本実施例では、フォントスタイルに応じた変形や変化が施された文字が描画されることとなる。
【００３１】
ステップＳ２１０では、判定部１１５が再び、選択されている部分配列に対応する文字を描画するフォントに、個別に設定された描画設定情報があるか否かを判定する。設定されていると判定された場合（ステップＳ２１０でＹＥＳ）、ステップＳ２１１に進む。一方、設定されていないと判定された場合（ステップＳ２１０でＮＯ）、ステップＳ２１２に進む。ステップＳ２１１では、描画部１１４が、保持部１１６に保持されていた描画設定情報を読み出して、描画コンテキストに設定する。なお、ステップＳ２１０では、描画部１１４が、保持部１１６に描画設定情報が保持されているか、すなわち、ステップＳ２０７において退避させた描画設定情報があるかを判定しても構わない。この場合は、ステップＳ２１１において、描画コンテキストの設定を更新した段階で、保持部１１６が保持していた情報を破棄（初期化）する処理を加える。
【００３２】
そして、ステップＳ２１２では、描画部１１４が、グリフインデックス列情報に基づいて、文字列全体の描画が終了したかを判定する。終了していないと判定される場合（ステップＳ２１２でＮＯ）は、ステップＳ２０５に戻り、描画順に沿って順次部分配列を選択する。一方、終了したと判定された場合（ステップＳ２１２でＹＥＳ）は、処理を終了する。
【００３３】
ここで、図４を参照して、本実施例の処理に従って描画される文字列の具体例を説明する。以下では、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）のための表示画面が描画される場面を想定し、図２のフローチャートが１回実行されることで、１つのＧＵＩ部品に対応する文字列の描画が行われるとする。例えば、ＧＵＩ部品である１つのボタンに、「Ｑｕａｌｉｔｙ」という英単語と、扇形の図形のアイコンとが描画される例を説明する。
【００３４】
まず、従来のように、複数のフォントが混在することを考慮せず、文字列フォントスタイルの適応した場合の描画結果の例を示す。文字列を構成する全ての文字を、「ノーマル」のフォントスタイルで描画した場合、描画結果は図４（ｃ）のようになる。例えば、ＧＵＩ画面の設計者が、ボタンオブジェクトをデザインするにあたり、文字列を描画する幅をより狭くしたいと考え、この文字列に対して「長体」のフォントスタイルを設定したとする。この指示に従い、全ての文字を長体のフォントスタイルで描画した場合、通常の字形に対して水平方向に０．５の縮小率が適用され、描画結果は図４（ａ）のようになる。この時、複数のフォントが混在することを考慮しなければ、扇形の図形のアイコンに対しても「長体」のフォントスタイルが適応され、扇形が歪んでしまう。多くの場合、絵文字など図形は、フォントスタイルを適応すると、異なる図形との識別能力が低下してしまうなど、視認性が低下する。しかしながら、アイコンの部分のフォントスタイルを後から解除したり、英単語の部分とアイコン部分とを別の文字列として、それぞれにフォントスタイルを設定したり、するのは設計者にとって煩わしい作業となる。
【００３５】
そこで、本実施例では、予めアイコンフォント自体に描画設定情報を設定することで、アイコンを含む文字列に対してどのようなフォントスタイルが指示された場面であっても、アイコン自体の見た目が常に同一となることを可能とする。例えば、アイコンフォントに対して個別に「ノーマル」（変形なし）を示すフォントスタイルが設定する。
【００３６】
上述した具体例に、本実施例を適応した場合に図２のフローチャートの各ステップで実行される処理を説明する。まず、画面遷移により、ＧＵＩ画面の描画が指示されたことに応じて、画面の設計情報が解析され、該当するボタンオブジェクトの文字列の情報が通知される。まず、ステップＳ２０１において、描画情報取得部１１２によって、アイコンフォントに対して設定された「ノーマル」を示すフォントスタイルが取得される。なお、ここでは個別の設定が行われるフォントはアイコンフォントのみとするが、他にも個別設定がなされたフォントの情報を取得しても構わない。次に、ステップＳ２０２において、文字列全体に対して設定された「長体」のフォントスタイルが取得され、描画コンテキストに設定される。次に、ステップＳ２０３において、文字列取得部１１１が、英語表記の描画用にデザインされたフォントでの描画が指定された「Ｑｕａｌｉｔｙ」という文字列と、アイコンフォントでの描画が指定された扇形の図形アイコンの文字列の文字コードを取得する。なお、以下、英語表記の描画用にデザインされたフォントを単に英語フォントという。次に、ステップＳ２０４において、特定部１１３が、取得された文字コードの配列を、グリフインデックス列に変換する。ここで配列は、英語フォントのグリフインデックス列情報と、アイコンフォントのグリフインデックス列情報とで構成される。
【００３７】
次にステップＳ２０５では、描画部１１４により、描画順に従い、英語フォントのグリフインデックス列情報（「Ｑｕａｌｉｔｙ」部分の文字列）が処理対象の部分配列として選択される。英語フォントには個別の描画設定情報は設定されていないので、ステップＳ２０９において、描画部１１４により、「長体」のフォントスタイルを反映した描画が実行される。描画コンテキストの更新はなく、文字列の描画が終了していないことから、再びステップＳ２０５で、描画部１１４により、アイコンフォントのグリフインデックス列情報（扇形の図形部分の文字列）が処理対象の部分配列として選択される。ここでアイコンフォントには、個別に「ノーマル」のフォントスタイルが設定されている。従って、ステップＳ２０７において、「長体」のフォントスタイルの情報が保持部１１６に退避され、ステップＳ２０８において、描画コンテキストの描画設定情報が「ノーマル」に更新される。ステップＳ２０９では、描画部１１４により、「ノーマル」のフォントスタイルを反映した描画が実行される。ステップＳ２１１において、退避されていた「長体」のフォントスタイルが再び描画コンテキストに設定され、取得された文字列全体の描画が終了したことから、ステップＳ２１２において、ＹＥＳと判定され、一連の処理が終了する。以上の処理による描画結果は図４（ｂ）のようになる。個々の文字列に対して設定される描画設定情報によらず、アイコンフォントで描画される文字は、常にノーマルのフォントスタイルで描画することが可能になる。
【００３８】
次に、図５を参照して、描画設定情報として文字のベースラインを設定し、複数のフォントが混在する文字列の見た目の整合性を管理する具体例を説明する。ベースラインとは、文字列を構成する字形を並べる際に、配置の基準とする線のことである。ベースラインに対して、字形をどのように配置するかは、通常、フォントに応じて異なるデザインがなされている。例えば日本語フォントで横書きの文字列を描画する場合は、漢字がベースラインより上にくるようにデザインされることが多い。一方で、中国語フォントでは、漢字の下側の一部が、ベースラインを越えるようにデザインされていることがある。このとき、図５のように、日本語フォントが指定された「東京」という文字列と、中国語フォントが指定された「香港」の文字列を描画することを想定する。従来のように、日本語フォントと中国語フォントのグリフインデックス列が混在することを考慮しなければ、描画結果は図５（ａ）のようになる。図５（ａ）では、各フォントについて、ベースラインと文字との位置関係は、デザインされた条件に従っているが、一見すれば、漢字が上下にずれ、見た目の整合背が損なわれたように見えてしまう。
【００３９】
そこで本実施例では、予め、中国語フォントに対して、個別に設定する描画設定情報として、ベースラインの位置を設定決定することで、このような課題を解決できる。すなわち、中国語フォントの漢字がベースラインを上にずらすように指示する情報を設定する。これにより、描画結果は図５（ｂ）のようになる。これにより、日本語フォントと中国語フォントが混在する文字列であっても、見た目の整合性を損なわずに描画することができる。漢字の並びが揃って見えるので、閲覧者にとっては視認性が低下せず、読みやすい文字列を描画することができる。なお、ベースラインをずらす量は、設計者が予め任意に決定した値を、取得することができる。さらには、隣接して描画される２つのフォントのデータを解析することにより、自動的に、特定のフォントのベースラインの位置を算出することもできる。例えばフォントのデータから、字形を配置する際に、ベースラインより下に出る部分の長さを取得し、その分だけ上にずらしてもよい。また、フォントに含まれる字形データを全て取得し、字形が全てベースラインより上に来るようにベースラインのずらす量の値を算出することもできる。このように、算出により、特定のフォントに個別に設定される描画設定情報を取得することで、設計者の作業を簡略化させることができる。
【００４０】
次に、図６（ａ）及び（ｂ）を参照して、描画設定情報として文字の描画サイズを設定し、複数のフォントが混在する文字列の見た目の整合性を管理する具体例を説明する。描画部１１４は、字形データに対して、指定を受けたフォントサイズに応じた拡縮を行い描画する。拡縮の基準としては、フォントが持つｕｎｉｔｓＰｅｒＥＭやｍａｘ−ｈｅｉｇｈｔの値が使用される。ｕｎｉｔｓＰｅｒＥＭはデザインの基準となる数値、ｍａｘ−ｈｅｉｇｈｔはフォントに含まれる字形の最大高さの値である。例えば字形データがベクトルデータで、サイズ２０で描画される場合、ベクトルデータがもつ値をｕｎｉｔｓＰｅｒＥＭで割り、２０を掛けた結果が実際の描画に使用する値になる。ｕｎｉｔｓＰｅｒＥＭの代わりにｍａｘ−ｈｅｉｇｈｔで割ってもよい。ただし、ｕｎｉｔｓＰｅｒＥＭに対してどのように字形をデザインするかはフォントのデザイナに任されている。例えば英語表記を描画する為のフォントでは、アルファベットの大文字の高さがｕｎｉｔｓＰｅｒＥＭに近くなるようにデザインされる。一方で、アラビア語表記を描画する為のフォントでは、一般的な文字の上側に装飾文字と呼ばれる部分が存在する場合があるために、多くの字形の高さはｕｎｉｔｓＰｅｒＥＭの半分程度になることもある。ここで従来のように、文字列に複数のフォントが混在することを考慮せずに、文字列全体に一律の文字サイズを設定した場合を例示する。英語とアラビア語の表記をどちらも含む文字列を、同じフォントサイズの「１８」で描画した結果は図６（ａ）のようになり、英語に対してアラビア語の見た目が小さく見えてしまう。これに対し、本実施例では、予め、アラビア語フォントに個別に描画設定情報としてフォントサイズを「３２」と設定しておくことが可能となる。その上で本実施例を適応した場合の描画結果は図６（ｂ）のようになり、英語フォントに対するアラビア語フォントの見た目のバランスを向上させることができる。ここで、一般的に使用頻度がより高い英語表記では、アルファベットには様々な装飾を加えて描画することが求められる。従って、比較的使用頻度が低いアラビア語フォントに対して、個別の設定を行うことで、使用頻度の高い言語のフォントに対する自由度を確保した上で、より効率的な画面設計が可能となる。ただし、英語フォントに対して個別の設定を行うことももちろん可能である。
【００４１】
さらに、上記の例で個別に設定したフォントサイズ「３２」は、画面の設計者が任意に決定することを想定したが、フォントや字形の情報から自動的に算出し、算出結果を描画設定情報として決定してもよい。例えば、英語フォントのｕｎｉｔｓＰｅｒＥＭとアラビア語フォントのｍａｘ−ｈｅｉｇｈｔが同じになるように、字形データを比較して、設定すべきフォントサイズを求めてもよい。また、フォントが持つベースラインに対する高さのひとつであるａｓｃｅｎｄのｕｎｉｔｓＰｅｒＥＭに対する比率が同じになるようにフォントサイズを算出してもよい。また、英語フォントとアラビア語フォントで同じ文字に対する字形がないか検索し、見つかった場合はその字形の外接矩形が同じ大きさになるようにフォントサイズを算出してもよい。
【００４２】
以上説明したように、本実施例によれば、複数のフォントが混在する文字列を描画させる場合に、文字の変化を指示する情報の設定作業の手間数を低減させつつ、複数のフォントの見た目の整合性を管理することができる。それにより、描画結果の文字列の視認性を低下させず、様々な装飾を施した文字列をデザインすることが可能となる。
【００４３】
＜変形例＞
実施例１では、描画設定情報を定数または絶対値で設定する方法について説明した。その変形例として、描画設定情報を相対値で決定する例について説明する。
【００４４】
変形例にかかる情報処理装置１００のハードウェア構成、および機能構成は実施例１に準じるため詳細説明を省略する。ただし、変形例において、描画情報取得部１１２は、相対値を含む描画設定情報を取得する。また、判定部１１５は、保持部１１６に保持した描画設定情報を累積するか否かを判定し、描画部１１４の描画を制御する。
【００４５】
以下、図３のフローチャートに沿って実施例の動作を説明する。なお、図２のフローチャートと同じ処理を行うステップには同番号を付して適宜説明を省略し、実施例１と異なる点を中心に簡潔に説明する。
【００４６】
ステップＳ２０１ａにおいて、描画情報取得部１１２は、特定のフォントに対して個別に設定された描画設定情報を取得する。ただし、変形例では、ステップＳ２０１において取得する描画設定情報に、相対値が含まれる。例えば、アラビア語フォントについて個別に設定された描画設定情報として、デフォルトの英語フォントに設定されたフォントサイズに対するサイズ倍率を取得する。上述したように、英語フォントではアルファベットの大文字の高さがｕｎｉｔｓＰｅｒＥＭに近くなるようにデザインされるのに対し、アラビア語フォントでは装飾文字が存在するため、多くの字形の高さはｕｎｉｔｓＰｅｒＥＭの半分程度にデザインされている。そのため、英語フォントとアラビア語フォントを同じサイズで描画するとアラビア語が図６（ａ）のように小さく見えるので、例えば設計時に、アラビア語フォントのサイズ倍率を２．０に設定する。この場合、英語フォントに対して設定されたフォントサイズの値を２．０倍した値が、アラビア語フォントに個別に設定された描画設定情報としての、フォントサイズとなる。なお、ここでは一例として、浮動小数点数値を一つ決定するが、Ｘ方向とＹ方向で異なる倍率を決定してもよい。
なお、一例としてサイズ倍率を２．０としたが、描画情報取得部１１２が、フォントや字形の情報から自動的に算出し、算出結果を相対値としてもよい。例えば、英語フォントとアラビア語フォントで同じ文字に対する字形がないか検索し、見つかった場合はその字形の外接矩形が同じ大きさになるようにサイズ倍率を算出する。また、フォントが持つベースラインに対する高さのひとつであるａｓｃｅｎｄのｕｎｉｔｓＰｅｒＥＭに対する比率が同じになるようにサイズ倍率を算出してもよい。
【００４７】
ステップＳ２０２ａでは、描画情報取得部１１２が、描画すべき表示画面において設定されている、アイコンに依存しない描画設定情報を取得する。変形例では、ステップＳ２０２ａにおいても、取得さる描画設定情報に、相対値が含まれる。そして、取得した描画設定情報と相対値とに基づいて定まるを、描画設定情報を描画コンテキストに設定する。例えば、サイズ倍率１．０が取得されたとすると、アラビア語以外の文字は、指定されたフォントサイズのままで描画される。
【００４８】
ステップＳ２０３ａでは、文字列取得部１１１が、描画する文字列の各文字を示す情報と、指定されたフォントを示す情報、及び相対値で示された描画設定情報に対する基準値を取得する。具体的には、文字コードの配列と、それらを描画するために指定された１以上のフォントを示す情報、及び文字列に対して指定されたフォントサイズ等の絶対値を取得する。例えば、文字を入力したユーザが文字列に、英語フォントとフォントサイズ「１８」を設定した場合、指定されたフォントは英語フォント、基準値は「１８」となる。ステップＳ２０４〜ステップＳ２０７の処理は実施例１と同内容であるため、詳細な説明を省略する。
【００４９】
変形例では、ステップＳ２０７において、描画部１１４が、描画コンテキストにセットされた描画設定情報を、保持部１１６に保持させると、処理はステップＳ３０１に進む。      
【００５０】
ステップＳ３０１では、判定部１１５が、描画設定情報を累積して用いるかを判定する。つまり、この時点で描画コンテキストに設定されている描画設定情報に含まれる相対値と、特定のフォントに個別に設定された相対値を累積した値を、描画に反映するか否かを判断する。本変形例では、表示画面の設計時に予め、累積して用いることを前提とした相対値が設定されているか、累積しないで用いる相対値が設定されているかを示す情報がフラグ等で用意されており、判定部１１５はそれに基づいて判定を行う。また、設計時の決定結果に限らず、情報処理装置１００のユーザによる設定に応じて切り替えられても良い。累積すると判定された場合（ステップＳ３０１でＹＥＳ）には、ステップＳ３０２に進み、累積しないと判定された場合（ステップＳ３０１でＮＯ）には、ステップＳ２０８に進む。ステップＳ２０８以降の処理は実施例１と共通するため説明を省略する。
【００５１】
ステップＳ３０２に進んだ場合、描画部１１４は、描画コンテキストに設定されていた相対値と、選択されている部分配列に対応するフォントの個別の相対値とを累積する。なお、相対値が積によって累積されるか、和によって累積されるかは描画設定情報の種類や描画環境、デザインの方針、ユーザの指示などにより予め設定された方法に従う。ここでは一例として、アラビア語フォントを描画する場合には、ステップＳ２０２ａで取得されたサイズ倍率の１．０に対し、アラビア語フォントのサイズ倍率である２．０が積算され、累積値は２．０となるとする。ステップＳ３０３において、描画部１１４は、累積した相対値を含む描画設定情報（選択されている部分配列に対応するフォントの描画設定情報）を描画コンテキストに設定する。そして、ステップＳ２０９に進む。
【００５２】
ステップＳ２０９では、描画部１１４によって、文字列に対して指定されたフォントサイズに対し、相対値が反映されたフォントサイズで、文字の描画が実行される。
【００５３】
ここまで説明している具体例では、英語フォントのサイズ倍率は１．０で、アラビア語フォントのサイズ倍率は２．０である。従って、例えば、ユーザが文字列に、英語フォントとフォントサイズ「１８」が設定された場合、アラビア語フォントは２．０倍されたフォントサイズ「３６」で描画される。描画した結果は図６（ｃ）のようになり、従来例の図６（ａ）に対しては、英語フォントに対するアラビア語フォントの見た目のバランスが向上するという効果が得られる。以降の処理は実施例１と共通するため、詳細な説明を省略する。
【００５４】
以上説明したように、変形例においても、複数のフォントが混在する文字列を描画させる場合に、文字の装飾を指示する作業工数を低減させつつ、複数のフォントの見た目の整合性を管理することができる。それにより、描画結果の文字列の視認性を低下させず、様々な装飾を施した文字列をデザインすることが可能となる。
【００５５】
なお、上述した変形例では、フォントに依存しない描画設定情報も、相対値で示された情報を含むとしたが、これに限らない。例えば、フォントに依存しない描画設定情報は絶対値として取得され、その絶対値を、ステップＳ２０３ａで取得される基準値に相当する値として扱うことも可能である。
【００５６】
なお、描画設定情報を定数または絶対値で設定する実施例１と、描画設定情報に相対値を用いる実施例１の変形例の処理は、排他的に実施されることもできるが、組み合わせることもできる。例えば、描画設定情報のうち、フォントスタイルは絶対値、フォントサイズについては相対値で示された値に基づく処理を行う。また例えば、フォント毎に、絶対値あるいは相対値のいずれか適切な値で描画設定情報が設定されてもよい。
【００５７】
＜その他の実施例＞
本発明の目的は前述した実施例の機能を実現するソフトウェアの文字描画プログラムコードを記録した記録媒体を、システムあるいは装置に供給してもよい。そのシステムあるいは装置のコンピュータ（またはＣＰＵまたはＭＰＵ）が記録媒体に格納された文字描画プログラムコードを読み出し実行することによっても、達成されることは言うまでもない。
この場合、記憶媒体から読み出された文字描画プログラムコード自体が前述した実施形態の機能を実現することとなり、その文字描画プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００５８】
文字描画プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
また、コンピュータが読み出した文字描画プログラムコードを実行することにより、前述した実施例の機能が実現されてもよい。更にその文字描画プログラムコードの指示に基づき、コンピュータ上で稼動しているＯｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（ＯＳ）などが実際の処理の一部または全部を行ってもよい。その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【００５９】
さらに、記憶媒体から読み出された文字描画プログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれてもよい。その後、その文字描画プログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【符号の説明】
【００６０】
１１１  文字列取得部
１１２  描画情報取得部
１１３  特定部
１１４  描画部
１１５  判定部
１１６  保持部
【図１】
2015206986.tif 000003
【図２】
2015206986.tif 000004
【図３】
2015206986.tif 000005
【図４】
2015206986.tif 000006
【図５】
2015206986.tif 000007
【図６】
2015206986.tif 000008