(57)【要約】【課題】生成された文章データから文字コードを抜き取ることは容易ではない情報処理装置を提供する。【解決手段】情報処理装置は、フォントと関連づけられた複数の文字コードを有する文章データに含まれる１又は複数の段落の配置情報に基づいて、１又は複数の段落の配置情報を有するコンテナデータを生成するコンテナデータ生成部１１ｂと、文章データに含まれる１又は複数の段落のそれぞれについて、当該段落に含まれる１又は複数の文字コードの配置情報に基づいて、１又は複数の文字コードの配置情報を有するブロックデータを生成するブロックデータ生成部１１ｃと、文章データに含まれる複数の文字コードのそれぞれについて、当該文字コードと関連付けられているフォントに基づいて、当該文字コードが画像情報に変換された文字画像データを生成する文字画像データ生成部１１ｄと、を有する処理部１１を備える。【選択図】図３
2019057152.tif 000002
【特許請求の範囲】
【請求項１】
フォントと関連づけられた複数の文字コードを有する文章データに含まれる１又は複数の段落の配置情報に基づいて、１又は複数の段落の配置情報を有するコンテナデータを生成することと、
前記文章データに含まれる１又は複数の段落のそれぞれについて、当該段落に含まれる１又は複数の文字コードの配置情報に基づいて、１又は複数の文字コードの配置情報を有するブロックデータを生成することと、
前記文章データに含まれる複数の文字コードのそれぞれについて、当該文字コードと関連付けられているフォントに基づいて、当該文字コードが画像情報に変換された文字画像データを生成することと、
を含む情報処理方法。
【請求項２】
前記ブロックデータを生成することは、
前記文章データに含まれる文字コードが、当該文字コードの直前又は直後に位置する文字コードと分割して文字として表示されることが禁止される分割禁止の文字コードである場合、当該文字コードと、当該文字コードの直前又は直後に位置する文字コードとの配置情報を有する前記ブロックデータを生成すること、を含む請求項１に記載の情報処理方法。
【請求項３】
前記コンテナデータを生成することは、
前記文章データに含まれる連続して配置される文字コードが、親文字とルビ文字との関係を有する場合、親文字の文字コードの配置情報を有する第１の前記ブロックデータと、ルビ文字の文字コードの配置情報を有する第２の前記ブロックデータとを生成し、第１の前記ブロックデータ及び第２の前記ブロックデータの位置関係を決定して、第１の前記ブロックデータ及び第２の前記ブロックデータの配置情報を有する前記コンテナデータを生成することを含む請求項１又は２に記載の情報処理方法。
【請求項４】
前記ブロックデータを生成することは、
前記文章データ内に連続して配置される複数の欧文の文字コードが含まれる場合、前記連続する複数の欧文の文字コードの配置情報に基づいて、前記連続する複数の欧文の文字コードの配置情報を有する前記ブロックデータを生成することを含む請求項１〜３の何れか一項に記載の情報処理方法。
【請求項５】
前記文章データは、当該文章データに含まれる文字コードと関連づけられた文字サイズを有しており、
前記文章データに含まれる複数の文字コードのそれぞれについて、当該文字コードと関連づけられたフォント及び文字サイズに基づいて、当該文字コードの前記文字画像のサイズを示す文字画像サイズを求めることを含む請求項１〜４の何れか一項に記載の情報処理方法。
【請求項６】
前記文章データは、当該文章データに含まれる文字コードと関連づけられた文字の修飾情報を有しており、
前記文章データに含まれる複数の文字コードのそれぞれについて、当該文字コードと関連づけられた文字の修飾情報を有する文字修飾データを生成することを含む請求項１〜５の何れか一項に記載の情報処理方法。
【請求項７】
前記コンテナデータと、前記ブロックデータと、前記文字画像データとを送信することを、含む請求項１〜６の何れか一項に記載の情報処理方法。
【請求項８】
フォントと関連づけられた複数の文字コードを有する文章データに含まれる１又は複数の段落の配置情報に基づいて、１又は複数の段落の配置情報を有するコンテナデータを生成するコンテナデータ生成部と、
前記文章データに含まれる１又は複数の段落のそれぞれについて、当該段落に含まれる１又は複数の文字コードの配置情報に基づいて、１又は複数の文字コードの配置情報を有するブロックデータを生成するブロックデータ生成部と、
前記文章データに含まれる複数の文字コードのそれぞれについて、当該文字コードと関連付けられているフォントに基づいて、当該文字コードが画像情報に変換された文字画像データを生成する文字画像データ生成部と、
を有する処理部を備える情報処理装置。
【請求項９】
フォントと関連づけられた複数の文字コードを有する文章データに含まれる１又は複数の段落の配置情報を有するコンテナデータと、
前記文章データに含まれる１又は複数の段落のそれぞれについて、当該段落に含まれる１又は複数の文字コードの配置情報を有するブロックデータと、
前記文章データに含まれる複数の文字コードのそれぞれが、当該文字コードと関連付けられているフォントに基づいて、当該文字コードが画像情報に変換された文字画像データと、
を有するデータ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理方法、情報処理装置及びデータ構造に関する。
【背景技術】
【０００２】
従来、端末を用いて電子書籍を表示して閲覧することが行われている。
【０００３】
例えば、ユーザは、端末を用いて、電子書籍データを記憶しているサーバに対して、ネットワークを介して電子書籍データを要求する。サーバは、要求された電子書籍データを、ネットワークを介して端末に送信する。ユーザは、端末を用いて、受信した電子書籍データを表示することにより、電子書籍を閲覧する。
【０００４】
電子書籍データは、複数の文字コード及びそれらの配置情報と、文字コードのフォント等の修飾情報とを有する。文字コードの配置情報は、例えばＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ：ハイパーテキスト・マークアップ・ランゲージ）で記述されたＨＴＭＬ情報で与えられ、修飾情報は、例えばＣＳＳ（Ｃａｓｃａｄｉｎｇ  Ｓｔｙｌｅ  Ｓｈｅｅｔｓ：カスケーディング・スタイル・シート）で記述されたＣＳＳ情報で与えられる。
【０００５】
端末は、ウェブブラウザ等の閲覧機能を実行して、電子書籍データのＣＳＳ情報を解析しながら、ＨＴＭＬ情報に基づいた文字を、所定のフォントで表示する。例えば、端末は、電子書籍データに含まれる文字コードに対して、フォントパッケージを参照して、文字コードと関連づけられたフォント字形データを読み出し、文字画像を生成して表示する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】実開２０１３−２１０５８９号公報
【特許文献２】特開２０１５−２６１４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
端末では、受信した電子書籍データに基づいて、文字コードを抜き取ることが可能である。仮に、電子書籍データから文字コード及び配置情報が抜き取られると、電子書籍の著作権保護の観点から問題となるおそれがある。
【０００８】
そこで、端末が受信した電子書籍データから文字コードを容易に抜き取ることができないようにすることが好ましい。
【０００９】
本明細書では、文字コードを抜き取ることが容易ではない電子書籍のデータを生成する情報処理方法及び情報処理装置を提供することを課題とする。
【００１０】
また、本明細書では、文字コードを抜き取ることが容易ではない電子書籍のデータ構造を提供することを課題とする。
【課題を解決するための手段】
【００１１】
本明細書に開示する情報処理方法によれば、フォントと関連づけられた複数の文字コードを有する文章データに含まれる１又は複数の段落の配置情報に基づいて、１又は複数の段落の配置情報を有するコンテナデータを生成することと、文章データに含まれる１又は複数の段落のそれぞれについて、当該段落に含まれる１又は複数の文字コードの配置情報に基づいて、１又は複数の文字コードの配置情報を有するブロックデータを生成することと、文章データに含まれる複数の文字コードのそれぞれについて、当該文字コードと関連付けられているフォントに基づいて、当該文字コードが画像情報に変換された文字画像データを生成することと、を含む。
【００１２】
また、本明細書に開示する情報処理装置によれば、フォントと関連づけられた複数の文字コードを有する文章データに含まれる１又は複数の段落の配置情報に基づいて、１又は複数の段落の配置情報を有するコンテナデータを生成するコンテナデータ生成部と、文章データに含まれる１又は複数の段落のそれぞれについて、当該段落に含まれる１又は複数の文字コードの配置情報に基づいて、１又は複数の文字コードの配置情報を有するブロックデータを生成するブロックデータ生成部と、文章データに含まれる複数の文字コードのそれぞれについて、当該文字コードと関連付けられているフォントに基づいて、当該文字コードが画像情報に変換された文字画像データを生成する文字画像データ生成部と、を有する処理部を備える。
【００１３】
更に、本明細書に開示するデータ構造によれば、フォントと関連づけられた複数の文字コードを有する文章データに含まれる１又は複数の段落の配置情報を有するコンテナデータと、文章データに含まれる１又は複数の段落のそれぞれについて、当該段落に含まれる１又は複数の文字コードの配置情報を有するブロックデータと、文章データに含まれる複数の文字コードのそれぞれが、当該文字コードと関連付けられているフォントに基づいて、当該文字コードが画像情報に変換された文字画像データと、を有する。
【発明の効果】
【００１４】
上述した本明細書に開示する情報処理方法によれば、生成された文章データから文字コードを抜き取ることは容易ではない。
【００１５】
また、上述した本明細書に開示する情報処理装置によれば、生成された文章データから文字コードを抜き取ることは容易ではない。
【００１６】
更に、上述した本明細書に開示するデータ構造によれば、文字コードを抜き取ることは容易ではない。
【図面の簡単な説明】
【００１７】
【図１】本明細書に開示するシステムの一実施形態を示す図である。
【図２】情報処理装置を示す図である。
【図３】（Ａ）は、情報処理装置の処理部を説明する図であり、（Ｂ）は、情報処理装置のメモリを説明する図である。
【図４】サーバを示す図である。
【図５】端末を示す図である。
【図６】複数の文字コードを有する文章データの例を示す図である。
【図７】データ構造を示す図である。
【図８】コンテナデータの例を示す図である。
【図９】情報処理装置の動作を説明するフローチャート（その１）である。
【図１０】入力された文章データを示す図である。
【図１１】生成されたレイアウトデータを示す図である。
【図１２】（Ａ）は、コンテナデータ内に生成されるブロックデータを示す図であり、（Ｂ）は、文字コードが文字で表されたブロックデータを示す図である。
【図１３】（Ａ）は、ルビ文字処理より生成されたコンテナデータを示す図（その１）であり、（Ｂ）は、ルビ文字処理より生成されたコンテナデータを示す図（その２）である。
【図１４】親文字及びルビ文字処理より生成されたコンテナデータの他の例を示す図である。
【図１５】（Ａ）は、禁則文字処理を説明する図（その１）であり、（Ｂ）は、禁則文字処理を説明する図（その２）である。
【図１６】（Ａ）は、欧文文字処理を説明する図（その１）であり、（Ｂ）は、欧文文字処理を説明する図（その２）である。
【図１７】情報処理装置の動作を説明するフローチャート（その２）である。
【図１８】文字コードの文字画像サイズを求める処理を説明する図である。
【図１９】カーニング処理を説明する図である。
【図２０】文字画像データを生成する処理を説明する図である。
【図２１】文章データが端末で表示された図である。
【図２２】端末のレンダリング処理を説明する図（その１）である。
【図２３】端末のレンダリング処理を説明する図（その２）である。
【図２４】端末のレンダリング処理を説明する図（その３）である。
【図２５】端末のレンダリング処理を説明する図（その４）である。
【図２６】端末のレンダリング処理を説明する図（その５）である。
【図２７】端末のレンダリング処理を説明する図（その６）である。
【図２８】端末のレンダリング処理を説明する図（その７）である。
【発明を実施するための形態】
【００１８】
以下、本明細書で開示するシステムの好ましい一実施形態を、図を参照して説明する。但し、本発明の技術範囲はそれらの実施形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【００１９】
図１は、本明細書に開示するシステムの一実施形態を示す図である。
【００２０】
本実施形態のシステム１は、情報処理装置１０と、サーバ２０と、端末３０を備える。情報処理装置１０とサーバ２０とは、ネットワークＮを介して、通信可能に接続される。また、サーバ２０と端末３０とは、ネットワークＮを介して、通信可能に接続される。更に、情報処理装置１０と端末３０とは、ネットワークＮを介して、通信可能に接続されていてもよい。
【００２１】
システム１では、情報処理装置１０が、所定のフォントと関連づけられた複数の文字コード及びそれらの配置情報と、修飾情報とを有する文章データ（電子書籍データ）に基づいて、文字コードが画像情報に変換されたデータ構造を有する文章データを生成する。文字コードは、文字を識別する識別情報である。情報処理装置１０は、文字コードが画像情報に変換された文章データを、ネットワークＮを介して、サーバ２０へ送信する。サーバ２０は、文字コードが画像情報に変換された文章データを記憶する。
【００２２】
サーバ２０は、端末３０からの要求に応じて、文字コードが画像情報に変換された文章データを、ネットワークＮを介して、端末３０へ送信する。端末３０は、文字コードが画像情報に変換された文章データを表示して、ユーザが文章データを閲覧する。
【００２３】
情報処理装置１０により生成される文章データは、リフロー型に表示可能であってもよいし、フィックス（固定）型に表示可能であってもよい。
【００２４】
図２は、情報処理装置を示す図である。
【００２５】
情報処理装置１０は、処理部１１と、メモリ１２と、表示部１３と、入力インタフェース１４と、通信部１５を有する。
【００２６】
処理部１１は、一つまたは複数の中央演算回路と、レジスタと、キャッシュメモリと、インタフェース等の周辺回路とを有する。処理部１１は、メモリ１２に予め記憶されている所定のコンピュータプログラム１２ａに従い、情報処理装置１０の各ハードウェア構成要素の制御及び各種処理を行い、処理中に生じるデータを一時的に保存するためにメモリ１２を利用する。
【００２７】
メモリ１２は、ランダムアクセスメモリ（ＲＡＭ）若しくはリードオンリーメモリ（ＲＯＭ）等の半導体メモリ、又は磁気ディスク若しくはフラッシュメモリ等の不揮発性メモリを有していてもよい。また、メモリ１２は、非一時的な記憶媒体１２ｃに記憶されたコンピュータプログラムを、読み出し可能なドライブ（図示せず）を有していてもよい。
【００２８】
図３（Ｂ）は、情報処理装置のメモリを説明する図である。
【００２９】
図３（Ｂ）に示すように、メモリ１２は、所定のコンピュータプログラム１２ａと、フォントパッケージ１２ｂを記憶する。
【００３０】
フォントパッケージ１２ｂは、１つ又は複数の種類のフォントデータを有する。フォントデータは、文字コードと関連付けた各文字のフォント字形データと、フォント字形の仮想ボディ高さ、フォント字形の仮想ボディ幅の情報を有する、また、フォントデータは、カーニング処理及び合字処理の対象となる文字コードの情報を有する。フォントデータは、フォント字形データをベクタ情報又はラスタ情報として有し得るが、フォント字形データをベクタ情報として有することが、文字が拡大又は縮小して表示されたときに、滑らかな文字を表示する観点から好ましい。
【００３１】
表示部１３は、処理部１１に制御されて、情報処理装置１０の動作に伴う各種の情報を画面上に表示可能である。表示部１３として、例えば、液晶ディスプレイを用いることができる。
【００３２】
入力インタフェース１４は、情報処理装置１０のユーザにより操作されて、操作を入力可能である。入力インタフェース１４として、例えばキーボード又はマウスを用いることができる。
【００３３】
通信部１５は、ネットワークＮを介して、サーバ２０との間で情報の送受信を行う。通信部１５は、信号の送受信を行う通信回路及び通信線を有する。
【００３４】
図３（Ａ）に示すように、上述した処理部１１は、レイアウトデータ生成部１１ａ、コンテナデータ生成部１１ｂ、ブロックデータ生成部１１ｃ、画像データ生成部１１ｄ及び文字画像サイズ生成部１１ｅを有する。
【００３５】
処理部１１が有するこれらの各部は、例えば、処理部１１上で動作するコンピュータプログラムにより実現される機能モジュールである。なお、処理部１１が有するこれらの各部は、それぞれ、別個の回路として、情報処理装置１０に実装されてもよい。各部の動作については、後述する。
【００３６】
図４は、サーバを示す図である。
【００３７】
サーバ２０は、処理部２１と、メモリ２２と、表示部２３と、入力インタフェース２４と、通信部２５を有する。
【００３８】
処理部２１は、一つまたは複数の中央演算回路と、レジスタと、キャッシュメモリと、インタフェース等の周辺回路とを有する。処理部２１は、メモリ２２に予め記憶されている所定のコンピュータプログラムに従い、サーバ２０の各ハードウェア構成要素の制御及び各種処理を行い、処理中に生じるデータを一時的に保存するためにメモリ２２を利用する。
【００３９】
メモリ２２は、ランダムアクセスメモリ（ＲＡＭ）若しくはリードオンリーメモリ（ＲＯＭ）等の半導体メモリ、又は磁気ディスク若しくはフラッシュメモリ等の不揮発性メモリを有していてもよい。また、メモリ２２は、非一時的な記憶媒体２２ａに記憶されたコンピュータプログラムを、読み出し可能なドライブ（図示せず）を有していてもよい。
【００４０】
また、メモリ２２には、情報処理装置１０から送信された文章データが記憶される。
【００４１】
表示部２３は、処理部２１に制御されて、サーバ２０の動作に伴う各種の情報を画面上に表示可能である。表示部２３として、例えば、液晶ディスプレイを用いることができる。
【００４２】
入力インタフェース２４は、サーバ２０のユーザにより操作されて、操作を入力可能である。入力インタフェース２４として、例えばキーボード又はマウスを用いることができる。
【００４３】
通信部２５は、ネットワークＮを介して、情報処理装置１０又は端末３０との間で情報の送受信を行う。通信部２５は、信号の送受信を行う通信回路及び通信線を有する。
【００４４】
図５は、端末を示す図である。
【００４５】
端末３０は、処理部３１と、メモリ３２と、表示部３３と、入力インタフェース３４と、通信部３５を有する。
【００４６】
処理部３１は、一つまたは複数の中央演算回路と、レジスタと、キャッシュメモリと、インタフェース等の周辺回路とを有する。処理部３１は、メモリ３２に予め記憶されている所定のコンピュータプログラムに従い、端末３０の各ハードウェア構成要素の制御及び各種処理を行い、処理中に生じるデータを一時的に保存するためにメモリ３２を利用する。
【００４７】
処理部３１は、閲覧実行部３１ａを有する。閲覧実行部３１ａは、例えば、処理部３１上で動作するコンピュータプログラムにより実現される機能モジュールである。なお、閲覧実行部３１ａは、処理部３１とは別個の回路として、端末３０に実装されてもよい。閲覧実行部３１ａの動作については、後述する。
【００４８】
メモリ３２は、ランダムアクセスメモリ（ＲＡＭ）若しくはリードオンリーメモリ（ＲＯＭ）等の半導体メモリ、又は磁気ディスク若しくはフラッシュメモリ等の不揮発性メモリを有していてもよい。また、メモリ３２は、非一時的な記憶媒体３２ａに記憶されたコンピュータプログラムを、読み出し可能なドライブ（図示せず）を有していてもよい。
【００４９】
表示部３３は、処理部３１に制御されて、端末３０の動作に伴う各種の情報を画面上に表示可能である。表示部３３として、例えば、液晶ディスプレイを用いることができる。
【００５０】
入力インタフェース３４は、端末３０のユーザにより操作されて、操作を入力可能である。入力インタフェース３４として、例えばキーボード又はマウスを用いることができる。また、入力インタフェース３４として、入力インタフェース３４と表示部３３とが一体となったタッチパネルを用いてもよい。
【００５１】
通信部３５は、無線通信を用いて、ネットワークＮを介して、サーバ２０との間で情報の送受信を行う。通信部３５は、例えば、３ＧＰＰ（Ｔｈｉｒｄ  Ｇｅｎｅｒａｔｉｏｎ  Ｐａｒｔｎｅｒｓｈｉｐ  Ｐｒｏｊｅｃｔ）又はＬＴＥ（Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ）等の所定の通信規格に準拠して、基地局を介して、ネットワークＮと接続する。なお、通信部３５は、有線通信を用いて、ネットワークＮを介して、サーバ２０との間で情報の送受信を行ってもよい。通信部３５は、送受信を行う通信回路及び通信線又はアンテナを有し得る。
【００５２】
図６は、複数の文字コードを有する文章データの例を示す図である。
【００５３】
文章データ６００は、複数の文字コード及び文字コードの配置情報を有する文字コード配置データ６０１と、文字コード配置データ６０１に含まれる文字コードが文字として表示される時のフォント、文字サイズ、色等の修飾情報を有する修飾データ６０２を有する。文字コード配置データ６０１に含まれる各文字コードは、修飾データ６０２が有するフォント、文字サイズ、文字色等の修飾情報と関連づけられている。なお、図６では、説明を分かり易くするために、文字コードが、文字コードにより識別される文字で示されている。即ち、図６では、文字コードの配置が、文字の配置として示されている。また、文字コード配置データ６０１は、写真又は絵等の画像データ及びこれらの配置情報を有し得る。
【００５４】
修飾データ６０２は、修飾情報として、更に、文字が表示されるコンテナサイズ（最小幅、最大幅）、上下左右のマージン、上下左右のパディング、均等揃え又は中央揃え等の行単位の文字配置の揃え、上付き又は下付き等の文字単位の文字配置の揃え、圏点、罫線、下線、背景色等の情報を有し得る。
【００５５】
文字コード配置データ６０１は、例えば、ＨＴＭＬを用いて記述されるＨＴＭＬ情報として与えられ得る。また、修飾データ６０２は、ＣＳＳを用いて記述されるＣＳＳ情報として与えられ得る。なお、文章データ６００において、文字コード配置データ６０１と、修飾データ６０２とは、別個に配置されていてもよいし、又は混在するように配置されていてもよい。
【００５６】
図６に示す文字コード配置データ６０１は、第１章及び第２章の２つの章を含む。第１章は、第１段落及び第２段落の２つの段落を含む。なお、図６に示す文字コード配置データ６０１は一例であり、文字コード配置データはこれに制限されるものではない。
【００５７】
図７は、図６に示す文章データに基づいて、情報処理装置１０が生成したデータ構造を示す図である。
【００５８】
データ構造７００は、レイアウトデータ７１０と、オブジェクトデータ７２０と、スタイルデータ７３０を有する。
【００５９】
レイアウトデータ７１０は、主に、文章データに含まれる章、段落、行、文字等の配置情報を有する。レイアウトデータ７１０は、コンテナデータ１及びコンテナデータ２、コンテナサイズ情報テーブル７１１、ブロックサイズ情報テーブル７１２及びオブジェクトサイズ情報テーブル７１３を有する。
【００６０】
レイアウトデータ７１０は、文章データに含まれる１又は複数の章の配置情報を、１又は複数のコンテナデータの配置情報として有する。１つのコンテナデータは、文章データに含まれる章に対応して配置される。図６に示す文章データ６００は、２つの章を有するので、レイアウトデータ７１０は、第１章に対応するコンテナデータ１及び第２章に対応するコンテナデータ２を有する。文章データ６００に含まれる章の組方向（縦書き、横書き）に対応して、レイアウトデータ７１０内のコンテナデータ１及びコンテナデータ２の順番及び配置関係が決定される。即ち、レイアウトデータ７１０は、文章データ６００に含まれる１又は複数の章の配置情報を有する。
【００６１】
コンテナデータは、複数の文字コードを有する文章データに含まれる１又は複数の段落の配置情報を有する。文章データに含まれる一の段落に対応して、１つのブロックデータが配置される。従って、コンテナデータは、文章データに含まれる１又は複数の段落の配置情報を、１又は複数のブロックデータの配置情報として有する。
【００６２】
図６に示す文章データ６００では、第１章は、２つの段落を有する。図７において、第１章に対応するコンテナデータ１は、図６に示す文章データ６００に基づいて、第１段落に対応するブロックデータ１及び第２段落に対応するブロックデータ２を有する。ブロックデータは、段落に含まれる文字コードの配置情報を有する。
【００６３】
コンテナデータの直下には、ブロックデータのみを配置して、他のコンテナデータは配置しないようにすることが、不要な入れ子構造を許容しない観点から好ましい。
【００６４】
ブロックデータは、文章データに含まれる１又は複数の段落のそれぞれについて、当該段落に含まれる１又は複数の文字コードの配置情報を有する。文章データに含まれる一の段落に対応して、１つのブロックデータが生成される。
【００６５】
ブロックデータの直下には、文字コードの配置情報のみを配置して、他のブロックデータは配置しないようにすることが、不要な入れ子構造を許容しない観点から好ましい。
【００６６】
図８は、コンテナデータの例を示す図である。
【００６７】
情報処理装置１０は、図６に示す文章データ６００の第１章に対応させて、コンテナデータ１を生成する。また、情報処理装置１０は、図６に示す文章データ６００の第１章の第１段落に対応させて、ブロックデータ１を生成する。ブロックデータ１は、本来は、文字コードの配置情報を有するが、図８では、説明を分かり易くするために、文字コードが、文字コードにより識別される文字で示されている。即ち、図８では、文字コードの配置が、文字の配置として示されている。
【００６８】
図８に示すブロックデータ１は、コンテナデータ３、コンテナデータ４及びコンテナデータ５を有する。コンテナデータ１内に配置されるコンテナデータ３、コンテナデータ４及びコンテナデータ５は、コンテナデータ１及びコンテナデータ２とは異なり、文章データに含まれる１又は複数の段落の配置情報を有するものではない。
【００６９】
コンテナデータ３は、親文字の文字コードの配置情報と、ルビ文字の文字コードの配置情報とを含むコンテナとして生成されたものである。コンテナデータ４及びコンテナデータ５は、行末禁止文字である「。」の文字コード、及び「。」の直前の文字の文字コードの配置情報を含むコンテナとして生成されたものである。コンテナデータ１が、端末３０で表示される時に、コンテナデータ３内の文字コードを、同じ行に表示することにより、親文字とルビ文字とが、異なる行に表示されないようにすることができる。同様に、コンテナデータ１が、端末３０で表示される時に、コンテナデータ４及びコンテナデータ５内の文字コードを、同じ行に表示することにより、行末禁止文字と直前の文字とが、異なる行に表示されないようにすることができる。
【００７０】
上述したように、他のコンテナデータ内に配置されるコンテナデータは、複数の文字が、異なる行に表示されないようにするために用いられる。コンテナデータ内にコンテナデータを生成することについては更に後述する。
【００７１】
コンテナサイズ情報テーブル７１１には、コンテナデータのそれぞれに対して、コンテナサイズ（最小幅、最大幅、最小高さ、最大高さ）等に関する情報が、コンテナデータを識別する識別情報（例えば、コンテナデータ１、コンテナデータ２）と関連づけられて登録される。コンテナサイズは、端末３０において、文章データが表示される表示サイズに関する情報である。情報処理装置１０は、主に、文章データ６００の修飾データ６０２に基づいて、コンテナサイズ情報テーブル７１１を生成する。
【００７２】
ブロックサイズ情報テーブル７１２には、ブロックデータのそれぞれに対して、上下左右のマージン、上下左右のパディング、均等揃え又は中央揃え等の行単位の文字配置の揃え等に関する情報が、ブロックデータを識別する識別情報（例えば、ブロックデータ１、ブロックデータ２）と関連づけられて登録される。情報処理装置１０は、主に、文章データ６００の修飾データ６０２に基づいて、ブロックサイズ情報テーブル７１２を生成する。
【００７３】
オブジェクトサイズ情報テーブル７１３には、文字コードのそれぞれに対して、文字サイズ、文字の上付き又は下付き等の文字単位の配置等に関する情報が、文字コードを識別する識別情報（例えば、文字コード１、文字コード２）と関連づけられて登録される。情報処理装置１０は、文章データ６００の文字コード配置データ６０１又は修飾データ６０２に基づいて、オブジェクトサイズ情報テーブル７１３を生成する。
【００７４】
オブジェクトデータ７２０は、文字画像テーブル７２１及び画像デーブル７２２を有する。
【００７５】
文字画像テーブル７２１には、文章データに含まれる文字コードが画像情報に変換された文字画像データが、文字コードを識別する識別情報（例えば、文字コード１、文字コード２）と関連づけられて登録される。文字画像データは、ベクタ情報又はラスタ情報であり得るが、ベクタ情報であることが、端末３０が、文字を拡大又は縮小して表示するときに、滑らかな文字を表示できる観点から好ましい。情報処理装置１０は、文章データ６００の文字コード配置データ６０１及び修飾データ６０２に基づいて、メモリ１２に記憶されているフォントパッケージ１２ｂを参照しながら、文字画像テーブル７２１を生成する。
【００７６】
画像テーブル７２２には、文章データに含まれる写真又は絵等の画像データが、画像を識別する識別情報（例えば、画像１、画像２）と関連づけられて登録される。情報処理装置１０は、文章データ６００の文字コード配置データ６０１に基づいて、画像テーブル７２２を生成する。なお、文章データは、写真又は絵等の画像データを含まない場合もある。
【００７７】
スタイルデータ７３０は、罫線テーブル７３１及びスタイル情報テーブル７３２を有する。
【００７８】
罫線テーブル７３１には、ブロックデータのそれぞれに対して、文字の囲み、下線、背景色等に関する情報が、文字コードを識別する識別情報（例えば、文字コード１、文字コード２）と関連づけられて登録される。情報処理装置１０は、主に、文章データ６００の修飾データ６０２に基づいて、罫線テーブル７３１を生成する。
【００７９】
スタイル情報テーブル７３２には、文字コードのそれぞれに対して、文字色、圏点の有無、文字の装飾等に関する情報が、文字コードを識別する識別情報（例えば、文字コード１、文字コード２）と関連づけられて登録される。情報処理装置１０は、主に、文章データ６００の修飾データ６０２に基づいて、スタイル情報テーブル７３２を生成する。
【００８０】
次に、上述した情報処理装置１０の動作を、図９及び図１７に示すフローチャートを参照しながら、以下に説明する。図９に示すフローチャートの処理は、１次オーサリング処理ともいう。図９に示すフローチャートの処理は、メモリ１２に記憶されているフォントパッケージ１２ｂの情報を使用せずに行われ得る。図１７に示すフローチャートの処理は、２次オーサリング処理ともいう。図１７に示すフローチャートの処理は、メモリ１２に記憶されているフォントパッケージ１２ｂの情報を使用して行われる。
【００８１】
図９を参照しながら、情報処理装置１０の動作を、以下に説明する。
【００８２】
まず、ステップＳ９０１において、情報処理装置１０の処理部１１は、図１０に示す文章データ１０００を入力する。情報処理装置１０は、例えば、通信部１５を用いて、文章データを、ネットワークＮを介して受信する。また、情報処理装置１０は、入力インタフェース１４を用いて、文章データを入力してもよい。更に、情報処理装置１０は、記憶媒体１２ｃに記憶された文章データを読み取ることにより、文章データを入力してもよい。
【００８３】
図１０に示す文章データ１０００の文字コード配置データ１００１は、１つの章（第１章）を有し、この章は、１つの段落（第１段落）を有する。文章データ１０００の修飾データ１００２は、文字コード配置データ１００１に含まれる文字コードが文字として表示される時のフォント、文字サイズ、色等の修飾情報を有する。文字コード配置データ１００１は、ＨＴＭＬ情報として与えられており、修飾データ１００２は、ＣＳＳ情報として与えられている。
【００８４】
次に、ステップＳ９０３において、情報処理装置１０の処理部１１のレイアウトデータ生成部１１ａは、文章データ１０００に含まれる章の配置情報に基づいて、図１１に示すように、レイアウトデータ１１１０を生成する。レイアウトデータ１１１０は、文章データ１０００の文字コード配置データ１００１に含まれる第１章の配置情報を有する。なお、レイアウトデータ生成部１１ａは、文章データが複数の章を有する場合には、複数の章の配置情報を有するレイアウトデータを生成する。複数の章の配置情報としては、例えば、各章が配置される順番及び組方向が挙げられる。
【００８５】
レイアウトデータ生成部１１ａは、文章コード配置データ１００１に含まれる＜ｂｏｄｙ＞タグで囲まれた文字コードの配置情報を１つの章として判断して、１つの章の配置情報を有するレイアウトデータ１１１０を生成する。なお、図１１において、鎖線で表示されるデータ又はテーブルは、この段階では、未だ生成されていない。
【００８６】
次に、文章データに含まれる全ての章に対して、ステップＳ９０５〜ステップＳ９１９の処理が行われる。本実施形態では、文章データ１０００は、１つの章のみを有するので、ステップＳ９０５〜ステップＳ９１９の処理が１回だけ行われる。
【００８７】
まず、ステップＳ９０７において、処理部１１のコンテナデータ生成部１１ｂは、文章データの各章に含まれる１又は複数の段落の配置情報に基づいて、各章について、当該章に含まれる１又は複数の段落の配置情報を有するコンテナデータを生成する。複数の段落の配置情報としては、例えば、各段落が配置される順番及び組方向が挙げられる。
【００８８】
本実施形態では、文章コード配置データ１００１の第１章は１つの段落（第１段落）を含むので、コンテナデータ生成部１１ｂは、第１章に対して、第１章に含まれる第１段落の配置情報を有するコンテナデータ１を、レイアウトデータ１１１０内に生成する。以下、コンテナデータを、単にコンテナともいう。
【００８９】
具体的には、コンテナデータ生成部１１ｂは、文章コード配置データ１００１に含まれる第１章に対して、＜ｄｉｖ＞タグ又は＜ｐ＞タグで囲まれた文字コードの配置情報を第１段落と判断して、第１段落の配置情報を有するコンテナデータ１を生成する。なお、文章コード配置データ１００１に含まれる第１章が複数の段落を有している場合には、コンテナデータ生成部１１ｂは、複数の段落の配置情報を有するコンテナデータを生成する。
【００９０】
ここで、コンテナデータ生成部１１ｂは、＜ｄｉｖ＞タグ又は＜ｐ＞タグの直下に他の＜ｄｉｖ＞タグ又は＜ｐ＞タグが配置される場合には、１つの段落と見なして、段落の配置情報を決定する。これにより、データ構造に不要な入れ子構造が生成されないようにできる。
【００９１】
そして、コンテナデータ生成部１１ｂは、修飾データ１００２に基づいて、文章コード配置データ１００１の＜ｂｏｄｙ＞タグで囲まれた文字コードが表示される際のコンテナサイズ（最小幅、最大幅、最小高さ、最大高さ）等に関する情報を取得し、コンテナデータを識別する識別情報（例えば、コンテナデータ１）と関連づけて、コンテナサイズ情報テーブル１１１１に登録して、レイアウトデータ１１１０内にコンテナサイズ情報テーブル１１１１を配置する。
【００９２】
次に、ステップＳ９０９において、処理部１１のブロックデータ生成部１１ｃは、文章データの各章に含まれる１又は複数の段落のそれぞれについて、当該段落に含まれる１又は複数の文字コードの配置情報に基づいて、１又は複数の文字コードの配置情報を有するブロックデータを生成する。複数の文字コードの配置情報として、例えば、各文字コードが配置される順番及び組方向が挙げられる。
【００９３】
本実施形態では、ブロックデータ生成部１１ｃは、文章コード配置データ１００１の第１章に含まれる第１段落について、第１段落に含まれる複数の文字コードの配置情報に基づいて、１又は複数の文字コードの配置情報を有するブロックデータ１を、コンテナデータ１内に生成する。以下、ブロックデータを、単にブロックともいう。
【００９４】
ブロックデータ生成部１１ｃは、文章コード配置データ１００１の＜ｐ＞タグで囲まれた文字コードの順番に基づいて、ブロック１に文字コードが配置される順番を決定する。
【００９５】
また、ブロックデータ生成部１１ｃは、修飾データ１００２を参照して、文章コード配置データ１００１の＜ｐ＞タグで囲まれた文字コードの組方向（縦書き、横書き）を取得する。なお、修飾データ１００２には、＜ｂｏｄｙ＞タグで囲まれた文字コードの組方向が規定されている場合もある。この場合、＜ｂｏｄｙ＞タグ内に配置される＜ｐ＞タグで囲まれた文字コードの組方向は、＜ｂｏｄｙ＞タグで囲まれた文字コードの組方向により規定される。
【００９６】
そして、ブロックデータ生成部１１ｃは、取得された文字コードの順番及び組方向（縦書き、横書き）に基づいて、ブロック１内に文字コードが配置される配置情報を決定する。本実施形態では、文字コードは、縦書きでブロック１内に配置される。
【００９７】
図１２（Ａ）は、コンテナ１内に生成されるブロック１を示す図である。図１２（Ｂ）は、説明を分かり易くするために、ブロック１内の文字コードが、文字コードで識別される文字で示されたブロック１を示す図である。
【００９８】
ブロックデータ生成部１１ｃは、文章コード配置データ１００１の第１章に含まれる第１段落に含まれる親文字の文字コード及びルビ文字の文字コード１〜６に対して、コンテナ２を生成する。具体的には、ブロックデータ生成部１１ｃは、文章コード配置データ１００１の＜ｒｕｂｙ＞タグで囲まれた文字コード１〜６が配置されるコンテナ２を生成する。
【００９９】
そして、ブロックデータ生成部１１ｃは、コンテナ２を文字コード７の直前に配置し、文字コード７に続いて、残りの文字コード８〜２０を配置して、このような順番で文字コードが縦書きに配置される配置情報を有するブロック１を生成する。
【０１００】
コンテナ２は、親文字の文字コード５，６及びルビ文字の文字コード１〜４の配置情報を有することになるが、この段階では、未だこれらの配置情報は有していない。コンテナ２が有する配置情報は、後述するステップＳ９１１において生成される。
【０１０１】
そして、ブロックデータ生成部１１ｃは、修飾データ１００２に基づいて、文章コード配置データ１００１の＜ｐ＞タグで囲まれた文字コードが表示される際の上下左右のマージン、上下左右のパディング、均等揃え又は中央揃え等の行単位の文字配置の揃え等に関する情報を取得し、ブロックデータを識別する識別情報（例えば、ブロックデータ１）と関連づけて、ブロックサイズ情報テーブル１１１２に登録して、レイアウトデータ１１１０内にブロックサイズ情報テーブル１１１２を配置する。
【０１０２】
また、ブロックデータ生成部１１ｃは、修飾データ１００２に基づいて、文章コード配置データ１００１の＜ｐ＞タグで囲まれた文字コードが表示される際の文字サイズ、文字の上付き又は下付き等の文字単位の配置等に関する情報を取得し、文字コードを識別する識別情報（例えば、文字コード１、文字コード２）と関連づけて、オブジェクトサイズ情報テーブル１１１３に登録して、レイアウトデータ１１１０内にオブジェクトサイズ情報テーブル１１１３を配置する。このようにして、ブロックデータ生成部１１ｃは、文章データに含まれる複数の文字コードのそれぞれについて、当該文字コードと関連づけられた文字の修飾情報を有する文字修飾データを生成する。
【０１０３】
また、ブロックデータ生成部１１ｃは、修飾データ１００２に基づいて、文章コード配置データ１００１の＜ｐ＞タグで囲まれた文字コードが表示される際の文字の囲み、下線、背景色等に関する情報を取得し、ブロックデータを識別する識別情報（例えば、ブロックデータ１）と関連づけて、罫線テーブル１１３１に登録して、スタイルデータ１１３０内に罫線テーブル１１３１を配置する。
【０１０４】
更に、ブロックデータ生成部１１ｃは、修飾データ１００２に基づいて、文章コード配置データ１００１の＜ｐ＞タグで囲まれた文字コードが表示される際の文字色、圏点の有無、文字の装飾等に関する情報を取得し、文字コードを識別する識別情報（例えば、文字コード１、文字コード２）と関連づけて、スタイル情報テーブル１１３２に登録して、スタイルデータ１１３０内にスタイル情報テーブル１１３２を配置する。
【０１０５】
次に、ステップＳ９１１において、処理部１１のコンテナデータ生成部１１ｂは、親文字及びルビ文字処理を実行する。具体的には、コンテナデータ生成部１１ｂは、文章データに含まれる連続して配置される文字コードが、親文字とルビ文字との関係を有する場合、親文字の文字コードの配置情報を有する第１のブロックデータと、ルビ文字の文字コードの配置情報を有する第２のブロックデータとを生成し、第１のブロックデータ及び第２のブロックデータの位置関係を決定して、第１のブロックデータ及び第２のブロックデータの配置情報を有するコンテナデータを生成する。
【０１０６】
更に説明すると、コンテナデータ生成部１１ｂは、文章コード配置データ１００１の＜ｒｕｂｙ＞タグで囲まれた連続して配置される６つの文字コードが、親文字とルビ文字との関係を有すると判断する。コンテナデータ生成部１１ｂは、＜ｒｕｂｙ＞タグで囲まれた連続して配置される６つの文字コードの内、＜ｒｔ＞タグで囲まれた文字コードをルビ文字として判断し、そうではない文字コードを親文字として判断する。
【０１０７】
そして、図１３（Ａ）に示すように、コンテナデータ生成部１１ｂは、ルビ文字の文字コード１〜４の配置情報を有するブロック２と、親文字の文字コード５，６の配置情報を有するブロック３を生成する。ここで、ルビ文字の文字コード１〜４は、”わ”、”が”、”は”、”い”に対応し、親文字の文字コード５，６は、”吾”、”輩”に対応する。図１３（Ｂ）は、説明を分かり易くするために、ブロック２及びブロック３内の文字コードが、文字コードで識別される文字で表されたブロック２及びブロック３を示す図である。
【０１０８】
そして、コンテナデータ生成部１１ｂは、ルビ文字の文字コード１〜４の配置情報を有するブロックデータ２が、親文字の文字コード５，６の配置情報を有するブロックデータ３の右側に配置されるように、ブロックデータ２及びブロックデータ３の位置関係を決定する。
【０１０９】
そして、コンテナデータ生成部１１ｂは、ブロックデータ２及びブロックデータ３の配置情報を有するコンテナデータを、上述したコンテナデータ２として置き換える。
【０１１０】
文章データに複数の＜ｒｕｂｙ＞タグが含まれている場合には、コンテナデータ生成部１１ｂは、複数の＜ｒｕｂｙ＞タグのそれぞれについて、上述した親文字及びルビ文字処理を実行する。
【０１１１】
また、コンテナデータ生成部１１ｂは、修飾データ１００２を参照して、＜ｒｔ＞タグで囲まれた文字コード（ルビ文字の文字コード）の文字サイズを取得して、親文字の文字コードの２分の１に変更し、文字コードを識別する識別情報と関連づけて、メモリ１２に記憶する。この変更されたルビ文字の文字コードの文字サイズは、後述するステップＳ１７０３において、ルビ文字の文字コードの文字画像サイズを求める時に使用される。
【０１１２】
コンテナデータ生成部１１ｂは、文書データが、横中文字を有する場合にも、上述した親文字及びルビ文字処理と同様の処理を実行する。
【０１１３】
図１４は、文書データが横中文字を有する場合のコンテナデータ生成部１１ｂの処理を説明する図である。
【０１１４】
コンテナデータ生成部１１ｂは、文書データが横中文字を有する場合、横中文字の文字コードの配置情報を有するブロック１０及びブロック１１を生成し、ブロック１０の配置情報を有するコンテナ１０及びブロック１１の配置情報を有するコンテナ１１を生成する。そして、コンテナデータ生成部１１ｂは、コンテナ１０を、文字コード”月”の前に配置し、コンテナ１１を、文字コード”月”と文字コード”日”との間に配置して、これらの配置情報を有するブロック１２を生成する。なお、文章データ１０００は、横中文字を有していないので、本実施形態では、横中文字の処理は行われない。
【０１１５】
次に、ステップＳ９１３において、処理部１１のブロックデータ生成部１１ｃは、分割禁止文字処理を実行する。具体的には、ブロックデータ生成部１１ｃは、文章データに含まれる文字コードが、当該文字コードの直前又は直後に位置する文字コードと分割して文字として表示されることが禁止される分割禁止の文字コードである場合、当該文字コードと、当該文字コードの直前又は直後に位置する文字コードとの配置情報を有するブロックデータを生成する。
【０１１６】
分割禁止の文字コードは、”、”、”？”、”。”、”」”、”）”のような行頭に配置されることが禁止される行頭禁則文字の文字コードを含む。行頭禁則文字は、直前に位置する文字と分割して表示されることが禁止される。また、分割禁止の文字コードは、”「”、”（”のような行末に配置されることが禁止される行末禁則文字の文字コードを含む。行末禁則文字は、直後に位置する文字と分割して表示されることが禁止される。
【０１１７】
更に説明すると、ブロックデータ生成部１１ｃは、まず、文章コード配置データ１００１が分割禁止の文字コードを含むか否かを判断する。
【０１１８】
そして、ブロックデータ生成部１１ｃは、文章データに含まれる文字コードが、当該文字コードの直前に位置する文字コードと分割して表示されることが禁止される行頭禁則文字の文字コードの場合、当該文字コードと、当該文字コードの直前に位置する文字コードとの配置情報を有するブロックデータを生成する。
【０１１９】
図１５（Ａ）及び図１５（Ｂ）に示すように、ブロックデータ生成部１１ｃは、文章コード配置データ１００１に含まれる文字コード１２が、行頭禁則文字である”。”の場合、文字コード１２と、当該文字コードの直前に位置する文字コード１１との配置情報を有するブロック４を生成する。図１５（Ａ）では、説明を分かり易くするために、図１５（Ｂ）に示されるブロック内の文字コードが、文字コードにより識別される文字で示されている。
【０１２０】
また、図１５（Ａ）及び図１５（Ｂ）に示すように、ブロックデータ生成部１１ｃは、文章コード配置データ１００１に含まれる文字コード２０が、行頭禁則文字である”。”の場合、文字コード２０と、当該文字コードの直前に位置する文字コード１９との配置情報を有するブロック５を生成する。
【０１２１】
そして、コンテナデータ生成部１１ｂは、ブロック４の配置情報を有するコンテナ３を生成して、コンテナ３を、文字コード１０と文字コード１３の間に位置するようにブロック１内に配置する。また、コンテナデータ生成部１１ｂは、ブロック５の配置情報を有するコンテナ４を生成して、コンテナ４が文字コード１８の後ろに位置するようにブロック１内に配置する。これにより、ブロック１の直下に、ブロック４及びブロック５が配置されることを回避される。
【０１２２】
また、ブロックデータ生成部１１ｃは、文章データに含まれる文字コードが、当該文字コードの直後に位置する文字コードと分割して表示されることが禁止される行末禁則文字の場合、当該文字コードと、当該文字コードの直後に位置する文字コードとの配置情報を有するブロックデータを生成する。なお、ブロックデータ生成部１１ｃが、文章コード配置データ１００１が分割禁止の文字コードを含まないと判断した場合、分割禁止文字処理は実行されない。
【０１２３】
次に、ステップＳ９１５において、処理部１１のブロックデータ生成部１１ｃは、欧文文字処理を実行する。ブロックデータ生成部１１ｃは、まず、文章データ内に連続して配置される複数の欧文の文字コードが含まれるか否かを判断する。本実施形態の文章データ１０００の処理では、コンテナデータ生成部１１ｂは、文章データ内に連続して配置される複数の欧文の文字コードが含まれないと判断する。
【０１２４】
ここでは、図１６（Ａ）及び図１６（Ｂ）に示す例を用いて、欧文文字処理について、以下に説明する。
【０１２５】
図１６（Ａ）に示す例では、文章データに基づいて、ブロック２０が生成されている。ブロック２０は、文字コード”Ｉ”と、半角スペースと、連続する４つの文字コード”ｈ”、”ａ”、”ｖ”、”ｅ”と、半角スペースと、文字コード”ａ”と、連続する３つの文字コード”ｐ”、”ｅ”、”ｎ”を有する。なお、図１６（Ａ）及び図１６（Ｂ）では、説明を分かり易くするために、文字コードが、文字コードにより識別される文字で示されている。
【０１２６】
ブロックデータ生成部１１ｃは、文章データ内に連続して配置される複数の欧文の文字コードが含まれる場合、連続する複数の欧文の文字コードの配置情報に基づいて、連続する複数の欧文の文字コードの配置情報を有するブロックデータを生成する。複数の欧文の文字コードの配置情報として、例えば、各文字コードが配置される順番及び組方向が挙げられる。
【０１２７】
図１６（Ｂ）に示すように、ブロックデータ生成部１１ｃは、連続する４つの欧文の文字コード”ｈ”、”ａ”、”ｖ”、”ｅ”の配置情報を有するブロック２１を生成する。また、ブロックデータ生成部１１ｃは、連続する３つの欧文の文字コード”ｐ”、”ｅ”、”ｎ”の配置情報を有するブロック２２を生成する。
【０１２８】
そして、コンテナデータ生成部１１ｂは、ブロック２１の配置情報を有するコンテナ２０を生成して、コンテナ２０が文字コード”Ｉ”に続く半角スペースの後に位置するようにブロック２０内に配置する。また、コンテナデータ生成部１１ｂは、ブロック２２の配置情報を有するコンテナ２１を生成して、コンテナ２１が文字コード”ａ”に続く半角スペースの後に位置するようにブロック２０内に配置する。これにより、ブロック２０の直下に、ブロック２１及びブロック２２が配置されることを回避される。
【０１２９】
次に、ステップＳ９１７において、処理部１１の画像データ生成部１１ｄは、文章コード配置データ１００１に含まれる画像データを抽出し、画像データを識別する識別情報（例えば、画像データ１、画像データ２）と関連づけて、画像テーブル１１２２に登録して、オブジェクトデータ１１２０内に画像テーブル１１２２を配置する。なお、文章コード配置データ１００１が画像データを含まない場合には、この処理は行われない。
【０１３０】
処理部１１は、文章データに含まれる他の章に対しても、上述した各処理を行う。本実施形態では、上述したように、文章データ１０００は、１つの章のみを有するので、ステップＳ９０５〜ステップＳ９１９の処理が１回だけ行われる。
【０１３１】
次に、図１７を参照しながら、情報処理装置１０の動作を、以下に説明する。
【０１３２】
文章データに含まれる全ての章に対して、ステップＳ１７０１〜ステップＳ１７０７の処理が行われる。本実施形態では、文章データ１０００は、１つの章のみを有するので、ステップＳ１７０１〜ステップＳ１７０７の処理は１回だけ行われる。
【０１３３】
まず、ステップＳ１７０３において、処理部１１の文字画像サイズ生成部１１ｅは、文章データに含まれる複数の文字コードのそれぞれについて、当該文字コードと関連づけられたフォント及び文字サイズに基づいて、当該文字コードの文字画像のサイズを示す文字画像サイズを求める。文字コードの文字画像は、文字コードと関連付けられているフォントに基づいて、文字コードが画像情報に変換された画像である。文字画像サイズは、文字画像の縦のサイズ及び文字画像の横のサイズを有する。この文字画像を生成する処理については後述する。
【０１３４】
文字画像サイズ生成部１１ｅは、文章データに含まれる複数の文字コードのそれぞれについて、修飾データ１００２を参照して、当該文字コードと関連づけられたフォントを取得する。そして、文字画像サイズ生成部１１ｅは、メモリ１２に記憶されたフォントパッケージ１２ｂを参照して、当該文字コードと関連付けられたフォント字形の仮想ボディ高さ及びフォント字形の仮想ボディ幅を取得する。
【０１３５】
また、文字画像サイズ生成部１１ｅは、文章データに含まれる複数の文字コードのそれぞれについて、修飾データ１００２を参照して、当該文字コードと関連づけられた文字サイズを取得する。ここで、文字コードがルビ文字の場合には、文字画像サイズ生成部１１ｅは、メモリ１２を参照して、当該文字コードと関連づけられた文字サイズを取得する。
【０１３６】
図１８に示すように、文字画像サイズ生成部１１ｅは、文章データに含まれる複数の文字コードのそれぞれについて、当該文字コードの文字画像の縦のサイズを、下記式（１）により求める。
【０１３７】
文字画像の縦のサイズ＝文字サイズ×フォント字形の仮想ボディ高さ÷フォント字形の仮想ボディ幅      （１）
【０１３８】
また、文字画像サイズ生成部１１ｅは、文章データに含まれる複数の文字コードのそれぞれについて、当該文字コードの文字画像の横のサイズを、下記式（２）により求める。
【０１３９】
文字画像の横のサイズ＝文字サイズ      （２）
【０１４０】
そして、文字画像サイズ生成部１１ｅは、文章データに含まれる複数の文字コードのそれぞれについて、文字画像の縦のサイズ及び文字画像の横のサイズを、文字コードを識別する識別情報（例えば、文字コード１、文字コード２）と関連づけて、オブジェクトサイズ情報テーブル１１１３に登録する。
【０１４１】
上述した文字画像の縦のサイズ及び文字画像の横のサイズの求め方は、組方向が縦書きの場合である。一方、組方向が横書きの場合には、文字画像の縦のサイズ及び文字画像の横のサイズの求め方が入れ替わる。
【０１４２】
次に、ステップＳ１７０５において、処理部１１の文字画像サイズ生成部１１ｅは、カーニング処理を実行する。まず、文字画像サイズ生成部１１ｅは、文章データに含まれる複数の文字コードのそれぞれについて、メモリ１２に記憶されたフォントパッケージ１２ｂを参照して、当該文字コードがカーニング処理の対象となる文字コードであるか否かを判断する。文字画像サイズ生成部１１ｅは、カーニング処理の対象となる文字コードと判断した文字コードに対して、文字画像サイズを変更する処理を行う。
【０１４３】
図１９は、組方向が縦書きの場合のカーニング処理を説明する図である。
【０１４４】
図１９に示す例では、文字画像サイズ生成部１１ｅは、２つの連続する文字コードである”Ｖ””Ａ”を、カーニング処理の対象と判断する。
【０１４５】
図１９（Ｂ）に示すように、文字画像サイズ生成部１１ｅは、文字コード”Ａ”の文字画像の横のサイズを、所定の割合に縮小して、新たな文字画像の横のサイズを求める。文字画像の横のサイズを縮小する割合は、カーニング処理の対象となる文字コードごとにフォントパッケージ１２ｂに登録されている。
【０１４６】
これにより、２つの連続する文字コード”Ｖ””Ａ”が表示される時には、図１９（Ａ）に示すように、カーニング処理後の文字コード”Ａ”の字形領域は、カーニング処理前よりも、文字コード”Ｖ”に近づいて表示される。
【０１４７】
文字画像サイズ生成部１１ｅは、カーニング処理の対象となった文字コードの新たな文字画像の横のサイズを、文字コードを識別する識別情報（例えば、文字コード１、文字コード２）と関連づけて、オブジェクトサイズ情報テーブル１１１３に登録する。また、文字画像サイズ生成部１１ｅは、合字処理の対象となる文字コードに対しても、カーニング処理と同様の処理を行う。
【０１４８】
処理部１１は、文章データに含まれる他の章に対しても、上述した各処理を行う。本実施形態では、上述したように、文章データ１０００は、１つの章のみを有するので、ステップＳ１７０１〜ステップＳ１７０７の処理が１回だけ行われる。
【０１４９】
次に、ステップＳ１７０９において、処理部１１の画像データ生成部１１ｄは、文章データに含まれる複数の文字コードのそれぞれについて、当該文字コードと関連付けられているフォントに基づいて、当該文字コードが画像情報に変換された文字画像データを生成する。
【０１５０】
画像データ生成部１１ｄは、文章データに含まれる複数の文字コードのそれぞれについて、修飾データ１００２を参照して、当該文字コードと関連づけられたフォントを取得する。そして、文字画像サイズ生成部１１ｅは、メモリ１２に記憶されたフォントパッケージ１２ｂを参照して、当該文字コードと関連付けられたフォント字形データを取得する。
【０１５１】
そして、文字画像サイズ生成部１１ｅは、図２０に示すように、フォント字形データに基づいて、文字コードが画像情報に変換された文字画像データを生成する。ここで、文字画像サイズ生成部１１ｅは、文字画像データをベクタ情報として生成することが好ましい。画像データ生成部１１ｄは、文字画像データを、文字コードを識別する識別情報（例えば、文字コード１、文字コード２）と関連づけて、文字画像テーブル１１２１に登録して、オブジェクトデータ１１２０内に文字画像テーブル１１２１を配置する。
【０１５２】
このようにして、情報処理装置１０は、図１１に示すデータ構造１１００を有する文章データを生成する。
【０１５３】
情報処理装置１０は、データ構造１１００を有する文章データを、ネットワークＮを介して、サーバ２０へ送信する。サーバ２０は、データ構造１１００を有する文章データを記憶する。
【０１５４】
次に、端末３０の動作を、図２１〜図２８を参照しながら、以下に説明する。
【０１５５】
まず、端末３０のユーザは、端末３０を用いて、文書データを記憶しているサーバ２０に対して、ネットワークＮを介して、所定の文書データを要求する。サーバ２０は、要求された文書データを、ネットワークＮを介して端末３０に送信する。
【０１５６】
端末３０は、サーバ２０から、図７又は図１１に示すようなデータ構造を有する文書データを受信する。
【０１５７】
図２１は、端末３０が、受信した文書データに基づいて表示する文章情報を生成して、表示部３３に表示される文書を示す図である。端末３０は、文書データに基づいて生成された文章を、１ページごとに表示部３３に表示する。
【０１５８】
以下、端末３０が、図７又は図１１に示すようなデータ構造を有する文書データに基づいて、表示部３３に表示する文章情報を生成して、文章を表示する処理を以下に説明する。
【０１５９】
まず、端末３０の処理部３１の閲覧実行部３１ａは、レイアウトデータ内のコンテナサイズ情報テーブルを参照して、コンテナサイズ（最小幅、最大幅、最小高さ、最大高さ）が登録されていれば、これらの情報を取得する。閲覧実行部３１ａは、文章データをリフロー表示するか、又はフィックス表示するかに応じて、コンテナデータの表示サイズを決定する。リフロー表示するか、又はフィックス表示するかについては、コンテナサイズ情報テーブルにより指定され得る。
【０１６０】
まず、文章データをリフロー表示する場合の処理を以下に説明する。文章データがリフロー表示される場合には、コンテナサイズ情報テーブルには、コンテナサイズ（最小幅、最大幅、最小高さ、最大高さ）が登録されていない。閲覧実行部３１ａは、縦書き表示する場合には、図２２に示すように、閲覧実行部３１ａが文章データを表示する表示枠の高さを、コンテナデータの縦方向の表示サイズとして決定する。縦書き表示する場合、コンテナデータの横方向の表示サイズは、文章データに含まれる情報量に基づいて決定される。
【０１６１】
また、閲覧実行部３１ａは、横書き表示する場合には、図２２に示すように、閲覧実行部３１ａが文章データを表示する表示枠の幅を、コンテナデータの横方向の表示サイズとして決定する。横書き表示する場合には、コンテナデータの縦方向の表示サイズは、文章データに含まれる情報量に基づいて決定される。
【０１６２】
次に、文章データをフィックス表示する場合の処理を以下に説明する。閲覧実行部３１ａは、コンテナサイズの最大高さと、閲覧実行部３１ａが文章データを表示する表示枠の高さとを比較して、２つの高さの内の小さい方の高さを、コンテナデータの縦方向の表示サイズとして決定する。また、閲覧実行部３１ａは、コンテナサイズの最大幅と、閲覧実行部３１ａが文章データを表示する表示枠の幅とを比較して、２つの幅の内の小さい方の幅を、コンテナデータの幅方向の表示サイズとして決定する。これにより、コンテナデータの配置可能範囲が決定される。
【０１６３】
なお、文章データがリフロー表示される場合でも、写真又は絵等の画像データを含むコンテナデータに対しては、コンテナサイズ（最小幅、最大幅、最小高さ、最大高さ）が登録されている場合がある。この場合、閲覧実行部３１ａは、フィックス表示する場合と同様の処理により、コンテナデータの縦方向及び幅方向の表示サイズを決定する。
【０１６４】
本実施形態では、閲覧実行部３１ａが、文章データを縦書きでリフロー表示する場合について、以下に説明する。
【０１６５】
次に、閲覧実行部３１ａは、レイアウトデータ内のブロックサイズ情報テーブルを参照して、ブロックデータのそれぞれに対して、上下左右のマージン、上下左右のパディングを取得する。本実施形態では、閲覧実行部３１ａは、文章データを縦書きでリフロー表示するので、上下のマージン及び上下のパディングを取得する。
【０１６６】
図２３に示すように、閲覧実行部３１ａは、ブロックデータのそれぞれに対して、上下のマージンに基づいて、ブロックデータの配置可能範囲を決定する。また、閲覧実行部３１ａは、ブロックデータのそれぞれに対して、上下のパディングに基づいて、文字画像データの配置可能範囲を決定する。左右のマージン及び左右のパディングは、後述する処理において使用される。
【０１６７】
なお、文章データを縦書きでリフロー表示する場合には、閲覧実行部３１ａは、ブロックデータのそれぞれに対して、左右のマージンに基づいて、ブロックデータの配置可能範囲を決定し、左右のパディングに基づいて、文字画像データの配置可能範囲を決定する。
【０１６８】
次に、閲覧実行部３１ａは、ブロックデータのそれぞれに対して、レイアウトデータ内のオブジェクトサイズ情報テーブルを参照して、文字コードのそれぞれについて、文字画像の縦のサイズ及び文字画像の横のサイズを取得する。そして、閲覧実行部３１ａは、文字コードの文字画像が配置される領域を、当該文字コードの文字画像の縦のサイズ及び文字画像の横のサイズに基づいて決定する。
【０１６９】
そして、閲覧実行部３１ａは、図２４に示すように、文字コードのそれぞれに対して、文字コードの文字画像が配置される領域を、文字画像データの配置可能範囲に配置する。図２４において、文字コードの文字画像が配置される領域は、矩形の領域である。以下、文字コードの文字画像が配置される領域を、単に文字コードの領域ともいう。
【０１７０】
また、閲覧実行部３１ａは、ブロックデータ内に配置されるコンテナデータ（他のコンテナデータ内に配置されるコンテナデータ）に含まれる文字コードは、同じ行に含まれるように、文字コードの領域を決定する。これにより、親文字とルビ文字、又は分割禁止文字等が、分離して表示されないようにする。
【０１７１】
上述した処理により、各ブロックに含まれる行数が決定される。本実施形態では、２つのブロック１及びブロック２が、文字画像データの配置可能範囲に配置される。この段階では、ページ区切りは配置されていない。
【０１７２】
次に、閲覧実行部３１ａは、図２５に示すように、閲覧実行部３１ａが文章データを表示するページ幅の位置にページ区切りを配置する。なお、ページ区切りは、実際には表示さない。
【０１７３】
そして、閲覧実行部３１ａは、ブロックデータのそれぞれに対して、レイアウトデータ内のブロックサイズ情報テーブルから取得した左右のマージンに基づいて、文字画像データの配置可能範囲の幅を決定する。左右のマージンは、ページ区切りの位置と、文字画像データの配置可能範囲との間の左右の距離を規定する。
【０１７４】
また、閲覧実行部３１ａは、ブロックデータのそれぞれに対して、レイアウトデータ内のブロックサイズ情報テーブルから取得した左右のパディングに基づいて、文字画像データの配置可能範囲に配置された文字コードの領域が配置される範囲を決定する。左右のパディングは、文字画像データの配置可能範囲の左右の境界と、内部に配置される文字コードの領域との間の左右の距離を規定する。
【０１７５】
そして、閲覧実行部３１ａは、１つのページ幅内に収まらない文字コードを、次ページへ移動する。
【０１７６】
そして、閲覧実行部３１ａは、レイアウトデータ内のブロックサイズ情報テーブルを参照して、ブロックデータのそれぞれに対して、均等揃え又は中央揃え等の行単位の文字配置の揃えに関する情報を取得する。そして、閲覧実行部３１ａは、ブロックデータのそれぞれに対して、行単位の文字配置の揃えに関する情報に基づいて、文字コードの領域を配置する位置を決定する。
【０１７７】
更に、閲覧実行部３１ａは、レイアウトデータ内のオブジェクトサイズ情報テーブルを参照して、文字コードのそれぞれに対して、文字の上付き又は下付き等の文字単位の配置に関する情報を取得する。そして、閲覧実行部３１ａは、文字コードのそれぞれに対して、文字単位の配置に関する情報に基づいて、文字コードの領域を配置する位置を決定する。
【０１７８】
図２６は、上述した処理により生成された文字コードの配置を示す。
【０１７９】
次に、閲覧実行部３１ａは、スタイルデータの罫線テーブルを参照して、ブロックデータのそれぞれに対して、文字の囲み、下線、背景色等に関する情報を取得する。そして、閲覧実行部３１ａは、ブロックデータのそれぞれに対して、文字の囲み、下線、背景色等に関する情報に基づいて、修飾情報の画像を生成して、文字画像データの配置可能範囲の所定の位置に配置する。
【０１８０】
図２７に示す例では、３つの文字コードに対して背景色の領域が描画されている。
【０１８１】
次に、閲覧実行部３１ａは、文字コードのそれぞれについて、オブジェクトデータの文字画像テーブルを参照して、文字画像データを取得する。そして、閲覧実行部３１ａは、図２８に示すように、文字コードのそれぞれについて、文字画像データと、当該文字コードの文字画像の縦のサイズ及び文字画像の横のサイズとに基づいて、文字画像を生成して、当該文字コードの領域に配置する。
【０１８２】
また、閲覧実行部３１ａは、文字コードのそれぞれについて、オブジェクトデータの画像テーブルを参照して、画像データを取得する。そして、閲覧実行部３１ａは、画像データに基づいて、画像を生成して、文字画像データの配置可能範囲の所定の位置に生成した画像を配置する。なお、図２８に示す例では、このような画像は配置されていない。
【０１８３】
次に、閲覧実行部３１ａは、文字コードのそれぞれについて、スタイルデータのスタイル情報テーブルを参照して、文字色、圏点の有無、文字の装飾等に関する情報を取得する。そして、閲覧実行部３１ａは、文字色、圏点の有無、文字の装飾等に関する情報に基づいて、当該文字コードを修飾する情報の画像を生成して、文字画像データの配置可能範囲の所定の位置に配置する。図２１に示す例では、３つの文字に対して圏点が描画されている。
【０１８４】
以上の処理により、端末３０が表示する文章データの表示情報が得られる。
【０１８５】
上述した本実施形態のシステムによれば、情報処理装置により生成された文章データは、文字コードではなく、文字コードが画像情報に変換された文字画像データを有するので、情報処理装置により生成された文章データから文字コードを抜き取ることは容易ではない。
【０１８６】
また、情報処理装置により生成された文章データは、文字コードを有する元の文章データに対して、文字コードが文字画像データに変換され、且つ文字の修飾情報が、文字コート等と関連づけられて所定のテーブルに登録されている。そのため、端末が、文字コードを有する元の文章データに基づいて、文章を表示する場合よりも、情報処理装置により生成された文章データに基づいて、文章を表示する処理に要する時間の方が短くなる。具体的には、端末側で、電子書籍データに含まれる文字コードに対して、文字コードと関連づけられたフォント字形データを読み出したり、カーニング処理及び合字処理、禁則文字処理、欧文文字処理等の対象となる文字コードの情報を動的に処理し、文字画像を生成して表示するのではなく、予め情報処理装置１０が生成したデータ構造の中にカーニング処理及び合字処理、禁則文字処理、欧文文字処理等が行われた情報が組み込まれているため、端末側で動的に処理を行う必要がなく、文章を表示する処理に要する時間が短くなる。従って、端末を用いて文書を閲覧するユーザに対して、快適な閲覧環境を提供することができる。
【０１８７】
本発明では、上述した実施形態の情報処理方法、情報処理装置及びデータ構造は、本発明の趣旨を逸脱しない限り適宜変更が可能である。また、一の実施形態が有する構成要件は、他の実施形態にも適宜適用することができる。
【０１８８】
例えば、上述した実施形態では、１次オーサリング及び２次オーサリングを、情報処理装置が行っていたが、サーバが、２次オーサリングを行ってもよい。この場合、情報処理装置は、１次オーサリングが終了した状態の文書データを、サーバに送信する。そして、サーバは、フォントパッケージを参照して、受信した文書データに対して、２次オーサリングを実行する。
【符号の説明】
【０１８９】
１    システム
１０    情報処理装置
１１    処理部
１１ａ    レイアウトデータ生成部
１１ｂ    コンテナデータ生成部
１１ｃ    ブロックデータ生成部
１１ｄ    画像データ生成部（文字画像データ生成部）
１１ｅ    文字画像サイズ生成部
１２    メモリ
１２ａ    プログラム
１２ｂ    フォントパッケージ
１２ｃ    記憶媒体
１３    表示部
１４    入力インタフェース
１５    通信部
２０    サーバ
２１    処理部
２２    メモリ
２２ａ    記憶媒体
２３    表示部
２４    入力インタフェース
２５    通信部
３０    端末
３１    処理部
３１ａ    閲覧実行部
３２    メモリ
３２ａ    記憶媒体
３３    表示部
３４    入力インタフェース
３５    通信部
Ｎ    ネットワーク
【図１】
2019057152.tif 000003
【図２】
2019057152.tif 000004
【図３】
2019057152.tif 000005
【図４】
2019057152.tif 000006
【図５】
2019057152.tif 000007
【図６】
2019057152.tif 000008
【図７】
2019057152.tif 000009
【図８】
2019057152.tif 000010
【図９】
2019057152.tif 000011
【図１０】
2019057152.tif 000012
【図１１】
2019057152.tif 000013
【図１２】
2019057152.tif 000014
【図１３】
2019057152.tif 000015
【図１４】
2019057152.tif 000016
【図１５】
2019057152.tif 000017
【図１６】
2019057152.tif 000018
【図１７】
2019057152.tif 000019
【図１８】
2019057152.tif 000020
【図１９】
2019057152.tif 000021
【図２０】
2019057152.tif 000022
【図２１】
2019057152.tif 000023
【図２２】
2019057152.tif 000024
【図２３】
2019057152.tif 000025
【図２４】
2019057152.tif 000026
【図２５】
2019057152.tif 000027
【図２６】
2019057152.tif 000028
【図２７】
2019057152.tif 000029
【図２８】
2019057152.tif 000030