(57)【特許請求の範囲】
【請求項１】
所定の文字列の文字間隔を調整して組版する文字組版編集装置において、
処理対象となる文字列の文字列データファイルを入力する文字列入力手段と、
前記文字列の文字サイズを指定する文字サイズ指定手段と、
前記文字列データファイルに含まれる各文字のフォントデータ群を格納しているフォント格納手段と、
少なくとも文字間調整によって得ようとするサンプル文字列群中の一つのサンプル文字列の文字列長と、前記文字列長を基準とした前記サンプル文字列群の文字列長の範囲や文字列長の調整ピッチを決定するための条件を含む調整条件を入力する調整条件入力手段と、
前記文字列入力手段と文字サイズ指定手段から入力された文字列情報を格納する文字列情報格納手段と、
前記調整条件入力手段から入力された調整条件を格納する調整条件格納手段と、
前記フォント格納手段、文字列情報格納手段、および調整条件格納手段の内容を参照することにより、ベタ組状態の前記入力文字列と、前記各サンプル文字列との差分文字列長を算出する差分文字列長算出手段と、
前記算出された各サンプル文字列ごとの差分文字列長を記憶する差分文字列長格納手段と、
前記ベタ組状態の入力文字列の各文字の詰め量の総和が、前記差分文字列長格納手段に格納された各差分文字列長となるように、各サンプル文字列ごとに各文字の詰め量を算出する詰め量算出処理手段と、
各サンプル文字列ごとに各文字の詰め量を格納する配置詰め量格納手段と、
前記配置詰め量格納手段を参照して各サンプル文字列の各文字を詰め配置するサンプル文字列作成手段と、
前記サンプル文字列作成手段によって作成されたサンプル文字列群を一括表示する表示手段と、
前記表示手段に表示されたサンプル文字列群の中から任意のサンプル文字列を選択指定するサンプル文字列選択手段と、
を備えたことを特徴とする文字組版編集装置。
【請求項２】
請求項１に記載の装置において、
前記詰め量算出処理手段は、（ａ）前記処理対象となる入力文字列中の隣接する２つの文字のうち、詰め調整の基準となる一方の文字（基準文字）と、詰め調整される他方の文字（対象文字）の各仮想ボディと各々の字面との間隔のうち、文字配列方向で隣同士に位置する２つの間隔の合計値と、前記対象文字の各詰め量との割合を詰め率（０〜１までの任意の数値）で表した関数（詰め調整関数）を各対象文字について算出する手段と、（ｂ）前記算出された各対象文字の詰め調整関数の総和（総詰め調整関数）を算出する手段と、（ｃ）前記総詰め調整関数と前記差分文字列長格納手段に格納された各サンプル文字列の差分文字列長とに基づき、各サンプル文字列ごとに共通の前記詰め率を算出する手段と、（ｄ）各サンプル文字列ごとの共通の詰め率と前記各対象文字の詰め調整関数とに基づき、サンプル文字列ごとに各対象文字の詰め量を算出する手段とを含むことを特徴とする文字組版編集装置。
【請求項３】
請求項１に記載の装置において、
前記詰め量算出処理手段は、（ａ）前記処理対象となる入力文字列中の隣接する２つの文字のうち、詰め調整の基準となる一方の文字（基準文字）のドットパターンに対して、詰め調整される他方の文字（対象文字）のドットパターンを１ドットづつシフトさせ、そのシフトごとに、前記シフト方向と直交する方向にて両ドットパターン間が最短間隔となる一対のドット（候補点ペア）を求める手段と、（ｂ）前記両文字の仮想ボディが接する状態における前記各候補点ペア間の前記シフト方向の間隔情報とこれに直交する方向の間隔情報とを求める手段と、（ｃ）前記各候補点ペアのシフト方向の間隔情報と、これに直交する方向の間隔情報とに基づいて、前記両文字の仮想ボディが接した状態から対象文字を基準文字に対して接近させたときの詰め量と、各詰め量における各候補点ペアの最短間隔である２次元的な間隔量（字面間隔量）とを各候補点ペアそれぞれについて算出する手段と、（ｄ）前記算出された各詰め量のうち、最小となる詰め量を求める手段と、（ｅ）前記字面間隔量と前記最小の詰め量との関係を表した関数（詰め調整関数）を処理対象となる入力文字列の各対象文字について算出する手段と、（ｆ）前記算出された各対象文字の各詰め調整関数の総和（総詰め調整関数）を算出する手段と、（ｇ）前記総詰め調整関数と前記差分文字列長格納手段に格納された各サンプル文字列の差分文字列長とに基づき、各サンプル文字列ごとに共通の字面間隔量を算出する手段と、（ｈ）各サンプル文字列ごとに共通の字面間隔量と前記各対象文字の詰め調整関数とに基づき、サンプル文字列ごとに各対象文字の詰め量を算出する手段とを含むことを特徴とする文字組版編集装置。
【請求項４】
所定の文字列の文字間隔を調整して組版する文字組版編集装置において、
処理対象となる文字列の文字列データファイルを入力する文字列入力手段と、
前記文字列の文字サイズを指定する文字サイズ指定手段と、
前記文字列データファイルに含まれる各文字のフォントデータ群を格納しているフォント格納手段と、
少なくとも文字間調整によって得ようとするサンプル文字列群中の一つのサンプル文字列の文字間距離と、前記文字間距離を基準とした前記サンプル文字列群の文字間距離の範囲や文字間距離の調整ピッチを決定するための条件を含む調整条件を入力する調整条件入力手段と、
前記文字列入力手段と文字サイズ指定手段から入力された文字列情報を格納する文字列情報格納手段と、
前記調整条件入力手段から入力された調整条件を格納する調整条件格納手段と、
前記調整条件格納手段に格納された調整条件に基づき、各サンプル文字列の文字間距離を算出する文字間距離算出手段と、
前記各サンプル文字列の文字間距離を格納する文字間距離格納手段と、
ベタ組状態の前記入力文字列の各文字の間隔が、前記文字間距離格納手段に格納されたサンプル文字列ごとの文字間距離になるように、各サンプル文字列ごとに各文字の詰め量を算出する詰め量算出処理手段と、
各サンプル文字列の各文字の詰め量を格納する配置詰め量格納手段と、
前記配置詰め量格納手段を参照して各サンプル文字列の各文字を詰め配置するサンプル文字列作成手段と、
前記サンプル文字列作成手段によって作成されたサンプル文字列群を一括表示する表示手段と、
前記表示手段に表示されたサンプル文字列群の中から任意のサンプル文字列を選択指定するサンプル文字列選択手段と、
を備えたことを特徴とする文字組版編集装置。
【請求項５】
請求項４に記載の装置において、
前記詰め量算出処理手段は、（ａ）前記処理対象となる入力文字列中の隣接する２つの文字のうち、詰め調整の基準となる一方の文字（基準文字）のドットパターンに対して、詰め調整される他方の文字（対象文字）のドットパターンを１ドットづつシフトさせ、そのシフトごとに、前記シフト方向と直交する方向にて両ドットパターン間が最短間隔となる一対のドット（候補点ペア）を求める手段と、（ｂ）前記両文字の仮想ボディが接する状態における前記各候補点ペア間の前記シフト方向の間隔情報とこれに直交する方向の間隔情報とを求める手段と、（ｃ）前記各候補点ペアのシフト方向の間隔情報と、これに直交する方向の間隔情報とに基づいて、前記両文字の仮想ボディが接した状態から対象文字を基準文字に対して接近させたときの詰め量と、各詰め量における各候補点ペアの最短間隔である２次元的な間隔量（字面間隔量）とを各候補点ペアそれぞれについて算出する手段と、（ｄ）前記算出された各詰め量のうち、最小となる詰め量を求める手段と、（ｅ）前記字面間隔量と前記最小の詰め量との関係を表した関数（詰め調整関数）を処理対象となる入力文字列の各対象文字について算出する手段と、（ｆ）前記算出された各対象文字の詰め調整関数と、前記文字間距離格納手段に格納された各サンプル文字列の文字間距離とに基づき、サンプル文字列ごとに各対象文字の詰め量を算出する手段とを含むことを特徴とする文字組版編集装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、デスク・トップ・パブリッシング（ＤＴＰ）等で利用される文字組版編集装置に係り、特に、所定の文字列の文字間隔を調整して（いわゆる、カーニング処理して）組版する装置に関する。
【０００２】
【従来の技術】
近年のコンピュータを利用した電子組版においては、文字組版編集装置が取り扱う日本語の文字は、かな，漢字などの文字種にかかわらず、各文字の情報は、所定の大きさをもつ枠の中に収められている。  そこで、まず、日本語の文字の構成要素を図３３の模式図を参照して定義しておく。なお、以下の説明において、「文字」とは通常の文章，単語を形成するのに用いられる狭義の文字の他、数字や各種の記号を含むものとする。
【０００３】
＜文字構成＞
この模式図は、一例として、文字「し」の構成要素を示している。
文字の字体形状は、文字の最小配置単位を示す矩形状の枠である”仮想ボディ”ＩＢに収められ、前記仮想ボディＩＢの横方向の長さＸを”文字幅”とし、縦方向の長さＹを”文字高さ”とする。一般的には、文字幅Ｘと文字高さＹとは同じ値で構成される。
【０００４】
前記仮想ボディＩＢの内方には、文字の字体形状を示す”字面”Ｆが配置され、この字面Ｆは、点の集まりからなるドットデータや数学的に形状を表すベクトルデータにより構成される。前記字面Ｆの最大外形を囲うような矩形状の枠を、バウンディングボックスＢＢとし、前記バウンディングボックスＢＢの横方向の長さＷを”字面幅”とし、縦方向の長さＨを”字面高さ”とする。これら字面幅Ｗと字面高さＨとを併せて、字面寸法と呼ぶことにする。
【０００５】
前記仮想ボディＩＢ内に配置されている字面Ｆの字面幅Ｗと仮想ボディＩＢの文字幅Ｘとの差を、図示するように間隔ａおよび間隔ｂとし、字面高さＨと文字高さＹとの差を、間隔ｃおよび間隔ｄとする。これらの間隔は、仮想ボディＩＢ内に収められる字面Ｆの大きさや形状によって、すなわち、文字毎に異なる。
【０００６】
なお、上記のバウンディングボックスＢＢは、字面Ｆの周囲に必要に応じて適宜の隙間（サイドベアリング）を設けて、その隙間を含む矩形状の枠をいうこともあるが、以下の説明においては、特に付記しない限りバウンディングボックスはサイドベアリングを含まないものとする。
【０００７】
＜従来方法＞
従来の文字組版編集装置において、カーニング処理は以下のように行われている。
【０００８】
（１）  手操作によるカーニング処理
ＣＲＴ画面に映し出された文字列の各文字間隔を、オペレータが各文字の字面の形状を考慮しつつ手操作で調整して、文字列を体裁よく配列させる。
【０００９】
（２）  均等詰めによる自動カーニング処理
文字列を配置したい台紙上のエリアに応じて文字列の行長を指定し、その文字列のベタ組（各文字の仮想ボディＩＢが接するように配置した状態）の文字列長と指定された行長との差分を各文字に均等に割り振って、各文字の文字間隔をベタ組の状態から一律に詰める。
【００１０】
【発明が解決しようとする課題】
しかしながら、上述した各装置には次のような問題点がある。
すなわち、手操作によりカーニング処理を行う装置の場合、カーニング処理に長時間を要するとともに、オペレータに熟練を要するという問題点がある。
【００１１】
一方、均等詰めにより自動カーニング処理を行う装置の場合、カーニング処理自体は短時間に行われるのであるが、オペレータによって指定される行長（文字列長）は、オペレータが感覚的に判断して決定するので、ともすれば、カーニング処理されて出力された文字列の長さや各文字の間隔が、オペレータが意図したものと違うために、オペレータが再度、異なる行長を指定してカーニング処理を行わせることが多い。結果的に行長の再指定等に相当の時間を要するので、トータル的に見れば、それほど作業効率が良いとは言えない。
【００１２】
本発明は、このような事情に鑑みてなされたものであって、オペレータが意図するようにカーニング処理された文字列を迅速に得ることができる実用的な文字組版編集装置を提供することを目的とする。
【００１３】
【課題を解決するための手段】
本発明は、このような目的を達成するために、次のような構成をとる。
すなわち、請求項１に記載の発明は、所定の文字列の文字間隔を調整して組版する文字組版編集装置において、処理対象となる文字列の文字列データファイルを入力する文字列入力手段と、前記文字列の文字サイズを指定する文字サイズ指定手段と、前記文字列データファイルに含まれる各文字のフォントデータ群を格納しているフォント格納手段と、少なくとも文字間調整によって得ようとするサンプル文字列群中の一つのサンプル文字列の文字列長と、前記文字列長を基準とした前記サンプル文字列群の文字列長の範囲や文字列長の調整ピッチを決定するための条件を含む調整条件を入力する調整条件入力手段と、前記文字列入力手段と文字サイズ指定手段から入力された文字列情報を格納する文字列情報格納手段と、前記調整条件入力手段から入力された調整条件を格納する調整条件格納手段と、前記フォント格納手段、文字列情報格納手段、および調整条件格納手段の内容を参照することにより、ベタ組状態の前記入力文字列と、前記各サンプル文字列との差分文字列長を算出する差分文字列長算出手段と、前記算出された各サンプル文字列ごとの差分文字列長を記憶する差分文字列長格納手段と、前記ベタ組状態の入力文字列の各文字の詰め量の総和が、前記差分文字列長格納手段に格納された各差分文字列長となるように、各サンプル文字列ごとに各文字の詰め量を算出する詰め量算出処理手段と、各サンプル文字列ごとに各文字の詰め量を格納する配置詰め量格納手段と、前記配置詰め量格納手段を参照して各サンプル文字列の各文字を詰め配置するサンプル文字列作成手段と、前記サンプル文字列作成手段によって作成されたサンプル文字列群を一括表示する表示手段と、前記表示手段に表示されたサンプル文字列群の中から任意のサンプル文字列を選択指定するサンプル文字列選択手段と、を備えたものである。
【００１４】
請求項２に記載の発明は、請求項１に記載の装置において、前記詰め量算出処理手段が、（ａ）前記処理対象となる入力文字列中の隣接する２つの文字のうち、詰め調整の基準となる一方の文字（基準文字）と、詰め調整される他方の文字（対象文字）の各仮想ボディと各々の字面との間隔のうち、文字配列方向で隣同士に位置する２つの間隔の合計値と、前記対象文字の各詰め量との割合を詰め率（０〜１までの任意の数値）で表した関数（詰め調整関数）を各対象文字について算出する手段と、（ｂ）前記算出された各対象文字の詰め調整関数の総和（総詰め調整関数）を算出する手段と、（ｃ）前記総詰め調整関数と前記差分文字列長格納手段に格納された各サンプル文字列の差分文字列長とに基づき、各サンプル文字列ごとに共通の前記詰め率を算出する手段と、（ｄ）各サンプル文字列ごとの共通の詰め率と前記各対象文字の詰め調整関数とに基づき、サンプル文字列ごとに各対象文字の詰め量を算出する手段とを含むものである。
【００１５】
請求項３に記載の発明は、請求項１に記載の装置において、前記詰め量算出処理手段が、（ａ）前記処理対象となる入力文字列中の隣接する２つの文字のうち、詰め調整の基準となる一方の文字（基準文字）のドットパターンに対して、詰め調整される他方の文字（対象文字）のドットパターンを１ドットづつシフトさせ、そのシフトごとに、前記シフト方向と直交する方向にて両ドットパターン間が最短間隔となる一対のドット（候補点ペア）を求める手段と、（ｂ）前記両文字の仮想ボディが接する状態における前記各候補点ペア間の前記シフト方向の間隔情報とこれに直交する方向の間隔情報とを求める手段と、（ｃ）前記各候補点ペアのシフト方向の間隔情報と、これに直交する方向の間隔情報とに基づいて、前記両文字の仮想ボディが接した状態から対象文字を基準文字に対して接近させたときの詰め量と、各詰め量における各候補点ペアの最短間隔である２次元的な間隔量（字面間隔量）とを各候補点ペアそれぞれについて算出する手段と、（ｄ）前記算出された各詰め量のうち、最小となる詰め量を求める手段と、（ｅ）前記字面間隔量と前記最小の詰め量との関係を表した関数（詰め調整関数）を処理対象となる入力文字列の各対象文字について算出する手段と、（ｆ）前記算出された各対象文字の各詰め調整関数の総和（総詰め調整関数）を算出する手段と、（ｇ）前記総詰め調整関数と前記差分文字列長格納手段に格納された各サンプル文字列の差分文字列長とに基づき、各サンプル文字列ごとに共通の字面間隔量を算出する手段と、（ｈ）各サンプル文字列ごとに共通の字面間隔量と前記各対象文字の詰め調整関数とに基づき、サンプル文字列ごとに各対象文字の詰め量を算出する手段とを含むものである。
【００１６】
請求項４に記載の発明は、所定の文字列の文字間隔を調整して組版する文字組版編集装置において、処理対象となる文字列の文字列データファイルを入力する文字列入力手段と、前記文字列の文字サイズを指定する文字サイズ指定手段と、前記文字列データファイルに含まれる各文字のフォントデータ群を格納しているフォント格納手段と、少なくとも文字間調整によって得ようとするサンプル文字列群中の一つのサンプル文字列の文字間距離と、前記文字間距離を基準とした前記サンプル文字列群の文字間距離の範囲や文字間距離の調整ピッチを決定するための条件を含む調整条件を入力する調整条件入力手段と、前記文字列入力手段と文字サイズ指定手段から入力された文字列情報を格納する文字列情報格納手段と、前記調整条件入力手段から入力された調整条件を格納する調整条件格納手段と、前記調整条件格納手段に格納された調整条件に基づき、各サンプル文字列の文字間距離を算出する文字間距離算出手段と、前記各サンプル文字列の文字間距離を格納する文字間距離格納手段と、ベタ組状態の前記入力文字列の各文字の間隔が、前記文字間距離格納手段に格納されたサンプル文字列ごとの文字間距離になるように、各サンプル文字列ごとに各文字の詰め量を算出する詰め量算出処理手段と、各サンプル文字列の各文字の詰め量を格納する配置詰め量格納手段と、前記配置詰め量格納手段を参照して各サンプル文字列の各文字を詰め配置するサンプル文字列作成手段と、前記サンプル文字列作成手段によって作成されたサンプル文字列群を一括表示する表示手段と、前記表示手段に表示されたサンプル文字列群の中から任意のサンプル文字列を選択指定するサンプル文字列選択手段と、を備えたものである。
【００１７】
請求項５に記載の発明は、請求項４に記載の装置において、前記詰め量算出処理手段が、（ａ）前記処理対象となる入力文字列中の隣接する２つの文字のうち、詰め調整の基準となる一方の文字（基準文字）のドットパターンに対して、詰め調整される他方の文字（対象文字）のドットパターンを１ドットづつシフトさせ、そのシフトごとに、前記シフト方向と直交する方向にて両ドットパターン間が最短間隔となる一対のドット（候補点ペア）を求める手段と、（ｂ）前記両文字の仮想ボディが接する状態における前記各候補点ペア間の前記シフト方向の間隔情報とこれに直交する方向の間隔情報とを求める手段と、（ｃ）前記各候補点ペアのシフト方向の間隔情報と、これに直交する方向の間隔情報とに基づいて、前記両文字の仮想ボディが接した状態から対象文字を基準文字に対して接近させたときの詰め量と、各詰め量における各候補点ペアの最短間隔である２次元的な間隔量（字面間隔量）とを各候補点ペアそれぞれについて算出する手段と、（ｄ）前記算出された各詰め量のうち、最小となる詰め量を求める手段と、（ｅ）前記字面間隔量と前記最小の詰め量との関係を表した関数（詰め調整関数）を処理対象となる入力文字列の各対象文字について算出する手段と、（ｆ）前記算出された各対象文字の詰め調整関数と、前記文字間距離格納手段に格納された各サンプル文字列の文字間列長とに基づき、サンプル文字列ごとに各対象文字の詰め量を算出する手段とを含むものである。
【００１８】
【作用】
請求項１に記載の発明の作用は次のとおりである。
オペレータが、文字列入力手段を介して、処理対象となる文字列データファイルを入力するとともに、文字サイズ指定手段を介して、入力文字列の文字サイズを指定する。これらの文字列情報を文字列情報格納手段に格納する。
続いて、オペレータが、調整条件入力手段に介して、サンプル文字列群を得るための調整条件を入力する。この調整条件は、サンプル文字列群の中の一つのサンプル文字列の文字列長と、これを基準としたサンプル文字列の文字列長の範囲や文字列長の調整ピッチを決定するための条件を含む。これらの調整条件を調整条件格納手段に格納する。
次に、差分文字列長算出手段は、フォント格納手段、文字列情報格納手段、および調整条件格納手段の内容に基づいて、ベタ組状態の入力文字列と、各サンプル文字列との差分文字列長を算出する。これら差分文字列長は、サンプル文字列ごとに算出される。これらの差分文字列長を差分文字列長格納手段に格納する。
詰め量算出処理手段は、ベタ組状態の入力文字列の各文字の詰め量の総和が、差分文字列長に格納された各差分文字列長に等しくなるように、各サンプル文字列ごとに各文字の詰め量を算出する。算出された各サンプル文字列ごとの各文字の詰め量を配置詰め量格納手段に格納する。
サンプル文字列作成手段は、配置詰め量格納手段に格納された各サンプル文字列ごとの各文字の詰め量に従い、ベタ組状態の入力文字列の各文字を詰めて各サンプル文字列を作成する。
表示手段は、作成されたサンプル文字列群を一括表示する。このサンプル文字列群は、オペレータによって指定された文字列長を優先させた調整条件に従って文字詰めされ、それぞれの文字列長が微調整されたものである。オペレータは、表示されたサンプル文字列群の中から、最も適当であると判断したサンプル文字列をサンプル文字列選択手段を介して選択指定する。これにより、その選択されたサンプル文字列が台紙上に組版編集される。
【００１９】
請求項２に記載の発明の作用は次のとおりである。
詰め量算出処理手段は、まず、処理対象となる入力文字列中の隣接２文字（基準文字と対象文字）の文字配列方向の字面間隔に着目して、対象文字の詰め量をベタ組状態の隣接２文字間の字面間隔と詰め率との関係で表した関数（詰め調整関数）を、入力文字列中の各対象文字について求める（請求項２の（ａ）の手段による）。そして、これらの詰め調整関数の総和（総詰め調整関数）を求める（（ｂ）の手段による）。この総詰め調整関数では、文字列全体の総詰め量が、各文字間隔の詰め率でもって表されることになる。したがって、総詰め調整関数の総詰め量として、差分文字列長（ベタ組文字列長とサンプル文字列長との差分）を与えると、そのサンプル文字列を得るための各文字間隔の共通の詰め率が得られる（（ｃ）の手段による）。サンプル文字列ごとに得られる共通の詰め率を、先に求めた入力文字列の各対象文字の詰め関数に与えることにより、サンプル文字列ごとに各対象文字の詰め量が算出される（（ｄ）の手段による）。
【００２０】
請求項３に記載の発明の作用は次のとおりである。
詰め量算出処理手段は、まず、処理対象となる入力文字列中の隣接２文字（基準文字と対象文字）のうち、基準文字に対して対象文字を文字配列方向にシフトさせたときに、そのシフト量（詰め量）に応じて変化する両文字の２次元的な（文字配列方向とこれに直交する方向の）字面間隔量に着目して、この字面間隔量と、この字面間隔量が得られる最小の詰め量との関係を表した関数（詰め調整関数）を入力文字列中の各対象文字について得ている（請求項３の（ａ）〜（ｅ）の各手段による）。そして、入力文字列中の各対象文字の詰め調整関数の総和（総詰め調整関数）を求めている（（ｆ）の手段による）。この総詰め調整関数は、文字列全体の総詰め量と、そのときの各文字間の共通の２次元的な字面間隔量とを関係を表す。したがって、この総詰め調整関数に、各サンプル文字列ごとの差分文字列長を与えることにより、そのサンプル文字列を得るための各文字間の共通の２次元的な字面間隔量が得られる（（ｇ）の手段による）。サンプル文字列ごとに得られた共通の２次的な字面間隔量を、入力文字列の各対象文字について、先に求めた各対象文字ごとの詰め関数に与えることにより、サンプル文字列ごとに各対象文字の詰め量が算出される（（ｈ）の手段による）。
【００２１】
請求項４に記載の発明の作用は次のとおりである。
本発明の作用は請求項１に記載した発明と多くは共通する。ただし、請求項１に記載の発明では文字列長を優先させてカーニング処理したが、本発明では文字間隔を優先させてカーニング処理する関係で、調整条件入力手段を介して入力される、サンプル文字列群を得るための調整条件として、一つのサンプル文字列の文字間距離と、これを基準としたサンプル文字列群の文字間距離の範囲や文字間距離の調整ピッチを決定するための条件とが用いられる。この調整条件に基づき、文字間距離算出手段が各サンプル文字列の文字間距離を算出し、この文字間距離を文字間距離格納手段に格納する。そして、詰め量算出処理手段が、ベタ組状態の入力文字列の文字間距離が、各サンプル文字列の文字間距離に等しくなるように、各サンプル文字列ごとに各文字の詰め量を算出して、これらの詰め量を配置詰め量格納手段に格納する。以下、請求項１に記載の発明と同様に、サンプル文字列群の作成、これらの一括表示、およびサンプル文字列の選択が、その順に行われる。
【００２２】
請求項５に記載の発明の作用は次のとおりである。
詰め量算出処理手段は、まず、請求項３に記載の発明と同様に、基準文字に対して対象文字を文字配列方向にシフトさせたときの２次元的な字面間隔量と、この字面間隔量が得られる最小の詰め量との関係を表した関数（詰め調整関数）を入力文字列中の各対象文字について得る（請求項５の（ａ）〜（ｅ）の各手段による）。そして、各詰め調整関数の字面間隔量として、文字間距離格納手段に格納された各サンプル文字列の文字間距離を与えることにより、各サンプル文字列ごとに各対象文字の詰め量が算出される（（ｆ）の手段による）。
【００２３】
【実施例】
以下、図面を参照して本発明の実施例を説明する。
＜第１実施例＞
本実施例は、カーニング処理によって得ようとする複数種類の文字列（サンプル文字列）群の中の最大文字列長と、文字列長調整範囲と、文字列長調整ピッチとからなる調整条件を指定することにより、画面上に複数個のサンプル文字列を表示し、その中から最適のサンプル文字列をオペレータによって選択させるものである。この装置は、文字列長を優先させてカーニング処理したい場合に有効である。以下、具体的に説明する。
【００２４】
図１は、第１実施例に係る文字組版編集装置の概略構成を示したブロック図である。
図中、符号１は、カーニング処理等を実行する制御部である。制御部１は、図示しないＣＰＵやＲＯＭ，ＲＡＭ等のメモリで構成されている。後述する説明から明らかになるが、この制御部１は、本発明における差分文字列長算出手段、サンプル文字列作成手段としての機能を備える。文字列入力部２は、ワードプロセッサ等で作成された文字列データファイル（書体名，文字コード等）を格納した媒体等から文字列データを取り込むものであり、本発明における文字列入力手段に相当する。文字サイズ指示部３は、入力文字列の文字の大きさ（文字サイズ）を指示するものであり、本発明における文字サイズ指定手段に相当する。この取り込まれた文字列データは、指示された文字サイズとともに文字列情報格納部４に制御部１により格納される。この格納された文字列情報格納部４の文字列データは、制御部１によって参照される。この文字列情報格納部４は、本発明における文字列情報格納手段に相当する。
【００２５】
調整条件入力部５は、カーニング処理によって得ようとする複数種類のサンプル文字列の、前記カーニング処理の調整条件をオペレータが入力するためのものである。この調整条件入力部５は、本発明における調整条件入力手段に相当する。本実施例では、調整条件として、文字列長に関連した以下の３つの条件を入力する（図２参照）。図２（ａ）はベタ組の文字列、図２（ｂ）はサンプル文字列群を示す。なお、図２（ｂ）では５つのサンプル文字列を示しているが、サンプル文字列の個数は調整条件に応じて変わるものである。
【００２６】
▲１▼  最大文字列長ＬＭＡＸ  ：得ようとするサンプル文字列群ＳＣ１  ，ＳＣ２  ，…の中の最大の文字列長である。
▲２▼  文字列長調整範囲ＶＬ  ：最大文字列長ＬＭＡＸ  を基準として指定される文字列長の調整範囲である。
▲３▼  文字列長調整ピッチＰＬ  ：最大文字列長ＬＭＡＸ  から調整範囲ＶＬ  までのサンプル文字列群を構成する各サンプル文字列の文字列長の調整ピッチである。
【００２７】
この調整条件入力部５は、キーボード等の入力装置から構成されている。調整条件入力部５から入力された調整条件は調整条件格納部６に格納される。この調整条件格納部６は、本発明における調整条件格納手段に相当する。
【００２８】
フォント格納部７は、文字（記号や特殊文字等を含む）のフォントデータ群を書体毎（明朝体，ゴシック体等のフォント名）にファイリングしている。このフォント格納部７は、本発明におけるフォント格納手段に相当する。ここでフォント格納部７に格納されているフォントファイルの内容について、図３を参照して説明する。フォント格納部７は、フォント名毎（フォント名１，………）にファイリングされ、各フォントファイルは、文字コードと前記文字コードに対応する文字データ（ベクトルデータ）および前記文字データに対応した文字パラメータ（図３３に示した間隔ａ〜ｄと字面幅Ｗおよび字面高さＨ）から構成されている。
【００２９】
ベタ組文字列長格納部８は、文字列情報格納部４に記憶されている文字列データの各文字を、その仮想ボディ同士が接するように配置（ベタ組）した際の文字列長（ベタ組文字列長Ｌ０  ：図２（ａ）参照）を格納するものである。
【００３０】
サンプル文字列長格納部９は、調整条件格納部６に格納されている調整条件で基づいて制御部１が算出した各サンプル文字列の文字列長Ｌ１  ，Ｌ２  ，…（図２（ｂ）参照）を格納するものである。
【００３１】
差分文字列長格納部１０は、制御部１によって算出される、ベタ組文字列長と各サンプル文字列の文字列長との差分を格納するものである。この差分文字列長格納部１０は、本発明における差分文字列長格納手段に相当する。
【００３２】
詰め量算出処理部２０は、図２（ｂ）に示したような調整条件に応じたサンプル文字列群を得るために、図２（ａ）に示したようなベタ組文字列の状態から各文字間隔をどれだけ詰めればよいか、各文字間の詰め量を算出するものである。この詰め量算出処理部２０は、本発明における詰め量算出処理手段に相当する。詰め量算出処理部２０の詳細な構成は後述する。
【００３３】
配置詰め量格納部１１は、詰め量算出処理部２０によって算出された各文字間の詰め量をサンプル文字列ごとに格納するものである。この配置詰め量格納部１１は、本発明における配置詰め量格納手段に相当する。
【００３４】
表示部１２は本発明における表示手段に相当するもので、サンプル文字列を表示するためのＣＲＴなどの表示器であり、出力部１６はプリンタやスキャナなどの出力器にデータを出力するもので、制御部１が文字列情報格納部４とフォント格納部７および配置詰め量格納部１１を参照することにより、文字列長が調整されて詰め配置されたサンプル文字列群を一括表示したり、あるいは出力器に出力するための処理（ＲＩＰ処理など）を行うようになっている。
【００３５】
表示制御部１３は、表示部１２のＣＲＴ画面を編集用のメイン画面に設定したり、サンプル文字列表示用のサブ画面に切り換えたりするためのものである。
【００３６】
サンプル文字列選択部１４は、表示部１２のＣＲＴ画面に表示されたサンプル文字列群の中から、最適のサンプル文字列をオペレータが選択指定するためのものであり、キーボードやマウス等で構成される。このサンプル文字列選択部１４は、本発明におけるサンプル文字列選択手段に相当する。
【００３７】
次に、図４に示すフローチャートを参照して実施例装置の処理の内容を説明する。
ステップＳ１では、オペレータが処理の対象である文字列データファイルを指示し、文字列入力部２を介して入力する。この文字列データファイルは、汎用されるワードプロセッサ等で予め作成されたものであり、フロッピーディスク等に保存されていたものである。また、各文字の文字サイズを文字サイズ指示部３を介して指示する。
【００３８】
ステップＳ２では、ステップＳ１で入力された文字列データファイルの文字列データを、指示された文字サイズとともに文字列情報格納部４に格納する。このときの文字列情報格納部４の内容を図５の模式図に示す。
【００３９】
ステップＳ３では、表示制御部１３が表示部１２のＣＲＴ画面をサンプル文字列表示用のサブ画面に切り換える。続いて、制御部１が文字列情報格納部４に格納された文字列データとフォント格納部７とを参照することにより、その内容（フォント名，文字サイズ，配列方向，文字コード）に従ってベタ組の文字列を表示部１２に表示する。このとき制御部１によって算出されたベタ組の文字列長Ｌ０  をベタ組文字列長格納部８に格納する。
【００４０】
図６は、このときの表示部１２のサブ画面の一例である。ベタ組文字列ＢＣの左横に表示された数字は、後述する処理により表示されるサンプル文字列群の中から任意のサンプル文字列をオペレータが選択指示する際に使用するための選択番号ｎであり、ベタ組文字列の場合、『０』が表示されるようになっている。
【００４１】
ステップＳ４では、オペレータがカーニング処理の調整条件を調整条件入力部５を介して入力する。調整条件は、上述したように最大文字列長ＬＭＡＸ  、文字列長調整範囲ＶＬ  、文字列長調整ピッチＰＬ  の３つである。これらの調整条件は調整条件格納部６に格納される。調整条件の入力は、キーボード等から直接数値を入力してもよいし、マウスなどのポインティング・デバイスで表示部１２上で長さを指示することによってもよい。
【００４２】
なお、ステップＳ３は、文字列長の調整前のベタ組の文字列を表示するだけであるので、文字列長がオペレータにとって明らかな場合には、その表示を行わずにステップＳ４で調整条件の入力を行うようにしてもよい。
【００４３】
ステップＳ５では、詰め量算出処理部２０が、制御部１と協働して、処理対象となる文字列をステップＳ４で入力された調整条件に従って、各サンプル文字列ごとに、各文字の詰め量を求める処理を行う。この詰め量算出処理の具体例は、後に詳述するので、ここでは簡単な説明に止める。まず、制御部１は調整条件格納部６に格納された調整条件を参照して、各サンプル文字列の文字列長を算出し、これらをサンプル文字列長格納部９に格納する。続いて、制御部１はベタ組文字列長格納部８とサンプル文字列長格納部９とを参照して、ベタ組文字列長と各サンプル文字列長との差分文字列長をそれぞれ算出し、これらの差分文字列長を差分文字列長格納部１０に格納する。そして、詰め量算出処理部２０が、ベタ組文字列状態から各文字間隔を適当に詰めた際に、その詰め量の総和が差分文字列長と一致するような、各文字間隔の詰め量を算出する。
【００４４】
各サンプル文字列ごとに求められた各文字の詰め量は配置詰め量格納部１１に格納される。図７に配置詰め量格納部１１の内容を模式的に示す。各文字の詰め量Ｓ２  ，Ｓ３  ，…は、各サンプル文字列に対応した選択番号１，２，…に対応付けて記憶されている。詰め量Ｓ２  は、図２（ａ）に示したベタ組文字列状態の先頭文字Ｃ１  を基準として、詰め調整される次の文字Ｃ２  の詰め量である。同様に、詰め量Ｓ３  は文字Ｃ２  を基準として、詰め調整される文字Ｃ３  の詰め量である。以下では、隣同士の２文字について、文字間隔調整の基準となる一方の文字を基準文字、文字配置時に送り量が調整される他方の文字を対象文字という。
【００４５】
ステップＳ６では、制御部１が、配置詰め量格納部１１に格納された各サンプル文字列の各文字の詰め量を順に読み出し、各文字の詰め量に従ってベタ組文字列状態の各対象文字を基準文字に対して詰め配置し、得られたサンプル文字列を表示部１２に順に表示する。
【００４６】
図８に、ステップＳ６の処理で得られたサンプル文字列群の表示部１２への一括表示の例を示す。ベタ組み文字列ＢＣの下に、選択番号１に対応付けられて最大文字列長のサンプル文字列ＳＣ１  が表示され、その下に、選択番号２に対応付けてサンプル文字列ＳＣ２  よりも調整ピッチＰＬ  だけ文字列長の短いサンプル文字列ＳＣ２  が表示され、以下順に、調整ピッチＰＬ  だけ文字列長の短いサンプル文字列ＳＣ３  ，ＳＣ４  ，…が順に表示される。本実施例の調整条件によれば、文字列長調整ピッチＰＬ  が小さければ、それだけサンプル文字列の個数が増えるので、一画面内にサンプル文字列群が入りきらない場合は、画面上のベージ送りによってサンプル文字列が表示される。
【００４７】
以上のように、オペレータが調整条件を適当な範囲で設定することより、複数種類のサンプル文字列が表示部１２のサブ画面に一括表示されるので、オペレータはサブ画面に表示された各サンプル文字列を見比べながら、その中からオペレータ自身が最適だと思うサンプル文字列を容易に探し出すことができる。
【００４８】
ステップＳ７では、オペレータが表示部１２のサブ画面を見ながら、適当な一つのサンプル文字列を、サンプル文字列選択部１４を操作することにより選択する。本実施例では、サンプル文字列の選択は選択番号を指定することにより行われる。なお、サンプル文字列の選択は、サブ画面上に表示されたカーソルをマウス等で、オペレータが選択しようとするサンプル文字列上に移動させた後、マウスのキーを操作（クリック）して行うようにしてもよい。
【００４９】
一つのサンプル文字列が選択されるとステップＳ８に進み、制御部１は表示部１２の表示を編集用のメイン画面に戻し、メイン画面に表示されている台紙上の指定された位置に、選択されたサンプル文字列を表示して、一連の処理を終了する。なお、組版する場合は、選択されたサンプル文字列のデータを参照して、組版に必要なデータを出力部１６を介して出力器に出力する。
【００５０】
次に、上述した詰め量算出処理部２０の具体例を説明する。詰め量算出処理部２０は、種々の手法を使って実現することが可能であるが、以下では好ましい二つの構成例について詳述する。
【００５１】
＜構成例１＞
この構成例１は、処理対象となる文字列中の隣同士の２文字（基準文字と対象文字）の文字配列方向の字面間隔に着目して、各文字の詰め量を求めるものである。以下、具体的に説明する。
【００５２】
図９は、構成例１に係る詰め量算出処理部２０の詳細な構成を示したブロック図である。
詰め調整関数算出部２１は、文字列情報格納部４に格納されている各文字の文字列データの中から、文字間隔を調整しようとする２つの文字（基準文字と対象文字）を取り出して、詰め調整関数を算出するものである。この詰め調整関数算出部２１は、請求項２に記載の発明における手段（ａ）に相当する。この構成例１において、詰め調整関数とは、基準文字と対象文字の各仮想ボディと各々の字面との間隔のうち、文字配列方向で隣同士に位置する２つの間隔の合計値、つまり、ベタ組状態における両文字の文字配列方向の字面間隔に対する対象文字の詰め量の割合を詰め率（０〜１）で表した関数をいう。詰め調整関数は、文字間隔が調整される文字列の各文字間の関係において存在する。詰め調整関数の具体例については後に説明する。詰め調整関数格納部２２は、詰め調整関数算出部２１によって算出された各文字間の詰め調整関数を各対象文字毎に格納する。
【００５３】
総詰め調整関数算出部２３は、各対象文字毎の詰め調整関数の詰め率を基準とする（同じ値の詰め率に対する）詰め量の総和を総詰め調整関数として算出する。この総詰め調整関数算出部２３は、請求項２に記載の発明における手段（ｂ）に相当する。総詰め調整関数格納部２４は、総詰め調整関数算出部２３によって算出された総詰め調整関数を格納する。
【００５４】
詰め率算出部２５は、各サンプル文字列についての差分文字列長と総詰め調整関数とに基づいて、サンプル文字列ごとの各対象文字に共通の詰め率を算出する。この詰め率算出部２５は、請求項２に記載の発明における手段（ｃ）に相当する。詰め率格納部２６は、詰め率算出部２５によって算出された各サンプル文字列の詰め率を格納する。
【００５５】
詰め量算出部２７は、各サンプル文字列ごとに、各対象文字に共通の詰め率と、各対象文字の詰め調整関数とに基づいて、各文字の詰め量を算出して前述した配置詰め量格納部１１に格納する。この詰め量算出部２７は、請求項２に記載の発明における手段（ｄ）に相当する。
【００５６】
この詰め量算出処理部２０に関連した、上記ステップＳ５の詰め量算出処理の詳細を図１０のフローチャートを参照して説明する。
【００５７】
ステップＴ１では、各サンプル文字列の文字列長を以下のようにして求める。
制御部１は調整条件格納部６を参照して、最大文字列長ＬＭＡＸ  から順次、文字列長調整ピッチＰＬ  を減算して、文字列長調整範囲ＶＬ  内の各サンプル文字列の文字列長Ｌ１  ，Ｌ２  ，Ｌ３  ，…Ｌｎ  を算出する。結果、Ｌ１  −Ｌｎ  ≦ＶＬ  を満足する以下のサンプル文字列の文字列長が算出される。
Ｌ１  ＝ＬＭＡＸ  
Ｌ２  ＝ＬＭＡＸ  −ＰＬ  
Ｌ３  ＝ＬＭＡＸ  −２ＰＬ  
……………
Ｌｎ  ＝ＬＭＡＸ  −（ｎ−１）ＰＬ  
【００５８】
このようにして求められた各サンプル文字列の文字列長Ｌ１  〜Ｌｎ  は、選択番号ｎに対応付けてサンプル文字列長格納部９に格納される。図１１にサンプル文字列長格納部９の格納データを模式的に示す。
【００５９】
ステップＴ２では、詰め調整関数算出部２１が、図４のステップＳ１で入力された文字列の各文字の詰め調整関数を算出する。以下に、この構成例１で用いられる詰め調整関数を具体的に説明する。
【００６０】
簡単のためにステップＳ１で入力された文字列が図１２に示すような３文字（第１文字Ｃ１  ，第２文字Ｃ２  ，第３文字Ｃ３  ）からなる場合を例に採って説明する。なお、各文字の仮想ボディと字面との間隔のうち、文字配列方向の間隔で行頭側にある間隔をａｍ  、行末側にある間隔をｂｍ  （添字ｍは文字番号を示す）とする。また、ステップＳ３で算出されたベタ組みの入力文字列の行長Ｌ０  は図１２に示すような長さであるとする。ここで詰め率ｋ（０〜１の任意の数値）は、図１３（ａ）に示すように各文字の間隔ａｍ  ，ｂｍ  に対する詰め量の割合を示している。この場合の第２文字Ｃ２  （対象文字）の詰め量は、第１文字Ｃ１  （基準文字）の行末側の間隔ｂ１  と第２文字Ｃ２  の行頭側の間隔ａ２  との合計値（ｂ１  ＋ａ２  ）に詰め率ｋを乗じて求めることができ、これを第２文字Ｃ２  の詰め量Ｓ２  （ｋ）＝ｋ（ｂ１  ＋ａ２  ）とする（図１３（ｂ）参照）。この詰め量Ｓ２  （ｋ）は、当然のことながら詰め率ｋの関数（詰め調整関数Ｓ２  （ｋ））となる。例えば、詰め率を０〜１に可変し、そのときの各詰め率ｋにおける詰め量Ｓ２  を算出すると図１４に示すように、詰め率ｋ＝１では詰め量Ｓ２  ＝ｂ１  ＋ａ２  となり、これは第１文字Ｃ１  と第２文字Ｃ２  の字面同士が接する状態になることを示す。すなわち、詰め率ｋが最大値を採っても、隣接する文字の字面同士が重複することはない。
【００６１】
この詰め調整関数を第２文字Ｃ２  と第３文字Ｃ３  についても同様に算出すると、詰め調整関数Ｓ３  （ｋ）＝ｋ（ｂ２  ＋ａ３  ）となり、この関数をグラフ化すると図１５に示すようになる。この場合、詰め率ｋ＝１では詰め量Ｓ３  ＝ｂ２  ＋ａ３  となる。なお、この詰め調整関数を一般的に表すとＳｍ  （ｋ）＝ｋ（ｂ（ｍ−１）  ＋ａｍ  ）（但し、ｍは文字番号を示し２以上の整数である）となる。この詰め調整関数の算出は、図９に示した詰め調整関数算出部２１によって実行され、文字列情報格納部４の各文字コードと対応する〔フォント格納部７の〕文字パラメータ（間隔ａ〜ｄ）とを参照して、各対象文字のそれぞれの詰め調整関数を算出する。このようにして算出された各対象文字（第２文字Ｃ２  ，第３文字Ｃ３  ）の詰め調整関数Ｓ２  （ｋ），Ｓ３  （ｋ）は、それぞれ詰め調整関数格納部２２に関数式の状態で格納される。
【００６２】
次に、ステップＴ３では、総詰め調整関数算出部２３が、ステップＴ２で求めた各詰め調整関数の詰め率を基準とする詰め量の総和（総詰め調整関数）を算出する。具体的には、詰め調整関数格納部２２に格納されている、第２文字Ｃ２  と第３文字Ｃ３  のそれぞれの詰め調整関数Ｓ２  （ｋ），Ｓ３  （ｋ）の総和（総詰め調整関数ΣＳｉ  ）、
0003544721.tif 000002
を求めて総詰め調整関数格納部２４に関数式の状態で格納する。この総詰め調整関数ΣＳｉ  （ｋ）を模式的に表したグラフを図１６に示す。
【００６３】
ステップＴ４では、制御部１がベタ組文字列長格納部８に格納されているベタ組文字列長Ｌ０  と、サンプル文字列長格納部９に格納されているサンプル文字列（最初は最大文字列長のサンプル文字列）の文字列長Ｌｉ  （ｉはサンプル文字列の番号）との差分（差分文字列長ＤＬｉ  ）を算出する。算出された差分文字列長ＤＬｉ  は、サンプル文字列の選択番号ｎに対応付けて差分文字列長格納部１０に格納される。この差分文字列長ＤＬｉ  は、文字列長Ｌ０  のベタ組文字列を詰め調整してサンプル文字列の文字列長Ｌｉ  に一致させるために必要なベタ組文字列での詰め量の総和（総詰め量）に相当するものである。
【００６４】
ステップＴ５では、詰め率算出部２５が各サンプル文字列ごとに詰め率を算出する。具体的には、差分文字列長ＤＬｉ  と総詰め調整関数ΣＳｉ  （ｋ）（上記の（１）式）とに基づいて詰め率ｋを算出する。すなわち、ベタ組文字列状態からの詰め量の総和（総詰め量）として、各サンプル文字列の差分文字列長ＤＬｉ  を与えることにより、差分文字列長ＤＬｉ  だけ文字列長Ｌ０  の文字列を詰めるのに必要な各文字に共通の詰め率ｋＡ  を算出する。例えば、図１６に示した総詰め調整関数ΣＳｉ  （ｋ）のグラフに示すように、総詰め量Ｓ＝差分文字列長ＤＬが決定すると、その詰め率ｋＡ  が求められる。この算出された詰め率ｋＡ  は、そのサンプル文字列の選択番号ｎに対応させて詰め率格納部２６に格納される。
【００６５】
ステップＴ６では、詰め量算出部２７がサンプル文字列ごとに各文字（対象文字）の詰め量を算出する。この詰め量は、詰め率格納部２６に格納されている各サンプル文字列の詰め率ｋＡ  と詰め調整関数格納部２２に格納されている各対象文字（第２文字Ｃ２  ，第３文字Ｃ３  ）の詰め調整関数Ｓ２  （ｋ），Ｓ３  （ｋ）とに基づいて算出される。図１４および図１５に示した詰め調整関数Ｓ２  （ｋ），Ｓ３  （ｋ）のグラフを参照して説明すると、共通の詰め率ｋＡ  から求められる各詰め量Ｓ２Ａ，Ｓ３Ａを各対象文字（第２文字Ｃ２  ，第３文字Ｃ３  ）の詰め量Ｓ２Ａ，Ｓ３Ａとする。この算出された詰め量Ｓ２Ａ，Ｓ３Ａの各々は、配置詰め量格納部１１に格納される。
【００６６】
ステップＴ７では全てのサンプル文字列について各文字の詰め量が算出されたかどうかを判断し、未処理のサンプル文字列があればステップＴ４に戻って、次のサンプル文字列についてベタ組文字列との差分文字列長を算出し、ステップＴ５でそのサンプル文字列の詰め率を算出し、ステップＴ６で各文字の詰め量を算出する。同様の処理を繰り返して、全てのサンプル文字列について各文字の詰め量が求められると、前述した図４のステップＳ６に進んで、制御部１が配置詰め量格納部１１を参照して、各文字を詰め配置することにより各サンプル文字列を作成し、これらのサンプル文字列群を表示部１２に一括表示する。
【００６７】
図１７に、制御部１によって詰め配置された一つのサンプル文字列の模式図を示す。第２文字Ｃ２  （対象文字）は、第１文字Ｃ１  （基準文字）に対して配置詰め量Ｓ２Ａで詰め配置され、第３文字Ｃ３  （対象文字）は、第２文字Ｃ２  （基準文字）に対して配置詰め量Ｓ３Ａで詰め配置される。これにより、ベタ組文字列の状態から、ベタ組文字列長Ｌ０  とサンプル文字列長Ｌｉ  の差分である差分文字列長ＤＬに相当する総詰め量だけ文字列長が詰められ、このとき文字間の字面間隔量に応じた詰め量（字面間隔量が広いものは大きな詰め量、狭いものは小さな詰め量）によって各文字（対象文字）が配置されるので、従来から知られている均等詰めによる文字間調整のように、字面の形態によって文字間隔が広くなったり、あるいは狭くなったりすることがなく、各文字が体裁よく字詰めされる。
【００６８】
＜構成例２＞
この構成例２は、処理対象となる文字列中の隣同士の文字の字面間の文字配列方向の間隔のみならず、他の方向での間隔をも含めた２次元的な字面間隔量に着目して、各文字の詰め量を求めるものである。上述した構成例１では、その構成上、隣同士の文字（字面）が互いにくい込むような状態にまで、文字間の間隔を詰めることはできないが、この構成例２では、隣接２文字が文字配列方向にくい込んだ、いわゆる『くい込み詰め』が可能となる。
【００６９】
図１８は、構成例２に係る詰め量算出処理部２０の構成を示したブロック図である。
ドットパターン化処理部３０は、入力文字列のベクトルフォントデータを指定された文字サイズに応じたベクトルデータに変換し、さらにこのベクトルデータをドットパターンデータに変換するものである。ベクトルデータ格納部３１は、入力文字列の文字サイズに応じたベクトルデータを格納する。ドットパターンデータ格納部３２は、入力文字列のドットパターンデータを格納する。なお、ベクトルフォントデータとは、文字の字面形状を示す字面が数学的に関数で表されたものであり、その関数によって表された閉図形内が字面に相当する黒画素であり、それ以外が白画素である。また、ドットパターンデータとは、字面がビットマップ（例えば２値データの“１”など）で構成されたものである。
【００７０】
候補点ペア検出部３３は、入力文字列中の基準文字と対象文字の各ドットパターンデータをドットパターン展開メモリ３４に展開し、基準文字のドットパターンに対して対象文字のドットパターンを１ドットづつシフトさせ、そのシフトごとに、そのシフト方向と直交する方向で両ドットパターン間が最短間隔となる一対のドット（候補点ペア）を検出するものである。ここでドットパターンは、ドットパターンデータの黒画素であるドットの集まりをいう。この候補点ペア検出部３３は、請求項３に記載の発明における手段（ａ）に相当する。候補点ペア格納部３５は、検出された各候補点ペアの位置情報を格納する。
【００７１】
演算処理部３６は、基準文字と対象文字の各仮想ボディが接する状態における前記各候補点ペア間のシフト方向の間隔情報とこれに直交する方向の間隔情報とを求め、これらの間隔情報に基づいて、前記両文字の仮想ボディが接した状態から対象文字を基準文字に対して接近させたときの詰め量と、各詰め量における各候補点ペアの最短間隔である２次元的な間隔量（字面間隔量）とを各候補点ペアそれぞれについて算出し、算出された各詰め量のうち、最小となる詰め量を求め、前記字面間隔量と前記最小の詰め量との関係を表した関数（詰め調整関数）を処理対象となる入力文字列の各対象文字について算出し、各対象文字の詰め調整関数の字面間隔量を基準とする詰め量の総和を総詰め調整関数として算出し、この総詰め調整関数と前記差分文字列長格納部１０に格納された各サンプル文字列の差分文字列長とに基づき、各サンプル文字列ごとに共通の字面間隔量を算出し、この字面間隔量と前記各対象文字の詰め調整関数とに基づき、サンプル文字列ごとに各対象文字の詰め量を算出するものである。この演算処理部３６は、請求項３に記載の発明における（ｂ）〜（ｈ）に示した各機能達成手段に相当する。
【００７２】
間隔情報格納部３７は、演算処理部３６で算出された各候補点ペアの間隔情報を、詰め調整関数格納部３８は各対象文字の詰め調整関数を、総詰め調整関数格納部３９は総詰め調整関数を、それぞれ格納する。
【００７３】
以下に、図１９に示したフローチャートと、図２０〜図２２の各図を参照して、この構成例２における詰め量算出処理部２０の処理を説明する。
【００７４】
ステップＵ１では、ドットパターン化処理部３０が、文字列情報格納部４に格納された文字列データの文字コードに対応するベクトルフォントデータをフォント格納部７から読み出す。そして、読み出したベクトルフォントデータを指定された文字サイズに応じたベクトルデータにして所定の構成ドット数のドットパターンデータに変換し、これをドットパターンデータ格納部３２に格納する。
【００７５】
ステップＵ２では、候補点ペア検出部３３がドットパターン格納部３２から基準文字と対象文字の各ドットパターンデータを読み出して、これらをドットパターン展開メモリ３４に展開する。
【００７６】
ここで、上述したベクトルデータとドットパターンデータを模式的に説明する。図２０（ａ）は、配置の基準となる第１文字Ｃ１  （基準文字）と、基準文字Ｃ１  に対して仮想ボディ同士が接する状態で「横組み」で配置された第２文字Ｃ２  （対象文字）とをベクトルデータで表した模式図である。この基準文字Ｃ１  および対象文字Ｃ２  は、それぞれ１００×１００の文字サイズを有する仮想ボディＣ１ＩＢ  ，Ｃ２ＩＢ  と、その内方の字面ＦＣ１（実線の領域内），ＦＣ２（点線の領域内）とから構成されている。
【００７７】
また、図２１（ａ）に、ドットパターン展開メモリ３４に展開された基準文字と対象文字のドットパターンデータの展開状態を示す。基準文字Ｃ１  および対象文字Ｃ２  に、その字面ＦＣ１’，ＦＣ２’を構成している各ドットパターンの各ドットを識別可能なように、文字の配列方向に沿って列番号を、文字の配列方向と直交する方向に沿って行番号を割り振る。すなわち、文字Ｃ１  の字面ＦＣ１’には、文字の配列方向に沿って右側からｉ列〜ｉ−６列まで、文字Ｃ２  の字面ＦＣ２’には、左側からｊ列〜ｊ＋３列までを割り振る。また、文字の配列方向と直交する方向に沿って上端からｐ行〜ｐ＋６行を割り振る。なお、この列ではドットパターンデータの１ドットがベクトルデータの１０×１０の大きさに相当する。これを変換倍率とし、この場合は変換倍率１／１０となる。
【００７８】
ステップＵ３では、候補点ペア検出部３３が以下のようにして候補点ペアを検出する。
候補点ペア検出部３３は、ドットパターン展開メモリ３４上に展開された対象文字Ｃ２  を基準文字Ｃ１  に１ドットづつシフトして行く。このとき、両文字Ｃ１  ，Ｃ２  のドットパターンで表された字面ＦＣ１’，ＦＣ２’のうち、同列上に存在する一対のドットのうち、間隔量が最短となる一対のドットをそのシフト量における候補点ペアとする。ここで、候補点ペアの間隔量とは、２つのドットの中心間距離をドット数で表した量をいう。
【００７９】
上記のようにシフトし、計５ドット分シフトした状態を図２１（ｂ）に示す。この状態では、字面ＦＣ２’のｐ＋４行・ｊ列のドットと、字面ＦＣ１’のｐ行・ｉ列のドットからなる一対のドットａ（間隔量：４ドット）が同列上に１つだけ存在するので、この一対のドットを候補点ペアとして、その識別情報（上述した列および行番号）と前記間隔量とを候補点ペア格納部３５に記憶する。
【００８０】
さらに１ドット分シフトした状態（計６ドット分のシフト量）を図２１（ｃ）に示す。この状態では、字面ＦＣ２’のｐ＋４行・ｊ行のドットと字面ＦＣ１’のｐ＋１行・ｉ−１行のドットとからなる一対のドットｂ（間隔量：３ドット）と、字面ＦＣ２’のｐ＋４行・ｊ＋１列のドットと字面ＦＣ１’のｐ行・ｉ列のドットとからなる一対のドットｂ１  （間隔量：４ドット）とが存在する。この場合、この一対のドットｂ１  と、先の一対のドットｂの間隔量とを比較して、最短間隔である一対のドットｂが候補点ペアｂとして候補点ペア格納部３５に記憶する。
【００８１】
さらに１ドット分シフトした状態（計７ドットのシフト量、図２２（ａ）参照）では、字面ＦＣ２’のｐ＋１行・ｊ＋２列のドットと字面ＦＣ１’のｐ行・ｉ列のドットとからなる一対のドットｃ（間隔量：１ドット）と、字面ＦＣ２’のｐ＋４行・ｊ＋１列のドットと字面ＦＣ１’のｐ＋１行・ｉ−１列のドットとからなる一対のドットｃ１  （間隔量：３ドット）と、字面ＦＣ２’のｐ＋４行・ｊ列のドットと字面ＦＣ１’のｐ＋２行・ｉ−２列のドットとからなる一対のドットｃ２  （間隔量：２ドット）のうち、最短間隔である一対のドットｃが候補点ペアｃとして記憶する。
【００８２】
この候補点ペアの検出処理は、字面の一部が重複したところで終了する。隣接文字の字面が重複するまで字詰めされることは、通常の処理では行われないからである。したがって、上記の例では計８ドットのシフト（図２２（ｂ））で処理を終了する。
【００８３】
以上の処理により、シフト毎に抽出された候補点ペアａ〜ｄの各識別情報と各々の間隔量とが候補点ペア格納部３５に記憶される。
【００８４】
ステップＵ４では、演算処理部３６が、候補点ペア格納部３５に記憶された各候補点ペアの識別情報と各々の間隔量とに基づいて、図２０（ａ）に示すような「ベタ組」の状態において、各候補点ペアについて、ベクトルデータでの字面の輪郭同士の間隔に換算したシフト方向の間隔情報ｍとシフト方向と直交する方向の間隔情報ｎとを求める。候補点ペアのドットの中心座標に相当するベクトルフォントデータでの座標を基準文字Ｃ１  （Ｐａｘ，Ｐａｙ），対象文字Ｃ２  （Ｐｂｘ，Ｐｂｙ）とすると、両間隔情報ｍ，ｎは、
ｍ＝（１００−Ｐａｘ）＋Ｐｂｘ−１０  ………………  （２）
ｎ＝｜Ｐａｙ−Ｐｂｙ｜−１０  …………………………  （３）
で表すことができる。但し、Ｐａｙ＝Ｐｂｙのときはｎ＝０とする。なお、上式における数値１００は、ベクトルデータの文字サイズを示し、１０はドットパターンデータの１ドットのサイズに相当するベクトルデータ上のサイズを示す。
【００８５】
各候補点ペアのベクトルデータでのドットの中心座標〔（Ｐａｘ，Ｐａｙ），（Ｐｂｘ，Ｐｂｙ）〕を候補点ペアａ〔（７５，７５），（２５，３５）〕、候補点ペアｂ〔（６５，６５），（２５，３５）〕、候補点ペアｃ〔（７５，７５），（４５，６５）〕、候補点ペアｄ〔（６５，６５），（４５，６５）〕とすると、上記の（２），（３）式より各候補点ペアのシフト方向と間隔情報ｍとシフト方向と直交する方向の間隔情報ｎは、
候補点ペア    ｍ        ｎ
ａ          ４０      ３０
ｂ          ５０      ２０
ｃ          ６０        ０
ｄ          ７０        ０
となる。
【００８６】
以上のようにして求められた各候補点ペアの間隔情報ｍ，ｎは間隔情報格納部３７に格納される。
【００８７】
ステップＵ５では、間隔情報格納部３７に格納された各候補点ペアの間隔情報ｍ，ｎに基づき、演算処理部３６が、基準文字と対象文字の各仮想ボディが接した状態から対象文字を基準文字に対して接近させたときの詰め量と、各詰め量における各候補点ペアの最短間隔である２次元的な間隔量（字面間隔量）を各候補点ペアそれぞれついて算出する。
【００８８】
すなわち、ベクトルデータでの字面の最短間隔ｋは、
ｋ２  ＝ｍ２  ＋ｎ２    ……………………………………  （４）
で算出することができる（図２０（ａ））。
【００８９】
さらに対象文字Ｃ２  は基準文字Ｃ１  に対して詰め量が「０」である「ベタ組」の状態から、ある詰め量Ｓで配置されるが、この詰め量Ｓによりシフト方向の間隔情報ｍは（ｍ−Ｓ）と表すことができる（図２０（ｂ））。したがって、上記の（４）式は、
ｋ２  ＝（ｍ−Ｓ）２  ＋ｎ２    …………………  （５）
となる。この関係式に基づいて各候補点ペアの最短間隔ｋと詰め量Ｓとの関係をグラフ化すると図２３（ａ）のようになる。
【００９０】
この関係式を最短間隔ｋから詰め量Ｓを求める関係式に変換すると、
Ｓ＝｜ｍ±√（ｋ２  −ｎ２  ）｜  ……………………  （６）
となる。
つまり、このステップＵ５では、演算処理部３６が各候補点ペアについて上記のような関係式を求めることになる。
【００９１】
一例として、字面間隔量ｋ＝３０となる詰め量Ｓを求めてみる。上記の両間隔情報ｍ，ｎと（６）式より、各候補点ペアの字面同士の最短間隔が字面間隔ｋとなる詰め量Ｓは、
候補点ペア      詰め量Ｓ
ａ            ４０
ｂ            ７２，２８
ｃ            ９０，３０
ｄ          １００，４０
となる。
【００９２】
ステップＵ６では、演算処理部３６は、ステップＵ５で得られた各候補点ペアごとの関係式（６）に基づき、ある字面間隔量ｋを得ることができる最小の詰め量Ｓを求める。上記のｋ＝３０の場合の例で説明すれば、この算出された詰め量Ｓのうち、候補点ペアｂから算出された最小の詰め量Ｓｍｉｎ  ＝２８を選択する。なぜなら、対象文字を詰め量Ｓ＝２８で詰め配置すれば、基準文字と対象文字とを字面間隔量ｋ＝３０で配置することができるからである（図２０（ｃ）参照）。
【００９３】
この最小の詰め量Ｓｍｉｎ  でもって文字を配置することの理由について、図２３（ａ）の詰め量Ｓと最短間隔ｋとの関係を示すグラフを参照して説明する。
このグラフから、詰め量Ｓが０以上２０以下（０≦Ｓ≦２０：詰め量範囲▲１▼）の場合は候補点ペアａが最短間隔となり、２０以上３６以下（２０≦Ｓ≦３６：詰め量範囲▲２▼）の場合は候補点ペアｂ、３６以上６０以下（３６≦Ｓ≦６０：詰め量範囲▲３▼）の場合は候補点ペアｃが最短間隔となることが分かる。また、詰め量Ｓが２０の場合は、ａ，ｂの２つの候補点ペアが共に最短間隔となり、詰め量Ｓが３６の場合は、ｂ，ｃの２つの候補点ペアが共に最短間隔となることが分かる。
【００９４】
字面同士の２次元的な最短間隔を字面間隔量ｋ＝３０にするために、上記のように算出された各詰め量Ｓのうち最小でない詰め量Ｓでもって対象文字Ｃ２  を基準文字Ｃ１  に対して配置した場合を考えてみる。例えば、上記の候補点ペアｄで算出された詰め量Ｓ「４０」で配置したとすると、確かに候補点ペアｄについては最短間隔が字面間隔量ｋに等しい「３０」となるが、候補点ペアｃでは最短間隔が字面間隔ｋよりも短い「２０」となる。すなわち、最小でない詰め量で配置すると字面間隔が字面間隔量ｋよりも短くなるところが現れるので、算出された詰め量Ｓのうち最小の詰め量Ｓｍｉｎ  でもって文字を配置する。したがって、基準文字Ｃ１  と対象文字Ｃ２  との組み合わせにおいては、字面間隔量ｋと詰め量Ｓとの関係は、図２１（ａ）の各詰め量範囲▲１▼〜▲３▼で最短の字面間隔量ｋとなる候補点ペアａ，ｂ，ｃの特性を接続したような図２１（ｂ）の関係で表すことができる。これより本例では、字面間隔量が「０」、すなわち、字面が重複したときの候補点ペアｄが使われないことがわかるが、両文字の字面の形状によっては重複する候補点ペアが必要な場合もありうる（両文字の字面の対向部が平行な場合等）。
【００９５】
ステップＵ７では、ステップＵ６で求められた最短間隔（字面間隔量）を与える最小の詰め量に基づき、図２３（ｂ）に示すような最小の詰め量Ｓと最小の詰め量における最短間隔（字面間隔量）との関係を表す詰め調整関数Ｓ（ｋ）を、各対象文字について算出する。すなわち、第１文字Ｃ１  （基準文字）に対して詰める第２文字Ｃ２  （対象文字）の関数Ｓ２  （ｋ）を求め（これを模式的に図２４（ａ）に示す）、同様にして第２文字Ｃ２  （基準文字）に対して詰める第３文字Ｃ３  （対象文字）の関数Ｓ３  （ｋ）を算出する（これを模式的に図２４（ｂ）に示す）。そして、各対象文字の詰め調整関数Ｓ（ｋ）をテーブル形式で詰め調整関数格納部３８に記憶する。図２５（ａ）に詰め調整関数Ｓ２  （ｋ）のテーブルを、図２５（ｂ）に詰め調整関数Ｓ３  （ｋ）のテーブルをそれぞれ模式的に示す。
【００９６】
ステップＵ８では、詰め調整関数格納部３８に記憶された各対象文字の詰め調整関数の総和（総詰め調整関数ΣＳｉ  （ｋ））を算出する（これを模式的に図２４（ｃ）に示す）。この総詰め調整関数ΣＳｉ  （ｋ）もテーブル形式で総詰め調整関数格納部３９に記憶する。図２５（ｃ）に総詰め調整関数ΣＳｉ  （ｋ）のテーブルを模式的に示す。
【００９７】
ステップＵ９では、総詰め調整関数格納部３９に記憶された総詰め調整関数ΣＳｉ  （ｋ）に基づいて、その総詰め量ＳＴ  が差分文字列長格納部１０に記憶された各サンプル文字列の差分文字列長ＤＬに等しくなる最短間隔ｋ（最短間隔ｋＡ  ）を算出する（図２４（ｃ）参照）。実際には総詰め調整関数格納部３９に格納されているテーブル（図２５（ｃ）を参照）のうち、総詰め量ΣＳｉ  の項目が差分文字列長ＤＬに一致する最短間隔ｋを探し、これをそのサンプル文字列の各対象文字に共通の最短間隔（２次元の字面間隔量）ｋＡ  とする。
【００９８】
ステップＵ１０では、ステップＵ９で各サンプル文字列ごとに求められた各対象文字について共通の最短間隔ｋＡ  と、詰め調整関数格納部３８に記憶された各対象文字の各詰め調整関数Ｓ２  （ｋ），Ｓ３  （ｋ）とに基づいて、最短間隔ｋＡ  となる各詰め量ＳＡ２，ＳＡ３を求める。実際には、演算処理部３６が、詰め調整関数格納部２２に格納されているテーブル（図２５（ａ），（ｂ）を参照）のうち、最短間隔ｋの項目が最短間隔ｋＡ  に一致する詰め量Ｓ２  ，Ｓ３  を探し、これを各対象文字の配置詰め量ＳＡ２，ＳＡ３とする。このようにして求められた配置詰め量ＳＡ２，ＳＡ３は、図１に示した配置詰め量格納部１１に格納される。
【００９９】
以下、図４に示したステップＳ６に進み、入力文字列の各文字の詰め配置を行って各サンプル文字列を作成し、これらのサンプル文字列群を表示部１２に一括表示する。
【０１００】
図２６に、各対象文字（第２文字Ｃ２  ，第３文字Ｃ３  ）を対応する各基準文字（第１文字Ｃ１  ，第２文字Ｃ２  ）に対して、対応する個々の配置詰め量ＳＡ２，ＳＡ３で配置した状態を模式的に示す。この各対象文字の詰め配置後は、隣接文字間の字面同士の〔２次元的な〕最短間隔は全て同じ（ｋＡ  ）となり、ベタ組文字列の状態から文字詰めして、サンプル文字列の文字列長Ｌｉ  になるまで、字面同士が入り組むような「くい込み」を許容しつつ体裁良く文字列長を調整することができる。
【０１０１】
なお、本実施例では、サンプル文字列群を得るための調整条件として文字列長を優先させ、その一例として、最大文字列長と、文字列長調整範囲と、文字列長調整ピッチとを設定した。しかし、文字列長を優先させた調整条件としては上記のものに限らず、以下のような調整条件を設定するようにしてもよい。
【０１０２】
（１）  最小文字列長と、この最小文字列長を基準とした文字列長調整範囲と、文字列長調整ピッチとを設定する。
（２）  中間文字列長と、この中間文字列長を中心として振り分けられる文字列長調整範囲と、文字列長調整ピッチとを設定する。
上記（１）  ，（２）  の指定手法によれば、第１実施例と同様に、得られるサンプル文字列の個数は、文字列長調整範囲と文字列長調整ピッチに応じて変わる。
【０１０３】
（３）  最大文字列長と、この最大文字列長を基準とした文字列長調整範囲と、サンプル文字列の個数とを設定する。
（４）  最小文字列長と、この最小文字列長を基準とした文字列長調整範囲と、サンプル文字列の個数とを設定する。
（５）  中間文字列長と、この中間文字列長を中心として振り分けられる文字列長調整範囲と、サンプル文字列の個数とを設定する。
上記（３）  〜（５）  の指定手法によれば、サンプル文字列の調整ピッチは、文字列長調整範囲とサンプル数に応じて変わる。
【０１０４】
（６）  最大文字列長と、文字列長調整ピッチと、サンプル文字列の個数とを設定する。
（７）  最小文字列長と、文字列長調整ピッチと、サンプル文字列の個数とを設定する。
（８）  中間文字列長と、文字列長調整ピッチと、サンプル文字列の個数とを設定する。
上記（６）  〜（８）  の指定手法によれば、サンプル文字列の調整範囲は、文字列長調整ピッチとサンプル数に応じて変わる。
【０１０５】
（９）  最大文字列長と、最小文字列長と、文字列長調整ピッチとを設定する。
【０１０６】
（１０）最大文字列長と、最小文字列長と、サンプル文字列の個数とを設定する。
【０１０７】
また、上述したような文字列長を優先させた調整条件は、必ずしも３つの条件をオペレータ自身が入力指定する必要はなく、最大文字列長（あるいは、最小文字列長、中間文字列長）はオペレータによって指定し、他の２つの条件である文字列長調整範囲と文字列長調整ピッチ（あるいは、文字列長調整範囲とサンプル数、文字列長調整ピッチとサンプル数）については、一方あるいは両方の条件を予めデフォルト値として装置内に記憶設定しておくようにしてもよい。
【０１０８】
＜第２実施例＞
本実施例は、得ようとするサンプル文字列の各文字間距離の最大値および最小値と、文字間距離調整ピッチとからなる調整条件を指定することにより、画面上に複数個のサンプル文字列を表示し、その中から最適のサンプル文字列をオペレータによって選択させるものである。この装置は、文字列長よりも文字間距離を優先させてカーニング処理したい場合に有効である。以下、具体的に説明する。
【０１０９】
図２７は第２実施例装置の概略構成を示すブロック図である。図１と同一符号で示した部分は、第１実施例と同様の構成部分であるので、ここでは第２実施例の特徴的な構成部分を説明する。
【０１１０】
本実施例の調整条件入力部５から入力される調整条件は、文字間距離に関連した以下の３つの条件である（図２８参照）。
▲１▼  最大文字間距離ＤＭＡＸ  ：文字間隔が最も広いサンプル文字列の各文字間の距離である（図２６の例ではサンプル文字列ＳＣ１の文字間隔）。
▲２▼  最小文字間距離ＤＭＩＮ  ：文字間隔が最も狭いサンプル文字列の各文字間の距離である（図２６の例ではサンプル文字列ＳＣ５の文字間隔）。
▲３▼  文字間隔調整ピッチＰＤ  ：最大文字間距離ＤＭＡＸ  から最小文字間距離ＤＭＩＮ  の間での字面間の距離の調整ピッチである。
【０１１１】
文字間距離としては、図２８に示したように各文字の文字配列方向の１次元距離を指定する手法と、図２９に示したように各文字の字面Ｆ（Ｆ１  ，Ｆ２  ）の２次元的な字面間距離ｋを指定する手法とがある。以下では、前者の字面間の１次元距離を文字間距離として指定する場合を例に採って説明する。
【０１１２】
図２７に示した文字間距離格納部１５は、調整条件入力部５から入力される調整条件に基づいて得られた各サンプル文字列の文字間距離を記憶するものである。この文字間距離格納部１５は、請求項４に記載の発明における文字間距離格納部に相当する。また、本実施例の詰め量算出処理部２０は、文字間距離格納部１５を参照して、各サンプル文字列ごとの各文字の詰め量を算出し、その詰め量を配置詰め量格納部１１に記憶する。
【０１１３】
以下、図３０のフローチャートに従って第２実施例装置での処理を説明する。
ステップＶ１〜Ｖ３では、第１実施例装置と同様に、オペレータが処理の対象である文字列データファイルを文字列入力部２を介して入力するとともに、文字サイズ指示部３を介して文字サイズを指示する。そして、これらの文字列情報を文字列情報格納部４に格納した後、表示部１２のＣＲＴ画面をサンプル文字列表示用のサブ画面に切り換えて、ベタ組の文字列を表示する（図６参照）。
【０１１４】
ステップＶ４では、オペレータがカーニング処理の調整条件を調整条件入力部５を介して入力する。調整条件は、上述したように最大文字間距離ＤＭＡＸ  、最小文字間距離ＤＭＩＮ  、文字間隔調整ピッチＰＤ  の３つである。これらの調整条件は調整条件格納部６に格納される。
【０１１５】
ステップＶ５では、制御部１（請求項４に記載の発明における文字間距離算出部に相当する）が調整条件格納部６を参照し、各サンプル文字列の文字間距離Ｄｎ  （ｎはサンプル文字列の番号）を指定された範囲内で求める。文字間距離Ｄｎ  は、Ｄｎ  ≧ＤＭＩＮ  を満たす範囲内で、次式より求められる。
Ｄｎ  ＝ＤＭＡＸ  −（ｎ−１）×ＰＤ    ……………………  （７）
上式（７）により求められる文字間距離Ｄ１  ，Ｄ２  ，Ｄ３  ，…を下記に示す（図２８参照）。これらはサンプル文字列の選択番号ｎに対向付けて文字間距離格納部１５に格納される。
Ｄ１  ＝ＤＭＡＸ  
Ｄ２  ＝ＤＭＡＸ  −Ｐ
Ｄ３  ＝ＤＭＡＸ  −２Ｐ
………
【０１１６】
ステップＶ６では、詰め量算出処理部２０が、文字間距離格納部１５を参照して、各サンプル文字列の文字間距離がＤ１  ，Ｄ２  ，Ｄ３  …となるように、各対象文字の詰め量を求める処理（詰め量算出処理）を行う。以下、図３１を参照して説明する。
【０１１７】
簡単のためにステップＶ１で入力された文字列が図３１（ａ）に示すような３文字（第１文字Ｃ１  ，第２文字Ｃ２  ，第３文字Ｃ３  ）からなる場合を例に採って説明する。なお、各文字の仮想ボディと字面との間隔のうち、文字の配列方向の間隔で行頭側にある間隔をａｍ  、行末側にある間隔をｂｍ  （添字ｍは文字番号を示す）とする。このベタ組文字列の各文字間距離をステップＶ５で求められた文字間距離Ｄにするための、文字Ｃ２  ，Ｃ３  の詰め量Ｓ２  ，Ｓ３  は次式（８），（９）により求められる（図３１（ｂ）参照）。
Ｓ２  ＝（ｂ１  ＋ａ２  ）−Ｄ        ……………………  （８）
Ｓ３  ＝（ｂ２  ＋ａ３  ）−Ｄ        ……………………  （９）
【０１１８】
文字間距離Ｄが異なる各サンプル文字列ごとに求められた各文字の詰め量Ｓ２  ，Ｓ３  ，…は配置詰め量格納部１１に格納される（図７参照）。
【０１１９】
ステップＶ７〜Ｖ９は、第１実施例と同様に進められる。すなわち、配置詰め量格納部１１に格納された各サンプル文字列の各対象文字の詰め量Ｓ２  ，Ｓ３  ，…を順に読み出し、これらの詰め量に従ってベタ組文字列状態の各対象文字を基準文字に対して詰め配置してサンプル文字列群を作成し、これらのサンプル文字列群を表示部１２に一括表示する（図８参照）。オペレータが表示部１２のサブ画面を見ながら、適当な一つのサンプル文字列を、サンプル文字列選択部１４を操作することにより選択する。一つのサンプル文字列が選択されると表示部１２の表示を編集用のメイン画面に戻し、メイン画面に表示されている台紙上の指定された位置に、選択されたサンプル文字列を表示して、一連の処理を終了する。
【０１２０】
次に、文字間距離として、図２９に示したような各文字の字面Ｆ（Ｆ１  ，Ｆ２  ）間の２次元的な字面間距離ｋが指定された場合における詰め量算出処理部２０による詰め量算出処理を説明する。
【０１２１】
この例における詰め量算出処理部２０の構成は、図１８に示した詰め量算出処理部２０とほぼ同様であるので図示を省略する。ただし、この例では、文字間距離格納部１５に格納された各サンプル文字列の文字間距離を、詰め調整関数格納部３８に格納された各対象文字の詰め調整関数に与えことにより、各対象文字の詰め量を求めることができるので、演算処理部３６の機能のうち、総詰め調整関数を求める機能は必要ではなく、また、同様の理由により、総詰め調整関数格納部３９も必要でない。
【０１２２】
各サンプル文字列の文字間距離を求めるまでの処理は、図３０に示したステップＶ１〜Ｖ５と同様に進められる。以下、ステップＵ６で行われる配置詰め量の算出処理を図３２示したフローチャートを参照して説明する。
【０１２３】
ステップＷ１〜Ｗ７は、図１９で説明したステップＵ１〜Ｕ７の各処理と同様に進められ、処理対象となる文字列の各対象文字について、図２４（ａ），（ｂ）および図２５（ａ），（ｂ）で説明したような、詰め量Ｓと最短間隔ｋとの関係を示した詰め調整関数Ｓｉ  （ｋ）を求める。
【０１２４】
次のステップＷ８では、各対象文字ごとの詰め調整関数Ｓｉ  （ｋ）の最短間隔ｋとして、図３０のステップＵ５で求められた各サンプル文字列の文字間距離Ｄ１  ，Ｄ２  ，…を順に与えることにより、各サンプル文字列の各対象文字について詰め量Ｓを求めて配置詰め量格納部１１に格納する。
【０１２５】
以下、図３０に示したステップＵ７〜Ｕ９と同様に、配置詰め量格納部１１を参照して各サンプル文字列毎に対象文字を詰め配置してサンプル文字列群を作成し、このサンプル文字列群を表示部１２に一括表示する。そして、オペレータによって一つのサンプル文字列が選択されると、そのサンプル文字列をメイン画面上に表示する。
【０１２６】
なお、本実施例では、サンプル文字列群を得るための調整条件として文字間距離を優先させ、その一例として、最大文字間距離と、最小文字間距離と、文字間隔調整ピッチとを設定した。しかし、文字間距離を優先させた調整条件としては上記のものに限らず、以下のような調整条件を設定するようにしてもよい。
【０１２７】
（１）  最大文字間距離と、この最大文字間距離を基準とした文字間距離調整範囲と、文字間距離調整ピッチとを設定する。
（２）  最小文字間距離と、この最小文字間距離を基準とした文字間距離調整範囲と、文字間距離調整ピッチとを設定する。
（３）  中間文字間距離と、この中間文字間距離を中心として振り分けられる文字間距離調整範囲と、文字間距離調整ピッチとを設定する。
上記（１）  〜（３）  の指定手法によれば、得られるサンプル文字列の個数は、文字間距離調整範囲と文字間距離調整ピッチに応じて変わる。
【０１２８】
（４）  最大文字間距離と、この最大文字間距離を基準とした文字間距離調整範囲と、サンプル文字列の個数とを設定する。
（５）  最小文字間距離と、この最小文字間距離を基準とした文字間距離調整範囲と、サンプル文字列の個数とを設定する。
（６）  中間文字間距離と、この中間文字間距離を中心として振り分けられる文字間距離調整範囲と、サンプル文字列の個数とを設定する。
上記（４）  〜（６）  の指定手法によれば、サンプル文字列の文字間距離調整ピッチは、文字間距離調整範囲とサンプル数に応じて変わる。
【０１２９】
（７）  最大文字間距離と、文字間距離調整ピッチと、サンプル文字列の個数とを設定する。
（８）  最小文字間距離と、文字間距離調整ピッチと、サンプル文字列の個数とを設定する。
（９）  中間文字間距離と、文字間距離調整ピッチと、サンプル文字列の個数とを設定する。
上記（７）  〜（９）  の指定手法によれば、サンプル文字列の文字間距離調整範囲は、文字間距離調整ピッチとサンプル数に応じて変わる。
【０１３０】
（１０）最大文字間距離と、最小文字間距離と、サンプル文字列の個数とを設定する。
【０１３１】
また、上述したような文字間距離を優先させた調整条件は、必ずしも３つの条件をオペレータ自身が入力指定する必要はなく、最大間文字距離（あるいは、最小文字間距離、中間文字間距離）はオペレータによって指定し、他の２つの条件である文字間距離調整範囲と文字間距離調整ピッチ（あるいは、文字間距離調整範囲とサンプル数、文字間距離調整ピッチとサンプル数）については、一方あるいは両方の条件を予めデフォルト値として装置内に記憶設定しておくようにしてもよい。
【０１３２】
さらに、上述した第１実施例および第２実施例では、最初に設定された調整条件に従ってサンプル文字列を表示するように構成したが、本発明はこれに限定されず、次のように広い範囲の調整条件と狭い範囲の調整条件とを入力設定できるようにしてもよい。例えば、最初に広い範囲で設定された調整条件により得られたサンプル文字列群を表示する。そして、オペレータはこのサンプル文字列群の中から最も適当と思われるサンプル文字列を選択するとともに、このサンプル文字列を基準とした狭い範囲の調整条件を入力設定する。結果、最初に選択されたサンプル文字列を基準として更に微調整されたサンプル文字列群が表示される。オペレータは、このサンプル文字列群の中から最も適当なサンプル文字列を最終的な文字列として指定する。このようにすることにより、一層適切なサンプル文字列を得ることができる。
【０１３３】
【発明の効果】
以上の説明から明らかなように、本発明によれば次のような効果を奏する。
請求項１に記載の発明によれば、オペレータがカーニング処理の調整条件を、ある文字列長を基準とした範囲として指定すれば、その調整条件の範囲に入るように文字列長が微調整された複数種類のサンプル文字列が一括表示される。結果、オペレータは、そのサンプル文字列群の中から最も適当なサンプル文字列を選択できるので、従来装置のようにカーニング処理の条件を変更して繰り返し入力設定するという手間が省け、トータル的には組版編集処理を円滑に行うことができる。また、本発明によれば、カーニング処理の調整条件を、文字列長を優先させて指定することができるので、文字列長に着目して組版編集したい場合に有効である。
【０１３４】
請求項２に記載の発明によれば、処理対象となる入力文字列の隣接２文字（基準文字と対象文字）間の文字配列方向の字面間隔に着目し、入力文字列中の各字面間隔を同じ割合で詰めるための共通の詰め率をサンプル文字列ごとに求めてサンプル文字列群を得ているので、文字間の字面間隔に応じた詰め量（字面間隔が広いものは大きな詰め量、狭いものは小さな詰め量）によって各文字が配置される。したがって、従来から知られている均等詰めによる文字間調整のように、字面の形態によって文字間隔が広くなったり、あるいは狭くなったりすることがなく、各文字が体裁よく字詰めされた文字列が得られる。
【０１３５】
請求項３に記載の発明によれば、入力文字列の基準文字に対して対象文字を文字配列方向にシフトさせたときに、そのシフト量（詰め量）に応じて変化する両文字の２次元的な字面間隔量に着目し、各サンプル文字列の文字列長が、指定された調整条件に応じた文字列長になるように、各サンプル文字列ごとに共通の２次元的な字面間隔量で文字間調整しているので、サンプル文字列の各文字が体裁よく字詰めされるばかりでなく、隣接文字が『くい込む』状態に配置されたサンプル文字列も得ることができ、多彩なカーニング処理を実現することができる。
【０１３６】
請求項４に記載の発明によれば、請求項１に記載の発明と同様に、一括表示されたサンプル文字列群の中から最も適当なサンプル文字列を選択できるので、組版編集処理を円滑に行うことができる。特に、本発明によれば、カーニング処理の調整条件を、文字間距離を優先させて指定することができるので、文字間隔に着目して組版編集したい場合に有効である。
【０１３７】
請求項５に記載の発明によれは、文字間隔を優先させた組版編集処理を円滑に行うことができるとともに、隣接文字が『くい込む』状態に配置されたサンプル文字列も得ることができ、多彩なカーニング処理を実現することができる。
【図面の簡単な説明】
【図１】第１実施例に係る文字組版編集装置の構成を示したブロック図である。
【図２】（ａ）はベタ組文字列、（ｂ）はサンプル文字列群の説明図である。
【図３】フォント格納部の模式図である。
【図４】第１実施例装置の処理手順を示したフローチャートである。
【図５】文字列情報格納部の模式図である。
【図６】ベタ組文字列を表示したサブ画面の例である。
【図７】配置詰め量格納部の模式図である。
【図８】サンプル文字列群を一括表示したサブ画面の例である。
【図９】詰め量算出処理部の構成例１のブロック図である。
【図１０】構成例１の配置詰め量算出処理のフローチャートである。
【図１１】サンプル文字列長格納部の模式図である。
【図１２】構成例１により字詰めされる文字列の一例である。
【図１３】（ａ）はベタ組状態の基準文字と対象文字の説明図、（ｂ）字詰めされた基準文字と対象文字の説明図である。
【図１４】構成例１の詰め調整関数の一例である。
【図１５】構成例１の詰め調整関数の別の例である。
【図１６】構成例１の総詰め調整関数の例である。
【図１７】字詰めされたサンプル文字列の例である。
【図１８】詰め量算出処理部の構成例２のブロック図である。
【図１９】構成例２による配置詰め量算出処理のフローチャートである。
【図２０】（ａ），（ｂ），（ｃ）はそれぞれ配置詰め量算出処理の説明に供する基準文字と対象文字のベクトルデータの模式図である。
【図２１】（ａ），（ｂ），（ｃ）はそれぞれ配置詰め量算出処理の説明に供する基準文字と対象文字のドットパターンの模式図である。
【図２２】（ａ），（ｂ）はそれぞれ配置詰め量算出処理の説明に供する基準文字と対象文字のドットパターンの模式図である。
【図２３】（ａ）は構成例２の詰め調整関数算出処理の説明に供する図、（ｂ）は詰め調整関数の一例である。
【図２４】（ａ），（ｂ）はそれぞれ詰め調整回数の例、（ｃ）は総詰め調整関数の一例である。
【図２５】（ａ），（ｂ）は詰め調整関数格納部の模式図、（ｃ）は総詰め調整関数格納部の模式図である。
【図２６】構成例２で字詰めされた基準文字と対象文字の例である。
【図２７】第２実施例に係る文字組版編集装置の構成を示したブロック図である。
【図２８】第２実施例で得られるサンプル文字列群の説明図である。
【図２９】文字間距離の指定手法の一例を示す図である。
【図３０】第２実施例の処理手順を示したフローチャートである。
【図３１】第２実施例における配置詰め量算出処理の一例の説明図である。
【図３２】第２実施例における配置詰め量算出処理の別の例の説明に供するフローチャートである。
【図３３】日本語の文字の構成要素を示した模式図である。
【符号の説明】
１…制御部
２…文字列入力部
３…文字サイズ指示部
４…文字列情報格納部
５…調整条件入力部
６…調整条件格納部
７…フォント格納部
８…ベタ組文字列長格納部
９…サンプル文字列長格納部
１０…差分文字列長格納部
１１…配置詰め量格納部
１２…表示部
１３…表示制御部
１４…サンプル文字列選択部
１５…文字間距離格納部
１６…出力部
２０…詰め量算出処理部
【図１】
0003544721.tif 000003
【図２】
0003544721.tif 000004
【図３】
0003544721.tif 000005
【図５】
0003544721.tif 000006
【図４】
0003544721.tif 000007
【図６】
0003544721.tif 000008
【図８】
0003544721.tif 000009
【図７】
0003544721.tif 000010
【図９】
0003544721.tif 000011
【図１０】
0003544721.tif 000012
【図１１】
0003544721.tif 000013
【図１２】
0003544721.tif 000014
【図１３】
0003544721.tif 000015
【図１４】
0003544721.tif 000016
【図１５】
0003544721.tif 000017
【図１６】
0003544721.tif 000018
【図１７】
0003544721.tif 000019
【図１８】
0003544721.tif 000020
【図１９】
0003544721.tif 000021
【図２０】
0003544721.tif 000022
【図２１】
0003544721.tif 000023
【図２２】
0003544721.tif 000024
【図２３】
0003544721.tif 000025
【図２４】
0003544721.tif 000026
【図２５】
0003544721.tif 000027
【図２６】
0003544721.tif 000028
【図２７】
0003544721.tif 000029
【図２８】
0003544721.tif 000030
【図２９】
0003544721.tif 000031
【図３１】
0003544721.tif 000032
【図３０】
0003544721.tif 000033
【図３２】
0003544721.tif 000034
【図３３】
0003544721.tif 000035