(57)【要約】【課題】効率的に文字描画を行うことができる情報処理装置を提供する。【解決手段】情報処理装置は、複数の文字の組み合わせを構成する各文字の形状情報を結合することで１つの結合形状情報を生成する形状情報結合部２０５と、複数の文字の組み合わせと結合形状情報とを対応付けて、キャッシュメモリにキャッシュするキャッシュ処理部２０２と、所定の文字列を構成する各文字のうち、キャッシュメモリにキャッシュされた複数の文字の組み合わせに含まれる文字の形状情報として結合形状情報を取得し、キャッシュメモリにキャッシュされた複数の文字の組み合わせに含まれない文字の形状情報を所定のフォントデータから取得する形状情報取得部２０３と、形状情報取得部２０３が取得した形状情報および結合形状情報に基づいて文字列を描画する描画処理部２０６と、を備える。【選択図】図２
2019152731.tif 000002
【特許請求の範囲】
【請求項１】
複数の文字の組み合わせを構成する各文字の形状情報を結合することで１つの結合形状情報を生成する形状情報結合手段と、
前記複数の文字の組み合わせと前記結合形状情報とを対応付けて、所定のキャッシュメモリにキャッシュするキャッシュ処理手段と、
所定の文字列を構成する各文字のうち、前記キャッシュメモリにキャッシュされた前記複数の文字の組み合わせに含まれる文字の形状情報として前記結合形状情報を取得し、前記キャッシュメモリにキャッシュされた前記複数の文字の組み合わせに含まれない文字の形状情報を所定のフォントデータから取得する形状情報取得手段と、
前記形状情報取得手段が取得した前記形状情報および前記結合形状情報に基づいて前記文字列を描画する描画処理手段と、を備えることを特徴とする、
情報処理装置。
【請求項２】
前記所定の文字列を構成する連続する複数の文字の組み合わせが形状情報を結合する文字の組み合わせであるか否かを判別する結合文字判別手段をさらに備え、
前記形状情報結合手段は、前記連続する複数の文字の組み合わせが形状情報を結合する文字の組み合わせである場合に、該連続する複数の文字の組み合わせを構成する各文字の形状情報を結合することで新たな結合形状情報を生成し、
前記キャッシュ処理手段は、生成された新たな結合形状情報と前記連続する複数の文字の組み合わせとを対応付けて、前記キャッシュメモリにキャッシュすることを特徴とする、
請求項１記載の情報処理装置。
【請求項３】
前記結合文字判別手段は、１つの文字として扱われる前記連続する複数の文字の組み合わせを、形状情報を結合する文字の組み合わせであると判別することを特徴とする、
請求項２記載の情報処理装置。
【請求項４】
前記結合文字判別手段は、直前の文字に依存して次の文字の配置位置及び字形の少なくとも一方が変更される文字の組み合わせを、形状情報を結合する文字の組み合わせであると判別することを特徴とする、
請求項２記載の情報処理装置。
【請求項５】
前記結合文字判別手段は、前記所定の文字列から抽出された文字の組み合わせのうち、所定の回以上抽出された文字の組み合わせを、形状情報を結合する文字の組み合わせであると判別することを特徴とする
請求項２記載の情報処理装置。
【請求項６】
前記形状情報結合手段は、前記フォントデータに応じて、形状情報を結合するか否かを判別することを特徴とする、
請求項１〜５のいずれか１項記載の情報処理装置。
【請求項７】
前記形状情報結合手段は、文字間調整に関する設定に応じて否かを判別することを特徴とする、
請求項６記載の情報処理装置。
【請求項８】
前記キャッシュ処理手段は、前記キャッシュメモリにキャッシュ不可能な場合に、すでにキャッシュされている前記複数の文字の組み合わせと前記結合形状情報とを破棄して、新たな複数の文字の組み合わせと結合形状情報とをキャッシュすることを特徴とする、
請求項１〜７のいずれか１項記載の情報処理装置。
【請求項９】
前記キャッシュ処理手段は、すでにキャッシュされている前記複数の文字の組み合わせと前記結合形状情報とのうち、組み合わせの文字数が少ないものを破棄することを特徴とする、
請求項８記載の情報処理装置。
【請求項１０】
所定の情報処理装置により実行される方法であって、
複数の文字の組み合わせを構成する各文字の形状情報を結合することで１つの結合形状情報を生成して、前記複数の文字の組み合わせと前記結合形状情報とを対応付けて、所定のキャッシュメモリにキャッシュしておき、
所定の文字列を構成する各文字のうち、前記キャッシュメモリにキャッシュされた前記複数の文字の組み合わせに含まれる文字の形状情報として前記結合形状情報を取得し、前記キャッシュメモリにキャッシュされた前記複数の文字の組み合わせに含まれない文字の形状情報を所定のフォントデータから取得し、
前記形状情報および前記結合形状情報に基づいて前記文字列を描画することを特徴とする、
文字の描画方法。
【請求項１１】
所定のコンピュータを、
複数の文字の組み合わせを構成する各文字の形状情報を結合することで１つの結合形状情報を生成する形状情報結合手段、
前記複数の文字の組み合わせと前記結合形状情報とを対応付けて、所定のキャッシュメモリにキャッシュするキャッシュ処理手段、
所定の文字列を構成する各文字のうち、前記キャッシュメモリにキャッシュされた前記複数の文字の組み合わせに含まれる文字の形状情報として前記結合形状情報を取得し、前記キャッシュメモリにキャッシュされた前記複数の文字の組み合わせに含まれない文字の形状情報を所定のフォントデータから取得する形状情報取得手段、
前記形状情報取得手段が取得した前記形状情報および前記結合形状情報に基づいて前記文字列を描画する描画処理手段、
として機能させるためのコンピュータプログラム。
【請求項１２】
請求項１１記載のコンピュータプログラムを記憶する、コンピュータにより読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置による文字の描画技術に関する。
【背景技術】
【０００２】
情報処理装置の多機能化や表示装置の高解像度化により、表示装置は、多くの文字を表示することが可能となっている。情報処理装置は、多言語対応も進んでいる。多言語を表示するために、情報処理装置は、言語固有の複雑なレイアウト規則に従った処理を行って文字列を表示させなければならない。そのために情報処理装置の一層の処理速度向上が求められる。通常、情報処理装置は、フォントデータやフォントライブラリから文字の形状を表す形状情報を取得して描画する。文字を高速に描画するために、例えば文字の登場頻度などに応じて形状情報をキャッシュしておき、再登場時にキャッシュした形状情報を取得して高速に該文字を描画する方法がある。
【０００３】
文字の形状がアウトラインフォントのようなベクター形式で表される場合、文字列を構成する各文字の形状情報を全て結合し、１つのベクターデータとして扱う方法がある。各文字の形状情報を１つのベクターデータとすることで、形状情報を読み出す描画命令が１回で済む。そのために、より高速な処理が実現される（特許文献１）。また、結合した形状情報を保持しておき、文字に様々なエフェクトを適用する際に、結合した形状情報を使用することができる（特許文献２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−２２８０２１号公報
【特許文献２】特表２００９−５２７８２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
各文字の形状情報をキャッシュしておく従来の方法では、形状情報を描画するための描画命令が文字毎に必要になる。複数の文字の形状情報を結合して１つのベクターデータとする場合、同じ文字列を再度描画する際に、各文字の形状情報を再度取得して結合する処理が必要となる。言語によっては、固有の複雑なレイアウト規則に従って処理を行わなければ正しい形状情報が取得できないため、この言語固有の処理が遅くなる。結合した形状情報を保持する場合、入力された文字列と全て一致した文字列が再度入力されなければキャッシュした形状情報が使用できない。また、キャッシュのために、メモリの使用量が多くなる。そのために、形状情報を取得するためにフォントデータやフォントライブラリにアクセスする回数や、言語固有のレイアウト規則に従う処理の回数を低減させて、効率的に文字描画を行う技術が求められている。
【０００６】
本発明は、上記課題に鑑みてなされたものであり、効率的に文字描画を行うことができる情報処理装置を提供することを主たる目的とする。
【課題を解決するための手段】
【０００７】
本発明の情報処理装置は、複数の文字の組み合わせを構成する各文字の形状情報を結合することで１つの結合形状情報を生成する形状情報結合手段と、前記複数の文字の組み合わせと前記結合形状情報とを対応付けて、所定のキャッシュメモリにキャッシュするキャッシュ処理手段と、所定の文字列を構成する各文字のうち、前記キャッシュメモリにキャッシュされた前記複数の文字の組み合わせに含まれる文字の形状情報として前記結合形状情報を取得し、前記キャッシュメモリにキャッシュされた前記複数の文字の組み合わせに含まれない文字の形状情報を所定のフォントデータから取得する形状情報取得手段と、前記形状情報取得手段が取得した前記形状情報および前記結合形状情報に基づいて前記文字列を描画する描画処理手段と、を備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、従来よりも効率的な文字描画を行うことができる。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置のハードウェア構成図。
【図２】情報処理装置の機能ブロック図。
【図３】文字の描画処理を表すフローチャート。
【図４】（ａ）〜（ｄ）は、形状情報を複数の結合する文字の組み合わせの説明図。
【図５】（ａ）〜（ｅ）は、形状情報を複数の結合する文字の組み合わせの説明図。
【図６】キャッシュデータの説明図。
【図７】（ａ）、（ｂ）は、レイアウト規則の説明図。
【図８】文字列リストの例示図。
【図９】文字列リストに基づくキャッシュデータの生成処理を表すフローチャート。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施形態は、特許請求の範囲に関る本発明を限定するものではなく、また本実施形態で説明されている特徴の組み合わせの全てが、本発明の解決手段に必須のものとは限らない。
【００１１】
図１は、本実施形態の情報処理装置のハードウェア構成図である。情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１、ＲＯＭ（Read Only Memory）１０２、及びＲＡＭ（Random Access Memory）１０３を備えるコンピュータシステムである。また、情報処理装置１００は、入力ユニット１０４、描画ユニット１０５、表示ユニット１０６、ストレージ１０７、及びキャッシュメモリ１０８を備える。ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、入力ユニット１０４、描画ユニット１０５、表示ユニット１０６、及びストレージ１０７は、システムバス１０９により相互に通信可能に接続される。情報処理装置１００は、表示装置１１０が接続される。キャッシュメモリ１０８は、ＣＰＵ１０１に接続される。
【００１２】
ＣＰＵ１０１は、ＲＯＭ１０２及びストレージ１０７の少なくとも一方に格納されるコンピュータプログラムを、ＲＡＭ１０３を作業領域に用いて実行することで、情報処理装置１００全体の動作を制御する。ＣＰＵ１０１は、後述する機能ブロックによる処理の主体となる。ＲＯＭ１０２は、変更を必要としないプログラムやパラメータを格納する読み取り専用のメモリである。ＲＡＭ１０３は、プログラムやデータを一時記憶する書き換え可能なメモリである。
【００１３】
入力ユニット１０４は、キーボード、ポインティングデバイス、タッチパネル、音声入力用のマイクなどのユーザインタフェースである。ユーザは、入力ユニット１０４により情報処理装置１００への入力操作を行うことができる。描画ユニット１０５は、描画用のバッファを備える。描画ユニット１０５は、表示ユニット１０６により表示される画像をバッファに描画する。描画ユニット１０５は、例えばＲＯＭ１０２、ＲＡＭ１０３などに格納された文字列情報、あるいは入力ユニット１０４から入力された文字列情報に応じて、バッファに文字列の描画を行う。表示ユニット１０６は、描画ユニット１０５がバッファに描画した画像を、グラフィックスやユーザインタフェースとして表示装置１１０に表示させる。
【００１４】
ストレージ１０７は、情報処理装置１００に内蔵あるいは外付けされる記憶装置である。ストレージ１０７は、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、メモリカード、ＤＶＤ、ＳＳＤ（Solid State Drive）などである。キャッシュメモリ１０８は、処理頻度の高いデータを記憶（キャッシュ）するためのメモリである。キャッシュメモリ１０８は、ＣＰＵ１０１によるアクセスがＲＡＭ１０３よりも高速に行われる。キャッシュメモリ１０８は、ＣＰＵ１０１に内蔵されていてもよい。
【００１５】
図２は、情報処理装置１００の機能ブロック図である。ここでは、情報処理装置１００が表示装置１１０に文字を表示するための機能について説明する。そのために本実施形態の情報処理装置１００は、文字列取得部２０１、キャッシュ処理部２０２、形状情報取得部２０３、結合文字判別部２０４、形状情報結合部２０５、及び描画処理部２０６として機能する。各機能ブロックは、例えばＣＰＵ１０１が所定のコンピュータプログラムを実行することで実現される。なお、少なくとも一つの機能ブロックがハードウェアにより実現されてもよい。
【００１６】
各機能ブロックの処理の詳細を、図３のフローチャートを用いて説明する。図３のフローチャートは、文字の描画処理を表す。この処理は、入力された文字列に含まれる文字の組み合わせに応じて、各文字の形状情報を結合して文字を描画する処理である。形状情報は、文字の形状を表す文字固有の情報である。文字列の組み合わせは、例えば単語や、文節の他に、後述するような１つの文字として扱われる連続した複数の文字の組み合わせである。この処理は、例えばユーザが入力ユニット１０４から文字列を入力することで開始される。
【００１７】
文字列取得部２０１は、入力ユニット１０４から、入力された文字列を表す文字列情報を取得する（Ｓ３０１）。本実施形態では、文字列を構成する各文字を、Ｕｎｉｃｏｄｅのコードポイントを識別情報として識別する例を説明するが、各文字を一意に識別できれば、文字はどのような文字コードで表されてもよい。ＣＰＵ１０１は、取得した文字列について、以降の処理を１文字ずつ順に行う。
【００１８】
キャッシュ処理部２０２は、処理中の文字を含む文字の組み合わせに該当する形状情報が、キャッシュメモリ１０８に既にキャッシュ済みであるか否かを判別する（Ｓ３０２）。キャッシュメモリ１０８にキャッシュ済みであるか否かの判別の詳細は後述する。
【００１９】
形状情報がキャッシュされていない場合（Ｓ３０２：N）、形状情報取得部２０３は、処理中の文字の形状情報を取得する（Ｓ３０３）。形状情報取得部２０３は、例えばＲＯＭ１０２、ＲＡＭ１０３、あるいはストレージ１０７に展開されたフォントデータにアクセスして、該当する文字の形状情報を取得する。形状情報は、少なくとも文字の字形情報及び文字送り幅を含む。本実施形態では、字形情報をアウトラインフォントのパスオブジェクトとして説明するが、ビットマップフォントのような画像情報であってもよい。
【００２０】
結合文字判別部２０４は、処理中の文字を含む文字の組み合わせが、形状情報を結合する文字の組み合わせであるか否かを判別する（Ｓ３０４）。本実施形態では、連続する複数の文字の各形状情報を結合した場合に、それが１つの文字として扱われるような形状を表せば、各文字の形状情報を結合して１つの形状情報（結合形状情報）を生成する。このような文字が、形状情報を結合する文字の組み合わせである。図４、図５は、形状情報を結合する複数の文字の組み合わせの説明図である。
【００２１】
図４は、連続する複数の文字の組み合わせで１文字として扱われるラテン文字を例示する。図４（ａ）は、文字「Ａ」と文字「ウムラウト」との組み合わせで文字「Ａウムラウト」が表せることを示している。フォントデータによっては、文字「Ａウムラウト」に該当する形状情報が格納されていない場合がある。この場合、図４（ａ）に示すように、２つの文字の組み合わせで１つの文字が表現される。
図４（ｂ）は、文字「Ａ」の形状情報を示す。グリフ原点４０１を基準にして文字「Ａ」の字形４０２がレイアウトされている。文字送り幅４０３は、グリフ原点４０１から次の文字（ここでは文字「ウムラウト」となる）のグリフ原点までの相対位置を表している。
図４（ｃ）は、文字「ウムラウト」の形状情報を示す。グリフ原点４０４に対して左側に文字「ウムラウト」の字形４０５がレイアウトされている。文字「ウムラウト」の文字送り幅はゼロである。文字「ウムラウト」の次に続く文字のグリフ原点は、文字「ウムラウト」のグリフ原点４０４と重なる位置に配置される。
図４（ｄ）は、文字「Ａ」の文字送り幅４０３に基づいて、文字「Ａ」に続けて文字「ウムラウト」を配置した状態を示す。文字「Ａ」のグリフ原点４０１から文字送り幅４０３だけ右の位置に、文字「ウムラウト」のグリフ原点４０４がレイアウトされる。そのため、グリフ原点４０４より左側にレイアウトされている文字「ウムラウト」の字形４０５が、文字「Ａ」の字形４０２の上部に配置される。これにより、文字「Ａウムラウト」の形状が表される。
【００２２】
図５は、連続する複数の文字の組み合わせで１文字として扱われるタイ語の文字を例示する。図５（ａ）は、ＵｎｉｃｏｄｅによるコードポイントＵ＋０Ｅ０Ｄ、Ｕ＋０Ｅ３５、Ｕ＋０Ｅ４８で表される３つの文字の組み合わせによって表される文字を示している。
図５（ｂ）は、コードポイントＵ＋０Ｅ０Ｄで表される先頭文字の形状情報を示す。コードポイントＵ＋０Ｅ０Ｄで表される先頭文字は、グリフ原点５０１を基準にして字形５０２がレイアウトされ、文字送り幅５０３を有している。
図５（ｃ）は、コードポイントＵ＋０Ｅ３５で表される２番目の文字の形状情報を示す。コードポイントＵ＋０Ｅ３５で表される２番目の文字は、グリフ原点５０４に対して左側に字形５０５がレイアウトされる。文字送り幅はゼロである。
図５（ｄ）は、コードポイントＵ＋０Ｅ４８で表される３番目の文字の形状情報を示す。コードポイントＵ＋０Ｅ４８で表される３番目の文字は、グリフ原点５０６に対して左側に字形５０７がレイアウトされる。文字送り幅はゼロである。
図５（ｅ）は、図５（ｂ）、５（ｃ）、５（ｄ）で示された３文字の形状情報を、先頭文字の形状情報の文字送り幅５０３に基づいて配置した状態を示す。先頭文字の字形５０２の上部に重なるように２番目の文字の字形５０５が配置され、さらにその上に３番目の文字の字形５０７が配置されている。これにより、図５（ａ）の文字の形状が表される。
【００２３】
図４、図５で説明したように、連続する複数の文字の組み合わせで１文字として扱われる文字は、２番目以降の文字でグリフ原点に対して左側に字形がレイアウトされ、且つ文字送り幅がゼロとなる文字が続く必要がある。結合文字判別部２０４は、このような複数の文字の組み合わせを、形状情報を結合する文字の組み合わせとして判別するが、形状情報を結合する文字の組み合わせはこれに限定しない。例えば、アラビア語やヒンディ語などの複雑系言語と呼ばれる言語は、直前の文字に依存して次の文字の配置位置及び字形の少なくとも一方が変更されるような言語固有のレイアウト規則がある。レイアウト規則は、一般的にフォントデータまたは情報処理装置１００側に保持されている。
【００２４】
形状情報取得部２０３は、形状情報を取得する際にレイアウト規則を解析し、その規則に従った正しい形状情報を取得する。しかし、レイアウト規則の解析は、処理時間がかかる。そのために結合文字判別部２０４は、レイアウト規則によって配置位置や字形が変更された文字の組み合わせを、形状情報を結合してキャッシュする複数の文字の組み合わせと判別してもよい。
【００２５】
アラビア語やペルシャ語などは、同じ文字であっても、文字列中の位置（文頭、文中、文末など）によって字形がそれぞれ異なるという複雑なレイアウト規則が存在する。この場合、文字列を構成する文字のほとんどがレイアウト規則による字形変更の対象となり、キャッシュする文字の組み合わせが膨大になる。そのために結合文字判別部２０４は、組み合わせる文字数と、結合する形状情報の数とが異なる文字の組み合わせだけを、形状情報を結合する文字の組み合わせとして判別してもよい。
さらに、結合文字判別部２０４は、形状情報を結合する文字の組み合わせを予め設定しておき、該文字の組み合わせと比較して一致しているか否かにより形状情報を結合する文字の組み合わせとして判別してもよい。
【００２６】
形状情報を結合する文字の組み合わせである場合（Ｓ３０４：Y）、形状情報結合部２０５は、文字の組み合わせを構成する各文字の形状情報を結合して新たな形状情報を生成する（Ｓ３０５）。一般的に、アウトラインフォントで字形を表すパスオブジェクトは、１以上の閉図形で構成されている。１つの文字が複数の閉図形で構成される場合、各閉図形はサブパスとして定義され、複数の閉図形が１つのパスオブジェクトとみなされる。形状情報結合部２０５は、各文字の字形を表すパスオブジェクトをそれぞれ１つの閉図形とみなし、サブパスとして定義することで、結合後の字形を１つのパスオブジェクトとする。２番目以降の文字の文字送り幅がゼロであるため、結合後の字形の文字送り幅は先頭文字の文字送り幅となる。
【００２７】
フォントデータは、文字同士の間隔を調整するためのカーニング情報や、字形を表すパスオブジェクトを描画する際に最適化を行うためのヒンティング情報を保持することがある。これらの情報を有効にするか無効にするかによって、同じ文字の組み合わせであっても結合後の形状情報が変化することがある。そのため、カーニングやヒンティングなどの文字間調整に関する設定がなされている場合や、フォントデータにこれらの情報が含まれている場合、形状情報結合部２０５は、形状情報を結合しなくともよい。
【００２８】
キャッシュ処理部２０２は、形状情報結合部２０５で結合された形状情報をキャッシュメモリ１０８にキャッシュ可能であるか否かを判別する（Ｓ３０６）。キャッシュ処理部２０２は、キャッシュデータをキャッシュメモリ１０８に格納して管理する。キャッシュ処理部２０２は、キャッシュデータを、少なくとも、結合させる文字の組み合わせと、結合後の形状情報（字形情報と文字送り幅を含む）とを対応付けて管理する必要がある。
【００２９】
図６は、キャッシュデータの説明図である。キャッシュデータは、結合させる文字の組み合わせ、結合させる文字数、及び結合後の形状情報（字形情報、文字送り幅）が対応付けられたアイテムのリストである。結合させる文字の組み合わせは、ここではＵｎｉｃｏｄｅのコードポイントを識別情報として用い、識別情報の配列として表される。結合後の形状情報の字形情報は、例えば、パスやサブパスの開始点、直線、曲線などを表すコマンドと、それらに対応する座標列で構成されるパスオブジェクトである。キャッシュ処理部２０２は、例えばキャッシュするデータサイズや、組み合わせる文字数により、キャッシュ可能であるか否かを判別する。ここでは、キャッシュ処理部２０２は、組み合わせる文字数により判別する。キャッシュメモリ１０８にキャッシュされるアイテムは、図６に例示するように、結合させる文字数の多い順にソートされていることが好ましい。
【００３０】
結合された形状情報がキャッシュ不可能な場合（３０６：N）、キャッシュ処理部２０２は、キャッシュデータから破棄するアイテムを決定する。キャッシュ処理部２０２は、決定した文字の組み合わせのアイテムをキャッシュデータから破棄する（Ｓ３０７）。本実施形態では、キャッシュデータに格納できるアイテムの数が閾値を超えた場合、組み合わせの文字数が少ない順にキャッシュデータの先頭からアイテムを破棄する。つまり、組み合わせる文字数の多いアイテムほどキャッシュされやすい。他の方法として、文字の組み合わせの登場頻度などに応じて、アイテムを破棄する順序を決定してもよい。
【００３１】
結合された形状情報がキャッシュ可能な場合（３０６：Y）、あるいはキャッシュデータからアイテムを破棄した後に、キャッシュ処理部２０２は、結合後の形状情報の新規アイテムを生成してキャッシュメモリ１０８へ格納する（Ｓ３０８）。これにより結合後の形状情報がキャッシュデータに追加される。
【００３２】
描画処理部２０６は、描画ユニット１０５のバッファに、結合後の形状情報に基づいて文字を描画する（Ｓ３０９）。描画処理部２０６は、描画後に、形状情報の文字送り幅に応じて、次の文字の描画位置にバッファ内の処理対象の位置を移動する。描画が終了すると、ＣＰＵ１０１は、取得した文字列の全文字の描画処理を終了したか否かを判断する（Ｓ３１０）。終了していない場合（Ｓ３１０：N）、ＣＰＵ１０１は、描画処理を行った文字あるいは文字の組み合わせの、次の未処理の文字を対象にした描画処理を行う。ＣＰＵ１０１は、取得した文字列の全文字の描画処理を終了するまで、Ｓ３０２以降の処理を繰り返し行う。
【００３３】
Ｓ３０２の処理で、処理中の文字を含む文字の組み合わせに該当する形状情報がキャッシュメモリ１０８に既にキャッシュされている場合について説明する（Ｓ３０２：Y）。この場合、形状情報取得部２０３は、キャッシュデータから該当する結合後の形状情報を取得する（Ｓ３１１）。形状情報取得部２０３は、キャッシュデータから一致する文字の組み合わせを検索する。形状情報取得部２０３は、組み合わせる文字数の多いアイテムから順にキャッシュデータを検索することで、構成する文字数の多い文字の組み合わせを検索から漏れないようにすることができる。形状情報取得部２０３は、キャッシュデータに格納されるアイテムの中で一致する文字の組み合わせ（コードポイントの配列）を、該当する形状情報として取得する。以降、ＣＰＵ１０１は、Ｓ３０９、Ｓ３１０の処理を行う。
【００３４】
なお、上述の通り、アラビア語やペルシャ語などは、同じ文字であってもその位置（文頭、文中、文末）によって字形が異なる複雑なレイアウト規則がある。この場合、アイテムに格納されている文字の組み合わせが一致していても、組み合わせの末尾文字が文字列における文中か、あるいは文末かによって、結合後の形状情報が異なる。そのためアイテムには、組み合わせの末尾文字が文字列の文中か文末かを示す情報を更に含めてもよい。
【００３５】
図７は、アラビア語のレイアウト規則の説明図である。ここでは、同じ文字の組み合わせであっても文字列中の位置によって結合する形状情報が変化するレイアウト規則を説明する。図７（ａ）の最上段の点線枠９０１は、左から順にＵｎｉｃｏｄｅのコードポイントＵ＋６２７、Ｕ＋６４４、Ｕ＋６３９で表される３つの文字の組み合わせ（文字列）を囲む。点線枠９０１の３つの文字は、入力された順に左から並べられている。アラビア語は、右から左の順にレイアウトされる。図７（ａ）の２段目は、点線枠９０１の文字列を右から左の順に並び替えた文字列である。アラビア語は、文頭、文中、文末と位置によって字形が変わるレイアウト規則がある。図７（ａ）の３段目は、このレイアウト規則に従って各文字の字形を変更した文字列である。例えば字形９０２は、文末の文字であるために、字形９０３に変更される。図７（ａ）の３段目は、説明の都合上、文字間を開けて各文字の字形を配置させている。図７（ａ）の最下段は、正しい配置位置に修正した３つの文字の文字列である。３つの文字の文字列は、点線枠９０４で囲まれた形状となる。
【００３６】
図７（ｂ）の最上段は、点線枠９０１で囲まれた文字の組み合わせの末尾にＵｎｉｃｏｄｅのコードポイントＵ＋６３１で表される字形９０５の文字を追加した文字の組み合わせである。図７（ｂ）の２段目は、最上段の文字列を右から左に並び替えた文字列である。図７（ｂ）の３段目は、レイアウト規則に従って各文字の字形を変更した文字列である。字形９０２は、図７（ａ）では文字が文末であるために字形９０３に変更されているのに対し、図７（ｂ）では文字が文中であるために字形９０６に変更される。図７（ｂ）の最下段は、正しい配置位置に修正した文字列である。最上段の点線枠９０１で囲まれた３つの文字の文字列は、点線枠９０７で囲まれた形状となる。
【００３７】
このように点線枠９０１で囲まれた文字の組み合わせは、図７（ａ）と図７（ｂ）とで、各文字の配置状況が異なることで、点線枠９０４や点線枠９０７で囲まれた文字の形状となる。そのため、点線枠９０１で囲まれた文字の組み合わせについて結合した形状情報をキャッシュするためには、組み合わせの最後の文字の位置を示す情報をアイテムに付加する必要がある。
【００３８】
以上のような本実施形態の情報処理装置１００は、文字の組み合わせを結合して生成した形状情報をキャッシュしておき、キャッシュした形状情報と同じ文字の組み合わせを表示する際に、キャッシュした形状情報を取得して表示する。そのために、情報処理装置１００は、フォントデータやフォントライブラリにアクセスする回数を低減することができる。また、情報処理装置１００は、言語に固有のレイアウト規則に応じた処理の回数を低減することができる。このような情報処理装置１００は、キャッシュの効果を高めて、効率的な文字描画を実現することができる。
【００３９】
（変形例）
情報処理装置１００は、入力され得る文字列が予め決まっている場合がある。この場合、情報処理装置１００は、形状情報を結合する文字の組み合わせを予め設定してもよい。図８は、入力され得る文字列のリストの例示図である。この文字列リストは、ＲＯＭ１０２、ＲＡＭ１０３、ストレージ１０７のいずれかに格納される。情報処理装置１００は、図３に示す文字の描画処理を開始する前に、これらの文字列についてのキャッシュデータを生成してキャッシュメモリ１０８に格納する。図９は、図８の文字列リストに基づくキャッシュデータの生成処理を表すフローチャートである。ここでは、キャッシュデータに格納する文字の組み合わせの条件は、連続したｍ個以上の文字の組み合わせで、文字列リスト中にＮ回以上登場するものである。ｍ、Ｎは、自然数である。
【００４０】
ＣＰＵ１０１は、ｍ及びＮを初期化する（Ｓ８０１）。ＣＰＵ１０１は、初期化することでｍ及びＮにそれぞれ初期値を設定する。初期値は、２以上である。文字列取得部２０１は、はじめに、文字列リストの先頭の文字列を取得する（Ｓ８０２）。結合文字判別部２０４は、例えば文字列リストから１行ずつあるいは１文ずつ文字列を取得する。
【００４１】
結合文字判別部２０４は、取得した文字列の中から連続するｍ個の文字の組み合わせをすべて抽出する（Ｓ８０３）。例えば、結合文字判別部２０４は、ｍ＝５のときに、１行目の文字列「モードを選んでください」から以下の６つの文字の組み合わせを抽出する。抽出される文字の組み合わせは、「モードを選」、「ードを選ん」、「ドを選んで」、「を選んで下」、「選んで下さ」、「んで下さい」である。結合文字判別部２０４は、抽出した文字の組み合わせをＲＡＭ１０３に格納する。結合文字判別部２０４は、文字列リストのすべての文字列から、連続するｍ個の文字の組み合わせをすべて抽出したか否かを判断する（Ｓ８０４）。抽出していない場合（Ｓ８０４：N）、結合文字判別部２０４は、すべての文字列から抽出するまで、Ｓ８０２〜Ｓ８０４の処理を繰り返し行う。結合文字判別部２０４は、Ｓ８０２の処理において、文字列リストから、２行目、３行目…の順に文字列を取得して文字の組み合わせを抽出する。
【００４２】
すべて抽出し終えると（Ｓ８０４：Y）、結合文字判別部２０４は、抽出したｍ文字の文字の組み合わせの有無を判断する（Ｓ８０５）。例えば、文字列リストの各文字列の文字数がｍ未満である場合、ｍ文字の文字の組み合わせは抽出されない。
【００４３】
抽出した文字の組み合わせが有る場合（Ｓ８０５：Y）、結合文字判別部２０４は、ｍを１インクリメントする（Ｓ８０６）。結合文字判別部２０４は、処理対象を文字列リストの先頭行の文字列に戻す（Ｓ８０７）。結合文字判別部２０４は、ｍに１加算した状態でＳ８０２〜Ｓ８０５の処理を繰り返し行う。結合文字判別部２０４は、ｍの値を１ずつ加算しながら、ｍ文字の文字の組み合わせが抽出できなくなるまでＳ８０２〜Ｓ８０７の処理を繰り返し行うことになる。
【００４４】
ｍ文字の文字の組み合わせが抽出されなくなった場合（Ｓ８０５：N）、結合文字判別部２０４は、Ｓ８０３の処理でＲＡＭ１０３に格納した、抽出した文字の組み合わせ毎に、抽出された回数をカウントする（Ｓ８０８）。結合文字判別部２０４は、カウント値に応じて、抽出された文字の組み合わせのうち、Ｍ回以上抽出された文字の組み合わせを取得する（Ｓ８０９）。形状情報結合部２０５は、取得された文字の組み合わせを構成する各文字の形状情報を、フォントデータから取得して１つのパスオブジェクトになるように結合する。キャッシュ処理部２０２は、組み合わせの文字数、各文字のコードポイントの配列、及び結合後の形状情報からキャッシュするアイテムを生成し、キャッシュデータを更新する。キャッシュ処理部２０２は、このキャッシュデータをキャッシュメモリ１０８に格納する（Ｓ８１０）。
【００４５】
例えばｍ＝５、Ｎ＝３の場合に抽出される文字の組み合わせは、「を選んで下さい」「を選んで下さ」「選んで下さい」「を選んで下」「選んで下さ」「んで下さい」である。この場合、抽出された文字の組み合わせは全て「を選んで下さい」の部分集合となる。そのためにキャッシュデータに格納する文字の組み合わせは「を選んで下さい」だけでもよい。
【００４６】
情報処理装置１００は、形状情報を結合する文字の組み合わせを予め設定しておき、図３のＳ３０８の処理でキャッシュデータを生成してもよい。また情報処理装置１００は、文字列リストに対して形態素解析を行い、意味のある文節や単語単位に文字列を区切り、文字列リストにおける登場回数を、区切った単位でカウントしてキャッシュデータを生成してもよい。情報処理装置１００は、キャッシュデータの生成後に、図３の処理により、処理開始の時点でキャッシュデータに特定の文字の組み合わせの形状情報が格納された状態で、入力される文字列を処理することが可能となる。
【００４７】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2019152731.tif 000003
【図２】
2019152731.tif 000004
【図３】
2019152731.tif 000005
【図４】
2019152731.tif 000006
【図５】
2019152731.tif 000007
【図６】
2019152731.tif 000008
【図７】
2019152731.tif 000009
【図８】
2019152731.tif 000010
【図９】
2019152731.tif 000011