(57)【要約】【課題】グリフデザインの統一感や文字の視認性を維持しつつ、より多くの文字列を表示することができる情報処理装置を提供する。【解決手段】情報処理装置１００は、ユーザによる入力操作を受け付ける入力ユニット１０４と、描画バッファを有する描画ユニット１０５と、画像を表示する表示ユニット１０６とを備える。情報処理装置１００は、入力ユニット１０４から入力される文字の、形状に関する形状情報を取得し、形状情報により文字の描画位置を決定する。情報処理装置１００は、描画位置に応じて描画バッファに文字を描画し、表示ユニット１０６により描画バッファに描画した文字を表示する。【選択図】図１
2019020488.tif 000002
【特許請求の範囲】
【請求項１】
所定の入力手段から入力される文字の、形状に関する形状情報を取得する形状情報取得手段と、
前記形状情報に基づいて、前記文字の描画位置を決定する描画位置決定手段と、
前記描画位置決定手段で決定された描画位置に基づく位置に前記文字を描画する描画手段と、を備えることを特徴とする、
情報処理装置。
【請求項２】
前記形状情報取得手段は、前記文字の字形を包含する最小矩形に関する情報を前記形状情報として取得することを特徴とする、
請求項１記載の情報処理装置。
【請求項３】
前記描画位置決定手段は、複数の文字からなる文字列の描画位置を、各文字の形状情報に基づいて決定することを特徴とする、
請求項１又は２記載の情報処理装置。
【請求項４】
前記描画位置決定手段は、複数の行の前記文字列の描画位置を、前の行の文字列の文字の中でベースラインより下の第１領域において最も低い位置にある字画から取得される第１の文字の高さと、後の行の文字列の文字の中のベースラインより上の第２領域において最も高い位置にある字画から取得される第２の文字の高さと、に基づいて決定することを特徴とする、
請求項３記載の情報処理装置。
【請求項５】
前記描画位置決定手段は、前記前の行の文字列の前記第１の文字の高さと、前記後の行の文字列の前記第２の文字の高さと、前記前の行の文字列との重なりを避けるための所定のマージン幅と、に基づいて前記後の行の文字列の描画位置を決定することを特徴とする、
請求項４記載の情報処理装置。
【請求項６】
前記描画位置決定手段は、１行目の文字列の描画位置を、所定の表示領域の上辺から前記１行目の文字列の前記第２の文字の高さだけ下の位置に決定し、
２行目の文字列の描画位置を、前記１行目の文字列の前記第１の文字の高さと、前記２行目の文字列の前記第２の文字の高さと、前記マージン幅と、に基づいて決定することを特徴とする、
請求項５記載の情報処理装置。
【請求項７】
前記描画位置決定手段は、前記形状情報により、入力された文字が改行を意味する文字であるか否かを判断し、改行ではない場合に、当該行の文字列の前記第１の文字の高さ及び当該行の文字列の前記第２の文字の高さを取得し、改行である場合に、当該行の描画位置を決定することを特徴とする、
請求項４〜６のいずれか１項記載の情報処理装置。
【請求項８】
前記描画位置決定手段は、前の行の文字列の描画位置から後の行の文字列の描画位置までの間隔である行送り幅が所定の閾値に収まるように、各行の前記行送り幅を変更することを特徴とする、
請求項４〜７のいずれか１項記載の情報処理装置。
【請求項９】
前記描画位置決定手段は、所定の表示領域に描画したときに余白が有る場合に、最小の行送り幅を広げるように変更することを特徴とする、
請求項８記載の情報処理装置。
【請求項１０】
前記描画位置決定手段は、現在処理中の行の前記第２領域の字画と前の行の前記第１領域の字画とが所定の距離以内に近接する場合に、前記現在処理中の行の第２領域の幅と前の行の第１領域の幅とに基づいて前記現在処理中の文字列の描画位置を決定し、
現在処理中の行の前記第２領域の字画と前の行の前記第１領域の字画とが所定の距離以内に近接しない場合に、前記形状情報に基づいて前記現在処理中の文字列の描画位置を決定することを特徴とする、
請求項４〜６のいずれか１項記載の情報処理装置。
【請求項１１】
ユーザによる入力操作を受け付ける入力ユニットと、画像を表示する表示ユニットとを備える情報処理装置により実行される方法であって、
前記入力ユニットから入力される文字の、形状に関する形状情報を取得し、前記形状情報により決定する前記文字の描画位置に基づいて、所定の描画バッファに前記文字を描画し、前記描画バッファに描画した文字を前記表示ユニットに表示することを特徴とする、
表示処理方法。
【請求項１２】
ユーザによる入力操作を受け付ける入力ユニットと、画像を表示する表示ユニットとを備えるコンピュータを、
前記入力ユニットから入力される文字、形状に関する形状情報を取得する形状情報取得手段、
前記形状情報に基づいて、前記文字の描画位置を決定する描画位置決定手段、
前記描画位置決定手段で決定された描画位置に基づく位置に前記文字を描画する描画手段、
として機能させるためのコンピュータプログラム。
【請求項１３】
請求項１２記載のコンピュータプログラムを記憶する、コンピュータにより読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置における文字の描画技術に関する。
【背景技術】
【０００２】
スマートフォン、タブレット端末、パーソナルコンピュータ等の情報処理装置は、高機能化、表示デバイスの高解像度化等により、多くの文字の描画が可能である。限られた描画領域に多くの文字を描画するには、文字サイズを一律に小さくして再配置する方法や、文字の縦方向或いは横方向の伸縮率を変えて文字を変形する方法がある。また、文字の大きさや形状だけではなく、レイアウトによって生じる行間等の空白の大きさを調整する方法もある。行間の空白の大きさを調整する技術には、例えば、原稿のコピー時に、スキャンした文書に対して注釈を書き込むために行間を広げたり、使用されないスペースを省いてページを結合する技術がある（特許文献１）。また、作成した文書全体を圧縮対象として、予め定めた範囲の行間を一律に変更することで、多くの余白を含むページの発生を抑制する技術がある（特許文献２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平８−２０４９４９号公報
【特許文献２】特開平５−２６６０１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
限られた描画領域に文字を描画する場合、文字サイズを一律に小さくすると、視認性が低下する。また、文字を変形させる場合、グリフデザインの統一感が無くなる。行間を一律に変更すると、前後の行の文字列によっては余白が残ったり、逆に文字同士が近接或いは一部が重なることがあり、視認性が低下する。
【０００５】
本発明は、上記課題に鑑みてなされたものであり、グリフデザインの統一感や文字の視認性を維持しつつ、より多くの文字列を表示することができる情報処理装置を提供することを主たる目的とする。
【課題を解決するための手段】
【０００６】
本発明の情報処理装置は、所定の入力手段から入力される文字の、形状に関する形状情報を取得する形状情報取得手段と、前記形状情報に基づいて、前記文字の描画位置を決定する描画位置決定手段と、前記描画位置決定手段で決定された描画位置に基づく位置に前記文字を描画する描画手段と、を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、グリフデザインの統一感や文字の視認性を維持しつつ、より多くの文字列を表示することができる。
【図面の簡単な説明】
【０００８】
【図１】情報処理装置のハードウェア構成図。
【図２】情報処理装置の機能ブロック図。
【図３】文字入力時の表示処理を表すフローチャート。
【図４】文字やフォントに関する一般的な用語の説明図。
【図５】（ａ）、（ｂ）は描画位置の説明図。
【図６】（ａ）〜（ｃ）は文字列の描画結果の説明図。
【図７】文字入力時の表示処理を表すフローチャート。
【図８】（ａ）〜（ｃ）は文字列の描画結果の説明図。
【図９】文字入力時の表示処理を表すフローチャート。
【図１０】（ａ）、（ｂ）は文字列の描画結果の説明図。
【図１１】（ａ）、（ｂ）は行送り幅を変更する前後の文字列の描画結果の説明図。
【図１２】文字入力時の表示処理を表すフローチャート。
【図１３】所定の条件を満たす字画の抽出方法を表すフローチャート。
【図１４】前後の行で近接すると誤読の恐れのある文字の組み合わせの説明図。
【図１５】テーブル情報の説明図。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施形態は、特許請求の範囲に関る本発明を限定するものではなく、また本実施形態で説明されている特徴の組み合わせの全てが、本発明の解決手段に必須のものとは限らない。
【００１０】
（全体構成）
図１は、本実施形態の情報処理装置のハードウェア構成図である。情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１、ＲＯＭ（Read Only Memory）１０２、及びＲＡＭ（Random Access Memory）１０３を備えるコンピュータシステムである。ＣＰＵ１０１、ＲＯＭ１０２、及びＲＡＭ１０３は、バス１０７を介して接続される。バス１０７には、入力ユニット１０４、描画ユニット１０５、及び表示ユニット１０６も接続される。
【００１１】
ＣＰＵ１０１は、ＲＯＭ１０２からコンピュータプログラムやデータを読み出し、ＲＡＭ１０３を作業領域に用いて実行することで、情報処理装置１００の動作を制御する。入力ユニット１０４は、マウス、キーボード、タッチパネル、マイク等の入力デバイスであり、ユーザによる入力操作を受け付ける。描画ユニット１０５は、ＲＯＭ１０２やＲＡＭ１０３に格納された、或いは入力ユニット１０４から入力された文字列情報を取得し、内部に備える描画バッファに対して描画処理を行う。表示ユニット１０６は、描画ユニット１０５で描画処理された描画バッファの各画素値に応じた画像を、グラフィックスやユーザインターフェースとしてディスプレイに表示する。
なお、情報処理装置１００は、コンピュータプログラムを格納する外部記憶装置を備えてもよい。外部記憶装置は、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、メモリカード、ＤＶＤ等である。
【００１２】
図２は、情報処理装置１００の機能ブロック図である。この機能ブロックは、入力ユニット１０４から入力された複数の文字からなる文字列を表示ユニット１０６によりディスプレイに表示させる処理を行うものであり、情報処理装置１００が行う他の処理についての機能は含まない。文字列は、複数行で表示される。情報処理装置１００は、形状情報取得部２０１、描画位置決定部２０２、及び描画処理部２０３として機能する。情報処理装置１００の各機能は、ＣＰＵ１０１がコンピュータプログラムを実行することで、入力ユニット１０４、描画ユニット１０５、及び表示ユニット１０６と協働して実現される他に、少なくとも一部がハードウェアにより実現されてもよい。
【００１３】
形状情報取得部２０１は、表示ユニット１０６に表示するための文字列を構成する各文字の形状情報を取得する。形状情報は、フォントデータ等から取得される文字の形状に関する情報である。形状情報は、例えば字形を包含する最小矩形に関する情報、アウトラインフォントから取得されるベクタ情報、又はビットマップフォントから取得される２値や多値の画像情報等である。本実施形態では、形状情報取得部２０１は、コードポイント等の文字を一意に識別するための識別情報に基づいて形状情報を取得する。識別情報は、入力ユニット１０４からユーザにより入力されてもよい。描画位置決定部２０２は、形状情報に基づいて、文字列の描画位置を決定する。描画処理部２０３は、描画位置決定部２０２により決定された描画位置に基づいて、描画ユニット１０５の描画バッファに文字列の描画を行う。
以下、このような構成の情報処理装置１００による文字入力時の表示処理について説明する。
【００１４】
（第１実施形態）
図３は、情報処理装置１００による文字入力時の表示処理を表すフローチャートである。この処理は、入力ユニット１０４による文字入力に応じて開始される。
【００１５】
入力ユニット１０４から文字が入力されると、形状情報取得部２０１は、形状情報を取得する（Ｓ３０１）。描画位置決定部２０２は、形状情報取得部２０１で取得した各文字の形状情報から行の高さを取得する（Ｓ３０２）。図４は、文字やフォントに関する一般的な用語の説明図である。図４では、２行の文字列により用語が説明される。各行は、基準となるベースラインにより描画位置が決められる。ベースラインから次の行のベースラインまでの間隔は行送り幅４０１と呼ばれる。行送り幅４０１によって次の行の描画位置が決められる。文字の形状は、ベースラインより上のアセンド領域４０２と、ベースラインより下のディセンド領域４０３と、にわたってデザインされている。アセンド領域４０２は、ベースラインよりアセンド幅４０４だけ上に位置するアセンドラインまでの領域である。ディセンド領域４０３は、ベースラインよりディセンド幅４０５だけ下に位置するディセンドラインまでの領域である。１行目のディセンドラインと２行目のアセンドラインと間隔は、行間４０６と呼ばれる。行間４０６の値は、テキスト編集等のアプリケーションによっては外部から設定可能であるが、本実施形態ではゼロとする。そのために行送り幅４０１は、１行目のディセンド幅４０５と２行目のアセンド幅４０４との和となる。Ｓ３０２の処理で取得される行の高さは、当該行の文字列の文字の中で、アセンド領域４０２において最も高い位置にある字画の座標と、ディセンド領域４０３において最も低い位置にある字画の座標と、から取得される。なお、Ｓ３０２の処理では、描画位置決定部２０２は、現在処理中の行のベースラインと、アセンド領域４０２において最も高い位置にある字画の座標と、によりアセンド領域４０２の文字の高さを取得する。同様に、描画位置決定部２０２は、現在処理中の行のベースラインと、ディセンド領域４０３において最も低い位置にある字画の座標と、によりディセンド領域４０３の文字の高さを取得する。描画位置決定部２０２は、アセンド領域４０２の文字の高さと、ディセンド領域４０３の文字の高さとから行の高さを取得する。
【００１６】
行の高さを取得した描画位置決定部２０２は、現在処理中の文字列が１行目であるか否かを判断する（Ｓ３０３）。図５は、描画位置の説明図である。図５（ａ）に示すように、文字列の表示領域５０１は予め指定されている。１行目の文字列は、表示領域５０１に対して上詰めで配置される。表示領域５０１の上辺の座標から、１行目のアセンド領域４０２における文字の高さ５０２だけ下の位置が、１行目の文字列の描画位置であるベースライン５０３となる。図５（ｂ）に示すように、表示領域５０１ではなく１行目のベースライン位置５０４の左端の座標だけが指定されている場合、指定された座標が描画位置となる。
現在処理中の文字列が１行目ではない場合（Ｓ３０３：N）、描画位置決定部２０２は、前の行の文字列のディセンド領域４０３における文字の高さＨｄを、各文字の形状情報から取得する（Ｓ３０４）。描画位置決定部２０２は、例えば、前の行の文字列のベースラインとディセンド領域４０３において最も低い位置にある字画の座標とから、文字の高さＨｄを取得する。
【００１７】
文字の高さＨｄ取得後、或いは現在処理中の文字列が１行目である場合（Ｓ３０３：Y）、描画位置決定部２０２は、現在処理中の行の文字列の描画位置を決定する（Ｓ３０５）。描画位置決定部２０２は、Ｓ３０２の処理で取得した行の高さから得られるアセンド領域４０２における文字の高さＨａと、Ｓ３０４の処理で取得した前の行の文字列のディセンド領域４０３における文字の高さＨｄと、から現在処理中の行の描画位置を決定する。本実施形態では、描画位置決定部２０２は、現在処理中の行の文字の高さＨｄと、前の行の文字の高さＨｄと、前の行の文字列との重なりを避けるための所定のマージン幅Ｈｍとの総和を、前の行のベースラインからの行送り幅４０１として算出する。この行送り幅４０１により、描画位置決定部２０２は、現在処理中の行の文字列の描画位置を決定する。マージン幅Ｈｍは、高さＨａと高さＨｄとの和に対して予め設定した割合を掛けた値、或いは固定値である。
【００１８】
描画処理部２０３は、描画位置決定部２０２が決定した描画位置に基づいて、当該行の文字列を描画バッファに描画する（Ｓ３０６）。描画バッファへの描画結果は、表示ユニット１０６によりディスプレイに表示される。
【００１９】
情報処理装置１００は、描画処理後に、描画処理部２０３が描画した行が最後の行であるか否かを判断する（Ｓ３０７）。最後の行ではない場合（Ｓ３０７：N）、描画位置決定部２０２は、現在処理中の行の文字列のディセンド領域における文字の高さＨｄをＲＡＭ１０３に格納する（Ｓ３０８）。ＲＡＭ１０３に格納された文字の高さＨｄは、次の行の文字列の描画位置を決定する際に、Ｓ３０４の処理で読み出される。情報処理装置１００は、ディセンド領域における文字の高さＨｄを格納した後に、Ｓ３０１以降の処理を最後の行まで繰り返し実行する。最後の行である場合（Ｓ３０７：Y）、情報処理装置１００は表示処理を終了する。
【００２０】
図６は、文字列の描画結果の説明図である。図６は、予め指定された矩形の表示領域６０１に文字列を描画した結果を表す。図６（ａ）は、表示領域６０１に対して上詰めに、アセンド幅４０４とディセンド幅４０５との和を行送り幅６０３として描画位置を決定して描画した結果を表す。１行目の文字列は、表示領域６０１の上辺からアセンド幅４０４だけ下の位置をベースライン６０２として、描画位置が決定される。図６（ａ）の行送り幅６０３では、表示領域６０１に文字列が収まりきらずにはみ出してしまう。
【００２１】
図６（ｂ）は、表示領域６０１に文字列を収まるように各行の行送り幅を一律で変更したときの描画結果を表す。１行目の文字列の描画位置は、行間及び行送り幅の変更に影響されないため、ベースライン６０２の位置が図６（ａ）の１行目の文字列と同じになる。行送り幅６０４は、表示領域６０１に収める文字列の行数をＮ（図６ではＮ＝６）とすると、表示領域６０１の高さから１行目のアセンド幅と最終行のディセンド幅を引いた幅６０５を（Ｎ−１）で除算することで求めることができる。
【００２２】
図６に示す文字列の最初の１〜３行目は小文字である。そのために図６（ｂ）において、１〜３行目は、行間に余白があり、各行を明確に視認することができる。しかしながら、４〜６行目は、行送り幅６０４に対して文字の高さが大きく、前後の行の文字が重なってしまう。そのために、文字「Ｅ」と「Ｆ」、及び「Ｔ」と「Ｉ」の識別が困難になる。
【００２３】
図６（ｃ）は、図３で説明した本実施形態の処理を適用した場合の描画結果を表す。１行目の文字列の描画位置は、表示領域６０１の上辺からアセンド領域における文字の高さ６０６だけ下の位置となる。２行目以降の文字列の描画位置は、前の行の文字列のディセンド領域の文字の高さと、現在の行の文字列のアセンド領域の文字の高さと、マージン幅との和を行送り幅として決められる。各行の文字列の文字の高さが異なるために、行送り幅も行によって異なる。そのために図６（ｂ）のように行によって余白が生じることも、前後の行の文字列が重なることもない。
【００２４】
本実施形態の情報処理装置１００は、表示する文字列が予め行単位に分割されており、行単位の文字列の各文字の形状情報に基づいて、行単位での描画処理を行う。なお、描画する文字列が縦書きの場合、情報処理装置１００は、アセンド領域やディセンド領域に代えて、文字の形状情報とマージン幅とに基づいて行毎の重なりを考慮して描画を行うことで、同様の効果を得ることができる。
【００２５】
（第２実施形態）
図７は、情報処理装置１００による第２実施形態の文字入力時の表示処理を表すフローチャートである。第１実施形態同様に、この処理は、入力ユニット１０４による文字入力に応じて開始される。この処理は、入力フォームに対してユーザがキーボードやタッチパネルを用いて１文字ずつ入力を行い、リターンキー等による改行の入力が行われた場合に行われる。図８は、第２実施形態の文字列の描画結果の説明図である。
【００２６】
入力ユニット１０４から文字が入力されると、形状情報取得部２０１は、形状情報を取得する（Ｓ７０１）。描画位置決定部２０２は、形状情報取得部２０１で取得した形状情報の文字が行の先頭文字であるか否かを判断する（Ｓ７０２）。
【００２７】
行の先頭文字である場合（Ｓ７０２：Y）、描画位置決定部２０２は、行の描画位置を仮決めする（Ｓ７０３）。ここで仮決めする描画位置は、描画する文字列が入力フォームの矩形欄からはみ出なければどこであってもよい。本実施形態では、仮決めする描画位置は、１行目であれば使用するフォントのアセンド幅だけ入力フォームの矩形欄の上辺から下の位置である。１行目でなければ、仮決めする描画位置は、使用するフォントのアセンド幅とディセンド幅の和だけ、前の行の描画位置から下の位置である。図８（ａ）は入力フォームの矩形欄８０１に対する、１行目の先頭文字「Ａ」の描画結果を表す。１行目であるため、先頭文字「Ａ」で使用するフォントのアセンド幅８０２だけ矩形欄８０１の上部から下の位置８０３が、描画位置に仮決めされる。なお、行の先頭文字でない場合（Ｓ７０２：N）、描画位置決定部２０２は、それまでに処理した当該行の文字と同じベースラインの位置を描画位置とする。
【００２８】
描画位置決定部２０２は、形状情報取得部２０１で取得した形状情報が改行を意味する文字であるか否かを判断する（Ｓ７０４）。本実施形態では、描画位置決定部２０２は、形状情報を取得するためのコードポイントから改行を意味する文字か否かを判断する。
【００２９】
形状情報が改行を意味する文字ではない場合（Ｓ７０４：N）、描画位置決定部２０２は、文字の形状情報からアセンド領域とディセンド領域とにおけるそれぞれの文字の高さを取得する（Ｓ７０５）。描画位置決定部２０２は、現在処理中の行のこれまでに取得したアセンド領域とディセンド領域とにおけるそれぞれの文字の高さの最大値よりも、Ｓ７０５の処理で取得した文字の高さの方が大きければ、当該行の文字列の高さの最大値を更新する（Ｓ７０６）。描画位置決定部２０２は、形状情報の文字を、Ｓ７０３の処理で仮決めした描画位置或いはそれまでに処理した当該行の文字と同じベースラインの位置に描画する（Ｓ７０７）。描画後に情報処理装置１００は、次の文字の処理を行う（Ｓ７０８）。以降、情報処理装置１００は、最終文字に到達するまでＳ７０１〜Ｓ７０８の処理を繰り返し行う。
【００３０】
形状情報が改行を意味する文字である場合（Ｓ７０４：Y）、描画位置決定部２０２は、これまでに描画されている現在の行の文字列の描画画像をクリアする（Ｓ７０９）。図８（ｂ）は、１行目の文字列「ＡＢＣ」を１文字ずつ処理して、改行を意味する形状情報を持つ文字８０４が入力されたときの状態を表す。Ｓ７０９の処理では、この文字列「ＡＢＣ」がクリアされることになる。
【００３１】
描画位置決定部２０２は、行の描画位置を再決定する（Ｓ７１０）。描画位置決定部２０２は、Ｓ７０６の処理で更新された行のアセンド領域における文字の高さと前の行のディセンド領域における文字の高さとの和を、前の行からの行送り幅として描画位置を再決定する。描画位置決定部２０２は、前の行からの行送り幅に、図３で示した説明したマージン幅を考慮してもよい。描画位置決定部２０２は、処理している行が１行目であれば、前の行のディセンド領域における文字の高さをゼロとして処理する。図８（ｃ）は、ディセンド領域における文字の高さをゼロとしたときの状態を表す。改行を意味する文字８０４が入力されると、それまで描画した文字列「ＡＢＣ」の描画結果はＳ７０９の処理で１度クリアされ、文字列「ＡＢＣ」のアセンド領域における文字の最大の高さ８０５に基づいて、描画位置８０６が再決定される。
【００３２】
描画処理部２０３は、描画位置決定部２０２で決定した描画位置に基づいて、当該行の文字列を描画バッファに描画する（Ｓ７１１）。描画バッファへの描画結果は、表示ユニット１０６によりディスプレイに表示される。描画位置決定部２０２は、Ｓ７０６の処理で更新した行のアセンド領域とディセンド領域とにおけるそれぞれの文字の高さの最大値をリセットして、現在の行の描画処理を終了する（Ｓ７１２）。
【００３３】
本実施形態の情報処理装置１００は、改行を意味する文字が入力されるタイミングで、その行の描画位置を再決定するが、描画位置の再決定は１文字毎や、文字入力後の経過時間に応じて行われてもよい。以上のように、行単位の文字列の入力が行われる。
【００３４】
（第３実施形態）
図９は、情報処理装置１００による第３実施形態の文字入力時の表示処理を表すフローチャートである。第１実施形態同様に、この処理は、入力ユニット１０４による文字入力に応じて開始される。この処理は、予め設定された表示領域に文字列を描画する際に、行毎の行送り幅のバラツキを低減する。図１０は、第３実施形態の文字列の描画結果の説明図である。
【００３５】
描画位置決定部２０２は、予め設定される表示領域に対して、Ｓ３０６の処理を除く図３に示した処理で得られる描画位置に文字列を配置したときのレイアウト情報を取得する（Ｓ９０１）。レイアウト情報は、少なくとも各行のアセンド領域及びディセンド領域における文字の高さと、行送り幅と、に関する情報を含む。図１０（ａ）は、レイアウト情報に従って仮に文字列を描画した結果を表す。図３に示す処理フローに従うと、表示領域１００１に対して、前後の行の文字の形状情報に基づいて行送り幅が決定される。そのため、１行目から２行目にかけての行送り幅１００２と、２行目から３行目にかけての行送り幅１００３とには、図示するように差が生じることがある。図１０（ａ）では、行送り幅１００２の方が大きい。行送り幅１００２及び行送り幅１００３は、レイアウト情報としてＲＡＭ１０３に保持される。
【００３６】
描画位置決定部２０２は、表示領域１００１に関する表示領域情報を取得する（Ｓ９０２）。表示領域情報は、表示領域１００１の高さ１００４を少なくとも含む。描画位置決定部２０２は、表示領域情報及びレイアウト情報に基づいて、表示領域１００１の下部の余白の有無を判断する（Ｓ９０３）。これは、表示領域１００１内に描画した文字列の高さの総和よりも表示領域１００１の高さ１００４が大きいか否かの判断である。図１０（ａ）では、表示領域１００１の高さ１００４の方が大きいために、余白（幅１００５）が生じる。最終行の文字がディセンド領域に及んでいる場合、それよりも下の位置から表示領域１００１の下部までが余白となる。余白が無い場合（Ｓ９０３：N）、描画処理部２０３は、現在のレイアウト情報に基づいて文字列を描画バッファに描画して処理を終了する（Ｓ９０７）。
【００３７】
余白が有る場合（Ｓ９０３：Y）、描画位置決定部２０２は、最小の行送り幅を広げるように変更する（Ｓ９０４）。レイアウト情報に含まれる各行の行送り幅を小さい順にソートしたものをｈ１、ｈ２、…ｈｎとする。ｈｎは、デフォルト値であるフォントのアセンド幅とディセンド幅との和である。表示領域１００１の下部の余白である幅１００５をＢ、行送り幅がｈ１である行数をＣとする。描画位置決定部２０２は、Ｓ９０４の処理における行送り幅ｈ１の変位量をＤとして、Ｄをゼロから（ｈ２−ｈ１）まで変位させたときのＣ＊Ｄ＜Ｂを満たすＤの最大値を取得する。つまり、描画位置決定部２０２は、行送り幅の変位量の総和が余白よりも小さくなるような変位量の最大値を取得する。
【００３８】
描画位置決定部２０２は、最小の行送り幅が変位量Ｄだけ広げられることで２番目の行送り幅と等しくなったか、つまりｈ１＋Ｄ＝ｈ２を満たすか否かを判断する（Ｓ９０５）。満たしていない場合（Ｓ９０５：N）、描画処理部２０３は、行送り幅の最小値をｈ１＋Ｄとしたレイアウト情報に基づいて文字列を描画バッファに描画して処理を終了する（Ｓ９０７）。満たしている場合（Ｓ９０５：Y）、描画位置決定部２０２は、すべての行送り幅がデフォルト値であるフォントのアセンド幅とディセンド幅との和であるｈｎになったか否かを判断する（Ｓ９０６）。少なくとも一つの行送り幅がデフォルト値ではない場合（Ｓ９０６：N）。描画位置決定部２０２は、Ｓ９０３以降の処理を繰り返し行う。すべての行送り幅がデフォルト値である場合（Ｓ９０６：Y）、描画処理部２０３は、すべての行送り幅をデフォルト値としたレイアウト情報に基づいて描画バッファに文字列を描画して処理を終了する（Ｓ９０７）。Ｓ９０７の処理で描画バッファへ描画された文字列は、表示ユニット１０６によりディスプレイに表示される。
【００３９】
図１０（ｂ）は、以上のような処理により図１０（ａ）の余白を少なくするように行送り幅を変更したときの描画結果を表す。Ｓ９０４の処理により３行目の行送り幅１００３が行送り幅１００７に変更されることで、３行目の文字列の下部と表示領域１００１の下部とが同じ位置になる。このように、余白の幅１００２が無くなるように、最小の行送り幅１００３が変更される。行送り幅１００３と行送り幅１００２との差に比較して、行送り幅１００７と行送り幅１００２との差は小さくなる。そのために、行毎の行送り幅のばらつきが低減される。表示領域１００１が指定されていない場合、各行の行送り幅のうち最大値と最小値の差が、指定された閾値以上であれば、この閾値に収まるように行送り幅を変更することで、行送り幅のばらつきが低減される。
【００４０】
（第４実施形態）
行送り幅を狭くすることで、水平方向に近接する２つの行の文字の組み合わせによっては字画に重なりが生じることがある。ユーザは、これにより文字が読みづらくなったり、誤読する可能性がある。図１１は、行送り幅を変更する前後の文字列の描画結果の説明図である。図１１（ａ）は、行送り幅を変更する前の描画結果を表す。１行目から２行目への行送り幅１１０１は、１行目のフォントのディセンド幅と２行目のフォントのアセンド幅との和である。図１１（ｂ）は、行送り幅１１０１を行送り幅１１０２に狭くした後の描画結果を表す。なお、図１１（ａ）、１１（ｂ）において、行間のマージン幅はゼロとしている。
【００４１】
１行目の文字列でディセンド領域に及ぶ文字がないために、楕円１１０３で示す１行目の先頭文字「Ｌ」の横方向の字画と、２行目の先頭文字「Ｔ」の横方向の字画との重なりが際立って見える。このように水平方向で所定の距離以内に近接する前の行の下部と後の行の上部とに横方向の字画があると、字画同士の重なりが大きくなることがある。この場合、前の行の文字との組み合わせやそれらの字画に応じて、行送り幅の変更量を減らす、或いは行送り幅の変更自体を行わない方がよいことがある。図１２は、このような処理を行う情報処理装置１００による第３実施形態の文字入力時の表示処理を表すフローチャートである。第１実施形態同様に、この処理は、入力ユニット１０４による文字入力に応じて開始される。図１２の各処理において、図３のフローチャートの同じ処理には同じステップ番号を付してある。
【００４２】
形状情報取得部２０１により形状情報を取得すると（Ｓ３０１）、描画位置決定部２０２は、この形状情報に基づいて、所定の条件を満たす字画を持つ文字の水平位置情報をＲＡＭ１０３に格納する（Ｓ１２０１）。図１３は、所定の条件を満たす字画の抽出方法を表すフローチャートである。ここでは、描画する文字としてアウトラインフォントを例に説明する。描画位置決定部２０２は、字形を定義する描画コマンドや制御点の座標から、現在処理中の行の文字が前の行の文字の字画と重なる可能性を判断する。
【００４３】
描画位置決定部２０２は、アウトラインフォントのパスの描画コマンドを取得する（Ｓ１３０１）。描画コマンドは、直線や曲線等を描画するための命令である。描画位置決定部２０２は、取得した描画コマンドが直線の描画を命令する直線コマンドであるか否かを判断する（Ｓ１３０２）。描画コマンドが直線コマンドではない場合（Ｓ１３０２：N）、描画位置決定部２０２は、次の描画コマンドの有無を判断する（Ｓ１３０３）。次の描画コマンドが有る場合（Ｓ１３０３：Y）、描画位置決定部２０２は、Ｓ１３０１以降の処理を描画コマンドが無くなるまで繰り返し実行する。次の描画コマンドが無い場合（Ｓ１３０３：N）、描画位置決定部２０２は、この処理を終了する。
【００４４】
描画コマンドが直線コマンドである場合（Ｓ１３０２：Y）、描画位置決定部２０２は、該直線コマンドに関連する始点及び終点の２点の座標を取得する（Ｓ１３０４）。描画位置決定部２０２は、取得した２点の座標を結ぶ直線の傾きＫ及び２点間の距離Ｄを取得する（Ｓ１３０５）。描画位置決定部２０２は、取得した直線コマンドによる字画が所定の条件を満たすか否かを判断する（Ｓ１３０６）。字画が所定の条件を満たさない場合（Ｓ１３０６：N）。描画位置決定部２０２は、Ｓ１３０３の処理を行う。
本実施形態の所定の条件は、字画の距離である始点と終点との距離Ｄが所定の閾値以上であり、字画の傾きＫの絶対値が所定の閾値より小さい横方向であり、且つ字画がアセンド領域の上部或いはベースラインより下部に配置されることである。距離Ｄに関する閾値及び傾きＫの絶対値の閾値は、予め設定される。字画の配置位置は、例えば、アセンド領域ではアルファベットの大文字の高さより高い部分、ディセンド領域ではディセンド幅の下領域３０％の部分のであり、予め設定されている。
【００４５】
字画が上記の所定の条件を満たす場合（Ｓ１３０６：Y）、描画位置決定部２０２は、該文字の水平位置情報をＲＡＭ１０３に格納する（Ｓ１３０７）。描画位置決定部２０２は、水平位置情報として、字画がアセンド領域の上部にある場合とベースライン以下にある場合とで、別々に、文字の形状を包含する最小矩形の水平方向座標の最小値と最大値を格納する。描画位置決定部２０２は、水平位置情報を格納した後にＳ１３０３の処理を行う。
【００４６】
以上のような処理で水平位置情報を格納した描画位置決定部２０２は、前の行と字画が近接する文字の有無を判断する（Ｓ１２０２）。描画位置決定部２０２は、前の行においてベースライン以下にＳ１３０６の所定の条件を満たす横方向の字画を持つ文字の水平位置情報と、現在処理中の行においてアセンド領域上部に所定の条件を満たす字画を持つ文字の水平位置情報と、を比較する。描画位置決定部２０２は、２つの水平位置情報に重複する範囲があれば、それが前の行と字画が近接する文字であると判断する。
【００４７】
近接する文字が有る場合（Ｓ１２０２：Y）、描画位置決定部２０２は、描画位置を変更せずに現在処理中の行の文字列を描画して処理を終了する（Ｓ３０６）。つまり描画位置決定部２０２は、現在処理中の行のアセンド幅と、前の行のディセンド幅とに基づいて、現在処理中の行の文字列の描画位置を決定する。近接する文字が無い場合（Ｓ１２０２：N）、描画位置決定部２０２は、第１実施形態と同様に、行送り幅を狭めるように描画位置を決定して、行の文字列を描画して処理を終了する（Ｓ３０４、Ｓ３０５、Ｓ３０６）。
【００４８】
以上の説明ではアウトラインフォントの文字について説明したが、ビットマップフォントの場合には、ビットマップ画像におけるピクセル単位で文字の形状情報を取得すれば同様の効果が得られる。また、描画位置決定部２０２は、前後の行の文字の形状情報からではなく、前後の行で近接すると誤読の可能性のある文字のコードポイントの組み合わせをテーブル情報として保持してもよい。この場合、描画位置決定部２０２は、図１２のＳ１２０２の処理において、行の前後の文字がテーブル情報の組み合わせに当てはまる場合に、描画位置の変更を行わない。
【００４９】
図１４は、前後の行で近接すると誤読の恐れのある文字の組み合わせの説明図である。行送り幅を狭めると、楕円１４０１で囲まれた１行目の文字と２行目の文字について、ダイアクリティカルマークが文字「ｃ」と「ａ」のどちらについているのかが判別しづらくなる。楕円１４０２についても同様である。
【００５０】
図１５は、テーブル情報の説明図である。テーブル情報は、テーブル１５０１やテーブル１５０２のように上の行に関する文字の集合と、下の行に関する文字の集合との組み合わせで構成される。近接する水平方向の位置において、上の行の文字集合のいずれかが上の行に登場し、且つ下の行の文字集合のいずれかが下の行に登場した場合、描画位置決定部２０２は、行送り幅を狭める処理を行わないようにする。
【００５１】
また、描画位置決定部２０２は、アセンド領域において予め設定された高さ（例えばｘＨｅｉｇｈｔ）よりも大きな文字が行中にいくつあるかに応じて、行送り幅を変更するか否かを判断してもよい。
【００５２】
以上のように、各実施形態の情報処理装置１００は、行送り幅を行毎に適宜設定することで、文字の視認性を維持しつつ、より多くの文字列を表示することができる。また、その際に文字の変形等を行わないためにグリフデザインの統一感を維持できる。そのためにユーザは、文字入力を快適に行うことができる。
【００５３】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2019020488.tif 000003
【図２】
2019020488.tif 000004
【図３】
2019020488.tif 000005
【図４】
2019020488.tif 000006
【図５】
2019020488.tif 000007
【図６】
2019020488.tif 000008
【図７】
2019020488.tif 000009
【図８】
2019020488.tif 000010
【図９】
2019020488.tif 000011
【図１０】
2019020488.tif 000012
【図１１】
2019020488.tif 000013
【図１２】
2019020488.tif 000014
【図１３】
2019020488.tif 000015
【図１４】
2019020488.tif 000016
【図１５】
2019020488.tif 000017