(57)【特許請求の範囲】
【請求項１】
文字列に含まれる文字のうち処理対象の文字の文字領域が表示部の表示領域に収まるか否かを判定する第１の判定手段と、
前記第１の判定手段により処理対象の文字の文字領域が表示部の表示領域に収まると判定された場合、前記処理対象の文字が行、又は列の先頭文字か否かを判定する第２の判定手段と、
前記第２の判定手段により前記処理対象の文字が行、又は列の先頭文字であると判定された場合、前記処理対象の文字の占有領域情報を取得する取得手段と、
前記取得手段により取得された前記処理対象の文字の占有領域情報に基づいて、設定された方向へ移動可能な幅を導出する導出手段と、
前記処理対象の文字の配置位置を決定する決定手段と、
前記第１の判定手段により処理対象の文字の文字領域が表示部の表示領域に収まらないと判定された場合、現在の行、又は列において既に配置位置が決定されている文字を前記幅の分、前記方向に寄せると、前記処理対象の文字の文字領域が表示部の表示領域に収まるか否かを判定する第３の判定手段と、
前記第３の判定手段により現在の行、又は列において既に配置位置が決定されている文字を前記幅の分、前記方向に寄せると、前記処理対象の文字の文字領域が表示部の表示領域に収まると判定された場合、現在の行、又は列において既に配置位置が決定されている文字の配置位置を前記幅の分、前記方向に移動するよう更新する更新手段と、
を有する情報処理装置。
【請求項２】
前記取得手段は、前記処理対象の文字の文字領域を分割した領域のうち、文字の形状が含まれる領域の和集合を前記処理対象の文字の占有領域情報として取得する請求項１記載の情報処理装置。
【請求項３】
文字列に含まれる文字のうち処理対象の文字が行、又は列の先頭文字か否かを判定する第１の判定手段と、
前記第１の判定手段により前記処理対象の文字が行、又は列の先頭文字であると判定された場合、前記処理対象の文字の占有領域情報を取得する第１の取得手段と、
前記第１の取得手段により取得された前記処理対象の文字の占有領域情報に基づいて、設定された方向へ移動可能な幅を導出する導出手段と、
前記幅の分、前記方向に寄せて前記処理対象の文字の配置位置を決定する決定手段と、
前記第１の判定手段により処理対象の文字が行、又は列の先頭文字でないと判定された場合、前記処理対象の文字の文字領域が表示部の表示領域に収まるか否かを判定する第２の判定手段と、
前記第２の判定手段により前記処理対象の文字の文字領域が表示部の表示領域に収まらないと判定された場合、前記処理対象の文字の占有領域情報を取得する第２の取得手段と、
前記第２の取得手段により取得された前記占有領域情報で示される占有領域が前記表示領域に収まるか否かを判定する第３の判定手段と、
前記第３の判定手段により前記占有領域が前記表示領域に収まらないと判定された場合、現在の行、又は列において既に配置位置が決定されている文字の配置位置を前記方向と逆の方向に移動するよう調整する調整手段と、
を有する情報処理装置。
【請求項４】
情報処理装置が実行する情報処理方法であって、
文字列に含まれる文字のうち処理対象の文字の文字領域が表示部の表示領域に収まるか否かを判定する第１の判定ステップと、
前記第１の判定ステップにより処理対象の文字の文字領域が表示部の表示領域に収まると判定された場合、前記処理対象の文字が行、又は列の先頭文字か否かを判定する第２の判定ステップと、
前記第２の判定ステップにより前記処理対象の文字が行、又は列の先頭文字であると判定された場合、前記処理対象の文字の占有領域情報を取得する取得ステップと、
前記取得ステップにより取得された前記処理対象の文字の占有領域情報に基づいて、設定された方向へ移動可能な幅を導出する導出ステップと、
前記処理対象の文字の配置位置を決定する決定ステップと、
前記第１の判定ステップにより処理対象の文字の文字領域が表示部の表示領域に収まらないと判定された場合、現在の行、又は列において既に配置位置が決定されている文字を前記幅の分、前記方向に寄せると、前記処理対象の文字の文字領域が表示部の表示領域に収まるか否かを判定する第３の判定ステップと、
前記第３の判定ステップにより現在の行、又は列において既に配置位置が決定されている文字を前記幅の分、前記方向に寄せると、前記処理対象の文字の文字領域が表示部の表示領域に収まると判定された場合、現在の行、又は列において既に配置位置が決定されている文字の配置位置を前記幅の分、前記方向に移動するよう更新する更新ステップと、
を含む情報処理方法。
【請求項５】
情報処理装置が実行する情報処理方法であって、
文字列に含まれる文字のうち処理対象の文字が行、又は列の先頭文字か否かを判定する第１の判定ステップと、
前記第１の判定ステップにより前記処理対象の文字が行、又は列の先頭文字であると判定された場合、前記処理対象の文字の占有領域情報を取得する第１の取得ステップと、
前記第１の取得ステップにより取得された前記処理対象の文字の占有領域情報に基づいて、設定された方向へ移動可能な幅を導出する導出ステップと、
前記幅の分、前記方向に寄せて前記処理対象の文字の配置位置を決定する決定ステップと、
前記第１の判定ステップにより処理対象の文字が行、又は列の先頭文字でないと判定された場合、前記処理対象の文字の文字領域が表示部の表示領域に収まるか否かを判定する第２の判定ステップと、
前記第２の判定ステップにより前記処理対象の文字の文字領域が表示部の表示領域に収まらないと判定された場合、前記処理対象の文字の占有領域情報を取得する第２の取得ステップと、
前記第２の取得ステップにより取得された前記占有領域情報で示される占有領域が前記表示領域に収まるか否かを判定する第３の判定ステップと、
前記第３の判定ステップにより前記占有領域が前記表示領域に収まらないと判定された場合、現在の行、又は列において既に配置位置が決定されている文字の配置位置を前記方向と逆の方向に移動するよう調整する調整ステップと、
を含む情報処理方法。
【請求項６】
コンピュータを、請求項１乃至３何れか１項記載の情報処理装置の各手段として機能さ
せるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
スマートフォンやタブレット端末等のモバイルコンピュータが更に進化し、ヘッドマウントディスプレイや時計等ウェアラブルコンピュータが普及しつつある。デバイス自体の小型化に伴い、デバイス表示部もより小さなものになっている。このような小さな表示部をもったデバイスであっても、ユーザインターフェースとして表示部に文字列を表示するケースは多い。また、表示部の形状も時計に代表されるように必ずしも矩形に限定されなくなってきている。特許文献１では、円形状の可搬メディアへのラベル印刷を想定したものとして、印刷領域における文字配置の上基準位置と下基準位置とを設け、配置可能領域上部が上基準位置よりも上であれば上基準位置よりも下側となるようにする技術が開示されている。また、この技術では、配置可能領域下部が下基準位置よりも下であれば下基準位置よりも上側となるようにしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２４８５７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術ではデバイスの表示領域に文字列を流し込むように表示させる場合、文字列の送り幅と文字の高さ（文字サイズ）で決定される文字の矩形領域に基づいて、表示領域に対する文字のはみ出しを判断していた。文字の領域が矩形であるのに対し、表示領域が矩形に限らなくなってきているため、文字の字形自体は表示領域に収まるのにはみ出すと判定され、限られた表示領域を効率よく使用できない課題があった。
本発明は、限られた表示領域を有効に文字表示に使うことができるようにすることを目的とする。
【課題を解決するための手段】
【０００５】
本発明の情報処理装置は、文字列に含まれる文字のうち処理対象の文字の文字領域が表示部の表示領域に収まるか否かを判定する第１の判定手段と、前記第１の判定手段により処理対象の文字の文字領域が表示部の表示領域に収まると判定された場合、前記処理対象の文字が行、又は列の先頭文字か否かを判定する第２の判定手段と、前記第２の判定手段により前記処理対象の文字が行、又は列の先頭文字であると判定された場合、前記処理対象の文字の占有領域情報を取得する取得手段と、前記取得手段により取得された前記処理対象の文字の占有領域情報に基づいて、設定された方向へ移動可能な幅を導出する導出手段と、前記処理対象の文字の配置位置を決定する決定手段と、前記第１の判定手段により処理対象の文字の文字領域が表示部の表示領域に収まらないと判定された場合、現在の行、又は列において既に配置位置が決定されている文字を前記幅の分、前記方向に寄せると、前記処理対象の文字の文字領域が表示部の表示領域に収まるか否かを判定する第３の判定手段と、前記第３の判定手段により現在の行、又は列において既に配置位置が決定されている文字を前記幅の分、前記方向に寄せると、前記処理対象の文字の文字領域が表示部の表示領域に収まると判定された場合、現在の行、又は列において既に配置位置が決定されている文字の配置位置を前記幅の分、前記方向に移動するよう更新する更新手段と、を有する。
【発明の効果】
【０００６】
本発明によれば、限られた表示領域を有効に文字表示に使うことができるようにすることができる。
【図面の簡単な説明】
【０００７】
【図１】情報処理装置のハードウェア構成の一例を示す図である。
【図２】情報処理装置のソフトウェア構成の一例を示す図である。
【図３】実施形態１の情報処理の一例を示すフローチャートである。
【図４】最初の文字の配置位置を決定する方法の一例を示す図である。
【図５】文字のメトリクス情報を示す図である。
【図６】文字領域が表示領域に収まらないと判定した場合の処理の一例示す図である。
【図７】文字領域以外の、文字に関する領域の定義について説明する図である。
【図８】文字領域を分割するパターンと占有領域とについての他の例を示す図である。
【図９】占有領域判定部における判定方法の一例を示すフローチャートである。
【図１０】行末尾の文字を表示領域に収める処理を説明する図である。
【図１１】実施形態２の情報処理の一例を示すフローチャートである。
【図１２】円形状の表示領域に文字を配置したときの一例を示す図である。
【図１３】左方向へ移動可能な幅Ｘの算出方法の一例を示す図である。
【図１４】表示領域の形状を切り替える処理を示す図である。
【図１５】実施形態３の情報処理の一例を示すフローチャートである。
【図１６】実施形態４の情報処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下、本発明の実施形態について図面に基づいて説明する。
【０００９】
＜実施形態１＞
本実施形態の情報処理装置１００の構成について、図１を参照して説明する。ＣＰＵ１０１は、システム制御部であり情報処理装置１００の全体を制御する。ＲＯＭ１０２は、変更を必要としないプログラムやパラメータ、後述するテーブル情報等を格納する読み取り専用のメモリである。ＲＡＭ１０３は、外部装置等から供給されるプログラムやデータを一時記憶する書き換え可能なメモリである。入力部１０４は、ユーザからの入力を受信するもので、マウスやキーボード、タッチパネル、音声を受信するマイク等がこれに該当する。レイアウト部１０５は、ＲＯＭ１０２やＲＡＭ１０３等に格納された、又は入力部１０４で受信した文字列情報を取得し、表示領域における文字列配置の処理を行う。表示部１０６は、レイアウト部１０５で決定された文字列の配置位置に従い、描画された文字をグラフィックスやユーザインターフェースとして表示する。１０７は１０１〜１０６の各ユニットを通信可能に接続するシステムバスである。
ＣＰＵ１０１がＲＯＭ１０２等に記憶されたプログラムに基づき処理を実行することにより、後述する情報処理装置１００のソフトウェア構成や、フローチャートの処理が実現される。
説明した構成に対して、プログラムを供給するための記憶媒体としてＲＯＭのほかに以下のものがある。例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、メモリカード、ＤＶＤ等が本実施形態の情報処理装置１００の構成に加わってもよい。
【００１０】
実施形態１では、円形状の表示部１０６に対し文字列を流し込むように表示する際に、表示領域の境界付近における行末文字に関する文字配置処理の一例を、図を用いて説明する。図２は、情報処理装置１００のソフトウェア構成の一例を示す図である。図３は、情報処理装置１００の情報処理の一例を示すフローチャートである。なお、図２のソフトウェア構成における矢印は情報のやり取りの一例を示しており、情報のやり取りは図２の矢印に限定されない。
ステップＳ３０１において、文字情報取得部２０１は、表示領域に表示するための文字情報を取得する。ここでは、文字情報が、ＲＯＭ１０２やＲＡＭ１０３に格納されていることを想定している。しかし、入力部１０４で受信するユーザからの入力データに文字情報が含まれており、文字情報取得部２０１が、これらの文字情報を取得するようにしてもよい。
ステップＳ３０２において、表示領域情報取得部２０２は、表示部１０６の形状情報である表示領域情報を取得する。表示領域情報取得部２０２は、表示領域情報をＲＯＭ１０２やＲＡＭ１０３等から取得可能であり、本実施形態では円形状を想定している。このとき、表示領域情報取得部２０２で取得する情報には、左上を原点としたときの円の中心座標と半径の長さとが含まれる。しかし、表示領域の形状は円形状である必要はなく、任意の閉凸領域であれば、表示領域情報取得部２０２は、その形状を定義するパス情報を取得してもよい。閉凸領域とは、その形状を定義するパスが閉じており、その閉じた領域内部のどんな２点をとっても、その２点を結ぶ線分が領域内部に含まれる領域のことである。
【００１１】
予め定められたフォントサイズは変えないという前提で、ステップＳ３０３において、行位置決定部２０３は、表示領域に文字列を流し込んだときの各行の配置位置を決定する。
円形状の表示領域において、最初の文字の配置位置を決定する方法の一例を、図４を用いて説明する。図４は、原点４０１を左上としたときに表示領域を示す半径ｒの円４０２を、ｘ軸とｙ軸とに接するように配置したときの状態を示した図である。文字列を左から横書きにより多く表示するためには、円の横幅が広い部分を有効に使うことが望ましい。そこで、行位置決定部２０３は、ｙ＝ｒで表される直線４０３から各行を表示するための矩形領域を確保するように行の配置位置を決定する。表示するフォントサイズｆを行の高さとすると、円４０２の上半円部分については、ｙ＝ｒ−ｎｆ（ｎは自然数）で表せる直線と円４０２との交点を頂点とした、各行の矩形領域が決定される。矩形４０４はｎ＝１のときに決定される行の表示領域であり、ｙ＝ｒ−ｆで表される直線４０５と円４０２との交点４０６、４０７を頂点とする、円４０２に内包された高さｆの矩形となる。円４０２の下半円部分については、ｙ＝ｒ＋ｎｆで表される直線と円４０２との交点を頂点とする、円４０２に内包された高さｆの矩形領域である。なお、表示領域である閉凸領域における行位置の決定方法についてはこれに限定されない。
【００１２】
ステップＳ３０４において、メトリクス情報取得部２０４は、文字情報取得部２０１で取得された文字に関するメトリクス情報を取得する。文字を配置し表示するためには、メトリクス情報には少なくとも文字の形状情報と文字の送り幅に関する情報を含むものとする。メトリクス情報取得部２０４は、メトリクス情報をＲＯＭ１０２や外部記憶装置等に格納されているフォントデータから取得することを想定している。格納されているフォントデータはアウトラインフォントでもビットマップフォントでもよい。
図５を用いて文字のメトリクス情報について説明する。文字は縦方向の配置位置の基準となるベースライン５０１より上部のアセンド幅５０２と下部のディセンド幅５０３との間で字形がデザインされるのが一般的である。アウトラインフォントであれば表示部１０６に表示されるときには、アセンド幅５０２とディセンド幅５０３との合計がフォントサイズｆになるように字形が伸縮される。文字「今」のグリフ原点５０４から次の文字「、」のグリフ原点５０５までの幅が、文字「今」の文字送り幅５０６である。これらのメトリクス情報はフォントデータに格納されており、同じフォントデータであればアセンド幅やディセンド幅は文字によらず同じ値であるが、文字送り幅に関しては文字によって異なることがある。プロポーショナルフォントであれば、文字ごとにこの文字送り幅の値は異なる。本実施形態では文字送り幅、アセンド幅、ディセンド幅で表される斜線部の矩形領域５０７を文字領域と呼ぶ。行の先頭文字であれば、図４の矩形４０４に示す行の表示領域の左上が、文字領域の左上になるように配置される。
【００１３】
ステップＳ３０５において、文字領域判定部２０５は、表示領域情報取得部２０２で取得された表示領域に、メトリクス情報取得部２０４で取得された文字領域が収まるか否かを１文字ずつ判定する。文字領域判定部２０５は、表示領域に文字領域が収まると判定した場合（ステップＳ３０５においてＹｅｓ）、ステップＳ３０６に進む。
ステップＳ３０６において、文字配置位置決定部２０６は、この文字の配置位置を決定する。
そして、ステップＳ３０７において、文字配置位置決定部２０６は、処理すべき次の文字があるかどうかを判定する。次の文字がなければ（ステップＳ３０７においてＮｏ）、文字配置位置決定部２０６は、この行までで全ての文字が表示されたことになり、図３に示すフローチャートの処理を終了する。次の文字があれば（ステップＳ３０７においてＹｅｓ）、文字配置位置決定部２０６は、現在の位置を文字の送り幅だけ右に移動して、処理をステップＳ３０８に移す。
ステップＳ３０８において、文字配置位置決定部２０６は、次の文字を処理対象にして、ステップＳ３０４に処理を移す。
【００１４】
ステップＳ３０５において、文字領域判定部２０５が、文字領域が表示領域に収まらないと判定した場合について、図６を用いて説明する。図６の円６０１は表示領域情報取得部２０２により取得された円形状の表示領域である。図４で説明した方法に従い、行位置決定部２０３は、行の配置位置を決定する。そして、文字領域判定部２０５は、文字情報取得部２０１により取得された文字列「今日は、よい天気でした。」を円６０１の上部から流し込むように配置する。このとき、円６０１の内部に文字が収まっているかどうかを文字領域に基づいて判定したときの文字列配置の様子を示したのが図６（ａ）である。１行目の行末文字は「は」であり、句点「、」は改行されて次の行に配置されている。矩形６０２は句点「、」が配置された場合の句点の文字領域を示したものである。従来技術においては、矩形６０２の右上部が円６０１からはみ出しており、表示領域内に収まらないと判定される。しかし、はみ出したのは矩形６０２の右上部だけであり、句点「、」の字形だけの大きさを考慮すれば円６０１に収まる。その状態を示したのが図６（ｂ）であり、句点の文字領域を示す矩形６０３は円６０１からはみ出しているが、句点の字形は収まるため、同じ行の末尾に配置されている。句点がこの行に配置されたことにより、次の行の各文字の配置位置も変わり、末尾の読点「。」も文字領域を示す矩形６０４は円６０１からはみ出ているが、読点の字形自体は収まるため、文字列は２行で全て収まっている。円６０１のように矩形ではない表示領域の右側の境界付近では、句読点や記号等字形が小さい文字であれば、文字領域が収まらなくてもユーザの視認性を損なうことなく文字を配置できる場合がある。なお、文字領域判定部２０５は、本実施形態におけるステップＳ３０５では、表示領域に文字領域が収まるか否かを判定しているが、表示領域の境界線に文字領域が重なるか否かを判定してもよい。
【００１５】
図７は本実施形態で使用する文字領域以外の、文字に関する領域の定義について説明する図である。図７（ａ）の矩形７０１と矩形７０２とはそれぞれ文字「、」と「今」の文字領域を示した矩形であり、これらは前述のとおり、文字の送り幅とフォントサイズ（行の高さ）とによって形成されている。一般的な文字表示装置等において、表示領域に文字が収まるか否かの判定には文字領域が基準となっていることが多い。一方で、斜線領域７０３と斜線領域７０４とはそれぞれの字形を包含する最小矩形領域を示している。文字領域と比較すると、この字形に対する包含矩形領域の方がより厳密に表示領域に対するはみ出しを判定できる。しかし、包含矩形領域も水平垂直方向の辺で構成されているため、文字によっては、枠７０５で示された部分のように包含矩形領域内であるが字形が無い領域が多くなる場合もある。図７（ｂ）は文字領域をあるパターンでタイルのように分割し、分割された各領域において字形が存在する部分の和集合を斜線で示したものである。占有領域７０６と占有領域７０７とは、それぞれ分割された領域のうち、文字「、」と「今」の字形が存在する領域の和集合である。包含矩形領域と比較すると厳密性には欠けるが、文字「今」のような場合では、より字形の特徴に沿った部分を抽出できる。本実施形態では、文字領域をある決まったパターンで分割したときの、字形が存在する分割領域の和集合を占有領域と定義するが、前述したような字形を包含する最小矩形領域を占有領域としてもよい。
【００１６】
図７（ｂ）では文字領域を三角形のタイル状のパターンで４分割した例を示したが、分割する形状や個数はこれに限定されない。文字領域を分割するパターンと占有領域とについての他の例を図８に示す。分割する形状パターンは予め決められた形状であり、単純な形状で、かつ、同一形状であることが望ましい。また、後述するように文字領域の分割パターンや分割数はいろいろあるが、表示領域に表示する全ての文字に対して同じ分割パターンであることが望ましい。図８（ａ）では「開き括弧」の文字領域１５０１を縦に２分割したとき、字形１５０２を含んでいる左側の領域が占有領域１５０３となる。図８（ｂ）では「了」の文字領域１５０４の分割パターンを縦横共に２分割したものであり、字形１５０５を含んでいる網掛け領域の和集合が占有領域１５０６となる。図８（ｃ）では「７」の文字領域１５０７を４つの三角形に分割したものであり、字形１５０８を含んでいる網掛け領域の和集合が占有領域１５０９となる。図８（ｄ）では、文字「へ」の文字領域１５１０を縦横共に４分割した計１６個の矩形領域に分割されており、字形１５１１を含む網掛け領域の和集合が占有領域１５１２となる。
【００１７】
図７（ｂ）や図８に示したように、ある決まったパターンで分割したときに字形が存在する分割領域の和集合を占有領域と定義した場合、フォントデータとは別に文字の占有領域情報をテーブル情報として保持しておく方法もある。ここでは、分割パターンを単純化した上で日本語の句読点のように、文字領域の一部分にしか字形が存在しないような文字の占有領域情報をテーブル情報に保持することを想定している。
文字領域判定部２０５は、表示領域の境界線に文字領域が重なると判定すると（ステップＳ３０５においてＮｏ）、ステップＳ３０９に進む。
ステップＳ３０９において、文字領域判定部２０５は、テーブル情報に含まれる文字か否かを判定する。テーブル情報に含まれない文字と判定すれば（ステップＳ３０９においてＮｏ）、文字領域判定部２０５は、ステップＳ３１０に進む。テーブル情報に含まれる文字は、設定された文字の一例である。
ステップＳ３１０において、文字配置位置決定部２０６は、現在の位置を次の行に移し、それまでの行の処理を終了する。
文字領域判定部２０５は、テーブル情報に含まれる文字だと判定すると（ステップＳ３０９においてＹｅｓ）、ステップＳ３１１に進む。
ステップＳ３１１において、占有領域情報取得部２０７は、図７で説明した文字の占有領域情報を取得する。
ステップＳ３１２において、占有領域判定部２０８は、取得された占有領域が表示領域に収まっているか否かを判定する。判定方法の一例については後述する。占有領域判定部２０８は、占有領域が表示領域に収まっていると判定した場合（ステップＳ３１２においてＹｅｓ）、処理をステップＳ３０６に移し、そうでなければ（ステップＳ３１２においてＮｏ）、処理をステップＳ３１０に移す。つまり、ＣＰＵ１０１は、占有領域が表示領域に収まると判定した場合、処理対象の文字の一つ前の文字と同じ行、又は列の後ろの位置に処理対象の文字の配置位置を決定する。一方、ＣＰＵ１０１は、占有領域が表示領域に収まらないと判定した場合、処理対象の文字の一つ前の文字とは異なる行、又は列に処理対象の文字の配置位置を決定する。
【００１８】
占有領域判定部２０８における判定方法の一例を、図９のフローチャートと図１０とを用いて説明する。図１０（ａ）は円形状の表示領域９０１に対して文字「了」の文字領域９０２までが表示領域９０１に収まると判定済みであり、文字「、」の文字領域９０３が収まらないと判定されている状態を示した図である。
このとき、ステップＳ８０１において、占有領域判定部２０８は、表示領域９０１の境界線と文字領域９０３との交点９０４、交点９０５の座標情報を取得する。
ステップＳ８０２において、占有領域判定部２０８は、この２交点を結ぶ直線を表す式を取得する。このとき、２交点を結ぶ直線と文字領域９０３の境界線とで囲まれた斜線で示した領域９０６が表示領域９０１の内側に含まれる領域と近似する。
ステップＳ８０３において、占有領域判定部２０８は、領域９０６に図７（ｂ）示した文字「、」の占有領域７０６が収まるかどうかを判定する。占有領域判定部２０８は、２交点を結ぶ直線よりも文字「、」の占有領域７０６が表示領域９０１に対して内側にあれば、文字「、」が表示領域９０１に収まる（ステップＳ８０３においてＹｅｓ）と判定し、図９のフローチャートの処理を終了する。
【００１９】
ステップＳ８０３で収まらないと判定される場合について、図１０（ｂ）を用いて説明する。図１０（ｂ）では、文字「、」の斜線で示された占有領域９０７が表示領域９０１の境界線に重なっている状態を示している。このとき、ステップＳ８０４において、占有領域判定部２０８は、表示領域９０１から占有領域９０７がはみ出る最大幅９０８の値Ｘを算出する。
次に、ステップＳ８０５において、占有領域判定部２０８は、文字「、」の直前の文字「了」の斜線で示された占有領域９０９を取得する。
ステップＳ８０６において、占有領域判定部２０８は、文字「了」の占有領域９０９の占有領域に基づいて、文字「、」の配置位置を最大幅の値Ｘだけ左に移動させた場合に、占有領域９０７と占有領域９０９が重なるか否かを判定する。ここで重なると判定した場合（ステップＳ８０６においてＹｅｓ）、占有領域判定部２０８は、ステップＳ８０７に進む。
ステップＳ８０７において、占有領域判定部２０８は、文字「、」は表示領域９０１に収まらないと判定し、図９のフローチャートの処理を終了する。重ならないと判定した場合（ステップＳ８０６においてＮｏ）、占有領域判定部２０８は、ステップＳ８０８に進む。
ステップＳ８０８において、占有領域判定部２０８は、図１０（ｃ）に示すように文字「、」の占有領域９０７を値Ｘだけ左に移動させる。そして、占有領域判定部２０８は、このときの位置を文字「、」の配置位置として決定する。
そして、ステップＳ８０９において、占有領域判定部２０８は、文字「、」が表示領域９０１に収まると判定し、図９のフローチャートの処理を終了する。
【００２０】
実施形態１では、円形状の表示領域における行末文字の配置処理について、行末文字として特に日本語の句読点のように、占有領域が文字領域の左側にあるような特殊な文字について説明した。しかし、ＣＰＵ１０１は、フォントデータに格納されている全ての文字に対して予め占有領域の情報をＲＯＭ１０２等に保持しておき、句読点等の記号に限定せずに処理を行ってもよい。また、欧米言語のように左から右に表示する文字列で説明したが、アラビア語のように右から左に表示する文字列や、日本語のように上から下に表示する文字列であっても、文字の配置位置の変更方向等が変わるだけでアルゴリズムは変わらない。
【００２１】
＜実施形態２＞
実施形態２では、円形状の表示部１０６に対し文字列を流し込むように表示する際に、行の先頭における表示領域の境界付近での文字配置処理の一例を、図１１に示すフローチャートに従い、図１２を用いて説明する。なお、図３と同じ番号が付してあるものは説明を省略する。
図１２（ａ）は、実施形態１で説明した図３のフローチャートに従って、円形状の表示領域１１０１の内部に文字列を流し込むように配置したときの状態を示した図である。先頭文字である「今」の文字領域１１０２が表示領域１１０１からはみ出さないように開始位置が決定され、１行目の行末の文字「は」までは表示領域１１０１に収まると判定される。しかし、次の文字「い」の文字領域１１０３は表示領域１１０１に収まらないと判定されるため、次の行の先頭位置１１０５に配置される。このとき、先頭文字「今」の斜線で示した占有領域１１０４と表示領域１１０１の境界線との位置によっては、占有領域１１０４が表示領域１１０１からはみ出すことなく、１行目の全文字の配置位置を左に移動させることができる場合がある。
【００２２】
図１１に示すフローチャートの処理は、各行の先頭文字の占有領域が表示領域からはみ出すか否かを判定し、はみ出さなければその行の全文字の配置位置を左に移動させるための情報処理の一例を示したものである。
図１１におけるステップＳ３０１からステップＳ３０５までの処理は、図３と重複するため説明を省略する。ステップＳ３０５で文字領域が表示領域に収まると判定された場合、ステップＳ１００１において、文字領域判定部２０５は、現在処理している文字が行の先頭文字か否かを判定する。ステップＳ１００１の処理は、処理対象の文字が行、又は列の先頭文字か否かを判定する処理の一例である。ここで先頭文字でないと判定した場合（ステップＳ１００１においてＮｏ）、文字領域判定部２０５は、処理をステップＳ３０６に移す。ステップＳ３０６において、文字配置位置決定部２０６は、配置位置を決定し、次の文字があれば次の文字に処理を移す。一方、先頭文字だと判定した場合（ステップＳ１００１においてＹｅｓ）、処理をステップＳ３１１に移す。ステップＳ３１１において、占有領域情報取得部２０７は、字形の占有領域情報を取得する。
そして、ステップＳ１００２において、占有領域判定部２０８は、取得した占有領域情報とステップＳ３０２で取得された表示領域情報とに基づいて、占有領域が表示領域からはみ出さないように左へ配置位置を移動できる幅Ｘを算出し、その値を保持する。幅Ｘの算出方法については後述する。幅Ｘの算出は、幅Ｘの導出の一例である。幅ＸはステップＳ３０６の処理では参照されない。ステップＳ３０７において、文字配置位置決定部２０６は、次の文字が無ければ処理を図１１に示すフローチャートの処理を終了し、次の文字があれば次の文字に処理を移す。ステップＳ３０５の処理で文字領域が表示領域に収まらないと判定された場合（ステップＳ３０５においてＮｏ）、文字領域判定部２０５は、処理をステップＳ１００３に移す。ここで、左は、設定された方向の一例である。左から右に表示する文字列の場合は、左が設定される。一方、右から左に表示する文字列の場合は、例えば、右が設定される。つまり、設定された方向は右となる。また、上から下に表示する文字列の場合は、例えば、上が設定される。つまり、設定された方向は上となる。
ステップＳ１００３において、文字領域判定部２０５は、現在の行において既に配置位置が確定している文字を幅Ｘだけ全体として配置位置を左に移動させた場合に、文字領域が表示領域に収まるか否かを判定する。ここで収まると判定した場合（ステップＳ１００３においてＹｅｓ）、文字領域判定部２０５は、処理をステップＳ１００４に移す。ステップＳ１００３の処理は、現在の行、又は列において既に配置位置が決定されている文字を幅Ｘの分、前記方向に寄せると、処理対象の文字の文字領域が表示部の表示領域に収まるか否かを判定する処理の一例である。
ステップＳ１００４において、文字配置位置決定部２０６は、現在の行において既に配置位置が確定している文字を幅Ｘだけ左に移動させた位置にそれぞれ配置位置を更新する。
ステップＳ１００５において、文字領域判定部２０５は、幅Ｘを０に初期化して、処理を次の文字に移す。
【００２３】
図１２（ａ）に示した状態で、先頭文字「今」の占有領域１１０４に基づいてステップＳ１００２で算出された左方向への移動幅Ｘに従い、配置位置を左へ移動させられたときの状態を図１２（ｂ）に示す。先頭から３文字までの配置位置をそれぞれ左方向に移動したことにより、４文字目「い」の文字領域１１０３が表示領域１１０１に収まる。ステップＳ１００３で収まらないと判定された場合（ステップＳ１００３においてＮｏ）、文字領域判定部２０５は、処理をステップＳ１００６に移す。ステップＳ１００６において、文字配置位置決定部２０６は、配置位置を更新することなく幅Ｘを０にリセットして、次の行に処理を移して現在の行の処理を終了する。
図１１に示すフローチャートではステップＳ１００３で収まらないと判定されると、次の行に処理を移している。しかし、例えば、文字配置位置決定部２０６は、表示領域の境界線付近における行末文字の配置処理として、実施形態１で説明した行末文字のための配置処理を行ってもよい。
【００２４】
ここで、ステップＳ１００２における左方向へ移動可能な幅Ｘの算出方法の一例について、図１３を用いて説明する。円形状の表示領域の境界線１２０１に対して、その内側に文字列の行の配置位置が決定されて先頭文字の文字領域１２０２が配置されている。この状態は図１１のフローチャートにおけるステップＳ１００１の時点の状態を示している。本実施形態では、文字領域１２０２を図７（ｂ）に示した文字「今」の占有領域７０７のように８つの三角形領域に分割し、字形を含む三角形領域の和集合を占有領域と定義している。しかし、占有領域を定義するための、文字領域に対する領域の分割形状や分割数等はこれに限定されない。ここでは網掛けとなっている領域１２０３を先頭文字の占有領域とする。
このとき、占有領域判定部２０８は、占有領域１２０３の各頂点のｙ座標を取得する。取得するｙ座標の値としては、頂点１２０４、１２０５、１２０６における値であり、それぞれのｙ座標を通る水平な直線と境界線１２０１との交点を交点１２０７、１２０８、１２０９とする。表示領域は円形状であるため、占有領域判定部２０８は、各交点の座標を、円を表す関数を用いることで求めることができ、その交点はそれぞれ２点存在する。水平方向が円の接線となる場合は１点のみだが、円内部に文字領域を収めるためには必ず２点存在することになる。占有領域判定部２０８は、頂点１２０４から交点１２０７までの幅をＷ１、頂点１２０５から交点１２０８までの幅をＷ２、頂点１２０６から交点１２０９までの幅をＷ３としたときの最も値の小さい幅を、幅Ｘの値とする。図１３における幅ＸはＷ３となる。本実施形態では、表示領域を円形状としているが、任意の凸閉曲線形状であってもよい。その場合、占有領域判定部２０８は、曲線を直線近似して複数の直線に分割し、占有領域の頂点のｙ座標を通る水平線と、近似により得られた直線との交点を求める。このことで本実施形態と同様に幅Ｘの値を求めることができる。
【００２５】
＜実施形態３＞
実施形態３では、円形状の表示部１０６に対して文字列を流し込むように配置する際に、全文字列が表示領域に収まる場合とそうでない場合とで、表示領域の形状を切り替える方法について図１４を用いて説明する。図１４（ａ）は、円形状の表示領域１３０１に文字列を流し込み、実施形態１と実施形態２との少なくとも何れか一方の文字配置の方法を用いて、文字を配置したときの状態を示したものである。矩形１３０２は１行目における各文字の文字領域が収まる矩形を示しており、以降の行においても番号は付していないが同様に文字領域が収まる矩形を示している。全文字列が表示領域１３０１に収まる場合には、各文字の配置位置を決定して文字列を表示する。
しかし、図１４（ａ）のように文字列が表示領域１３０１に収まりきらない場合、表示領域内にスクロールバー等を表示させ、ユーザからのタッチ操作等によりスクロールバーを操作して、文字列をスクロールさせて表示させる方法が一般的である。しかし、表示領域が円形状であることから、矩形１３０２に示したような文字領域が収まる矩形の大きさが各行によって異なる。図１４（ａ）の状態から縦方向にスクロールさせると、それまでの行に収まっていた文字列が別の行に移ると収まらなくなるため、再び複雑な文字配置処理を行わなければならない。スクロール操作によるアニメーションでは表示速度が求められる。
そこで、例えば、文字配置位置決定部２０６は、文字列が表示領域１３０１に収まりきらないと判定された時点で、図１４（ｂ）のように表示領域１３０１に収まる矩形１３０３を新たな表示領域に変更する。表示領域１３０１に文字列が収まらないことが既知であるため、矩形１３０３に文字列を配置する際には、実施形態１や実施形態２のような配置処理を行う必要はなく、各文字の文字領域が矩形１３０３に収まるように配置してよい。ユーザからのタッチ操作等によるスクロール処理のために、例えば、文字配置位置決定部２０６は、スクロールバー１３０４を矩形１３０３の横に配置してもよい。円形状の表示領域が矩形に変更されたことと文字配置処理の簡略化で、より応答性のよいスクロール表示が可能となる。情報処理装置１００は、スクロールバーを矩形１３０３の近傍（矩形１３０３から所定範囲内）に表示する。
【００２６】
このような表示領域の変更に関する情報処理の一例を、図１５に示すフローチャートで説明する。なお、図３と同じ番号が付してあるものは説明を省略する。配置する文字列情報と表示領域情報とが取得された後、各行の配置位置が決定される。
先頭文字から順に文字のメトリクス情報が取得され、ステップＳ１４０１において、文字領域判定部２０５は、現在の行において表示領域１３０１に収まるか否かを判定する。情報処理装置１００は、現在処理中の文字が行末における特定の文字であれば、実施形態１で説明した文字配置の処理を行ってもよく、行頭の文字であれば実施形態２で説明した文字配置の処理を行ってもよい。ステップＳ１４０１で表示領域１３０１に収まると判定されれば（ステップＳ１４０１においてＹｅｓ）文字領域判定部２０５は、処理をステップＳ３０６に移す。
ステップＳ３０６において、文字配置位置決定部２０６は、文字配置位置を決定する。文字配置位置決定部２０６は、次の文字が無ければ（ステップＳ３０７においてＮｏ）、図１５に示すフローチャートの処理を終了し、次の文字があれば（ステップＳ３０７においてＹｅｓ）、次の文字に処理を移す。
ステップＳ１４０１で収まると判定されれば（ステップＳ１４０１においてＮｏ）、文字領域判定部２０５は、処理をステップＳ１４０２に移す。
ステップＳ１４０２において、文字領域判定部２０５は、次の行として配置可能な領域が表示領域１３０１にあるかどうかを判定する。次の行として配置可能な領域があると判定した場合（ステップＳ１４０２においてＹｅｓ）、文字領域判定部２０５は、処理をステップＳ３１０に移す。
【００２７】
ステップＳ３１０において、文字配置位置決定部２０６は、次の行に移動して行頭の文字としてステップＳ１４０１に処理を移す。一方、次の行として配置可能な領域がないと判定した場合（ステップＳ１４０２においてＮｏ）、文字領域判定部２０５は、処理をステップＳ１４０３に移す。
ステップＳ１４０３において、文字配置位置決定部２０６は、既に決定した文字の配置位置に関する情報は破棄し、表示領域の形状を変更する。変更後の表示領域の形状や大きさは限定しないが、本実施形態においては文字配置の処理を簡略化するために、文字配置位置決定部２０６は、図１４の矩形１３０３に示すような、表示領域１３０１に包含される矩形で面積が最大となる正方矩形とする。表示領域１３０１が半径Ｒの円であれば、一辺がＲ√２の正方形となる。
そして、ステップＳ１４０４において、文字配置位置決定部２０６は、矩形１３０３に対して改めて文字列を配置する。文字配置位置決定部２０６は、各文字の文字領域を矩形１３０３の左上から順に敷き詰めるように左に配置していき、その行に収まらなくなれば次の行に移動し、矩形１３０３に収まりきらなくなるまで文字の配置処理を繰り返す。
【００２８】
＜実施形態４＞
実施形態２では、行末文字の文字領域が表示領域に収まらない場合に、その行の先頭文字の占有領域に基づいて開始位置を左に移動する情報処理の一例を説明した。本実施形態では、行末文字が収まるか否かに関わらず、行の先頭文字について占有領域が表示領域に収まるように左側に詰めて配置する。そして、その行の末尾文字まで配置したあとで右側に余白があれば、文字列がその行の配置可能領域の中央にくるように配置位置を調整するための情報処理の一例を、図１６を用いて説明する。なお、前述で用いたものと同じ番号が付してあるステップについては詳しい説明を省略する。
図１６のステップＳ３０４までは、図３と同じため説明を省略する。
ステップＳ１００１において、文字領域判定部２０５は、行の先頭文字か否かを判定する。先頭文字であると判定した場合（ステップＳ１００１においてＹｅｓ）、文字領域判定部２０５は、処理をステップＳ３１１に移す。ステップＳ３１１において、占有領域情報取得部２０７は、占有領域情報を取得する。そしてステップＳ１００２において、占有領域判定部２０８は、表示領域の境界線と占有領域との位置関係に基づいて、文字領域が表示領域内に収まる開始位置から更に左に移動可能な幅Ｘを算出する。幅Ｘの算出は、幅Ｘの導出の一例である。
ステップＳ１６０１において、文字配置位置決定部２０６は、算出した幅Ｘから文字の配置位置を決定する。ステップＳ１００１で先頭文字ではないと判定された場合（ステップＳ１００１においてＮｏ）、文字領域判定部２０５は、処理をステップＳ３０５に移す。ステップＳ３０５において、文字領域判定部２０５は、文字領域が表示領域に収まるか否か判定する。文字領域が表示領域に収まるか否か判定した場合（ステップＳ３０５においてＹｅｓ）、文字領域判定部２０５は、処理をステップＳ１６０１に移す。収まらないと判定した場合（ステップＳ３０５においてＮｏ）、文字領域判定部２０５は、処理をステップＳ３１１に移す。ステップＳ３１１において、占有領域情報取得部２０７は、占有領域情報を取得する。ステップＳ３１２において、占有領域判定部２０８は、占有領域が表示領域に収まるか否かを判定する。占有領域が表示領域に収まると判定した場合（ステップＳ３１２においてＹｅｓ）、占有領域判定部２０８は、処理をステップＳ１６０１に移す。占有領域が表示領域に収まらないと判定した場合（ステップＳ３１２においてＮｏ）、占有領域判定部２０８は、処理をステップＳ１６０２に移す。
ステップＳ１６０２において、文字配置位置決定部２０６は、文字の配置位置の調整を行う。ここでは、文字配置位置決定部２０６は、その行における末尾文字に近い表示領域の境界線のｘ座標から、直前の文字に関する文字領域右端のｘ座標を引いた幅Ｔが予め定められた閾値以上であれば、その行の文字列全体の配置位置をＴ／２だけ右に移動させる。ステップＳ１６０２の処理は、占有領域が表示領域に収まらないと判定された場合、現在の行、又は列において既に配置位置が決定されている文字の配置位置をステップＳ１００２の方向と逆の方向に移動するよう調整する処理の一例である。
【００２９】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給する。そして、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００３０】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではない。例えば、上述した図２に示したソフトウェア構成をハードウェア構成として情報処理装置１００に実装するようにしてもよい。この場合、図２の各部に相当する演算部や回路を情報処理装置１００に実装すればよい。また、上述した各実施形態では、１つの情報処理装置１００が処理を行うものとして説明を行った。しかし、複数のコンピュータが処理を分散し、上述した情報処理装置１００の機能を提供するようにしてもよい。また、上述した実施形態では、ＣＰＵ１０１が処理を実行する際に用いるデータ、例えばテーブル情報等、はＲＯＭ１０２に格納されているものとして説明を行ったが、情報処理装置１００とネットワーク等を介した通信可能な他の装置に記憶されていてもよい。また、上述した各実施形態を任意に組み合わせて実施してもよい。
【００３１】
以上、上述した各実施形態の処理によれば、表示部１０６の限られた表示領域を有効に文字表示に使うことができるようにすることができる。
【符号の説明】
【００３２】
１００  情報処理装置
１０１  ＣＰＵ
１０６  表示部
【図１】
0006614904.tif 000002
【図２】
0006614904.tif 000003
【図３】
0006614904.tif 000004
【図４】
0006614904.tif 000005
【図５】
0006614904.tif 000006
【図６】
0006614904.tif 000007
【図７】
0006614904.tif 000008
【図８】
0006614904.tif 000009
【図９】
0006614904.tif 000010
【図１０】
0006614904.tif 000011
【図１１】
0006614904.tif 000012
【図１２】
0006614904.tif 000013
【図１３】
0006614904.tif 000014
【図１４】
0006614904.tif 000015
【図１５】
0006614904.tif 000016
【図１６】
0006614904.tif 000017