(58)【調査した分野】(Int.Cl.,DB名)
前記フォント優先リスト制御手段は、前記第1の言語情報で表される言語と前記第2の言語情報で表される言語とが異なるときに、前記第2のフォント優先リストを作成することを特徴とする、
請求項1記載の情報処理装置。
前記フォント優先リスト制御手段で作成された前記第2のフォント優先リストを、前記第1の言語情報及び前記第2の言語情報とともに記憶するキャッシュ手段を備えており、
前記フォント優先リスト制御手段は、前記第2のフォント優先リストを前記キャッシュ手段に記憶させた後に、次の第2のフォント優先リストを作成する際に取得した第1の言語情報及び第2の言語情報が前記キャッシュ手段に記憶された前記第1の言語情報及び前記第2の言語情報に一致すれば、前記キャッシュ手段に記憶された前記第2のフォント優先リストを前記文字列の描画に用いるフォント優先リストとすることを特徴とする、
請求項1〜3のいずれか1項記載の情報処理装置。
【発明を実施するための形態】
【0012】
以下、図面を参照して実施の形態を詳細に説明する。
【0013】
(構成)
図1は、本実施形態の情報処理装置のハードウェア構成図である。情報処理装置101は、画像形成装置やスマートフォンのようにディスプレイ119(表示装置)を備える。情報処理装置101は、ユーザの認証機能を有しており、ユーザの認証時(ログイン時)に用いるユーザ情報に基づいた言語を表示言語として文字表示を行う。情報処理装置101は、ディスプレイ119の他に、制御部110、タッチパネル118、及び外部メモリ120を備える。制御部110は、CPU(Central Processing Unit)111、RAM(Random Access Memory)112、及びROM(Read Only Memory)113により、情報処理装置101全体の動作を制御する。そのために制御部110は、タッチパネル118に接続される入力制御部114、ディスプレイ119に接続される表示制御部115、外部メモリ120に接続される外部メモリインタフェース(I/F)116を備える。また制御部110は、LAN(Local Area Network)等のネットワーク102との間で通信制御を行う通信I/Fコントローラ117を備える。CPU111、RAM112、ROM113、入力制御部114、表示制御部115、外部メモリI/F116、及び通信I/Fコントローラ117は、システムバスBを介して相互に通信可能に接続される。
【0014】
CPU111は、ROM113に格納されるコンピュータプログラムを読み出し、RAM112をワークエリアとして用いて実行することで、情報処理装置101の各部の動作を制御する。ROM113は不揮発性メモリであり、コンピュータプログラムの他に、処理に必要な各種のデータを保持する。RAM112は揮発性メモリであり、処理を行う際の一時記憶領域を提供する。
【0015】
入力制御部114は、入力デバイスを用いたユーザの操作を受け付けて、受け付けた操作に応じた制御信号をCPU111に送信する。
図1では、入力デバイスとしてタッチパネル118を用いる。タッチパネル118は、ユーザの指やスタイラスペン等によりタッチされた位置を検出するポインティングデバイスである。タッチパネル118は、抵抗膜方式や静電容量方式、表面弾性波方式、赤外線方式、電磁誘導方式、画像認識方式、光センサ方式等、様々な方式のものを用いることができる。入力デバイスには、タッチパネル118の他に、キーボード等の文字入力デバイスやマウス等のポインティングデバイスを用いることができる。入力制御部114は、タッチパネル118が検出した位置に応じた制御信号をCPU111に送信する。CPU111は、該制御信号に基づいて処理を実行する。CPU111は、これにより情報処理装置101に対するユーザの操作に応じた処理を行う。
【0016】
表示制御部115は、CPU111の制御により、ディスプレイ119に画像を表示させる。表示制御部115は、例えば、ディスプレイ119に、処理に関連付けられたオブジェクトで構成される画像を表示させる。また、アプリケーションソフトウェア(以下、「AP」という。)の実行画面を表示する。画像には、所定の言語のフォントで描画された文字も含まれる。
【0017】
ディスプレイ119の表示画面には、タッチパネル118が一体になるように設けられる。タッチパネル118は、ディスプレイ119の表示を妨げないような透過率で構成される。CPU111は、ディスプレイ119に表示されるオブジェクトの位置と、タッチパネル118で検出されたタッチ位置とから、ユーザが操作(タッチ)したオブジェクトを特定し、該オブジェクトに関連付けられた処理を実行する。このようにタッチパネル118及びディスプレイ119により、ユーザがディスプレイ119に表示された画像を直接的に操作して入力を行うようなGUI(Graphical User Interface)を構成することができる。
【0018】
外部メモリI/F116は、ハードディスク、フレキシブルディスク、CD(Compact Disk)、DVD(Digital Versatile Disc)、メモリカード等の外部メモリ120が装着可能な記憶媒体である。外部メモリI/F116は、CPU111の制御に基づき、装着された外部メモリ120からのデータの読み出しや、当該外部メモリ120へのデータの書き込みを行う。通信I/Fコントローラ117は、ネットワーク102を介して、ネットワーク102に接続された他の装置との通信を制御する。
【0019】
図2は、情報処理装置101の制御部110に実現される表示言語制御のための機能を表す機能ブロック図である。各機能は、CPU111がROM113からコンピュータプログラムを読み出して実行することで形成されるが、ハードウェアとして構成されてもよい。情報処理装置101には、言語メッセージデータ格納部201、言語切替部301、アプリケーション部401、ユーザ情報保持部501、デバイス言語格納部601、フォント制御部701が形成される。なお、
図2の点線はデータ参照、実線は処理の指示、データの格納を意味する。
【0020】
言語メッセージデータ格納部201は、ROM113或いは外部メモリ120に設けられ、APの実行画面に表示するメッセージ(文字列)を表すデータである言語メッセージデータを格納する。言語メッセージデータ格納部201は、言語毎の言語メッセージデータを格納する。
図2の例では、言語メッセージデータ格納部201に、日本語、英語、フランス語、及び台湾語の各言語の言語メッセージデータが格納される。
【0021】
言語切替部301は、表示言語の切り替え指示に応じて、アプリケーション部401及びフォント制御部701に表示言語の切替通知を送信し、指示された言語の言語メッセージデータを言語メッセージデータ格納部201から取得して保持する。そのために言語切替部301は、言語切替通知部302、言語メッセージデータ取得部303、及び言語メッセージデータ展開部304を備える。
【0022】
言語切替通知部302は、例えばアプリケーション部401から表示言語の切替指示を受け付けて、言語メッセージデータ取得部303、アプリケーション部401、フォント制御部701に対して表示言語の切替通知を送信する。表示言語の切替指示は、例えばユーザのログインによる認証処理により送信され、認証したユーザのユーザ情報に含まれる言語情報を含む。表示言語の切替通知は、切替指示に含まれる言語情報を含む。この言語情報で表される言語に表示言語が変更される。
【0023】
言語メッセージデータ取得部303は、言語切替通知部302から送信された切替通知を受信する。言語メッセージデータ取得部303は、受信した切替通知に含まれる言語情報に対応する言語メッセージデータを言語メッセージデータ格納部201から取得し、言語メッセージデータ展開部304にアプリケーション部401が解釈可能な形式で展開する。言語メッセージデータ展開部304は、RAM112に設けられ、言語メッセージデータ取得部303により展開された言語メッセージデータを保持する。
【0024】
アプリケーション部401は、認証アプリケーション(以下、「認証AP」という。)402、ユーザモードアプリケーション(以下、「ユーザモードAP」という。)403、及び一般アプリケーション(以下、「一般AP」という。)404を備える。アプリケーション部401は、外部メモリ120等からアプリケーションプログラムを読み込んで実行する。
【0025】
認証AP402は、ユーザのログイン時の認証処理を行うAPである。認証AP402は、ユーザのログイン時に、タッチパネル118から認証に必要な情報(ユーザID、パスワード等)を取得して、ユーザ情報保持部501が保持するユーザ情報と照合することで認証処理を行う。ユーザ情報保持部501は、ROM113、外部メモリ120、或いはネットワーク102を介して接続されるサーバ等の外部装置に設けられており、ユーザ情報を保持する。ユーザ情報には、情報処理装置101に登録されたユーザのユーザID、パスワード、ユーザの使用する言語を表す言語情報、使用可能なAP等の情報が含まれる。認証AP402は、言語切替通知部302に、認証処理により照合したユーザ情報に含まれる言語情報を含む表示言語の切替指示を送信する。
【0026】
ユーザモードAP403は、情報処理装置101の設定及びユーザの登録を行うAPである。ユーザ情報保持部501にユーザ情報を登録する際には、ユーザモードAP403がタッチパネル118からのユーザ情報の入力を受け付けて、ユーザ情報保持部501に記憶する。これによりユーザの情報処理装置101への登録が行われる。ユーザモードAP403は、デフォルトの表示言語の設定を行う。ユーザモードAP403は、情報処理装置101にデフォルトの表示言語の設定する際に、デバイス言語格納部601に、設定された言語を表す言語情報を送信する。
【0027】
一般AP404は、情報処理装置101が提供する機能を実現するためのAPである。例えば情報処理装置101が複合機であれば、一般AP404は、コピー機能、スキャンした画像の送信機能、スキャンした画像の保存機能等の機能を実現する。一般AP404は、機能毎に用意される。
【0028】
アプリケーション部401は、例えば一般AP404により、表示制御部115を介してディスプレイ119に画像を表示させる。また、アプリケーション部401は、言語切替通知部302からの表示言語の切替通知に含まれる言語情報に応じた文字列描画を、フォント制御部701に指示する。そのためにアプリケーション部401は、言語メッセージデータ展開部304に展開された言語メッセージデータを取得する。アプリケーション部401は、取得した言語メッセージデータに基づいて描画する文字列を生成し、フォント制御部701に生成した描画する文字列等の情報を含む文字列描画の指示を送信する。
【0029】
デバイス言語格納部601は、RAM112或いは外部メモリ120に設けられ、情報処理装置101にデフォルトで設定された表示言語を表す言語情報602及び情報処理装置101が設置されている国を表す国情報603を格納する。言語情報602は、通常、国情報603が示す国の言語を表す。言語情報602は、ユーザモードAP403により設定される。国情報603は、情報処理装置101の設置の際に、設置する地域や国にあわせて、サービスマンによりユーザモードAP403を用いて設定される。国情報603は、情報処理装置101の設置場所等が変更されると、それに応じて変更可能である。
【0030】
フォント制御部701は、表示言語の切り替えのためにフォント言語切替処理部702、ログインユーザ言語保持部703、及びデバイス言語保持部704を備える。フォント制御部701は、フォントを描画するためにフォント描画処理部705、フォント優先リスト制御部706、フォント優先リスト保持部707、及びフォントデータ保持部708を備える。またフォント制御部701は、フォント優先リスト情報キャッシュ部709を備える。
【0031】
フォント言語切替処理部702は、言語切替通知部302から表示言語の切替通知を受信して、受信した切替通知に含まれる言語情報をログインユーザ言語保持部703に保持する。フォント言語切替処理部702は、デバイス言語格納部601から言語情報602を取得して、デバイス言語保持部704に保持する。これにより、ログインユーザ言語保持部703は、切り替える言語を表す言語情報を保持し、デバイス言語保持部704は、情報処理装置101に設定されている言語を表す言語情報602を保持する。ログインユーザ言語保持部703及びデバイス言語保持部704は、RAM112に設けられる。
【0032】
フォント描画処理部705は、アプリケーション部401から文字列描画の指示を受信して、フォント優先リスト制御部706にフォント優先リストの作成を指示する。フォント優先リストは、文字列の描画に使用する言語の優先順位を表す。文字列描画の指示には、描画する文字列の他に、フォント種類を表すフォントファミリ、言語タイプ等の情報が含まれる。フォント描画処理部705は、作成されたフォント優先リストと、フォントデータ保持部708に保持されるフォントデータとに基づいて、文字列描画の指示に基づくフォントで文字列描画を行う。フォントデータ保持部708は、フォント描画処理部705が描画するための各言語のフォントデータを保持する。フォントデータ保持部708は、ROM113、外部メモリ120、或いはRAM112に設けられる。
【0033】
なお、「フォントファミリ」とは、一般的に“Arial”、“MSゴシック”のようなものが挙げられる。本実施形態では後述する
図3の優先リスト1003で優先順に表される「日本語フォント」、「ラテン語フォント」等の言語毎のフォントデータがフォントファミリに相当する。また、情報処理装置101に予め設定されているフォントファミリを「デフォルトフォントファミリ」という。フォントファミリを明示的に指定した場合は、そのフォントを最優先で用いる。
【0034】
フォント優先リスト制御部706は、フォント描画処理部705からフォント優先リストの作成の指示を受信してフォント優先リストを作成する。フォント優先リスト制御部706は、ログインユーザ言語保持部703の言語情報、デバイス言語保持部704の言語情報、及びフォント優先リスト保持部707の情報を取得してフォント優先リストを作成する。ログインユーザ言語保持部703から取得したユーザの言語情報を「ユーザ表示言語」、デバイス言語保持部704から取得した情報処理装置101に設定された言語情報を「デバイス表示言語」という。フォント優先リスト保持部707は、予め設定されたデフォルトのフォント優先リスト(以下、「デフォルトフォント優先リスト」という。)を保持する。フォント優先リスト保持部707は、各々、言語毎のフォントデータの優先順位が異なる複数のデフォルトフォント優先リストを保持する。フォント優先リスト保持部707は、ROM113、外部メモリ120、或いはRAM112に設けられる。
【0035】
フォント優先リスト制御部706は、ユーザ表示言語が表す言語のフォントデータが最優先に設定されているデフォルトフォント優先リストをフォント優先リスト制御部706から取得する。フォント優先リスト制御部706は、取得したデフォルトフォント優先リストの二番目に設定されているフォントデータが、デバイス表示言語が表す言語のフォントデータであるか否かを判断する。デフォルトフォント優先リストの二番目に設定されているフォントデータが、デバイス表示言語が表す言語のフォントデータであれば、フォント優先リスト制御部706は、デフォルトフォント優先リストを最終フォントリストとする。フォント優先リスト制御部706は、最終フォント優先リストをフォント描画処理部705に送信する。デフォルトフォント優先リストの二番目に設定されているフォントデータが、デバイス表示言語が表す言語のフォントデータでなければ、フォント優先リスト制御部706は、デフォルトフォント優先リストの言語の優先順位を入れ替える。フォント優先リスト制御部706は、優先順位の入れ替えで作成した新たなフォント優先リストを最終フォント優先リストとしてフォント描画処理部705に送信する。
【0036】
フォント優先リスト情報キャッシュ部709は、フォント優先リスト制御部706によって作成された最終フォント優先リストを記憶しておく領域であり、RAM112に設けられる。フォント優先リスト情報キャッシュ部709は、最終フォント優先リストを「フォント優先リスト」として記憶する。また、フォント優先リスト情報キャッシュ部709は、最終フォント優先リストを作成した際の「ユーザ表示言語」、「デバイス表示言語」、「言語タイプ」、「フォントファミリ(優先リスト1003)」を記憶する。
【0037】
(運用形態)
図3は、表示言語、言語タイプ、及びフォント優先リストの各テーブルの説明図である。各テーブルは、フォント優先リスト保持部707に保持される。
【0038】
表示言語テーブル801は、表示言語802と言語タイプ803との対応を表す。表示言語802は、情報処理装置101がディスプレイ119に表示可能な言語である。言語タイプ803は、文字コードセットに相当し、日本語であれば「ShiftJIS」、英語であれば「Windows Code Page 1252」、台湾語であれば「Big5」というように、一般的な文字コードセットを示している。ヒンディ語は独自の文字コードセットがないため、便宜的に「Hindi」という独自の文字コードセットを定義している。表示言語テーブル801の表示言語802には一部の言語しか示していないが、実際にはその他の言語も存在する。つまり表示言語テーブル801は、表示言語802がどの文字コードセットに相当するかという一覧を示すものになっている。
【0039】
言語タイプテーブル901は、表示言語テーブル801の言語タイプ803にリンクする言語タイプ902と、言語タイプ902に対応するフォント優先リスト903とから構成される。フォント優先リスト903は、フォント優先リストテーブル1001のフォント優先リスト1002へのリンクとなる。
【0040】
フォント優先リストテーブル1001は、言語タイプテーブル901のフォント優先リスト903にリンクするフォント優先リスト1002と、文字列描画の際に参照する言語毎のフォントデータの優先順位を表す優先リスト1003とから構成される。
図3の優先リスト1003は第1優先から第8優先までしか示していないが、これに限定されるものではない。また、第1優先から第8優先に記述しているフォントは少なくとも1つ以上のフォントデータを含んでいる。フォント優先リストテーブル1001は、デフォルトフォント優先リストである。
【0041】
フォント優先リスト制御部706は、表示言語テーブル801、言語タイプテーブル901、フォント優先リストテーブル1001の順に参照することで、表示言語802に基づいて優先リスト1003を決めることができる。例えば、フォント優先リスト制御部706は、ログインユーザ言語保持部703が保持する言語情報で表される言語により、表示言語802を特定し、これに対応するフォント優先リスト1002をデフォルトフォント優先リストとして特定する。通常は、アプリケーション部401から指示される言語タイプがUnicodeであり、その場合、フォント優先リスト制御部706は、表示言語802の中から言語タイプ902を決め、優先リスト1003を決定する。Webページのようにコンテンツ中で文字設定を指定された場合には、他の言語タイプ(例えばShiftJIS)を指定することも可能である。この場合、フォント優先リスト制御部706は、指定された言語タイプから直接、優先リストを決定する。
【0042】
図4は、表示言語の切り替え処理を表すフローチャートである。フォント制御部701のフォント言語切替処理部702が、言語切替部301の言語切替通知部302から表示言語の切替通知を受信したときに
図4のフローチャートの処理を実行する。
【0043】
フォント言語切替処理部702は、言語切替通知部302から、ログインしたユーザのユーザ情報に基づく言語情報を含む表示言語の切替通知を受信する(S101)。フォント言語切替処理部702は、切替通知の受信を契機に、デバイス言語格納部601から情報処理装置101に設定されている表示言語を表す言語情報602を取得する(S102)。フォント言語切替処理部702は、言語切替通知部302から受信した切替通知に含まれる言語情報をログインユーザ言語保持部703に保持する(S103)。フォント言語切替処理部702は、デバイス言語格納部601から取得した言語情報602をデバイス言語保持部704に保持する(S104)。
【0044】
このようにフォント言語切替処理部702は、言語切替通知部302から表示言語の切替通知を受信すると、ログインユーザ言語保持部703に認証されたユーザのユーザ情報に基づく言語情報を記憶する。またフォント言語切替処理部702は、デバイス言語格納部601に、情報処理装置101に設定されている言語情報602を記憶する。
【0045】
図5は、文字列の描画処理を表すフローチャートである。フォント制御部701のフォント描画処理部705が、アプリケーション部401から文字列描画の指示を受信したときに
図5のフローチャートの処理を実行する。
【0046】
フォント描画処理部705は、アプリケーション部401から文字列描画の指示を受け付けると、フォント優先リスト制御部706にフォント優先リストの作成を指示する(S201)。フォント優先リストの作成が指示されたフォント優先リスト制御部706は、フォント優先リスト保持部707からフォント優先リストテーブル1001の優先リスト1003に含まれるフォントデータの個数Nを取得する(S202)。本実施形態では、個数N=8(第1優先〜第8優先)とするが、個数Nは、リストアップするフォントデータの数に応じて動的に変わる。フォント優先リスト制御部706は、取得したフォントデータの個数Nで、最終的に使用する最終フォント優先リストを初期化する(S203)。
【0047】
フォント優先リスト制御部706は、フォント優先リスト情報キャッシュ部709に記憶(キャッシュ)されたフォント優先リストが使用可能か否かを判定する(S204)。フォント優先リスト制御部706は、この判定のために、ユーザ表示言語及びデバイス表示言語を取得する。フォント優先リスト制御部706は、取得したユーザ表示言語及びデバイス表示言語がフォント優先リスト情報キャッシュ部709に記憶されたユーザ表示言語及びデバイス表示言語と一致するか否かを判断する。また、フォント優先リスト制御部706は、アプリケーション部401から指示された言語タイプ、フォントファミリが、フォント優先リスト情報キャッシュ部709に記憶されたフォント優先リストと一致するか否かを判断する。これらの情報が一致するか否かにより、フォント優先リスト制御部706は、フォント優先リスト情報キャッシュ部709に記憶されたフォント優先リストが使用可能か否かを判定する。フォント優先リスト制御部706は、キャッシュされたフォント優先リストが使用可能であれば(S204:Y)、最終フォント優先リストに、キャッシュされているフォント優先リストをすべてコピーする(S205)。
【0048】
フォント優先リスト制御部706は、キャッシュされたフォント優先リストが使用不可であれば(S204:N)、アプリケーション部401から指示された言語タイプがUnicodeであるか否かを判定する(S206)。言語タイプがUnicodeであれば(S206:Y)、フォント優先リスト制御部706は、ユーザ表示言語に対応する言語タイプを表示言語テーブル801から決定してベース言語タイプとする(S207)。言語タイプがUnicodeでなければ(S206:N)、フォント優先リスト制御部706は、アプリケーション部401から指示された言語タイプをベース言語タイプに決定する(S208)。
【0049】
ベース言語タイプの決定後にフォント優先リスト制御部706は、デバイス言語保持部704に保持するデバイス表示言語を用いて、表示言語テーブル801により言語タイプ(デバイス言語タイプ)を決定する(S209)。デバイス言語タイプの決定後にフォント優先リスト制御部706は、アプリケーション部401の指示からフォントファミリを取得する(S210)。フォント優先リスト制御部706は、最終フォント優先リストの並び替え処理を行う(S211)。最終フォント優先リストの並び替え処理の詳細については後述する。
【0050】
最終フォント優先リストの並び替え処理後にフォント優先リスト制御部706は、フォント優先リスト情報キャッシュ部709にキャッシュされる情報を更新する(S212)。更新される情報の項目は、ユーザ表示言語、デバイス表示言語、アプリ言語タイプ、フォントファミリ、最終フォント優先リスト等がある。
【0051】
フォント描画処理部705は、生成された最終フォント優先リストに定義されているフォントデータを設定する(S213)。設定されるフォントデータは、1以上のフォントデータを含み、また例えば、日本語であれば全角フォント及び半角フォント、アラビア語であればアラビア語及びローマ字、というように複数のフォントデータを含むことも可能である。フォント描画処理部705は、フォントデータが重複しないように設定する。フォント描画処理部705は、アプリケーション部401から指示のあった文字列を1文字ずつ、設定したフォントデータを順に検索して、該当するコードのフォントデータを用いて描画して処理を終了する(S214)。
【0052】
図6は、
図5のステップS211の最終フォント優先リストの並び替え処理を表すフローチャートである。
【0053】
フォント優先リスト制御部706は、最終フォント優先リストを生成するためのカウンタの値iを「1」に初期化する(S301)。また、フォント優先リスト制御部706は、コピー元となるベース言語タイプに紐付いたデフォルトフォント優先リストを順に参照するためのカウンタの値nを「1」に初期化する(S302)。
【0054】
フォント優先リスト制御部706は、アプリケーション部401からの文字列描画の指示に含まれるフォントファミリの一番目が情報処理装置101に設定されるデフォルトの表示言語(以下、「デフォルトフォント」という。)か否かを判定する(S303)。フォント優先リスト制御部706は、文字列描画の指示に含まれるフォントファミリの一番目が、デフォルトフォント優先リストの一番目とフォントデータと同じか否かにより、この判定を行う。デフォルトフォントでなければ(S303:N)、フォント優先リスト制御部706は、アプリケーション部401から指示のあったフォントファミリを最終フォント優先リストに反映する(S304)。
【0055】
デフォルトフォントであれば(S303:Y)、フォント優先リスト制御部706は、ベース言語タイプとデバイス言語タイプとが一致するか否かを判定する(S305)。一致しなければ(S305:N)、フォント優先リスト制御部706は、最終フォント優先リストのi番目(i=1)に、ベース言語タイプに紐付くデフォルトフォント優先リストのn番目(n=1)のフォントデータをコピーする(S306)。コピー後にフォント優先リスト制御部706は、カウンタの値i、nをそれぞれ1ずつインクリメントする(S307)。
【0056】
フォント優先リスト制御部706は、最終フォント優先リストのi番目(i=2)に、デバイス言語タイプに紐付くデフォルトフォント優先リストの一番目のフォントデータをコピーする(S308)。コピー後にフォント優先リスト制御部706は、カウンタの値iを1インクリメントする(S309)。
【0057】
フォント優先リスト制御部706は、最終フォント優先リストを生成するためのカウンタの値iが、最終フォント優先リストの個数Nを超えているか否かを判定する(S310)。超えていれば(S310:Y)、フォント優先リスト制御部706は、フォント優先リストの並び替えを終了する。超えていなければ(S310:N)、フォント優先リスト制御部706は、ベース言語タイプに紐付くデフォルトフォント優先リストのn番目が既に最終フォント優先リストに存在するか否かを判定する(S311)。存在すれば(S311:Y)、フォント優先リスト制御部706は、カウンタの値nを1インクリメントする(S314)。存在しなければ(S311:N)、フォント優先リスト制御部706は、最終フォント優先リストのi番目にベース言語タイプに紐づくデフォルトフォント優先リストのn番目をコピーする(S312)。また、フォント優先リスト制御部706は、カウンタの値i、nをそれぞれ1ずつインクリメントする(S313、S314)。
【0058】
フォント優先リスト制御部706は、カウンタの値nが個数Nを超えているか否か判定する(S315)。超えていなければ(S315:N)、フォント優先リスト制御部706は、再度、最終フォント優先リストを生成するためのカウンタの値iが、最終フォント優先リストの個数Nを超えているか否かを判定する(S310)。超えていれば(S315:Y)、フォント優先リスト制御部706は、フォント優先リストの並び替えを終了する。カウンタの値nが個数Nを超えるまで、フォント優先リスト制御部706は、ステップS310〜S315の処理を繰り返す。
【0059】
図7は、
図6のステップS304のフォントファミリを最終フォント優先リストに反映する処理を表すフローチャートである。
【0060】
フォント優先リスト制御部706は、アプリケーション部401からの文字列描画の指示に含まれるフォントファミリの数Kを取得する(S401)。フォント優先リスト制御部706は、文字列描画の指示に含まれるフォントファミリを参照するためのカウンタの値kを「1」に初期化する(S402)。
【0061】
フォント優先リスト制御部706は、最終フォント優先リストのカウンタの値iがフォント優先リストの個数Nを超えていないか否かを判定する(S403)。超えていれば(S403:Y)、フォント優先リスト制御部706は、フォントファミリの最終フォント優先リストへの反映処理を終了する。
【0062】
超えていなければ(S403:N)、フォント優先リスト制御部706は、フォントファミリのk番目がデフォルトフォントであるか否かを判定する(S404)。デフォルトフォントであれば(S404:Y)、フォント優先リスト制御部706は、カウンタの値kを1インクリメントする(S408)。デフォルトフォントでなければ(S404:N)、フォント優先リスト制御部706は、フォントファミリのk番目が、既に最終フォント優先リストに存在するか否かを判定する(S405)。存在すれば(S405:Y)フォント優先リスト制御部706は、カウンタの値kを1インクリメントする(S408)。
【0063】
存在しなければ(S405:N)、フォント優先リスト制御部706は、最終フォント優先リストのi番目に、アプリケーション部401から指示されたフォントファミリのk番目のフォントデータをコピーする(S406)。その後、フォント優先リスト制御部706は、カウンタの値i、nをそれぞれ1ずつインクリメントする(S407、S408)。
【0064】
フォント優先リスト制御部706は、カウンタの値kがフォントファミリの数Kを超えているか否か判定する(S409)。超えていなければ(S409:N)、フォント優先リスト制御部706は、再度、最終フォント優先リストのカウンタの値iがフォント優先リストの個数Nを超えているか否かを判定する(S403)。超えていれば(S409:Y)、フォント優先リスト制御部706は、フォントファミリの最終フォント優先リストへの反映処理を終了する。カウンタの値kがフォントファミリの数Kを超えるまで、フォント優先リスト制御部706は、ステップS403以降の処理を繰り返す。
【0065】
図8は、ユーザ表示言語が英語、デバイス表示言語が韓国語、アプリケーション部401から指示される言語タイプがUnicode、フォントファミリがデフォルトフォントの場合に、優先順が並び替えられた最終フォント優先リストの例示図である。
【0066】
図5の処理の実行前のデフォルトフォント優先リストは、
図3に示すフォント優先リストテーブル1001に示す通りであり、フォント優先リスト保持部707に保持されている。
図5の処理を実行することで、フォント優先リストテーブル1001は、
図8に示すフォント優先リストテーブル1101に並び替えられる。フォント優先リストテーブル1101は、処理によりフォント優先リスト1102の「ラテンフォント優先リスト」の第2優先フォントが「韓国語フォント」になり、第3優先フォント以降の優先順位が1つずつずれる。また、
図6のステップS311の判定により、同じ言語のフォントが重複してフォント優先リストに追加されないようになっている。
【0067】
図9は、情報処理装置101のディスプレイ119に表示される文書一覧の例示図である。ここでは、ユーザ表示言語が英語、デバイス表示言語が韓国語である。文書一覧1201は、
図3の優先順位変更前のデフォルトフォント優先リストを使用して表示されており、漢字は日本語のフォントデータを使って表示される。文書一覧1202は、
図8の優先順位変更後の最終フォント優先リストを使用して表示されており、漢字は韓国語のフォントデータを使って表示される。文書一覧1201、1202で示す通り、漢字の字形が異なるものとなる。
【0068】
以上のように、ユーザ表示言語が最優先言語となるだけでなく、ログインユーザが情報処理装置101を使用している環境(設定された言語)に応じて、次に優先される言語が決定される。そのために、よりユーザの環境にあった多言語表示が可能となる。
【0069】
(他の運用形態)
図10は、
図3のテーブルの変形例の説明図である。
図3では、表示言語802と言語タイプ803との関係を表す表示言語テーブル801を用いているが、
図10では、国1302と言語タイプ1303との関係を表す国テーブル1301を用いる。言語タイプテーブル901及びフォント優先リストテーブル1001は、
図3と
図10とで同様のものである。国テーブル1301により、国情報603(
図2参照)からフォント優先リストを作成可能となる。国1302は、情報処理装置101が設置される国を表す。
【0070】
図11は、
図6の最終フォント優先リストの並び替え処理を表すフローチャートの変形例示図である。
図11では、
図6のステップS309の処理とS310の処理との間に処理が追加される。
図11の他の処理は
図6の処理と同様であるので説明を省略する。
図11の処理では、
図10の国テーブル1301を
図3の表示言語テーブル801の代わりに用い、表示言語802の代わりに国1302を用いる。
【0071】
フォント優先リスト制御部706は、国1302が示す国コードに紐付けられた言語タイプ803がベース言語タイプ又はデバイス言語タイプと一致するかを判定する(S501)。一致すれば(S501:Y)、フォント優先リスト制御部706は、ステップS310以降の処理を実行する。一致しなければ(S501:N)、フォント優先リスト制御部706は、最終フォントリストのi番目(カウンタの値i=3)に、国コードに紐づく言語タイプのデフォルトフォント優先リストの一番目をコピーする(S502)。フォント優先リスト制御部706は、カウンタの値iをインクリメントして(S503)、ステップS310以降の処理を実行する。
【0072】
以上のような処理により、ユーザ表示言語、デバイス表示言語、情報処理装置101に設定されている国コードに紐づく表示言語の順でフォントが表示される。そのために、さらにユーザの環境にあった多言語表示が可能となる。