(57)【要約】【課題】ＸＨＴＭＬ文書に指定された用紙サイズとユーザが指定した用紙サイズとが一致しなかった場合でも、見栄えよく印刷を行い得るプリンタ及び印刷方法を提供すること。【解決手段】構造化言語で記述された文書を印刷するプリンタにおいて、前記文書内に記述されたレイアウトに関する情報を変更する変更手段、を備え、変更されたレイアウト情報に基づいて前記文書を印刷することを特徴としている。【選択図】  図１６
2006255916.tif 000002
【特許請求の範囲】
【請求項１】
構造化言語で記述された文書を印刷するプリンタにおいて、
前記文書内に記述されたレイアウトに関する情報を変更する変更手段、
を備え、変更されたレイアウト情報に基づいて前記文書を印刷することを特徴とするプリンタ。
【請求項２】
請求項１記載のプリンタにおいて、
前記レイアウトに関する情報は、ページの下端に最低限残さなければならない行数を示す第１の要素及び／又はページの上端に最低限残さなければならない行数を示す第２の要素である、ことを特徴とするプリンタ。
【請求項３】
請求項１記載のプリンタにおいて、
前記変更手段は、前記文書内で指定された第１の用紙サイズとは異なる第２の用紙サイズで印刷するときに前記レイアウトに関する情報を変更する、ことを特徴とするプリンタ。
【請求項４】
請求項３記載のプリンタにおいて、
前記変更手段は、前記レイアウトに関する情報を、前記第１の用紙サイズからから前記第２の用紙サイズに合わせるように変更する、ことを特徴とするプリンタ。
【請求項５】
請求項１乃至４記載のプリンタにおいて、
前記変更手段は、前記第１の要素によって示される行数及び／又は前記第２の要素によって示される行数とを、前記第２の用紙サイズに合わせるように変更する、ことを特徴とするプリンタ。
【請求項６】
請求項５記載のプリンタにおいて、
前記変更手段は、前記第１の用紙サイズの紙送り方向の長さをＸ、前記第２の用紙サイズの紙送り方向の長さをＹとすると、前記第１の要素によって示される行数及び／又は前記第２の要素によって示される行数を（Ｙ／Ｘ）倍することにより変更する、ことを特徴とするプリンタ。
【請求項７】
請求項１乃至６記載のプリンタにおいて、
前記第１の要素は「orphans」であり、前記第２の要素は「widows」である、ことを特徴とするプリンタ。
【請求項８】
請求項１記載のプリンタにおいて、
更に、前記文書を印刷するときの用紙サイズを指定する用紙サイズ設定手段を備え、
前記変更手段は、前記文書内で指定された用紙サイズと前記用紙サイズ設定手段で指定された用紙サイズとが異なるときに前記レイアウトに関する情報を変更する、ことを特徴とするプリンタ。
【請求項９】
構造化言語で記述された文書を印刷するプリンタにおける印刷方法であって、
前記文書内に記述されたレイアウトに関する情報を変更手段により変更する工程と、
変更されたレイアウト情報に基づいて印刷手段により前記文書を印刷する工程と、
を備えることを特徴とする印刷方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造化言語で記述された文書を処理するプリンタに関する。詳しくは、スタイルシートの一つである「orphans」、及び「widows」に対し、その値をユーザの指定した用紙サイズに応じて変更するプリンタに関する。
【背景技術】
【０００２】
従来から、ＸＭＬ（eXtensible Markup Language）やＸＨＴＭＬ（eXtensible Hyper Text Markup Language）など、特定のアプリケーションに依存しない構造化言語により記述された文書に基づいて、モニタ画面に画像を表示させたり、プリンタで印刷する等の処理が行われている。通常、このような文書に基づいて画像を生成する（表示や印刷など）には、かかる言語で記述された文書に対し解析処理を行った後、レイアウト処理により各要素の１頁内での位置が決定され、その後、表示や印刷のための種々の処理を行う。
【０００３】
しかし、このようなレイアウト処理に関し、文書内のブロック要素をレイアウトすると、１頁内に収まりきらずにブロック要素内部で改ページが発生する場合がある。従来のプリンタでは、かかる場合、改ページが発生した時点で改ページの処理が行われていた。その結果、先行ページにはブロック要素の先頭部分の少数行のみ表示や印刷が行われたり、後続ページにはブロック要素の最後尾部分の少数行のみ表示等が行われるなど、見栄えの良くない状態で表示等が行われていた。
【０００４】
そこで、スタイルシート（特に、ＣＳＳ（Cascading Style Sheet）３  ページメディアモジュール。以下の非特許文献１を参照）では、ページの下端に最低限残さなければいけない行数を示す「orphans」と、ページの上端に最低限残さなければならない行数を示す「widows」が定義され、これを用いることで、見栄えの良くない状態を回避するようにしている（例えば、以下の非特許文献１）。
【０００５】
一方、ＸＨＴＭＬ文書内においては、印刷の際の用紙サイズを記述することができる。更に、従来のプリンタでは、プリンタを使用するユーザ（以下、単に「ユーザ」と称す）が例えばプリンタの液晶画面を操作することで用紙サイズを指定することができる。従って、ＸＨＴＭＬ文書で指定した用紙サイズとユーザの指定した用紙サイズとが一致しない場合がある。従来のプリンタでは、かかる場合にプリンタを使用するユーザが指定した用紙サイズを優先してレイアウト等の処理を行っている。プリンタ側の制限を優先しても構わない、というＷ３Ｃ（World Wide Web Consortium:Ｗｅｂ技術に関する標準規格を制定する機関）の要請からである。
【０００６】
なお、ＸＨＴＭＬ文書を処理できるプリンタとして、ＪＰＥＧなどの単なる画像が入力されても内部でＨＴＭＬ文書の形式に変換させ、ＨＴＭＬ文書に対する解析及びレイアウト処理を行うブロックに入力させることで、多くのハードウェア資源を設けることなく処理を行うことのできる技術が提案されている（例えば、以下の特許文献１）。
【非特許文献１】W3C “CSS3 Paged Media Module”[平成１７年２月１８日検索］、インターネット＜URL http://www.w3.org/TR/css3-page＞
【特許文献１】特開２００４−１１４３２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、ＸＨＴＭＬ文書内に記述された用紙サイズを無視してレイアウト等の処理を行った場合、前述の「orphans」や「widows」の設定値によっては、想定されない位置で改ページが発生する場合がある。「orphans」や「widows」は、ＸＨＴＭＬ文書内で記述された用紙サイズを基にして文書作成者が設定したものだからである。従って、従来のプリンタでは、必ずしも見栄えの良い印刷結果を得られないという問題点があった。
【０００８】
そこで、本発明は上記問題点に鑑みてなされたものでその目的は、ＸＨＴＭＬ文書に指定された用紙サイズとユーザが指定した用紙サイズとが一致しなかった場合でも、見栄えよく印刷を行い得るプリンタ及び印刷方法を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明は、構造化言語で記述された文書を印刷するプリンタにおいて、前記文書内に記述されたレイアウトに関する情報を変更する変更手段、を備え、変更されたレイアウト情報に基づいて前記文書を印刷することを特徴としている。これにより、文書内に記述されたレイアウト情報が変更されるため、見栄えの良い印刷を行うことができる。
【００１０】
また、本発明は、前記プリンタにおいて、前記レイアウトに関する情報は、ページの下端に最低限残さなければならない行数を示す第１の要素及び／又はページの上端に最低限残さなければならない行数を示す第２の要素である、ことを特徴としている。これにより、例えば、文書内で記述された「orphans」や「widows」が変更されるため、見栄えの良い印刷を行い得る。
【００１１】
更に、本発明は、前記プリンタにおいて、前記変更手段は、前記文書内で指定された第１の用紙サイズとは異なる第２の用紙サイズで印刷するときに前記レイアウトに関する情報を変更する、ことを特徴としている。これにより、例えば、ＸＨＴＭＬ文書内で記述された用紙サイズとユーザの指定した用紙サイズとが異なる場合に、文書内で記述された「orphans」や「widows」が変更されるため、見栄えの良い印刷を行い得る。
【００１２】
更に、本発明は前記プリンタにおいて、前記変更手段は、前記レイアウトに関する情報を、前記第１の用紙サイズからから前記第２の用紙サイズに合わせるように変更する、ことを特徴としている。これにより、例えば、ユーザの指定した用紙サイズに合わせて、「orphans」や「widows」が変更されるため、見栄えの良い印刷を行ことができる。
【００１３】
更に、本発明は前記プリンタにおいて、前記変更手段は、前記第１の要素によって示される行数及び／又は前記第２の要素によって示される行数とを、前記第２の用紙サイズに合わせるように変更する、ことを特徴としている。これにより、例えば、ユーザの指定した用紙サイズに合わせて、「orphans」や「widows」が変更されるため、見栄えの良い印刷を行ことができる。
【００１４】
更に、本発明は前記プリンタにおいて、前記変更手段は、前記第１の用紙サイズの紙送り方向の長さをＸ、前記第２の用紙サイズの紙送り方向の長さをＹとすると、前記第１の要素によって示される行数及び／又は前記第２の要素によって示される行数を（Ｙ／Ｘ）倍することにより変更する、ことを特徴としている。これにより、例えば、「orphans」や「widows」の設定値がユーザの指定した印刷用紙に合わせて変更されることになる。
【００１５】
更に、本発明は前記プリンタにおいて、前記第１の要素は「orphans」であり、前記第２の要素は「widows」である、ことを特徴としている。これにより、例えば、ＸＨＴＭＬ文書に記述された「orphans」や「widows」の設定値を変更して、見栄えの良い印刷を行い得る。
【００１６】
更に、前記プリンタにおいて、前記文書を印刷するときの用紙サイズを指定する用紙サイズ設定手段を更に備え、前記変更手段は、前記文書内で指定された用紙サイズと前記用紙サイズ設定手段で指定された用紙サイズとが異なるときに前記レイアウトに関する情報を変更する、ことを特徴としている。これにより、例えば、文書内で指定した用紙サイズとユーザが液晶画面等の操作により指定した用紙サイズとが異なると、「orphans」や「widows」の設定値を変更して、見栄えの良い印刷を行うことができる。
【００１７】
また、上記目的を達成するために、本発明は、構造化言語で記述された文書を印刷するプリンタにおける印刷方法であって、前記文書内に記述されたレイアウトに関する情報を変更手段により変更する工程と、変更されたレイアウト情報に基づいて印刷手段により前記文書を印刷する工程と、を備えることを特徴としている。これにより、例えば、ＸＨＴＭＬ文書に指定された用紙サイズとユーザが指定した用紙サイズとが一致しなかった場合でも、見栄えよく印刷を行い得る印刷方法を提供することができる。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照して本発明を実施するための最良の形態を説明する。
【００１９】
<全体構成とその動作>
図１は、本発明が適用される画像処理システムの一例であるプリンタ１の全体の構成を示す図である。プリンタ１は、Ｘｈｔｍｌ解析手段１０と、ＤＯＭ−スタイル管理手段２０と、ＣＳＳ解析手段（ＣＳＳパーサ）３０と、レイアウト手段４０と、レンダリング部５０、及び印刷処理部６０から構成される。
【００２０】
Ｘｈｔｍｌ解析手段１０は、ＤＯＭ−スタイル管理手段２０等を含む全体の管理を行う。Ｘｈｔｍｌ解析手段１０には、タグ解析手段（ＸＭＬパーサ）１００を備え、入力されたＸＨＴＭＬ文書５に対してどのようなタグから文書５が構成されるかの解析を行う。ここで、本プリンタ１ではＸＨＴＭＬ文書５がＸＭＬ文書とＣＳＳ文書とから構成されるものとして処理を行う。従って、タグ解析手段１００では、ＸＨＴＭＬ文書５内のＣＳＳ文書（ＣＳＳはＸＨＴＭＬ文書５内に記述されても良いし、別文書として記述されていても良い。以下同様）以外の部分（本実施例ではこれをＸＭＬ文書と称する）に対する処理を行う。なお、ＸＨＴＭＬ文書５は、例えば移動可能なメモリや、無線通信（ブルートゥースなど）により、本プリンタ１に入力されるものとする。
【００２１】
ＤＯＭ−スタイル管理手段２０は、ＤＯＭツリーとスタイルデータとを記憶し管理する。ＤＯＭ−スタイル管理手段２０には、ＤＯＭツリー生成手段２１０と、スタイルデータ記憶手段２２０とを備える。
【００２２】
ＤＯＭツリー生成手段２１０は、タグ解析手段１００からの解析後の各タグに関する情報が入力され、ＤＯＭツリーを生成して記憶する。生成されたＤＯＭツリーにより、ＸＨＴＭＬ文書５内の各タグ間等の関連付けが把握できる。
【００２３】
また、スタイルデータ記憶手段２２０は、ＣＳＳ解析手段３０で解析されたスタイルデータをテーブル形式で記憶する。スタイルデータ記憶手段２２０は、ＣＳＳでデフォルトとして定義されたスタイルデータを記憶する領域と、文書作成者が定義したスタイルデータを記憶する領域に分かれている。スタイルデータを読み出してレイアウトする際には、文書作成者が定義したスタイルデータから読み出される。つまり、この記憶手段２２０の領域には優先順位があり、文書作成者のスタイルデータの方が優先され、文書作成者によって定義されていないと、デフォルトとして定義されたスタイルデータが使用される。
【００２４】
ＣＳＳ解析手段３０は、Ｘｈｔｍｌ解析手段１０からの指示に基づき、ＸＨＴＭＬ文書５内のＣＳＳ文書に対する解析を行う。具体的には、ＣＳＳ解析手段３０は、前述したテーブルを作成することで解析を行う。これにより、文書５内にどのようなＣＳＳが記述されたかプリンタ１は把握することができる。なお、Ｘｈｔｍｌ解析手段１０は、スタイルデータ記憶手段２２０に記憶されたスタイルデータと、ＤＯＭツリー生成手段２１０に記憶されたＤＯＭツリーの各ノードとの関連付けを行う。
【００２５】
レイアウト手段４０は、Ｘｈｔｍｌ解析手段１０からのレイアウト指示に基づき、ＤＯＭ−スタイル管理手段２０に記憶されたＤＯＭツリーとスタイルデータとを参照して、各要素に対するレイアウトを行う。レイアウト手段４０の詳細は後述する。
【００２６】
レンダリング部５０は、レイアウト後の各要素に対して色付け等することでレンダリングを行う。印刷処理部６０は、レンダリング後のデータが入力され、色変換、ハーフトーン処理などの画像処理を行い、その後、実際に印刷用紙に印字を行う。
【００２７】
このように構成されたプリンタ１での動作を簡単に説明する。例えば、図２に示すＸＨＴＭＬ文書５の例で説明する。プリンタ１に入力されたＸＨＴＭＬ文書５はＸｈｔｍｌ解析手段１０で解析される。図２の例では、<body>タグ、<div>タグ、<p>タグの存在を確認する。そして、タグ解析手段１００は、解析後のこれらのタグとタグ内の内容部分（文字列１、文字列２など）をＤＯＭツリー生成手段２１０に出力する。
【００２８】
ＤＯＭツリー生成手段２１０では、ＤＯＭツリーを生成するが、図２（Ａ）の例では、図２（Ｂ）のようにツリーを生成する。ＤＯＭツリーの各ノードは、タグ及びその内容部分から構成される。そして、一旦生成されたＤＯＭツリーは生成手段２１０で記憶される。また、文書５内にＣＳＳ文書が含まれていると、ＤＯＭツリー生成手段２１０からの解析指示でＣＳＳ解析手段３０がＣＳＳ文書を解析し、生成されたテーブルがスタイルデータ記憶手段２２０に記憶される。そして、レイアウト手段４０でＤＯＭツリーとスタイルデータとが参照されレイアウト処理、その後、レンダリング、印刷処理が行われる。
【００２９】
次に、レイアウト手段４０の詳細について説明する。図３は、レイアウト手段４０の内部構成を示す図である。レイアウト手段４０は、レイアウトマネージャ４１０と、レイアウト情報作成手段４２０と、フォントデータ提供手段４３０、及びレイアウト情報記憶手段４４０とを有する。
【００３０】
レイアウトマネージャ４１０は、Ｘｈｔｍｌ解析手段１０からのレイアウト指示に基づいてレイアウト情報作成手段４２０へレイアウト指示を行う。
【００３１】
レイアウト情報作成手段４２０は、レイアウトマネージャ４１０からの指示に基づき、ＤＯＭ−スタイル管理手段２０を参照して、ＤＯＭツリーとスタイルデータとからレイアウト情報を作成する。作成されたレイアウト情報は、レイアウト情報記憶手段４４０に出力される。ここで、レイアウト情報とは、座標位置や色などに関する情報である。
【００３２】
また、レイアウト情報作成手段４２０には、レイアウト処理を実行するために、ＤＯＭツリー対応処理手段４２１と、終了判定手段４２２、及び領域マネージャ４２３を有する。
【００３３】
ＤＯＭツリー対応処理手段４２１は、ＤＯＭツリーの階層ごとにレイアウト処理を実行する部分である。また、終了判定手段４２２は、ＤＯＭツリーの各ノードに対して更に子ノードが存在するか否かを確認することで、各タグとその内容部分のレイアウトが終了したか否かを判定する。更に、領域マネージャ４２３は、レイアウト後の１頁内の残りレイアウト領域を管理する。即ち、ＤＯＭツリー対応処理手段４２１でＤＯＭツリーの各ノードに対してレイアウトを行い、終了判定手段４２２で各タグ等のレイアウトが終了したか否かを判定し、領域マネージャ４２３で１頁内の残り領域を管理する。
【００３４】
フォントデータ提供手段４３０は、レイアウト情報作成手段４２０において文字列に対するレイアウトを行う際にメモリに記憶されたフォントデータを読み出して出力する。更に、フォントデータ提供手段４３０は、レイアウト情報作成手段４２０からレイアウトされた各ボックスの幅とその幅内に入れるべき文字列とに関する情報が入力され、そのボックスの１行分の幅に入った文字列の文字数と、実際に入った文字列の幅の情報を出力する。
【００３５】
レイアウト情報記憶手段４４０は、レイアウト情報作成手段４２０で作成されたレイアウト情報を記憶する。そして、記憶したレイアウト情報をレンダリング部５０に出力する。
【００３６】
このように構成されたレイアウト手段４０の動作を説明する。まず、Ｘｈｔｍｌ解析手段１０からのレイアウト指示を受けると、レイアウトマネージャ４１０を経由して、その指示がレイアウト情報作成手段４２０に入力される。レイアウト情報作成手段４２０は、必要なＤＯＭツリーやスタイルデータを参照してそのデータを取得する。その後、ＤＯＭツリー対応処理手段４２１は、実際のレイアウト処理を行う。
【００３７】
図２に示すＸＨＴＭＬ文書５に対するレイアウトの例を図４に示す。この図４を用いてレイアウト処理の動作を説明する。まず、ＤＯＭツリー対応処理手段４２１は、<body>タグに対する処理を行う（文書５内の前段部分にある要素に対するレイアウト処理は終了したものと仮定）。即ち、ＤＯＭツリー対応処理手段４２１は、この<body>タグに対し、設定された「margin」、「border」、「padding」の分だけ座標位置を移動させる。この「margin」、「border」、「padding」は、スタイルデータであり、その設定は文書内（ＸＨＴＭＬ文書５内でも、文書５とは別の文書でもよい）に記述され、スタイルデータ記憶手段２２０に記憶される。もし、スタイルデータが文書内に記述されないときは、スタイルデータ記憶手段２２０のデフォルトとして記憶された領域から読み出したデフォルトの値で処理を行う。また、領域マネージャ４２３は座標移動により、どれだけ残り領域があるかの演算を行い、残り領域を把握する。
【００３８】
そして、終了判定手段４２２は、ＤＯＭツリーから、この<body>タグのすぐ下にノードがあるか否かを確認する。この場合、図２（Ｂ）に示すよう、<div>タグのノードが存在するので、終了判定手段４２２は、<body>タグに対する処理は終了しないと判定する。
【００３９】
次いで、ＤＯＭツリー対応処理手段４２１は、この<div>タグに対する処理を行う。同様に、この<div>タグに対して設定された「margin」、「border」、「padding」の分だけ座標位置を移動させる。
【００４０】
以下、同様に順次レイアウトが実行されるが、要素の内容部分である文字列１の場合は以下のようにレイアウトを行う。即ち、ＤＯＭツリー対応処理手段４２１は、「margin」等による座標移動後、<div>タグに対するボックスの幅（図４参照）のデータと、文字列１のデータとをフォントデータ提供手段４３０に出力し、実際にその幅に入った文字列の文字数と、文字列の幅とに関する情報を得る。そして、ＤＯＭツリー対応処理手段４２１は、文字列１のすべてが１行分の幅に入ることができないと、次の行に対するレイアウトを行うべく座標位置を移動させる。ＤＯＭツリー対応処理手段４２１は、１行分の幅に入ることができなかった文字列１の残りの文字列に対して、再び前述の処理を繰り返す。これにより、図４に示すよう<div>タグのボックス内に含まれる文字列１のレイアウトが終了する（この例では３行分の枠にレイアウトされる）。
【００４１】
そして、終了判定手段４２２により、すべてのノードに対する処理が終了したと判定されると、一連のレイアウト処理が終了する。レイアウト終了後は、前述したように、レンダリング、印刷処理が行われる。尚、本プリンタ１では、原則として１頁分のレイアウトが終了するとレイアウト後のデータ（各ボックス内の座標やスタイルデータなどのレイアウト情報）がレンダリング部５０に出力される。
【００４２】
[orphans、widowsが記述された文書に対する処理]
次に、本発明に係る「orphans」、「widows」に対する処理について説明する。ここで、「orphans」は、前述したように、ページの下端に最低限残さなければならない行数を示す要素（或いはプロパティ）である。例えば、図５（Ａ）に示すように、１頁分の印刷用紙の大きさ７０に対し、２つのブロック要素Ａ及びＢ７５がレイアウトされている場合に、ページの下端からの行数は「５」、「orphans」が「４」と設定されていると、このブロック要素Ｂ７５は「orphans」によって指定された行数（以下、この行数を含め「orphans」と称す）を満たすことになる。勿論、「orphans」とレイアウトした行数とが一致する場合もこの条件を満たすことになる。
【００４３】
一方、「widows」は、ページの上端に最低限残さなければならない行数を示す要素（或いはプロパティ）である。例えば、図５（Ｂ）に示す例では、ページの先頭にレイアウトされたブロック要素Ａ７５の行数は「５」、「widows」が「４」と設定されていると、このブロック要素Ａ７５は、「widows」によって指定された行数（以下、この行数を含め「widows」を称す）を満たすことになる。勿論、「widows」とレイアウトした行数とが一致する場合も条件を満たすことになる。
【００４４】
次に、この「orphans」と「widows」に対する処理アルゴリズムについて説明する。図６乃至図８はその一例である。なお、この処理は、主として前述したレイアウト手段４０のレイアウト情報作成手段４２０により行われる。
【００４５】
処理が開始されると（Ｓ１０）、まず、ページ先頭からプロック要素のレイアウトを開始したときに改ページが発生した場合、レイアウト済みの行数が「orphans」を超えなかったとしても、改ページは行わない（Ｓ１１）。例えば、図９（Ａ）に示すように、１頁の印刷用紙の大きさ７０に対して、あるブロック要素に関するレイアウトを行った結果、印刷用紙の大きさ７０を超える場合、このブロック要素７５自体を次のページにレイアウトすることは行わない。次のページにこのブロック要素７５をレイアウトしても、改ページが発生して、これを繰り返すことで、無限ループに入ってしまうからである。この場合、ページ先頭から順次レイアウトし、１頁分の印刷用紙の大きさ７０を超えた部分は、次ページにレイアウトされる。
【００４６】
ここで、ブロック要素７５をレイアウトした結果、改ページが発生したか否かは以下のようにして判断できる。即ち、レイアウト情報作成手段４２０は、各ブロック要素７５に対する座標位置を管理している。前述したように、例えば文字列に対する１行分のレイアウトが終了する毎に、レイアウト情報作成手段４２０（とくにＤＯＭツリー対応処理手段４２１）は、座標位置を移動させている。一方で、レイアウト情報作成手段４２０（とくに領域マネージャ４２３）は、１頁分の印刷用紙の大きさ７０に対して、レイアウト後の残り領域を管理している。従って、レイアウト情報作成手段４２０は、１頁分の印刷用紙の大きさ７０を超えて、ブロック要素７５内の文字列等をレイアウトしたときに、改ページが発生すると認識する。
【００４７】
図６の処理アルゴリズムに戻り、ページの途中からプロック要素のレイアウトを開始したときに改ページが発生した場合に、現在のページのレイアウト済み行数を調べ、この行数が「orphans」を超えない場合は、次ページの先頭からブロック要素７５のレイアウトを開始する（Ｓ１２）。図９（Ｂ）に示すように、現在のページでブロック要素Ａ７５に対するレイアウトが終了し、ブロック要素Ｂ７５に対するレイアウトを行った結果、ブロック要素Ｂ７５の先頭から３行目まで現在のページにレイアウトされ、４行目以降が次ページにレイアウトされる場合を考える。ブロック要素Ｂ７５のページの下端からの行数は「３」であり、「orphans」が「４」と設定されると、ブロック要素Ｂ７５のレイアウトに関し、「orphans」の条件を満たさないことになる。従って、このような状況が発生した場合、レイアウト情報作成手段４２０は、次ページにこのブロック要素Ｂ７５をまとめてレイアウトする。
【００４８】
ここで、レイアウト済みの行数が「orphans」を超えても先行ページは印刷しない（Ｓ１３）。つまり、先行ページのレイアウトが終了するものの、先行ページのレイアウトは確定させず、先行ページのレイアウト情報は前述のレイアウト情報記憶手段４４０からレンダリング５０に出力されない。例えば、図１０（Ａ）に示すように、先行ページにレイアウトしたブロック要素Ｂ７５の行数が「５」のとき、「orphans」の「４」を超えることになるが、レイアウトの終了した先行ページに対して印刷は行わない。先行ページに対する印刷を行うと、後続ページ側で「widows」の条件を満たさない場合に先行ページに対する再レイアウト（後述）を実行できなくなるからである。
【００４９】
従って、まず、後続ページにブロック要素７５の残りをレイアウトしたとき、「widows」を超えるか否か確認する。そして、「widows」を超えると、先行ページを印刷、即ち、レイアウト情報作成手段４２０は先行ページに対するレイアウトを確定させ、先行ページに関するレイアウト情報をレンダリング部５０に出力することで、印刷の処理を行う（Ｓ１４）。例えば、図１０（Ｂ）に示すように、「widows」が「４」と設定され、ブロック要素Ｂ７５に対するレイアウトを行った結果、後続ページが行数「６」となった場合、「widows」を超えるため、先行ページに対する印刷を行う。
【００５０】
また、後続ページにブロック要素７５の残りをレイアウトしている途中、後続ページで改ページが発生した場合も先行ページを印刷する（Ｓ１５、図７参照）。例えば、図１１に示すように、ブロック要素Ｂ７５を後続ページにレイアウトしたときに、ブロック要素Ｂ７５が１頁分の印刷用紙の大きさ７０を超えると、先行ページに関するレイアウト情報がレンダリング部５０に出力され印刷が行われる。先行ページと後続ページとの間で再レイアウトを行う必要がないからである。
【００５１】
次に、後続ページにブロック要素７５の残りをレイアウトした結果、「widows」を超えない場合、レイアウト情報作成手段４２０により、先行ページから１行削除し、その１行を後続ページに移動させるよう処理を行う。そして、レイアウト情報作成手段４２０は、この処理を「widows」を満たすまで（「widows」と同じ行数となるまで）繰り返す（Ｓ１６）。前述した再レイアウトの処理である。この再レイアウト処理が終了すると、先行ページのレイアウトが確定し、先行ページのレイアウト情報がレンダリング部５０等に出力される。
【００５２】
例えば、図１２に示すよう、「widows」が「６」と設定され、後続ページにブロック要素Ｂ７５をレイアウトした結果、その行数が「４」となると「widows」の条件は満たさない。従って、レイアウト情報作成手段４２０は、先行ページのブロック要素Ｂ７５から１行削除して、その１行を後続ページに移動させる。「widows」は「６」なので、移動を２回繰り返すことで、「widows」を満たすことになる。
【００５３】
なお、このように１行ずつ移動させるのは、後続ページのページサイズが異なる場合を考慮しているからである。例えば、図１３に示すように、後続ページのページサイズが先行ページよりも幅広の場合、先行ページから１行、後続ページに移動させても、後続ページの１行分に足りず、「widows」の条件を満たさないこともあり得るからである。
【００５４】
図７の処理に戻り、後続ページが「widows」を満たすよう、先行ページから１行ずつ移動させても、先行ページが「orphans」を満たさない場合もある。この場合は、レイアウト情報作成手段４２０は、改ページの発生するブロック要素７５をすべて後続ページに移動させるようレイアウトする（Ｓ１７）。例えば、図１４に示すよう、先行ページから１行づつ移動させると後続ページが「widows」を満たすこととなるが、移動した結果、先行ページは「orphans」の条件を満たさなくなる。この場合、ブロック要素Ｂ７５自体が後続ページに移動される。
【００５５】
以上により、「orphans」と「widows」が記述された文書に対する処理アルゴリズムが終了する（Ｓ１８）。
【００５６】
前述したように、再レイアウトに関するＳ１６、Ｓ１７は、後続ページのページサイズが先行ページのページサイズとが異なる場合を考慮した処理となっている。ページサイズが共に同じであるときは、Ｓ１６、Ｓ１７に代わり、図８に示す処理アルゴリズムが実行される。即ち、後続ページにブロック要素７５の残りをレイアウトした結果、「widows」を超えなかった場合、先行ページから「widows」を満たすのに必要な行数だけ後続ページに移動させる。そして、移動した結果、先行ページが「orphans」を満たさないとブロック要素７５全体を後続ページに移動させる（Ｓ１９）。１行ずつ移動させるのではなく、「widows」を満たす分必要な行数だけ移動させる。１行ずつ移動させる場合と比較して処理を速くすることができる。
【００５７】
以上の処理アルゴリズムにより、本プリンタ１は「orphans」や「widows」が記述された文書５に対する処理を実行することができ、また、「orphans」と「widows」の双方の条件を満たすよう処理が行われるため、その整合性の取れた処理が行われる。更に、先行ページにブロック要素７５の先頭部分の少数行のみ印刷や表示が行われたり、後続ページの最後尾部分の少数行のみ印刷等が行われる事態を回避でき、見栄えの良い印刷等を行い得る。
【００５８】
[orphans、widowsの値を動的に変更する処理]
次に、「orphans」、「widows」の値を動的に変更する処理アルゴリズムについて説明する。ＣＳＳでは、ＸＨＴＭＬ文書５内に、印刷する際の用紙サイズを指定することができる。その例を図１５に示す。しかしながら、文書５内で用紙サイズを指定しても、本プリンタ１を使用する者（以下、「ユーザ」と称す）が本プリンタ１の液晶画面等を操作して、異なる用紙サイズを指定する場合がある。つまり、文書作成者とユーザとで異なる用紙サイズを指定する場合がある。
【００５９】
このような状況で、「orphans」、「widows」が指定されていたときに、ユーザの指定した用紙サイズで印刷すると、想定していない位置で改ページが発生し、見栄えの良くない状態で印刷されてしまう場合がある。その例を図１７に示す。文書作成者は、見栄えを良くするため、４０行の縦幅の用紙サイズ７１に対して「orphans」を「６」と指定した文書５を作成した。ところが、ユーザは１０行の縦幅の用紙サイズ７２を指定して印刷を行うと、図１７（Ｂ）に示すように、必ずしも見栄え良くレイアウト、及びその後の印刷を行うことができない。つまり、ユーザが望んでいない状態で印刷されてしまう場合がある。そこで、文書作成者が指定した「orphans」、「widows」の値を、ユーザの指定した用紙サイズに応じて変更することで、そのレイアウトを動的に変更するようにする。
【００６０】
図１６は、このような「orphans」、「widows」の値を動的に変更する処理アルゴリズムの一例である。この処理アルゴリズムは、本実施例では変更手段としてのレイアウト情報作成手段４２０により実行されるものとする。
【００６１】
まず、処理が開始される（Ｓ３０）と、レイアウト情報作成手段４２０は用紙サイズが異なるか否か判断する（Ｓ３１）。文書作成者により作成された用紙サイズを示すデータは、スタイルデータ記憶手段２２０から読み出すことで得る。一方、ユーザの指定した用紙サイズは、例えば、図示しない液晶表示部でユーザが指定でき、その指定された用紙サイズに関する情報がレイアウト情報作成手段４２０に入力される。この両者を比較することでレイアウト情報作成手段４２０は本処理を判断する。
【００６２】
そして、用紙サイズが同じであれば（ＮＯ）、動的に変更する処理を行うことなく、本処理アルゴリズムは終了する（Ｓ３３）。一方、用紙サイズが異なれば（Ｓ３１でＹＥＳ）、レイアウト情報作成手段４２０は、「orphans」、「widows」を動的に変更する処理を行う（Ｓ３２）。
【００６３】
具体的には、図１７に示すように、文書作成者が指定した（文書５に記述された）用紙サイズの縦方向（紙送り方向）の長さをＸｃｍ、文書作成者が指定した「orphans」を「orphans_x」とする。また、ユーザの指定した用紙サイズの縦方向（同様に紙送り方向）の長さをＹｃｍとし、変更後の「orphans」を「orphans_y」とすると、
「orphans_y」＝（Ｙ／Ｘ）×「orphans_x」
により、値を得る。一方、「widows」についても同様に、
「widows_y」＝（Ｙ／Ｘ）×「widows_x」
により、変更後の値を得る。つまり、ユーザの指定した用紙サイズに合わせるよう、「orphans」と「widows」の値を変更している。
【００６４】
そして、レイアウト情報作成手段４２０は、このように動的に変更された「orphans_y」、「widows_y」を用いて、前述した「orphans」、「widows」に対する処理アルゴリズムを実行する。
【００６５】
図１８乃至図１９は、「orphans」、「widows」を動的に変更する処理アルゴリズムを実行して、処理を行ったときの例を示す図である。文書作成者は４０行の用紙サイズで、見栄えを良くするよう、「orphans」と「widows」を共に「８」と指定した場合、ユーザが１０行の用紙サイズを指定すると、とくにブロック要素Ｂ７５に関しては、図１８に示すようにレイアウトされる。
【００６６】
ユーザの指定した用紙サイズで「orphans」と「widows」を変更せずに、前述した「orphans」、「widows」に対する処理アルゴリズムを実行すると、図１９（Ａ）に示すようにレイアウトされる。即ち、ブロック要素Ｂ７５に関し、最初は１ページ目に先頭から６行分がレイアウトされるものの、「orphans」の「８」を満たさないため、２ページ目の先頭からレイアウトされる（図６のＳ１２）。そして、２ページ目にはブロック要素Ｂ７５が１０行、３ページ目に６行レイアウトされるものの、３ページ目の行数は「widows」の「８」を満たさないため、２ページ目のブロック要素Ｂ７５から２行分、３ページ目に移動する（Ｓ１６とＳ１７、又はＳ１９）。そして、図１９（Ａ）のように１ページ目乃至３ページ目がレイアウトされる。
【００６７】
一方、「orphans」と「widows」を動的に変更すると、「orphans_y」と「widows_y」は、共に「２」（＝（１０／４０）×８：説明を容易にするため、Ｘ、Ｙともに行数のままで計算した）となる。そして、この変更された「orphans_y」と「widows_y」を用いて、ブロック要素Ｂ７５をレイアウトすると図１９（Ｂ）に示すようになる。
【００６８】
このように、「orphans」と「widows」を動的に変更する処理アルゴリズムを実行することで、本プリンタ１はＸＨＴＭＬ文書５で指定された用紙サイズとユーザが指定した用紙サイズとが一致しない場合でも、見栄えよく印刷することができる。また、ユーザの指定した用紙サイズに合わせるよう「orphans」と「widows」の値を変更して印刷を行うため、印刷用紙の枚数削減を図ることもできる。
【００６９】
図１７乃至図１９に示す例では、ユーザの指定した用紙サイズが文書内の用紙サイズよりも小さい例で説明したが、その逆の場合でも全く同様である。
【００７０】
また、ユーザが指定した用紙サイズと文書作成者が指定した用紙サイズとが異なる場合で前述の例を説明した。例えば、それ以外にも、文書作成者が指定した用紙サイズでは、プリンタの印刷可能な用紙サイズの限界を超える場合、プリンタ１において印刷可能な用紙サイズに変更して印刷する場合でも同じことが言える。文書作成者が「Ａ３」と指定し、プリンタ１では「Ａ４」が最大の場合に、「Ａ４」に変更して処理を行う等である。更に、ユーザの指定した用紙サイズで印刷できない場合にその用紙サイズをプリンタ１で変更する場合でも全く同様のことが言える。
【００７１】
[変形例]
前述した例は、画像処理システムの一例としてプリンタ１を例にして説明した。勿論、プリンタ１以外でも、複写機やファクシミリ、これらの機能を備える複合機、ディスプレイなどの表示装置、など種々の装置に適用可能である。このような場合でも、前述した例と同様の作用効果を得る。
【００７２】
また、前述の例では、構造化言語の例としてＸＨＴＭＬ言語を使用して説明した。それ以外にも、例えば、ＨＴＭＬ（Hyper Text Markup Language）やＳＧＭＬ（Standard Generalized Markup Language）などの言語により記述された文書であってもよい。
【図面の簡単な説明】
【００７３】
【図１】画像処理システムの一例であるプリンタの全体構成を示す図である。
【図２】ＸＨＴＭＬ文書の例と、ＤＯＭツリーの例とを示す図である。
【図３】レイアウト手段の内部構成を示す図である。
【図４】レイアウト手段で行われるレイアウトの一例を示す図である。
【図５】「orphans」と「widows」の概念を説明するための図である。
【図６】「orphans」と「widows」の処理アルゴリズムの一例を示す図である。
【図７】「orphans」と「widows」の処理アルゴリズムの一例を示す図である。
【図８】「orphans」と「widows」の処理アルゴリズムの一例を示す図である。
【図９】レイアウトの一例を示す図である。
【図１０】「orphans」と「widows」を用いたレイアウトの一例を示す図である。
【図１１】「orphans」と「widows」を用いたレイアウトの一例を示す図である。
【図１２】「orphans」と「widows」を用いたレイアウトの一例を示す図である。
【図１３】「orphans」と「widows」を用いたレイアウトの一例を示す図である。
【図１４】「orphans」と「widows」を用いたレイアウトの一例を示す図である。
【図１５】ページサイズを記述したＸＨＴＭＬ文書の一例を示す図である。
【図１６】「orphans」と「widows」の変更アルゴリズムの一例を示す図である。
【図１７】ＸＨＴＭＬ文書とユーザとでレイアウトの違いを説明するための図である。
【図１８】ＸＨＴＭＬ文書とユーザとでレイアウトの違いを説明するための図である。
【図１９】「orphans」と「widows」を動的に変更させたときと、変更させなかったときとでレイアウトの違いを説明するための図である。
【符号の説明】
【００７４】
１  プリンタ（画像処理システム）、５  ＸＨＴＭＬ文書、２０  ＤＯＭ−スタイル管理手段、４０  レイアウト手段、７０〜７２  １頁分の印刷用紙の大きさ、７５  ブロック要素、２１０  ＤＯＭツリー生成手段、２２０  スタイルデータ記憶手段、４２０  レイアウト情報作成手段
【図１】
2006255916.tif 000003
【図２】
2006255916.tif 000004
【図３】
2006255916.tif 000005
【図４】
2006255916.tif 000006
【図５】
2006255916.tif 000007
【図６】
2006255916.tif 000008
【図７】
2006255916.tif 000009
【図８】
2006255916.tif 000010
【図９】
2006255916.tif 000011
【図１０】
2006255916.tif 000012
【図１１】
2006255916.tif 000013
【図１２】
2006255916.tif 000014
【図１３】
2006255916.tif 000015
【図１４】
2006255916.tif 000016
【図１５】
2006255916.tif 000017
【図１６】
2006255916.tif 000018
【図１７】
2006255916.tif 000019
【図１８】
2006255916.tif 000020
【図１９】
2006255916.tif 000021