(57)【特許請求の範囲】
【請求項１】
文字列配置エリアを指定し、この指定された配置エリアからはみ出した余剰行や配置エリア内に何ら文字列の存在しない不足行が存在しないように、複数の段落からなる所定の文字列を前記配置エリアに対して配置位置を調整して配置する文字組版方法であって、
前記配置エリアを第１文字位置、配置エリア行数、文字サイズ、配置行長または行内文字数、行送り量または行間量によって指定する過程と、
前記文字列中の各段落の行数の総和（以下、総行数とする）と前記配置エリア内に配置することができる行数（以下、配置エリア行数とする）とを比較する過程と、
前記総行数が前記配置エリア行数より大きい場合には、
各段落の最終行の文字列長である詰め調整量と、各段落の各文字がもつ文字間隔を詰め調整できる詰め調整可能量の和である詰め調整許容量とを、各段落毎に求める過程と、
各段落毎の詰め調整量と詰め調整許容量との比（以下、詰め調整比とする）を各段落毎に求める過程と、
前記各詰め調整比のうち最小の詰め調整比をもつ段落について、当該段落の詰め調整量を当該段落の各文字について振り分けて、各文字間隔を詰めることにより、その段落の行数を一つ減らす過程と、
からなる追込み処理を行うことによって、１行分の余剰行を配置エリア内に収め、
新たな総行数と前記配置エリア行数とが一致するまで前記追込み処理を繰り返し行い、
前記総行数が前記配置エリア行数よりも小さい場合には、
各段落の最終行の空白部分の長さと一行中に最低限必要な文字列長との合計である空け調整量と、文字間隔を空ける際の制限値である空け調整可能量に基づいた各段落の文字列全体で広げることのできる文字間隔量の最大値である空け調整許容量とを、各段落毎に求める過程と、
各段落毎の空け調整量と空け調整許容量との比（以下、空け調整比とする）を各段落毎に求める過程と、
前記各空け調整比のうち最小の空け調整比をもつ段落について、当該段落の空け調整量を当該段落の各文字について振り分けて、各文字を空けて配置することにより、その段落の行数を一つ増やす過程と、
からなる追出し処理を行うことによって、１行分の不足行を配置エリア内から無くし、
新たな総行数と前記配置エリア行数とが一致するまで前記追出し処理を繰り返し行うことを特徴とする文字組版方法。
【請求項２】
請求項１に記載の文字組版方法において、詰め調整可能量は、各文字の仮想ボディと字面との間隔量に基づいて設定し、空け調整可能量は、各文字の字面または仮想ボディの外方に付加設定される値に基づいて設定することを特徴とする文字組版方法。
【請求項３】
請求項１に記載の文字組版方法において、前記配置エリアを指定する過程に代えて、配置エリアの対角２頂点位置を指定するとともに、文字サイズと配置エリア行数と行送り量の３つ、または文字サイズと配置エリア行数と行間量の３つの指示要素の中の２つの指示要素を指示することによって配置エリアを指定する過程を備えたことを特徴とする文字組版方法。
【請求項４】
所定の文字列を配置するための配置エリアを指定し、この指定された配置エリアからはみ出した余剰行や配置エリア内に何ら文字列の存在しない不足行が存在しないように、複数の段落からなる前記文字列を前記配置エリアに対して配置位置を調整して配置する文字組版装置であって、
文字列データファイル中のフォント名や文字コード等からなる所定の文字列の文字列データを格納する文字列情報記憶部と、
行頭位置、行末位置、配置行長、配置エリア行数、文字サイズ、行間量等の組版情報を入力する組版情報入力部と、
前記組版情報を格納する組版情報記憶部と、
各文字コードに対応する各文字の字面を表す文字フォントデータと、各文字の字面と仮想ボディとの間隔量を示す文字パラメータとを予め格納する文字フォントテーブルと、
前記文字列の各段落の最終行に最低限必要な文字数に相当し、前記配置行長中に最低限必要な文字列長（以下、最短文字列長とする）を入力する最短文字列長入力部と、
前記最短文字列長を格納する最短文字列長記憶部と、
文字間隔を空ける際の制限値である空け調整可能量を入力する空け調整可能量入力部と、
前記空け調整可能量を格納する空け調整可能量記憶部と、
前記文字列情報記憶部に記憶されている文字列データと、この文字列データの各文字コードに応じた前記文字フォントテーブル中の文字パラメータと、前記組版情報記憶部の組版情報とに基づいて、各段落の文字列の全長（以下、文字列長とする）を算出し、この各段落毎の文字列長と前記組版情報記憶部の組版情報とに基づいて各段落の行数を算出し、前記各段落の行数の総和（以下、総行数とする）と、前記組版情報記憶部の配置エリア行数とを比較する行演算処理部と、
前記行演算処理部の比較の結果、総行数が配置エリア行数よりも大きい場合には、各段落の最終行の文字列長である詰め調整量と、各段落の各文字がもつ文字間隔を詰め調整できる詰め調整可能量の和である詰め調整許容量との比（以下、詰め調整比とする）を各段落毎に求め、前記詰め調整比のうち最小の詰め調整比をもつ段落について、当該段落の詰め調整量を当該段落の各文字に振り分けて、各文字間隔を詰めることにより、その段落の行数を一つ減らす追込み処理を行って、新たな総行数と前記配置エリア行数とが一致するまで前記追込み処理を繰り返し行い、
前記行演算処理部の比較の結果、総行数が配置エリア行数よりも小さい場合には、各段落の最終行の空白部分の長さと前記最短文字列長との合計である空け調整量と、前記空け調整可能量に基づいた各段落の文字列全体で広げることのできる文字間隔量の最大値である空け調整許容量とを各段落毎に求め、各段落毎の前記空け調整量と前記空け調整許容量との比（以下、空け調整比とする）を各段落毎に求め、前記空け調整比のうち最小の空け調整比をもつ段落について、当該段落の空け調整量を当該段落の各文字に振り分けて、各文字を空けて配置することにより、その段落の行数を一つ増やす追出し処理を行って、新たな総行数と前記配置エリア行数とが一致するまで前記追出し処理を繰り返し行う配置調整部と、
前記配置調整部によって行数が調整された文字列を出力する出力部と、
前記配置調整部によって行数が調整された文字列を表示する表示部と、
を備えたことを特徴とする文字組版装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、デスク・トップ・パブリッシング（ＤＴＰ）等で利用される文字組版編集装置の文字組版等に係り、特に指定された任意形状の領域内へ複数の段落からなる入力文字列を配置位置を調整して体裁よく配置する文字組版方法に関する。
【０００２】
【従来の技術】
複数の段落からなる所定の文字列を指定の配置エリア内に体裁よく収める文字組版方法の従来例として、表示手段等に表示された所定の文字列をオペレータが見て、その文字間隔をオペレータの判断によって調整し、行数を増減させる方法がある。例えば、配置エリアから所定の文字列の一部の文字列がはみ出している場合は、最後の段落の最終行の文字列の文字間隔を詰めるなどによりはみ出している文字列をその前行に追込み、所定の文字列の行数を配置エリアの行数と一致させる作業を行う。また、配置エリア内に文字列の存在しない不足行がある場合は、最後の段落の最終行中の一部の文字列の文字間隔を空けるなどにより一部の文字列を次行に追い出して、所定の文字列の行数を配置エリアの行数と一致させる作業を行う。
【０００３】
しかし、この方法では追込み／追出しの処理時に文字間隔の調整を試行錯誤で行うことになるので、オペレータに経験と技量を要し、効率が悪いといった問題点がある。また、所定の文字列を配置エリア内に収めることはできても、追込み処理された段落では、その最終行の文字間隔がそれ以外の行の文字間隔より極端に狭くなり、追出し処理された段落では、その最終行とその前行の文字間隔がそれ以外の行の文字間隔より極端に広くなって見栄が悪くなるという問題点がある。
【０００４】
そこで、上記の問題点を改善するための方法として、最終段落の全ての行の文字列の文字間隔を調整して追込み／追出しを行う方法が挙げられる。この方法によると、調整された最終段落内の全ての文字列の文字間隔が詰められたり／空けられたりするので、上記のような行による文字間隔のバラツキ問題は解消される。
【０００５】
【発明が解決しようとする課題】
しかしながら、このような従来方法には、次のような問題がある。
すなわち、複数の段落からなる文字列のうち、最終段落の文字列だけについてその文字間隔を調整するので、その段落の文字列についてだけみれば文字間隔のバラツキはない。しかし、文字間隔の調整を行った最終段落と他の段落との文字間隔を比較すると、場合によっては調整を行った段落の文字間隔が狭く見えたり、広がって見えたりという段落間の文字間隔のバラツキが生じるので、調整する段落は文字間隔の調整量が最も少ないものを選択する必要がある。さらに段落が多数ある場合には、オペレータが最適な段落を選択するのは非常に困難であり、オペレータの負担が大きい。また、選択された段落の文字列の文字間隔の調整はオペレータの主観によって行われるので、調整された文字列の間隔が視覚的に一定しないという問題点がある。
【０００６】
本発明は、このような事情に鑑みてなされたものであって、段落間の文字間隔を、そのバラツキを抑えつつ調整して、複数の段落からなる文字列を指定された配置エリアに自動的に体裁よく配置することができる文字組版方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
本発明は、このような目的を達成するために、次のような構成をとる。
すなわち、請求項１に記載の発明方法は、文字列配置エリアを指定し、この指定された配置エリアからはみ出した余剰行や配置エリア内に何ら文字列の存在しない不足行が存在しないように、複数の段落からなる所定の文字列を前記配置エリアに対して配置位置を調整して配置する文字組版方法であって、前記配置エリアを第１文字位置、配置エリア行数、文字サイズ、配置行長または行内文字数、行送り量または行間量によって指定する過程と、前記文字列中の各段落の行数の総和（以下、総行数とする）と前記配置エリア内に配置することができる行数（以下、配置エリア行数とする）とを比較する過程と、前記総行数が前記配置エリア行数より大きい場合には、各段落の最終行の文字列長である詰め調整量と、各段落の各文字がもつ文字間隔を詰め調整できる詰め調整可能量の和である詰め調整許容量とを、各段落毎に求める過程と、各段落毎の詰め調整量と詰め調整許容量との比（以下、詰め調整比とする）を各段落毎に求める過程と、前記各詰め調整比のうち最小の詰め調整比をもつ段落について、当該段落の詰め調整量を当該段落の各文字について振り分けて、各文字間隔を詰めることにより、その段落の行数を一つ減らす過程と、からなる追込み処理を行うことによって、１行分の余剰行を配置エリア内に収め、新たな総行数と前記配置エリア行数とが一致するまで前記追込み処理を繰り返し行い、前記総行数が前記配置エリア行数よりも小さい場合には、各段落の最終行の空白部分の長さと一行中に最低限必要な文字列長との合計である空け調整量と、文字間隔を空ける際の制限値である空け調整可能量に基づいた各段落の文字列全体で広げることのできる文字間隔量の最大値である空け調整許容量とを、各段落毎に求める過程と、各段落毎の空け調整量と空け調整許容量との比（以下、空け調整比とする）を各段落毎に求める過程と、前記各空け調整比のうち最小の空け調整比をもつ段落について、当該段落の空け調整量を当該段落の各文字について振り分けて、各文字を空けて配置することにより、その段落の行数を一つ増やす過程と、からなる追出し処理を行うことによって、１行分の不足行を配置エリア内から無くし、新たな総行数と前記配置エリア行数とが一致するまで前記追出し処理を繰り返し行うことを特徴とするものである。
【０００８】
請求項２に記載の発明方法は、請求項１に記載の文字組版方法において、詰め調整可能量は、各文字の仮想ボディと字面との間隔量に基づいて設定し、空け調整可能量は、各文字の字面または仮想ボディの外方に付加設定される値に基づいて設定することを特徴とするものである。
【０００９】
請求項１に記載の文字組版方法において、前記配置エリアを指定する過程に代えて、配置エリアの対角２頂点位置を指定するとともに、文字サイズと配置エリア行数と行送り量の３つ、または文字サイズと配置エリア行数と行間量の３つの指示要素の中の２つの指示要素を指示することによって配置エリアを指定する過程を備えたことを特徴とするものである。
【００１０】
請求項４に記載の発明装置は、所定の文字列を配置するための配置エリアを指定し、この指定された配置エリアからはみ出した余剰行や配置エリア内に何ら文字列の存在しない不足行が存在しないように、複数の段落からなる前記文字列を前記配置エリアに対して配置位置を調整して配置する文字組版装置であって、文字列データファイル中のフォント名や文字コード等からなる所定の文字列の文字列データを格納する文字列情報記憶部と、行頭位置、行末位置、配置行長、配置エリア行数、文字サイズ、行間量等の組版情報を入力する組版情報入力部と、前記組版情報を格納する組版情報記憶部と、各文字コードに対応する各文字の字面を表す文字フォントデータと、各文字の字面と仮想ボディとの間隔量を示す文字パラメータとを予め格納する文字フォントテーブルと、前記文字列の各段落の最終行に最低限必要な文字数に相当し、前記配置行長中に最低限必要な文字列長（以下、最短文字列長とする）を入力する最短文字列長入力部と、前記最短文字列長を格納する最短文字列長記憶部と、文字間隔を空ける際の制限値である空け調整可能量を入力する空け調整可能量入力部と、前記空け調整可能量を格納する空け調整可能量記憶部と、前記文字列情報記憶部に記憶されている文字列データと、この文字列データの各文字コードに応じた前記文字フォントテーブル中の文字パラメータと、前記組版情報記憶部の組版情報とに基づいて、各段落の文字列の全長（以下、文字列長とする）を算出し、この各段落毎の文字列長と前記組版情報記憶部の組版情報とに基づいて各段落の行数を算出し、前記各段落の行数の総和（以下、総行数とする）と、前記組版情報記憶部の配置エリア行数とを比較する行演算処理部と、前記行演算処理部の比較の結果、総行数が配置エリア行数よりも大きい場合には、各段落の最終行の文字列長である詰め調整量と、各段落の各文字がもつ文字間隔を詰め調整できる詰め調整可能量の和である詰め調整許容量との比（以下、詰め調整比とする）を各段落毎に求め、前記詰め調整比のうち最小の詰め調整比をもつ段落について、当該段落の詰め調整量を当該段落の各文字に振り分けて、各文字間隔を詰めることにより、その段落の行数を一つ減らす追込み処理を行って、新たな総行数と前記配置エリア行数とが一致するまで前記追込み処理を繰り返し行い、前記行演算処理部の比較の結果、総行数が配置エリア行数よりも小さい場合には、各段落の最終行の空白部分の長さと前記最短文字列長との合計である空け調整量と、前記空け調整可能量に基づい基づいた各段落の文字列全体で広げることのできる文字間隔量の最大値である空け調整許容量とを各段落毎に求め、各段落毎の前記空け調整量と前記空け調整許容量との比（以下、空け調整比とする）を各段落毎に求め、前記空け調整比のうち最小の空け調整比をもつ段落について、当該段落の空け調整量を当該段落の各文字に振り分けて、各文字を空けて配置することにより、その段落の行数を一つ増やす追出し処理を行って、新たな総行数と前記配置エリア行数とが一致するまで前記追出し処理を繰り返し行う配置調整部と、前記配置調整部によって行数が調整された文字列を出力する出力部と、前記配置調整部によって行数が調整された文字列を表示する表示部と、を備えたことを特徴とするものである。
【００１１】
【作用】
請求項１に記載の発明方法の作用は次のとおりである。
まず、配置エリアを指定し、そして、配置エリアに配置される所定の文字列中の各段落の行数の総和である総行数と、指定された配置エリア内に配置することができる行数である配置エリア行数とを比較する。この総行数が配置エリア行数よりも大きい場合は、配置エリアから文字列がはみ出しているので次のような追込み処理を行う。
【００１２】
各段落の最終行の文字列の長さを示す詰め調整量と、各段落の各文字の詰め調整可能量の総和である詰め調整許容量、すなわち、その段落の文字列全体で詰めることのできる文字間隔量の最大値を求め、各段落毎に前記詰め調整量と前記詰め調整許容量との比である詰め調整比を求める。この各詰め調整比は、各段落の最終行を前の行に追込んだときに各文字間隔が詰まる割合を示し、詰め調整比が大きいほど文字間隔が詰まることになる。そして、各段落の詰め調整比のうち、最小の詰め調整比をもつ段落について、その詰め調整量を当該段落の各文字に振り分けて、各文字間隔を詰めることにより、１行分の余剰行を配置エリア内に収める。このように全ての詰め調整比のうち最小の詰め調整比をもつ段落を対象にして、新たな総行数と配置エリア行数とが一致するまで、すなわち、配置エリア内に余剰行が無くなるまで前記追込み処理を繰り返し行う。
【００１３】
また総行数が配置エリア行数よりも小さい場合は、配置エリア内に文字列の存在しない不足行があるので以下のような追出し処理を行う。
【００１４】
各段落の最終行の空白部分の長さと一行中に最低限必要な文字列長、すなわち、追出し処理を行った場合に次の行の文字数がある文字数未満になることを避けるための設定値との合計である空け調整量と、文字間隔を空ける際の制限値である空け調整可能量に基づく空け調整許容量を求める。空け調整許容量は、その段落の文字列全体で広げることのできる文字間隔量の最大値を示している。そして、空け調整量と空け調整許容量との比である空け調整比を求める。この空け調整比は、各段落の最終行を次の行に追出したときに各文字間隔が空く割合を示し、これが大きいほど文字間隔が空くことになる。そして、各段落の空け調整比のうち、最小の空け調整比をもつ段落について、その空け調整量を当該段落の各文字に振り分けて、各文字を空け配置することにより、１行分の不足行を配置エリア内から無くす。このように最小の空け調整比をもつ段落を対象にして、新たな総行数と配置エリア行数とが一致するまで、すなわち、文字列が配置エリア内に不足行が無くなるまで前記追出し処理を繰り返し行う。
【００１５】
請求項２に記載の発明方法は、詰め調整可能量を各文字の仮想ボディと字面の間隔量に基づいて設定する。この各文字の仮想ボディと字面との間隔量は、文字サイズや文字の種類によって異なるので、この間隔量に基づいて詰め調整可能量を設定することにより、文字サイズや文字の種類に応じて文字間隔を視覚的に体裁よく調整できる。また、空け調整可能量は、各文字の字面または仮想ボディに付加設定される値に基づいて設定する。この字面または仮想ボディの大きさは、文字サイズや文字の種類に応じて異なるので、これに値を付加設定することにより、文字サイズや文字の種類に応じて文字間隔を視覚的に体裁よく調整できる。
【００１６】
請求項３に記載の発明方法は、まず、配置エリアの対角２頂点位置により領域を指定する。次いで、文字サイズと配置エリア行数と行送り量、または文字サイズと配置エリア行数と行間量の３つの指示要素の中から２つの指示要素を指示することによって、配置エリアが確定され、前述と同様に文字列が配置される。
【００１７】
請求項４に記載の発明装置の作用は次のとおりである。
まず、組版情報入力部から配置エリアに関する組版情報が入力され、この組版情報は組版情報記憶部に格納される。さらに、一行中に最低限必要な文字列長（以下、最短文字列長とする）が最短文字列長入力部から入力されて最短文字列長記憶部に格納される。また、文字間隔を空ける際の制限値である空け調整可能量が空け調整可能量入力部から入力されて空け調整可能量記憶部に格納される。
【００１８】
そして行演算処理部は、文字列情報記憶部の文字列データと、この文字列データの各文字コードに応じた文字フォントテーブル中の文字パラメータと、組版情報記憶部の組版情報に基づいて、各段落の文字列長を算出する。さらにこの各段落毎の文字列長と組版情報に基づいて各段落の行数を算出する。そして、前記各段落の行数の総和（以下、総行数とする）と、組版情報の配置エリア行数とを比較する。
【００１９】
この行演算処理部の比較結果に応じて配置調整部は、以下のように処理を行う。
まず、総行数が配置エリア行数よりも大きい場合は、各段落の最終行の文字列長を示す詰め調整量と、各段落の各文字の詰め調整可能量の総和である詰め調整許容量、すなわち、その段落の文字列全体で詰めることのできる文字間隔量の最大値を求め、各段落毎に前記詰め調整量と前記詰め調整許容量との比である詰め調整比を求める。この各詰め調整比は、各段落の最終行を前の行に追込んだときに各文字間隔が詰まる割合を示し、詰め調整比が大きいほど文字間隔が詰まることになる。そして、各段落の詰め調整比のうち、最小の詰め調整比をもつ段落について、その詰め調整量を当該段落の各文字に振り分けて、各文字間隔を詰めることにより、１行分の余剰行を配置エリア内に収める。このように全ての詰め調整比のうち最小の詰め調整比をもつ段落を対象にして追込み処理を、新たな総行数と配置エリア行数とが一致するまで、すなわち、入力文字列が配置エリア内に余剰が無くなるまで前記追込み処理を繰り返し行う。
【００２０】
また、総行数が配置エリア行数よりも小さい場合は、各段落の最終行の空白部分の長さと前記最短文字列長、すなわち、追出し処理を行った場合に次の行の文字数がある文字数未満になることを避けるための設定値との合計である空け調整量と、前記空け調整可能量に基づく空け調整許容量を求める。空け調整許容量は、その段落の文字列全体で広げることのできる文字間隔量の最大値を示している。そして、空け調整量と空け調整許容量との比である空け調整比を求める。この空け調整比は、各段落の最終行を次の行に追出したときに各文字間隔が空く割合を示し、これが大きいほど文字間隔が空くことになる。そして、各段落の空け調整比のうち、最小の空け調整比をもつ段落について、その空け調整量を当該段落の各文字に振り分けて、各文字を空け配置することにより１行分の不足行を配置エリア内から無くす。このように最小の空け調整比をもつ段落を対象にして追出し処理を、新たな総行数と配置エリア行数とが一致するまで、すなわち、入力文字列が配置エリア内に不足行が無くなるまで前記追出し処理を繰り返し行う。
【００２１】
このように総行数と配置エリア行数とを行演算処理部が比較し、この比較結果に基づいて配置調整部が前記追込み／追出し処理を行うので、入力文字列が配置エリア内に体裁良く収まるように自動的に配置され、この調整結果は出力部や表示部に出力／表示される。
【００２２】
【実施例】
以下、図面を参照して本発明の一実施例を説明する。
図１は、本発明の文字組版方法を使用する電子組版編集装置の概略構成を示すブロック図である。
本発明方法を実行する演算制御部１は、図示しないプログラム実行用のＣＰＵ、プログラム格納用のＲＯＭや演算等に使用されるＲＡＭ等で構成される。文字列入力部２は、ワードプロセッサ等で作成された文字列データファイル（フォント名，文字コード等）を格納した媒体等から文字列データを取り込んで文字列情報格納部３に格納し、演算制御部１は、この格納された文字列データを参照する。組版情報入力部４は、文字の組版に関する情報（＝組版情報：例えば、所定の文字列が配置される配置エリアの情報）を入力して組版情報記憶部５に格納する。この組版情報入力部４は、配置エリア等の座標等や形状を指示できるマウスやタブレット等のポインティングデバイスからなる。組版情報記憶部５に格納された組版情報は、演算制御部１によって参照される。
【００２３】
演算制御部１は、文字列情報記憶部３に格納された所定の文字列の文字列データの各文字コードに対応する文字パラメータを文字フォントテーブル１０から読み出して、各段落の文字列の全長を算出して文字列長記憶部２０に段落毎に格納する。さらに、各段落の文字列長を格納している文字列長記憶部２０と組版情報記憶部５の組版情報とを参照して各段落の行数を算出して行数記憶部２２に格納する。また、組版情報記憶部５に格納された組版情報の配置エリアに関する情報を参照し、配置エリア内に配置することのできる行数（配置エリア行数）を算出してこれを配置エリア行数記憶部２１に格納する。また、後述する追込み／追出し処理によって調整した文字間隔量を既調整量記憶部２３に格納する。
【００２４】
演算制御部１は、文字列情報記憶部３に格納された文字列データと組版情報記憶部５の組版情報を参照して、文字列データにより各文字の文字幅等の文字パラメータを文字フォントテーブル１０から読み出して各文字が配置される位置を算出して文字位置記憶部１１に格納する。また、配置エリアの行頭位置と行末位置をそれぞれ行頭位置記憶部１２と行末位置記憶部１３に格納する。
【００２５】
なお、演算制御部１と、文字位置記憶部１１と、行頭位置記憶部１２と、行末位置記憶部１３とは、配置調整部１５を構成している。
【００２６】
最短文字列長入力部６からは改行コードを含む１行中（段落の最終行）に最低限必要な文字列長、例えば文字列「す。」の２文字分や「いる。」の３文字分に相当する文字列長が予め入力され、最短文字列長記憶部７に格納される。空け調整可能量入力部８からは文字間隔を空ける際の制限値である空け調整可能量が入力され、空け調整可能量記憶部９に格納される。最短文字列長入力部６および空け調整可能量入力部８は、キーボード等の入力装置からなる。
【００２７】
なお、演算制御部１と、最短文字列長記憶部７と、空け調整可能量記憶部９と、文字列長記憶部２０と、配置エリア行数記憶部２１と、行数記憶部２２と、既調整量記憶部２３とは、行演算処理部２５を構成している。
【００２８】
表示部３０は、ＣＲＴなどであり、文字列情報記憶部３と組版情報記憶部５および文字位置記憶部１１に基づく入力文字列の組版結果が演算制御部１によって表示される。また出力部３１は、プリンタ等の装置であり、同様の組版結果が演算制御部１によって出力される。
【００２９】
まず、説明の理解を容易にするために、文字の構成要素と配置エリアについて図２を参照して説明しておく。
【００３０】
＜文字の定義＞
図２（ａ）は、文字「し」を表し、文字の字体形状は、文字の最小配置単位である仮想ボディＩＢに収められ、前記仮想ボディＩＢの横方向の長さを文字幅ＣＷ  とし、縦方向の長さを文字高さＣＨ  とする。一般的に和文においては、文字幅ＣＷ  と文字高さＣＨ  とは同じ値で構成され、以下の実施例では、各々、文字サイズＳに相当する（欧文においては、文字幅ＣＷ  と文字高さＣＨ  とは文字によって異なる）ものとして記す。
前記仮想ボディＩＢの内方には、その端辺から適宜の間隔をおいて文字の字体形状を示す字面Ｆが配置され、この字面は、点の集まりからなるドットデータや数学的に形状を表すベクトルデータにより構成される。前記字面Ｆの最大外形を囲うような矩形状の枠を、バウンディングボックスＢＢとし、前記バウンディングボックスＢＢの横方向の長さを字面幅Ｗとし、縦方向の長さを字面高さＨとする。
【００３１】
前記仮想ボディＩＢ内に配置されている字面Ｆの字面幅Ｗと仮想ボディＩＢの文字幅ＣＷ  との前後の差を、それぞれ間隔ａおよび間隔ｂとし、字面高さＨと文字高さＣＨ  との上下の差を、それぞれ間隔ｃおよび間隔ｄとする。これらの間隔は仮想ボディＩＢ内に収められる字面Ｆの大きさや形状によって、すなわち、文字毎に異なる。なお、間隔ａ，ｂは後述する「横組み」の場合の詰め調整可能量に関連し、間隔ｃ，ｄは「縦組み」の場合の詰め調整可能量に関連する。また、和文において段落の先頭に置かれる全角の空白文字は、その間隔ａ〜ｄが「０」に設定されているものとする。すなわち、この全角の空白文字の詰め調整可能量は「０」となる。
【００３２】
また、仮想ボディＩＢから外方に設定される値である間隔ｅ〜間隔ｈは、後述する空け調整可能量に関連する間隔量である。間隔ｅおよび間隔ｆは、「横組み」の場合の空け調整可能量に関連し、間隔ｇおよび間隔ｈは、「縦組み」の場合の空け調整可能量に関連する。なお、間隔ｅ〜間隔ｈは、仮想ボディＩＢから外方でなく、字面Ｆを囲むバウンディングボックスＢＢから外方に設定するようにしてもよい。
【００３３】
また、上記の文字をユーザー空間の所望の座標に配置し、組版する際に、前記座標に配置するための基準となる位置が文字上に適宜に設定されるが、ここでは、仮想ボディＩＢの左下をその基準点ＣＰとする。
【００３４】
＜文字列の配置エリアについて＞
図２（ｂ）は、文字組版において所定の文字列を配置する領域の一例を配置エリアＡとして示している。この配置エリアＡは、行頭を示すヘッドラインＨと行末を示すターゲットラインＴ、配置される文字サイズ、第１文字Ｃ１  の位置（ＨＰ）、配置エリア行数、および行送り量ｌａを指示することによって決定され、その内部に斜線で示される領域ｌ１  〜ｌ３  は、文字が配置されるべき行を示している。
なお、前述のヘッドラインＨは、オペレータの配置エリアの指定に添うものであるが、第１文字Ｃ１  の指定により決まるものでもある。
【００３５】
この斜線内には、第１文字Ｃ１  の指定位置（第１文字Ｃ１  の位置）ＨＰと指定文字サイズに基づいて、その基準点が位置ＣＰ１  になるように配置され、位置ＣＰ１  から距離Ｒ１  （送り量Ｒ１  ）だけ離れた位置に第２文字Ｃ２  が配置される。文字の基準点ＣＰがターゲットラインＴを越えて配置される場合には、その文字を配置する前に復帰改行され、次行の先頭にその文字が配置される。また、文字コードとして復帰改行を示す改行コード「ＣＲ」が位置する場合は、ターゲットラインＴを越える前においても復帰改行される。通常、この「ＣＲ」の次の文字コードから次の段落となる。また、ヘッドラインＨとターゲットラインＴとの間隔、すなわち、配置エリアＡのＸ方向の長さを配置行長ＣＬとし、Ｙ方向の長さをＬＹ  とする。
【００３６】
なお、行送り量ｌａの指定は、行間量ｌｂによって指定するようにしてもよい。この場合は、指定文字サイズ（文字高さＣＨ  ）とこの行間量ｌｂとにより行送り量が決まる。
【００３７】
上記のヘッドラインＨ，ターゲットラインＴ，文字サイズＳ（和文の場合、文字高さＣＨ  または文字幅ＣＷ  に相当する），行送り量ｌａは組版情報として、オペレータやデザイナー等によって組版情報入力部４を介して入力される。
【００３８】
＜処理手順＞
次に、図３のフローチャートを参照して処理手順を説明する。なお、最短文字列長と空け調整可能量とは、予め入力されてそれぞれ最短文字列長記憶部７および空け調整可能量記憶部９に格納されているものとする。また、本実施例では文字の配列方向を「横」、すなわち、「横組み」を例にとって説明する。
【００３９】
ステップＳ１では、オペレータが組版情報入力部４から組版情報を入力する。ここでは、図４に示すような配置エリアＡの情報が入力されたとし、文字サイズＳとして「２０」ポイント、行送り量ｌａとして〔文字サイズのポイント数に換算して〕「４０」ポイントが入力されて組版情報記憶部５に格納されているとする。また、ヘッドラインＨとターゲットラインＴの位置関係から、配置エリアＡの配置行長ＣＬとＹ方向の長さＬＹ  は文字サイズＳと同じ単位のポイント数に換算してそれぞれ「３００」，「２６０」ポイントであったとする。
【００４０】
この組版情報から配置エリアＡの各行ｌ１  〜ｌ７  の行頭位置ｌｓ１  〜ｌｓ７  と行末位置ｌｅ１  〜ｌｅ７  は、のｌ１  〜ｌ７  の全ての行を図５（ａ）の模式図に示すように一列に連ね、その中での位置として文字サイズＳと同じ単位のポイント数に換算して求めると、第１行目ｌ１  の行頭位置ｌｓ１  ＝０，行末位置ｌｅ１  ＝３００、第２行目ｌ２  の行頭位置ｌｓ２  （＝ｌｅ１  ）＝３００，行末位置ｌｅ２  ＝６００、………第７行目ｌ７  の行頭位置ｌｓ７  （＝ｌｅ６  ）＝１８００，行末位置ｌｅ７  ＝２１００となり、それぞれ行頭位置記憶部１２と行末位置記憶部１３に格納される。
【００４１】
ステップＳ２では、オペレータの所望する文字列データファイルが文字列入力部２を介して入力され、この文字列データファイルの文字列データは文字列情報記憶部３に格納される。この格納された文字列データの模式図の一例を図６に示す。この文字列データは、ワードプロセッサ等で作成されたときの情報からなり、作成時に指定された明朝体等の書体を示すフォント名、縦や横の文字が配列されていく方向を指定する配列方向、各文字の文字コード群を含む。この文字コード群は、第１文字Ｃ１  の文字コードから復帰改行を示す改行コード「ＣＲ」までに含まれる第ｉ文字Ｃｉ  の文字コードで構成される第１段落Ｄ１  、第１文字Ｃ１  の文字コードから復帰改行を示す改行コード「ＣＲ」までに含まれる第ｉ文字Ｃｉ  の文字コードで構成される第２段落Ｄ２  ，………から構成されている。
このような文字列データによって表される所定の文字列Ｉを図４に示す。所定の文字列Ｉは、文字列Ｓ１  ，Ｓ２  ，Ｓ３  の合計３３文字からなる第１段落Ｄ１  と、文字列Ｓ１  ，Ｓ２  の合計２８文字からなる第２段落Ｄ２  と、文字列Ｓ１  ，Ｓ２  ，Ｓ３  ，Ｓ４  の合計５０文字からなる第３段落Ｄ３  の３つの段落から構成されている。
【００４２】
ステップＳ３では、文字列情報記憶部３の文字列データと組版情報記憶部５の文字サイズおよび文字フォントテーブル１０を参照して、「通常配置」での所定の文字列の各文字位置（各文字の基準点ＣＰ）を文字位置記憶部１１に記憶する。本実施例でいうところの「通常配置」は、各文字を配置して行くときの送り量を文字幅ＣＷ  とする、すなわち、隣接する文字の仮想ボディＩＢ同士が接する、いわゆる「ベタ組み」とする。文字幅ＣＷ  は、文字フォントテーブル１０（図７参照）に欧文／和文さらにフォント名毎にファイリングされて格納されている文字コードに対応した文字パラメータ（間隔ａ，ｂ，ｃ，ｄおよび字面幅Ｗ，字面高さＨ）のうち、間隔ａと間隔ｂと字面幅Ｗの和によって求められる。
さらに、既に調整した（後述する）文字間隔量を示す既調整量記憶部２３に初期値を設定する。本実施例では、通常配置を「ベタ組み」として扱っているので、各段落毎に初期値「０」を設定する。
【００４３】
具体的には、演算制御部１が文字列情報記憶部３の文字列データを参照し、まず、第１段落Ｄ１  の第１番目の文字Ｃ１  の文字コードに対応する文字の文字位置ＣＰ１  ＝０、第２番目の文字Ｃ２  についてはＣＰ２  ＝２０を、以下同様にして最後の第３３番目の文字Ｃ３３の文字位置ＣＰ３３＝６４０を文字位置記憶部１１に格納する。そしてその文末の改行コード「ＣＲ」により、次の段落Ｄ２  についても同様に各文字の位置が求められ、格納される。第２段落Ｄ２  の第１番目の文字Ｃ１  の文字位置ＣＰ１  は、行頭位置記憶部１２からＣＰ１  ＝９００を抽出し、以下同様にＣＰ２  ，ＣＰ３  を求めて文字位置記憶部１１に順次に格納する。このようにして、第３段落Ｄ３  の最終の文字Ｃ５０までの各文字について文字位置を格納する。このときの文字位置記憶部１１の模式図を図５（ｂ）に示す。
【００４４】
なお、上記のように各文字位置を記憶する際に、各段落の区切りを示す改行コード「ＣＲ」の位置が、各段落Ｄ１  〜Ｄ３  の最終文字位置ＬＤ１  〜ＬＤ３  として文字位置記憶部１１に格納される。
【００４５】
ステップＳ４では、ステップＳ１で入力された配置エリアＡに文字列を収めることができる行数（配置エリア行数）を算出する。これは、組版情報記憶部５に格納されている組版情報のうち、ヘッドラインＨとターゲットラインＴとの位置関係から求まる配置エリアＡのＹ方向（図２（ｂ）参照）の長さＬＹ  「２６０」ポイントと、文字サイズＳ「２０」ポイントと、行送り量ｌａ「４０」ポイントとから次式のように算出される配置行数Ｆ’を、その小数部分を切り捨てる整数化を行うことにより求められる。本実施例では、
0003594336.tif 000002
したがって、配置エリア行数Ｆは「７」となる。
【００４６】
ステップＳ５では、配置エリアと所定の文字列を表示部３０に一旦表示する。具体的には、演算制御部１が組版情報記憶部５と文字列情報記憶部３および文字位置記憶部１１を参照して、文字列情報記憶部３の文字コードに応じた文字データを文字フォントテーブル１０から読み出して、その文字データを文字位置記憶部１１の位置情報に応じた表示部３０上の所定位置に表示する。このときの表示部３０の様子は、先の図４のようになり、この例では配置エリアＡから所定の文字列Ｉの第３段落の文字列Ｓ３  とＳ４  がはみ出すことがわかる。
【００４７】
ステップＳ６では、各段落毎の全文字列長Ｌ１  〜Ｌ３  を算出し、これを文字列長記憶部２０に格納する。この各段落の文字列長Ｌｎ  は、文字位置記憶部１１の各段落の最終文字位置ＬＤ１  〜ＬＤ３  から対応する各段落の第１文字の位置ＣＰ１  を差し引いて以下のように求められ、各文字列長Ｌｎは文字列長記憶部２０に格納される。
0003594336.tif 000003
【００４８】
ステップＳ７では、各段落の配置エリアＡの配置行長ＣＬでの文字列の行数Ｐｎを算出し、これを行数記憶部２２に格納する。この各段落の行数Ｐｎは、文字列長記憶部２０に格納されている各段落の文字列長Ｌｎ  を配置エリアＡの配置行長ＣＬで除算し、その小数部を切り上げる整数化を行うことにより算出される。各段落の行数Ｐｎは以下のようになり、各行数は行数記憶部２２に格納される。
第１段落Ｄ１  の行数Ｐ１  ＝Ｌ１  ／ＣＬ＝６６０／３００＝２．２  →  ＝３第２段落Ｄ２  の行数Ｐ２  ＝Ｌ２  ／ＣＬ＝５６０／３００＝１．８７  →  ＝２第３段落Ｄ３  の行数Ｐ３  ＝Ｌ３  ／ＣＬ＝１０００／３００＝３．３３  →  ＝４
【００４９】
ステップＳ８では、行数記憶部２２に格納されている各段落の行数Ｐｎ  の総和ΣＰｎ  （総行数）と前記の配置エリア行数記憶部２１に格納されている配置エリア行数Ｆとを比較して処理を分岐する。この比較の結果、総行数ΣＰｎ  と配置エリア行数Ｆとが等しい場合は、指定された配置エリアＡに所定の文字列Ｉが行数の過不足なく配置されているので処理を終了する。
しかし総行数ΣＰｎ  が配置エリア行数Ｆより大きい場合には、配置エリアＡから所定の文字列Ｉの一部の文字列がはみ出す余剰行があるのでステップＳ９の追込み処理を実行する。
また、これとは反対に総行数ΣＰｎ  が配置エリア行数Ｆより小さい場合には、配置エリアＡ内に何ら文字列が存在しない不足行が存在するのでステップＳ１０の追出し処理を実行する。
【００５０】
現在、行数記憶部２２に格納されている各段落の行数Ｐ１  〜Ｐ３  の総和ΣＰｎ  （総行数）は、「９」行であり、配置エリア行数記憶部２１に格納されている配置エリア行数Ｆは「７」行であるので、ステップＳ９へ分岐して追い込み処理を行う。
【００５１】
図８のフローチャートを参照して追込み処理について説明する。
【００５２】
＜＜追込み処理＞＞
ステップＴ１では、各段落の詰め調整量Ｊｎを算出する。この詰め調整量Ｊｎは、各段落の最終行の文字列長を表す。
各段落の詰め調整量Ｊｎは、文字列長記憶部２０に格納されている各段落の文字列長Ｌｎと、行数記憶部２２に格納されている各段落の行数Ｐｎと、配置行長ＣＬとによって算出することができる。各段落の詰め調整量Ｊｎは、以下のようになる（図５のＪ１  〜Ｊ３  を参照）。
0003594336.tif 000004
【００５３】
ステップＴ２では、各段落の詰め調整許容量Ｇｎを算出する。
この詰め調整許容量Ｇｎは、各段落の各文字が有する詰め調整可能量の総和であり、各段落の文字列全体で詰めることのできる最大値に相当する。各文字の詰め調整可能量は、図２（ａ）に示した間隔ａと間隔ｂ（「縦組み」の場合は間隔ｃ，ｄ）とに基づく量あるいは対応して設定される量である。具体的には、第１文字Ｃ１  の調整可能量はその間隔ａであり、第２文字Ｃ２  の調整可能量は第２文字Ｃ２  の間隔ａと第１文字Ｃ１  の間隔ｂとの和である。但し、既に調整されている詰め調整量（この点は後述する）が既調整量記憶部２３に格納されているので、この既調整量を各段落の調整許容量から差し引く。ここでは各段落の既調整量は、ステップＳ３で初期設定された「０」のままであるので、各段落の詰め調整許容量Ｇｎは、各文字の詰め調整可能量の総和に等しくなる。
ここでは、各段落の詰め調整許容量Ｇｎが以下のようになっているとして説明する。
第１段落Ｄ１  の詰め調整許容量Ｇ１  ＝６８
第２段落Ｄ２  の詰め調整許容量Ｇ２  ＝５６
第３段落Ｄ３  の詰め調整許容量Ｇ３  ＝１０８
【００５４】
ステップＴ３では、各段落の詰め調整比Ａｎを算出する。
この詰め調整比Ａｎは、各段落の詰め調整量Ｊｎと対応する段落の詰め調整許容量Ｇｎとの比である。この詰め調整比Ａｎは、各段落の最終行を前の行に追込んだときに各文字間隔が詰まる割合を示し、詰め調整比が大きいほど文字間隔が詰まることになる。各段落の詰め調整比Ａｎは、以下のようになる。
0003594336.tif 000005
【００５５】
ステップＴ４では、ステップＴ３で算出した各段落の詰め調整比Ａｎのうち、最小の詰め調整比Ａｍｉｎ  を求める。すなわち、各段落の最終行を前の行に追い込むことによって各文字間隔に与える影響が少ない段落を抽出する。ここでは、第１段落Ｄ１  の詰め調整比Ａ１  が最小の詰め調整比Ａｍｉｎ  となる。
【００５６】
なお、最小の詰め調整比が「１」を越える場合や調整許容量が「０」等、所定値以下の実質調整不能の場合は、その詰め調整許容量を各文字に割り振ってもその詰め調整量分を調整することができないので、表示部３０に「指定の配置エリア内に所定の文字列を配置することができません！！配置エリアを変更して下さい！！」等の警告を表示し、ステップＳ１の組版情報の入力に戻るようにすることが好ましい。
【００５７】
また、詰め調整可能量については、カーニング処理用の間隔ａ’，ｂ’を上記の間隔ａ，ｂとは別に設定しておき、間隔ａ，ｂでも追込み処理ができない場合には、カーニング処理用の間隔ａ’，ｂ’で更に詰めて追込み処理を完成させるというように、予め詰め調整可能量を段階的に設定しておき、これらを適宜使用して処理するようにしてもよい。
【００５８】
ステップＴ５では、最小の詰め調整比Ａｍｉｎ  をもつ段落について、その詰め調整量Ｊｎを、当該段落の各文字に振り分けて詰め配置する。実際には、詰め調整量を各文字に振り分けて、その値だけ文字位置記憶部１１の各文字の位置を更新する。但し、通常、和文の場合は段落の先頭には全角の空白文字が配置されるが、この文字は上述したように文字フォントテーブル１０に間隔ａ〜間隔ｄが「０」として記憶されているで、この文字には詰め調整量が割り当てられない。
次に、第１段落Ｄ１  の詰め調整量Ｊ１  は「６０」であるので、これを各文字列Ｓ１  〜Ｓ３  の構成文字数に応じて割り振る。
【００５９】
この割り振りの仕方は、例えば、以下の２つの方法が挙げられる。
【００６０】
第１の方法は、文字列を構成する各文字に詰め調整量を均等に割り振って、各文字間を同じ量だけ調整するものである。具体的には、詰め調整量Ｊ１  「６０」を第１段落Ｄ１  の全文字間の数（文字間数）で除してこれを均等に各文字間に割り振る。文字間数は、当該段落の文字数から当該段落の行数を差し引くことで求められる（３３−３＝３０）。したがって、各文字間に割り振る詰め調整量は、詰め調整量を文字間数で除した値（６０／３０＝２）となる。ただし、この各文字間に割り振る詰め調整量は、隣接する文字同士の詰め調整可能量の和以下であることが必要である。
【００６１】
第２の方法は、文字の種類（漢字、平仮名、句読点）や、隣接文字の字面などを考慮し、各文字間隔が均等に見えるように調整するものである。具体的には、各文字の詰め調整可能量の割合に比例して詰め調整量を割り振る。
【００６２】
さらに、上記の二つの方法を組み合わせるようにしてもよい。例えば、まず第１の方法を行い、その結果、各文字に割り振る詰め調整量が、隣接する文字同士の詰め調整可能量の和よりも大きい場合には、第２の方法を行うようにする。
【００６３】
このように各段落の最終行を前の行に追い込んだときに各文字間隔が詰まる割合が小さいことを示す、詰め調整比が最小の段落について、その詰め調整量でもって各文字間隔を詰めるので他の段落の文字間隔とのバラツキの差異を抑えることができる。
【００６４】
ステップＴ６では、最小の詰め調整比Ａｍｉｎ  をもつ段落、すなわち、ステップＴ５において文字間隔を調整された段落について、その詰め調整量Ｊｎを既調整量記憶部２３に格納する。ここでは、既調整量記憶部２３に第１段落Ｄ１  の詰め調整量「６０」を格納する。
【００６５】
このステップＴ６の処理を終えると、追込み処理を終了し、図３のステップＳ１１へと分岐する。ステップＳ１１では、文字位置記憶部１１を参照して配置エリアと文字間隔が調整された所定の文字列を表示部３０に表示する。この段階では、第１段落Ｄ１  が上記の詰め調整により２行に収まって表示される。
【００６６】
ステップＳ６に戻る。ステップＳ６では、ここで再び各段落の文字列長Ｌｎを記憶する。すなわち、詰め処理後の文字位置記憶部１１の内容を参照して、各段落の文字列長を求めて文字列長記憶部２０に格納する。ここでは、図５（ｃ）に示す各文字位置から第１段落Ｄ１  の文字列長Ｌ１  として「６００」、第２段落Ｄ２  の文字列長Ｌ２  として「５６０」、第３段落Ｄ３  の文字列長Ｌ３  として「１０００」が格納される。
【００６７】
ステップＳ７では、上述したように各段落の文字列長Ｌｎに基づいて再び各段落の行数Ｐｎを算出する。各段落の行数Ｐｎは以下のようになり、各行数は行数記憶部２２に格納される。
0003594336.tif 000006
【００６８】
ステップＳ８では、所定の文字列の総行数ΣＰｎと配置エリア行数Ｆとを比較する。この結果、総行数ΣＰｎ＝８となるが、配置エリア行数Ｆ＝７であるので、再びステップＳ９で更に一行分の追込み処理を行う。
【００６９】
今回の処理も、前回と同様に同じ要領で行われるので、次のようになる。
0003594336.tif 000007
Ａ２  ＝４．６４Ａ３  ＝０．９３となり、段落Ｄ３  で１００ポイントの詰め調整をする。その結果、ステップＳ６では、図５（ｄ）のように、
Ｌ１  ＝６００
Ｌ２  ＝５６０
Ｌ３  ＝９００
ステップＳ７では、
Ｐ１  ＝２
Ｐ２  ＝２
Ｐ３  ＝３
となり、段落Ｄ３  の４行にわたっていたものが３行に収まって、ステップＳ８で総行数＝配置エリア行数＝７となるのでステップＳ１２で、配置調整された文字列の組版出力を行い一連の処理を終了する。
【００７０】
なお、一度、詰め調整量を行った段落については、次の処理のステップＴ２での詰め調整可能量を減らすべく、先の詰め調整量分を既調整量記憶部２３に記憶させておく。したがって、余剰行の文字数が少なく行長が長い場合は、詰め調整量がほぼ詰め調整可能量に割り振られ、その結果、換言すると調整可能量の残りが次の調整に到底使用できない程の特定値以下になるので、この既調整量記憶部２３およびそこへの格納処理は不要とし、その段落での以後の追込み処理を不要としてもよい。
【００７１】
次に、図３のステップＳ１において、図９に示すような上述の配置エリアＡと同じ組版情報が入力され、ステップＳ２において、同図に示すような文字列Ｓ１  〜Ｓ３  の合計３４文字からなる第１段落Ｄ１  と、文字列Ｓ１  ，Ｓ２  の合計２８文字からなる第２段落Ｄ２  と、文字列Ｓ１  ，Ｓ２  の合計２６文字からなる第３段落Ｄ３  の３つの段落を有する所定の文字列Ｉが入力されたとする。そして、上述したようにステップＳ３で所定の文字列の「通常配置」での文字位置を記憶し、既調整量記憶部２３に各段落毎に「０」を設定する。配置エリアＡに関する行頭位置記憶部１２と行末位置記憶部１３の模式図と、所定の文字列Ｉに関する文字位置記憶１の模式図を図１０（ａ）に示す。
【００７２】
ステップＳ４では、配置エリアＡが上記の追込み処理と同じなので上述したように配置行数Ｆが「８」となる。そして、ステップＳ５では、配置エリアＡと所定の文字列Ｉが表示部３０に表示される。このときの表示部３０の様子を図９の模式図に示す。このように配置エリアＡ内には、所定の文字列Ｉの文字列が存在しない行（第８行ｌ８  ）が存在することがわかる。
【００７３】
ステップＳ６では、上述したように各段落の文字列長Ｌ１  〜Ｌ３  を算出し、これを文字列長記憶部２０に格納する。各段落の文字列長Ｌｎ  は以下のようになる。
0003594336.tif 000008
【００７４】
ステップＳ７では、上述したように所定の文字列の各段落の行数Ｐｎを算出し、こを行数記憶部２２に格納する。各段落の行数Ｐｎは以下のようになる。
0003594336.tif 000009
【００７５】
ステップＳ８では、総行数ΣＰｎ  （＝３＋２＋２＝７）が配置エリア行数Ｆ（＝８）より小さいので、配置エリアＡ内に何ら文字列が存在しない不足行が存在すると判断してステップＳ１０の追出し処理を実行する。
【００７６】
図１１のフローチャートを参照して追出し処理について説明する。
【００７７】
＜＜追出し処理＞＞
ステップＵ１では、最短文字列長記憶部７に格納されている最短文字列長ＬＱ  を考慮して各段落の空け調整量Ｅｎを算出する。最短文字列長ＬＱ  は、前述したように最終行に最低限必要な文字列長であり、最短文字列長入力部６からオペレータによって予め入力されている。ここでは、最短文字列長ＬＱ  として本実施例での２文字分の長さに相当する「４０」ポイントが格納されているとして説明する。
【００７８】
各段落の空け調整量Ｅｎは、各段落の空白部分の長さに最短文字列長ＬＱ  を加えたものであり、文字列長記憶部２０に格納されている各段落の文字列長Ｌｎと、行数記憶部２２に格納されている各段落の行数Ｐｎと、配置行長ＣＬと、前記最短文字列長ＬＱ  とによって算出することができる。各段落の空け調整量Ｅｎは、以下のようになる（図１０のＥ１  〜Ｅ３  を参照）。
0003594336.tif 000010
【００７９】
ステップＵ２では、各段落の空け調整許容量Ｈｎを算出する。
この空け調整許容量Ｈｎは、文字間隔を空ける際の制限値である空け調整可能量に基づいて算出される。この空け調整可能量は、文字間隔を空け過ぎて体裁が悪くなることを防止するための制限値であり、これは予め空け調整可能量入力部８からオペレータによって入力され、空け調整可能量記憶部９に格納されている。そして、この空け調整可能量に文字間の数を乗じて空け調整許容量とする。この空け調整許容量は、その段落の文字列全体で広げることのできる文字間隔量の最大値を示している。但し、既に調整されている空け調整量が既調整量記憶部２３に格納されているので、この既調整量を各段落の空け調整許容量から差し引く。ここでは各段落の既調整量は、ステップＳ３で初期設定された「０」のままであるので、各段落の空け調整許容量Ｈｎは、各文字間の空け調整可能量の総和に等しくなる。
ここでは、各段落の空け調整許容量Ｈｎが以下のようになっているとして説明する。
第１段落Ｄ１  の空け調整許容量Ｈ１  ＝１３６
第２段落Ｄ２  の空け調整許容量Ｈ２  ＝１０８
第３段落Ｄ３  の空け調整許容量Ｈ３  ＝１０４
【００８０】
なお、上記の空け調整可能量は一般的に文字の組合せによって異なるので（例えば、和文と和文の場合や欧文と欧文の場合等）、文字の組合せ毎に空け調整可能量を設定しておくことが好ましい。
【００８１】
ステップＵ３では、各段落の空け調整比Ｂｎを算出する。
この空け調整比Ｂｎは、空け調整量Ｅｎと空け調整許容量Ｈｎとの比である。この空け調整比Ｂｎは、各段落の最終行を次の行に追い出したときに各文字間隔が空く割合を示し、これが大きいほど文字間隔が空くことになる。各段落の空け調整比Ｂｎは、以下のようになる。
0003594336.tif 000011
【００８２】
ステップＵ４では、ステップＵ３で算出した各段落の空け調整比Ｂｎのうち、最小の空け調整比Ｂｍｉｎ  を求める。すなわち、各段落の最終行を次の行に追い出すことによって各文字間隔に与える影響が少ない段落を抽出する。ここでは、第２段落Ｄ２  の詰め調整比Ｂ２  が最小の空け調整比Ｂｍｉｎ  となる。
【００８３】
なお、最小の空け調整比が「１」を越える場合は、その空け調整許容量を各文字に割り振ってもその空け調整量分を調整することができないので、表示・出力装置３０に「この所定の文字列は、指定の配置エリア内に配置することができません！！配置エリアを変更して下さい！！」等の警告を表示し、ステップＳ１の組版情報の入力に戻るようにすることが好ましい。
【００８４】
ステップＵ５では、最小の空け調整比Ｂｍｉｎ  をもつ段落について、その空け調整量Ｅｎを、当該段落の各文字に振り分けて空け配置する。実際には、空け調整量を各文字に振り分けて、その値だけ文字位置記憶部１１の各文字の位置を更新する。但し、段落の先頭文字である全角の空白文字には空け調整量が割り当てられない。
第２段落Ｄ２  の空け調整量Ｅ２  は「８０」であるので、これが各文字列Ｓ１  ，Ｓ２  の構成文字数に応じて割り振られる。ここでは、文字列Ｓ１  に「４０」、文字列Ｓ２  に「４０」の空け調整量が割り振られる。
【００８５】
この割り振りの仕方は、例えば、以下の２つの方法が挙げられる。
【００８６】
第１の方法は、文字列を構成する各文字に空け調整量を均等に割り振って、各文字間を同じ量だけ調整するものである。具体的には、空け調整量Ｅ２  「８０」を第２段落Ｄ２  の全文字間の数（文字間数）で除してこれを均等に各文字間に割り振る。文字間数は、当該段落の文字数から当該段落の行数を差し引くことで求められる（２８−２＝２６）。したがって、各文字間に割り振る空け調整量は、空け調整量を文字間数で除した値（８０／２６＝３．０８）となる。ただし、この各文字間に割り振る空け調整量は、隣接する文字同士の空け調整可能量の和以下であることが必要である。
【００８７】
第２の方法は、文字の種類（漢字、平仮名、句読点）や、隣接文字の字面などを考慮し、各文字間隔が均等に見えるように調整するもので、具体的には、各文字の空け調整可能量の割合に比例して空け調整量を割り振る。
【００８８】
さらに、上記の二つの方法を組み合わせるようにしてもよい。具体的には、まず第１の方法を行い、その結果、各文字に割り振る空け調整量が、隣接する文字同士の空け調整可能量の和よりも大きい場合には、第２の方法を行うようにする。
【００８９】
このように、各段落の最終行を次の行に追い出したときに各文字間隔が空く割合が小さいことを示す、空け調整比が最小の段落について、その空け調整量でもって各文字間隔を空けるので他の段落の文字間隔とのバラツキの差異を抑えることができる。
【００９０】
ステップＵ６では、最小の空け調整比Ｂｍｉｎ  をもつ段落、すなわち、ステップＵ５において文字間隔を調整された段落について、その空け調整量Ｅｎを既調整量記憶部２３に格納する。ここでは、既調整量記憶部２３の第２段落Ｄ２  に「８０」が格納される。
【００９１】
この処理は、前述の追出し処理における場合と同じく以前の追出し処理で空け調整許容量が残るような場合に備えて行うものであり、やはり必ずしも必要なものではない。
【００９２】
このステップＵ６の処理を終えると追出し処理を終了し、図３のステップＳ１１で文字間隔が調整された所定の文字列を表示部３０または・出力部３１に表示してステップＳ６へと戻る。そして再び各段落の文字列長Ｌｎを求めて記憶する。ここでは、図１０（ｂ）に示す各文字位置から第１段落Ｄ１  の文字列長Ｌ１  として「６８０」、第２段落Ｄ２  の文字列長Ｌ２  として「６４０」、第３段落Ｄ３  の文字列長Ｌ３  として「５２０」が文字列長記憶部２０に格納される。そしてステップＳ７では、再び各段落の行数Ｐｎを算出する。各段落の行数Ｐｎは以下のようになり、各行数は行数記憶部２２に格納される。
0003594336.tif 000012
【００９３】
ステップＳ８では、所定の文字列の総行数ΣＰｎと配置エリア行数Ｆとを比較する。この結果、総行数ΣＰｎは「８」、総行数Ｆも「８」であるのでステップＳ１２で、配置調整された文字列の組版出力を行い、一連の処理を終了する。
【００９４】
以上のように、ステップＳ８において所定の文字列の総行数と、配置エリア行数とを比較した結果に基づいて、処理の終了と、追込み処理と、追出し処理とに分岐するので、自動的に所定の文字列を配置エリア内に収めることができる。さらに、文字の仮想ボディと字面との間隔量は、文字サイズや文字の種類によって異なるので、この間隔量に基づいて詰め調整可能量を設定することによって文字サイズや文字の種類に応じて文字間隔を視覚的に体裁よく調整でき、結果、追込み処理をオペレータの主観でなく一律規則的に行うことができる。また、字面または仮想ボディは、文字サイズや文字の種類に応じて異なるので、これに値を付加設定して空け調整可能量とすることにより、文字サイズや文字の種類に応じて文字間隔を視覚的に体裁よく調整でき、結果、追出し処理をオペレータの主観でなく一律規則的に行うことができる。
【００９５】
次に、図１２および図１３を参照して、本発明方法による文字組版を行った例について説明する。
図１２（ａ）は追込み処理前を示し、図１２（ｂ）は追込み処理後を示している。図１２（ａ）および（ｂ）は、それぞれ図３のフローチャートにおけるステップＳ５とステップＳ１１での状態に相当する。処理前においては、第３段落の最終行が配置エリアＡからはみ出しているが、処理後には第１段落の最終行を前行に追い込むことにより段落間の文字間隔のバラツキを抑えつつ、所定の文字列が配エリアＡに体裁良く収まっていることが分かる。
【００９６】
図１３（ａ）は追出し処理前を示し、図１３（ｂ）は追出し処理後を示している。処理前においては、第３段落の最終行の下に不足行があるが、処理後には第１段落の文字間隔を空けることにより段落間の文字間隔のバラツキを抑えつつ、所定の文字列が配置エリアＡに体裁良く収まっていることが分かる。なお、この例では、最短文字列長として３文字分（「いる。」）の長さが設定されている。
【００９７】
なお、この追込み／追出し処理前の状態は、文字列の禁則処理等が行われているので、既に文字間隔がある程度調整されている。したがって、禁則処理等で調整を行った時点において、調整を行った段落の調整量を既調整量記憶部２３に格納するようにする。具体的には、図３のフローチャート中、ステップＳ３において文字位置を調整して文字位置記憶部１０に格納し、その調整量を各段落毎に既調整量記憶部２３に格納する。すなわち、本実施例においては通常配置を「ベタ組み」として扱ったが（図３のステップＳ３）、これに限らず行頭禁則／行末禁則処理等により文字間隔調整を行った状態を通常配置とし、それ以降において追込み／追出し処理を行うようにしてもよい。
【００９８】
ここで、配置エリアの指定方法について述べる。
配置エリアの指定は多分に操作上の都合によるものであり種々の方法があるが、本発明の目的機能は配置エリア内に所定の文字列を収めることであり、したがって、必要なことはその指定により、その配置エリア内の文字配置の各種要素が決定されることである。一方、配置エリアを指定し、それによって文字配置の要素が決まるためには、操作勝手からすると通常は、
▲１▼配置エリアの対角２頂点位置、または第１文字位置とエリア最終文字位置
▲２▼配置エリアの上下幅、または行数
配置エリアの左右幅、または一行内文字数
▲３▼文字サイズ
▲４▼行送り量、または行間量
▲５▼行数、
等を指示要素として指定することとなる。
次の３つの方法は、これらを適宜組み合わせて指定する例で、前述の実施例と異なるものである。いずれも先ず配置エリアの対角２頂点位置を指定する。これにより配置エリアの左右幅Ｘ、上下幅Ｙが決定し、さらに、
１）文字サイズＳと行間量ｌｂを指定する場合、
各行の文字数Ｎ＝Ｘ／Ｓ
配置エリア内行数Ｇ＝（（Ｙ−Ｓ）／（Ｓ＋ｌｂ））の整数＋１
２）配置エリア内行数Ｇと文字サイズＳを指定する場合、
行間量ｌｂ＝（Ｙ−Ｇ×Ｓ）／（Ｇ−１）
行送り量ｌａ＝Ｓ＋ｌｂ
３）配置エリア内行数Ｇと行間量ｌｂを指定する場合、
文字サイズＳ＝（Ｙ−（Ｇ−１）×ｌｂ）／Ｇ
行送り量ｌａ＝Ｓ＋ｌｂ
があり、いずれの方法でもオペレータの都合で適宜指定することにより追込み、追出しの処理が可能となる。なお、行間量と行送り量は、それぞれ文字サイズとの演算により換算できるものであり、指示要素としても同等のものである。
【００９９】
なお、本実施例では矩形状の配置エリアを対象にして説明を行ったが、本発明はこれに限定されることなく任意の形状の配置エリアにも適用することが可能である。例えば、台形状、円形状等の種々の配置エリア形状にも適用することができ、この場合は行頭位置記憶部および行末位置記憶部に格納されている配置エリアの形状に基づく位置情報を用いて文字列長の算出等の処理を行えばよい。
【０１００】
また、本実施例では１行分の追出し／追い込み処理を行うごとにステップＳ１１で組版された結果を表示確認しているが、２行以上が配置エリアに対して過不足している場合は、この表示を省略して最終的に配置エリアに収まった状態を表示確認するようにしてもよい。
【０１０１】
【発明の効果】
以上の説明から明らかなように、請求項１に記載の発明方法によれば、追込み／追出し処理において、複数の段落の中から文字間隔を調整する割合が小さい段落を選択し、その段落についてだけ追込み／追出し処理を行うので、段落間の文字間隔のバラツキの差異を抑えることができる。さらに、各段落の行数の総和である総行数と、配置エリア内に配置することができる行数を示す配置エリア行数との比較結果により、追込み処理と追出し処理とに分岐するので、自動的に所定の文字列を配置エリア内に収めることができる。結果、段落間の文字間隔をバラツキを抑えつつ、複数の段落からなる所定の文字列を指定された配置エリアに自動的に体裁良く配置することができる。
【０１０２】
請求項２に記載の発明方法によれば、各文字の仮想ボディと字面との間隔量は、文字サイズや文字の種類によって異なるので、この間隔量に基づいて詰め調整可能量を設定することにより、文字サイズや文字の種類に応じて文字間隔を視覚的に体裁よく調整でき、結果、追込み処理をオペレータの主観でなく一律規則的に行うことができる。また、字面または仮想ボディは、文字サイズや文字の種類に応じて異なるので、これに値を付加設定して空け調整可能量とすることにより、文字サイズや文字の種類に応じて文字間隔を視覚的に体裁よく調整でき、結果、追出し処理をオペレータの主観でなく一律規則的に行うことができる。
【０１０３】
請求項３に記載の発明方法によれば、対角２頂点位置により領域を指定し、さらに、文字サイズ、配置エリア行数、行送り量の３つ、または文字サイズと配置エリア行数と行間量の３つの中の２つの指示要素を指示するので、他の配置エリアの文字列や絵柄、図柄との相対位置を認識した配置エリアの指定が容易にできる。
【０１０４】
請求項４に記載の発明装置によれば、請求項１ないし請求項３の方法を好適に実施でき、複数の段落間の文字列の文字間隔を、そのバラツキの差異を抑えつつ調整して、所定の文字列を指定した配置エリアに自動的に体裁良く配置することができる。
【図面の簡単な説明】
【図１】実施例に係る電子組版編集装置の概略構成を示すブロック図である。
【図２】文字構成要素と配置エリアの説明に供する図である。
【図３】文字組版処理を示すフローチャートである。
【図４】配置エリアと所定の文字列との関係を示す図である。
【図５】行頭位置記憶部と行末位置記憶部および文字位置記憶部の内容を示す模式図である。
【図６】文字列情報記憶部の内容を示す模式図である。
【図７】文字フォントテーブルの内容を示す模式図である。
【図８】追込み処理のフローチャートである。
【図９】配置エリアと所定の文字列との関係を示す図である。
【図１０】行頭位置記憶部と行末位置記憶部および文字位置記憶部の内容を示す模式図である。
【図１１】追出し処理のフローチャートである。
【図１２】追込み処理を行った例を示す図である。
【図１３】追出し処理を行った例を示す図である。
【符号の説明】
１  …  演算制御部
２  …  文字列入力部
３  …  文字列情報記憶部
４  …  組版情報入力部
５  …  組版情報記憶部
６  …  最短文字列長入力部
７  …  最短文字列長記憶部
８  …  空け調整可能量入力部
９  …  空け調整可能量記憶部
１０  …  文字フォントテーブル
１１  …  文字位置記憶部
１２  …  行頭位置記憶部
１３  …  行末位置記憶部
１５  …  配置調整部
２０  …  文字列長記憶部
２１  …  配置エリア行数記憶部
２２  …  行数記憶部
２３  …  既調整量記憶部
２５  …  行演算処理部
【図１】
0003594336.tif 000013
【図２】
0003594336.tif 000014
【図３】
0003594336.tif 000015
【図４】
0003594336.tif 000016
【図５】
0003594336.tif 000017
【図６】
0003594336.tif 000018
【図７】
0003594336.tif 000019
【図８】
0003594336.tif 000020
【図９】
0003594336.tif 000021
【図１０】
0003594336.tif 000022
【図１１】
0003594336.tif 000023
【図１２】
0003594336.tif 000024
【図１３】
0003594336.tif 000025