JPH07195652A - カーニング処理方法 - Google Patents

カーニング処理方法

Info

Publication number
JPH07195652A
JPH07195652A JP5354144A JP35414493A JPH07195652A JP H07195652 A JPH07195652 A JP H07195652A JP 5354144 A JP5354144 A JP 5354144A JP 35414493 A JP35414493 A JP 35414493A JP H07195652 A JPH07195652 A JP H07195652A
Authority
JP
Japan
Prior art keywords
character
thickening
pattern
characters
kerning
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP5354144A
Other languages
English (en)
Other versions
JP2962392B2 (ja
Inventor
Gen Nagamura
玄 長村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dainippon Screen Manufacturing Co Ltd
Original Assignee
Dainippon Screen Manufacturing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dainippon Screen Manufacturing Co Ltd filed Critical Dainippon Screen Manufacturing Co Ltd
Priority to JP5354144A priority Critical patent/JP2962392B2/ja
Publication of JPH07195652A publication Critical patent/JPH07195652A/ja
Application granted granted Critical
Publication of JP2962392B2 publication Critical patent/JP2962392B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Controls And Circuits For Display Device (AREA)
  • Character Spaces And Line Spaces In Printers (AREA)

Abstract

(57)【要約】 【目的】 どのような文字同士の組合せにも適用できる
カーニング処理を提供する。 【構成】 カーニング演算コントローラ1は、基準間隔
設定メモリ5に格納された、基準間隔に基づいて、基準
文字と対象文字の字面の所定量の太らせ処理を行なう。
両文字の太らせパターン同士が接する位置までの移動量
を、太らせパターン列展開メモリ16上で求める。両文
字の太らせパターンが接する位置から、さらに、両文字
の太らせパターンが重複するように所定距離近接させ、
パターン重複面積を算出し、文字枠重複面積に対する割
合を隣接強度として求める。そして、前記算出された移
動量とこの隣接強度による補正量とに基づいて、対象文
字を詰めて配置するので、文字同士の視覚的影響の度合
いに応じたカーニング処理が行なわれる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、デスク・トップ・パブ
リッシング(DTP)等で利用される文字組版編集装置
の文字組版等に係り、特に文字詰め処理を行なうカーニ
ング処理方法に関する。
【0002】
【従来の技術】従来の文字組版編集装置等においては、
隣接する文字の形状を考慮して、文字と文字との間隔を
当初設定されたものよりも詰めて、視覚的に自然な文字
間隔を得るように文字詰め処理(カーニング処理)が行
なわれている。
【0003】このカーニング処理は、欧文(アルファベ
ット)等においては、一般的に、特定の文字組合せ(カ
ーニング・ペア)を予め表形式(カーニング・ペア・テ
ーブル)で記憶しておき、この特定組合せのカーニング
・ペアについてのみ文字間隔を詰める処理が行なわれ
る。和文においては、一般的に、縦書き・横書き共にオ
ペレータの技量に依存する手作業によって行なわれてお
り、「詰め組み」や「くい込み」などと称されている。
【0004】しかし、上記手法においては、カーニング
・ペアについて字詰め量(間隔)を記憶しておかなけれ
ばならず、カーニング処理を施す文字組合せが増大する
に従って、字詰め量に関する記憶容量が大幅に増大する
という問題点があり、和文においては、作業効率が低い
という問題点がある。そこで、上記の問題点を解決する
ために和文,欧文共に適用できて自動的にカーニング処
理を行なう方法が、例えば、特開平2−243343号
公報に開示されている。このカーニング処理方法は、例
えば、文字の横組みの場合には、隣接する文字におい
て、文字を構成している黒画素同士の横方向(文字配列
方向)の最小間隔を求め、この求められた間隔が基準の
間隔になるように文字を配置するものである。
【0005】
【発明が解決しようとする課題】しかしながら、このよ
うな構成を有する従来例の場合には、次のような問題が
ある。
【0006】上述したカーニング処理方法によれば、例
えば、文字間隔を示す模式図の図20(a)では、配置
が確定している文字CH1(基準文字)に対して、配置
を行なおうとしている文字CH2(対象文字)を、デザ
イナー等が予め指定する基準間隔aで配置することは可
能であるが、同図(b)のように文字の配列方向以外の
基準間隔bで配置することは不可能である。
【0007】また、間隔aで全ての文字を配置しても各
文字間には凹凸による起伏があるので、視覚的には必ず
しも見栄えのするカーニングはできない。
【0008】本発明は、このような事情に鑑みてなされ
たものであって、和文,欧文共に適用でき、どのような
文字同士の組合せにおいても視覚的に自然なカーニング
処理を施すことができるカーニング処理方法を提供する
ことを目的とする。
【0009】
【課題を解決するための手段】一般に、文字と文字の間
隔を視覚的に自然な状態に調整するカーニング処理を行
なうためには、これらの対象となる隣あう文字同士の視
覚的影響の度合い(以下、隣接強度と称する)を考慮
し、この度合いに基づいて文字間隔を調整する処理をお
こなう必要があることが経験的に認められている。最適
なカーニング処理を自動的に行うためには、視覚的な隣
接強度を定量化する必要がある。本発明者は、以下の知
見に基づいて隣接強度の定量化を図った。
【0010】図19の符号f1〜f5は、文字パターン
部(一字面部)を図形的に表し、H’はその文字パター
ン部の高さを表したもので、外枠の各図形IBは、それ
ぞれを文字として扱う文字枠を表している。また、符号
1 〜d4 は、各文字パターン部f1〜f5の間隔を示
し、符号P1 〜P5 は、一例として各文字パターン部f
1〜f5の文字枠IBが、その左下を基準点として配置
される座標を示す。
【0011】図19(a)は、各文字をいわゆるベタ組
み(各文字の送り量がRであり、文字枠同士が隣接する
状態)で配列した状態を表しており、今この状態から各
文字間を詰めて配列する場合、各文字同士の隣接強度は
>>>の順になることは明白であり、従って逆
に→→→の順に詰め方を適宜大きくすれば見栄
えが良くなることが判る。一方、図19(b)は、これ
らの文字パターン部があえて重複するように、各文字パ
ターン部同士が接する状態から一定の距離(重なり幅
r)だけ相互に詰めた状態を表すもので、各重複部はハ
ッチングで示してある。
【0012】この図19(b)を見れば明らかなように
上記の隣接強度は、各重複部の面積の大きさに相応して
いることがわかる。つまりはこの重複部の面積をパラメ
ータとしてその値が小さい程詰めて配置するように制御
すればよいことがわかる。尤も、面積値だけ種々の文字
の大きさや書体に対して詰め方を同じくは制御できない
ので、上記の「文字重複部の面積」の「文字枠の重複部
の面積(=図中Sref)」に対する割合で詰め対象とな
る文字の隣接強度を定量化し、これを制御パラメータと
している。
【0013】なお、本発明では、本来の文字部を一定基
準で一旦太らせたものを上記の文字部とし、この太らせ
た文字部の隣接状態を文字詰めの基準としている。ま
た、その隣接状態は図19のような「横」配列方向だけ
でなく、図20(b)のような場合も含めて文字パター
ン同士の最も接近する部分での隣接状態としている。
【0014】本発明は、以上の知見に基づいてなされた
もので、すなわち、その中に文字パターン(字面)を配
置した矩形の文字枠(仮想ボディ)に基づいて、文字列
の各文字を所定の配列方向に配置するときに、既に配置
位置が確定している基準文字に対して、隣接して配置し
ようとする対象文字の配置位置を調整するカーニング処
理方法であって、前記基準文字と前記対象文字の字面同
士の基準間隔を指定する過程と、前記両文字を太らせた
ときの太らせ量の和が前記指定された基準間隔に等しく
なるように、前記基準文字と前記対象文字の字面を所定
量太らせる過程と、前記太らせ処理後の対象文字の太ら
せパターンを前記太らせ処理後の基準文字の太らせパタ
ーンに向けて移動させて、前記両文字の太らせパターン
が接する位置までの対象文字の移動量を求める過程と、
前記両文字の太らせパターンが接する位置から前記両文
字の太らせパターンが重複するように対象文字の太らせ
パターンをさらに所定の距離だけ移動させる過程と、前
記過程で両文字の太らせパターン同士の重複面積と両文
字枠同士の重複面積をそれぞれ算出する過程と、前記移
動量と、前記パターン同士の重複面積の前記文字枠同士
の重複面積に対する割合の逆数に基づく補正量と、に基
づいて、前記基準文字に対する前記対象文字の配置位置
を算出する過程と、を含むことを特徴とする。
【0015】
【作用】本発明の作用は次のとおりである。すなわち、
太らせたパターン同士が接する状態は、基準文字と対象
文字の字面同士が最も接近している部分での間隔が、指
定された基準間隔となる状態であり、さらに対象文字を
詰めて配置するための基準となる。そして、そのときの
移動量は対象文字を詰めるときの基準値であり、その基
準値と補正量に基づいて対象文字が配置される。
【0016】文字パターン同士の重複面積の、文字枠同
士の重複面積に対する割合は、対象文字の基準文字に対
する隣接強度に相応するので、この逆数値はその隣接強
度が強い程小さく、弱い程大きくなる。この対象文字の
隣接強度の強弱に応じた補正量と前記移動量に基づいて
対象文字を詰めて、つまり隣接強度が弱い程大きく、ま
た、強い程小さく詰めて配置するので、見栄えのする字
詰め(カーニング)が人手によらず自動的にできる。
【0017】
【実施例】まず、図を参照して本発明の一実施例を説明
する。図1は、本発明に係るカーニング処理方法を使用
する文字組版編集装置の概略構成を示すブロック図であ
る。図中、符号1は、主にカーニング処理を実行制御す
るカーニング演算コントローラであり、カーニング処理
を行なう文字列の文字コードをテキストバッファ2を介
して、テキストバッファ2の入力部3に接続されるフロ
ッピーディスク装置等の補助記憶装置から受け取る。カ
ーニング演算コントローラ1は、カーニング処理を実行
する際の移動限界値(これについては、後に詳述する)
を予め記憶するカーニング限界量設定メモリ4と、カー
ニング処理の実行前に、オペレータによって適宜に定め
られた文字間の基準間隔を記憶する基準間隔設定メモリ
5が接続され、さらに、後述する各種作業用の記憶装置
等が接続されているバスライン10が接続される。
【0018】このバスライン10には、ハードディスク
装置または光磁気ディスク等の補助記憶装置からなり、
文字(記号や特殊文字等を含む)のフォントデータ群を
文字の字体毎(明朝体,ゴシック体等)にファイリング
して記憶しているフォントファイル記憶装置11と、カ
ーニング演算コントローラ1がフォントファイル記憶装
置11から読み出したフォントデータ群を一時的に保持
するフォントバッファ12と、カーニング処理の対象文
字列であるフォントデータ群を、フォントバッファ12
から読み出して、カーニング演算コントローラ1によっ
て変換されたビットマップデータ群(以下、原パターン
データと呼ぶ)が書き込まれるビットマップバッファメ
モリ13と、前記ビットマップバッファメモリ13に記
憶された原パターンデータに対して太らせ処理を施した
後のビットマップデータ群(以下、第1の太らせパター
ンと呼ぶ)を記憶する第1の太らせパターンバッファメ
モリ14と、前記第1の太らせパターンバッファメモリ
14に記憶された第1の太らせパターンを更に太らせた
ビットマップデータ群(以下、第2の太らせパターンと
呼ぶ)を記憶する第2の太らせパターンバッファメモリ
15と、カーニング演算コントローラ1によって前記第
1の太らせパターンバッファメモリ14と第2の太らせ
パターンバッファメモリ15からそれぞれ読み出された
第1および第2の太らせパターンが書き込まれる太らせ
パターン列展開メモリ16と、カーニング処理の例外処
理を実行するための作業用メモリであるビットマップの
多角形枠メモリ17とが接続されている。
【0019】カーニング演算コントローラ1とバスライ
ン10には、文字組版編集装置を制御するCPU20が
接続され、文字組版実行プログラムを記憶するROM2
1と、装置の起動時に実行プログラムが展開されたり編
集作業の作業領域や一時的なデータのメモリとして使用
されるRAM22と、編集内容等が表示される表示装置
23と、編集作業の指示等を入力するためのキーボード
等からなる入力装置24が接続される。
【0020】<<カーニング処理>>以下、本発明の一
実施例によるカーニング処理方法の処理手順を、フロー
チャートを参照して説明する。なお、以下の説明におい
て、「文字」とは通常の文章,単語を形成するのに用い
られる狭義の文字の他、数字や各種の記号を含むものと
する。
【0021】<文字の定義>まず、説明の理解を容易に
するために、文字の構成要素を図2を参照して定義して
おく。この図は、文字「し」を表し、符号Fで示した文
字自体を”字面”、この字面の最大外形を囲う矩形BB
を”バウンディングボックス”、前記バウンディングボ
ックスの周囲にさらに適宜の間隔をもった文字枠IB
を”仮想ボディ”、前記仮想ボディの幅を”文字幅
W”、高さを”文字高さH”、前記仮想ボディの左下角
Pを文字配置の際の基準となる”基準点”とする。ま
た、字面がビットマップまたはアウトラインで構成され
る場合は、この字面の閉図形内または閉曲線内が黒画素
であり、それ以外の部分は、白画素で構成されるとす
る。なお、カーニング処理は、必ず配置が確定している
文字に対して次の文字の配置を調整することで行なわれ
るので、配置が確定している文字を「基準文字」とし、
配置を調整する次の文字を「対象文字」とする。
【0022】カーニング処理について、図3のカーニン
グ処理のメインフローを示すフローチャートを参照して
説明する。このカーニング処理は、文字組版編集プログ
ラムの機能の一部であるが、本発明の対象はこの部分で
あるので、この処理のみについて詳細な説明を行なう。
【0023】<移動量算出処理>まず、ステップM10
では、カーニング処理を行なう文字列の隣接する字面同
士の最小となる間隔が、予め入力されている基準間隔に
なるまで近接させたときの移動量を求める移動量算出処
理を実行する。この処理を図4,図5のフローチャート
を参照して説明する。
【0024】図4のステップS101では、カーニング
処理の対象文字列を読み込む。以下、本実施例では、文
字列「して」を対象にして説明を行なう。この読み込み
処理は、カーニング演算コントローラ1が、入力部3か
らカーニング処理対象の文字列の文字コード群をテキス
トバッファ2に読み込むことにより行われる。ここで
は、文字列「して」の文字コードが二つ読み込まれる。
【0025】ステップS102では、カーニング演算コ
ントローラ1が、テキストバッファ2に記憶されている
文字コード群に対応したフォントデータをフォントファ
イル記憶装置11から順次読み出して、フォントバッフ
ァ12に書き込む。なお、フォントデータは、ビットマ
ップデータでもアウトラインフォントデータのどちらで
もよい。
【0026】ステップS103では、カーニング演算コ
ントローラ1が、フォントバッファ12に記憶されてい
るフォントデータの全てを、仮想ボディIBの高さHと
幅Wが適宜のドット数で構成されているビットマップバ
ッファメモリ13に展開する。このとき、各文字の送り
量は、文字幅Wに等しくなるように設定されている。こ
こでは、文字「し」の次に配置される文字「て」の送り
量は、文字幅Wに等しく設定されているので、文字
「て」の基準点P2 は、文字「し」の基準点P1 から文
字幅Wだけ離れた位置になる。ここでは、ビットマップ
バッファメモリ13の構成ドット数が60ドット×60
ドットで構成されたとして、この展開された文字列「し
て」の原パターンA,Bの模式図を図6(a)に示す。
なお、このビットマップバッファメモリ13の構成ドッ
ト数は、後述する重複面積の算出に影響するので、その
精度を上げるためにはできるだけ多い方がよい。
【0027】ステップS104では、基準間隔設定メモ
リ5から基準文字の字面と対象文字の字面との基準間隔
としての設定値S0 を読み出す。この値は、オペレータ
(またはデザイナー)が、文字列のデザイン等を考慮し
て設定する値で、予め入力装置24を介して入力し、基
準間隔設定メモリ5に書き込まれる。本実施例では、一
例として、「20ドット」が設定されているとする。文
字列「して」の現時点での配置では、図6(b)に示す
ように、文字「し」のはらい部分と文字「て」の書出し
部分とが最も接近しているので、この間隔が基準間隔S
0 となり、オペレータまたはデザイナーは、この間隔が
「20ドット」になるように指定していることになる。
【0028】ステップS105では、カーニング演算コ
ントローラ1が、ビットマップバッファメモリ13に記
憶されている文字列「して」の原パターンデータA,B
に対して、前記ステップS104で読み出した基準間隔
0 の1/2だけドットをそれぞれ付加して、原パター
ンデータA,Bを太らせた第1の太らせパターンA1
1を生成し、これを第 1の太らせパターンバッファメ
モリ14に書き込む(ステップS106)。ここでは、
基準間隔S0 は、ビットマップバッファメモリ13で2
0ドットに相当するので、10ドットをビットマップデ
ータに付加して太らせる処理を行なう。この太らせ処理
の実行方法は、種々提案実施されているが、ここでは4
方向(右,上,左,下)からの10ドット拡大用テーブ
ルを順次切り換えながら、拡大するための論理フィルタ
をかける論理フィルタ方式を用いる(例えば、「画像処
理応用技術」(編著:田中浩,発行所:株式会社工業調
査会)の47頁〜57頁参照)。この処理実行後の太ら
せパターンバッファメモリ14の記憶内容の模式図を図
7(a)に示す。
【0029】ステップS107では、カーニング演算コ
ントローラ1が、第1の太らせパターンバッファメモリ
14に記憶されている第1の太らせパターンA1,B1
対して、更に余分に1ドットを付加する処理をステップ
S105で行なったと同様の論理フィルタ方式で行な
い、得られた第2の太らせパターンA2 ,B2 を第2の
太らせパターンメモリ15に書き込む。この処理実行後
の第2の太らせパターンメモリ15の記憶内容の模式図
を図7(b)に示す。
【0030】ステップS109では、カーニング処理を
行なう文字列の先頭文字「し」(基準文字)の第1の太
らせパターンA1 を第1の太らせパターンバッファメモ
リ14(図7(a))から、先頭文字の次に配置される
対象文字「て」の第2の太らせパターンB2 を第2の太
らせパターンバッファメモリ15(図(7)(b))か
らそれぞれ読み出し、次のステップS110では、太ら
せパターン列展開メモリ16中に、基準文字を座標P1
に、対象文字を基準文字の座標P1 に文字幅Wを加算し
た位置である座標P2 (送り量W)に書き込む。すなわ
ち、両パターンは、太らせパターン列展開メモリ16中
に両文字の仮想ボディIBが接するベタ組み状態で書き
込まれる(図8(a)参照)。
【0031】ステップS111では、太らせパターン列
展開メモリ16に記憶されている基準文字「し」の第1
の太らせパターンA1 に対して、文字列の配列方向に対
象文字「て」の第2の太らせパターンB2 をドット単位
で近接させる。そして、ステップS112で、両パター
ンA1 ,B2 が1ドット重複したかどうかを判断する。
重複していなければ、ステップS115を経てステップ
S111に戻り、さらに1ドット近接させる。両パター
ンA1 ,B2 が重複すると、ステップS113に分岐
し、そのときの第2の太らせパターンB2 の移動ドット
数(移動量データ)M1 を記憶する。両パターンA1
2 が重複したときの太らせパターン列展開メモリ16
の記憶内容の模式図を図8(b)に示す。以上の処理
を、カーニング処理の対象となる全ての文字に対して繰
り返し行う(ステップS114)。
【0032】なお、上述したステップS111およびS
112の処理の具体例は、後に詳述する。また、ステッ
プS115〜S117の処理は、処理対象となる文字の
パターンによっては、前記両パターンA1 ,B2 が稀に
重複しないこともあるので、このような文字に対しても
適切にカーニング処理を行うことができるようするため
の例外処理である。この例外処理についても後に説明す
る。
【0033】このように、太らせ処理を行なってから、
字面間が基準間隔となるように文字の移動量を求めるの
で、字面間隔が横方向以外(文字配列方向以外)に存在
するような文字同士の組合せの場合でも、字面間の最も
接近した部分を指定の基準間隔にすることができる。
【0034】なお、この時の移動量データM1 を文字幅
Wから引いた送り量R1(R1=W−M1 )で、文字
「て」を座標P2に配置すると、字面の基準間隔が、予
めオペレータまたはデザイナーによって設定された基準
間隔S0 (ここでは「20ドット」)に等しいカーニン
グ処理を行なうことができる(図8(c)参照)。な
お、この状態が後述の隣接強度によるカーニング処理の
基準となる。
【0035】次に、上述したステップS111およびス
テップS112の処理の具体例を図10を参照して説明
する。図10は、太らせパターン列展開メモリ16の記
憶内容の模式図である。
【0036】説明を簡単にするために、基準文字の第1
の太らせパターンA1 と対象文字の第2の太らせパター
ンB2 とが8×8ドットのビットマップデータで構成さ
れているとする(図10(a)参照)。斜線で示される
部分は黒画素であり、斜線のない部分は白画素である。
このパターンA1 とパターンB2 とが、1ドット重複す
る(ビットマップパターンの基準間隔)ための横方向の
最小移動ドット数は、 パターンA1 の黒画素が最初に現れるまで右から左へ
横方向に走査し、その時の白画素数を求める。ただし、
黒画素が存在しない場合は、白画素数を「0」とする。 パターンB2 の黒画素が最初に現れるまで左から右へ
横方向に走査し、その時の白画素数を求める。ただし、
黒画素が存在しない場合は、白画素数を「0」とする。 との値を加算し、さらに1ドットを加算する。 上記手順を列ドット方向(C1〜C8)に順次行なって
求められたドット数の内(図10(b)参照)、「0」
を除く最小値が最小移動ドット数である。この例の場合
の列ドット名C7が最小値「4」であるので、4ドット
横方向に移動した場合に、両パターンA1 ,B2 は、1
ドット重複する。
【0037】図10に示した処理を論理回路で実現した
一例を図11を参照して説明する。この論理回路は、カ
ーニング演算コントローラ1内に組み込まれる。図11
中のφ1 ,φ2 は論理回路の動作タイミングを与える2
相のクロックである。その波形図を図12に示す。図1
2中の1,2,…,nは、列方向のドット分割数に対応
する(図13参照)。図11中の符号F(Fバー)は、
列毎のドットデータの入力タイミングを与えるフレーム
信号(または、その反転信号)であり、その波形図を図
12に示す。また、SA ,SB は、図13に示すよう
に、列ごとに読み出される各パターンA1 ,B2 のドッ
トデータである。
【0038】各ドットデータSA ,SB 中の白画素
(『0』)を計数するために、ドットデータSA ,SB
はインバータG2,G3で反転されている。反転された
ドットデータSA はNANDゲートG8を介してカウン
タG10に与えられる。また、反転されたドットデータ
B はNANDゲートG9を介してカウンタG11に与
えられる。黒画素のドットデータSA ,SB が入力さる
と、NANDゲートG1,G4を通じてフリップ・フロ
ップG5,G6が反転し、NANDゲートG8,G9を
閉じて、以後、カウンタG10,G11への入力を禁止
する。カウンタG10,G11は、NANDゲートG7
の出力(図12参照)によってリセットされる。したが
って、カウンタG10は列ごとのドットデータSA につ
いて、黒画素が現れるまでの白画素数を計数し、カウン
タG11は同様にドットデータSB について、黒画素が
現れるまでの白画素数を計数する。
【0039】カウンタG10,G11の各計数値は、A
NDゲートG12,G13を介して加算回路G15に入
力されて加算され、ここで更に『1』が加算される。本
実施例では、各計数値を並列に加算器G15に加えてい
るが、もちろんシフトレジスタを介して直列演算しても
よい。なお、図11中の太線はパラレル転送を表してい
る。
【0040】一列目の加算が終了すると、フレーム信号
Fバーおよびフリップ・フロップG14の出力を与えら
れるNANDゲートG16が開放する(図12のFバー
・FFG14出力参照)ことにより、計数回路G15の
計数値がラッチ回路G17に転送される。もう一つのラ
ッチ回路G18には、初期条件として「オール1」がセ
ットされている。ラッチ回路G17,G18の内容が比
較器19で比較され、 (ラッチ回路G17の内容)<(ラッチ回路G18の内
容) の条件のときにのみ、ラッチ回路G17の内容がAND
ゲートG20を介してラッチ回路G18に転送される。
この転送タイミングは、インバータG21を介してAN
DゲートG20に入力するNANDゲートG7の出力に
よって与えられる(図12参照)。
【0041】こうして、1文字分の処理が終了すると、
列ごとのドットデータSA ,SB の白画素の加算結果が
最も小さいときの数値に「1」が加算された値がラッチ
回路G18に入っていることになる。この数値は、両方
の文字の太らせパターンA1,B1 が接する条件、すな
わち両文字の原データパターンA,Bの最も接近した部
分が基準間隔S0 で位置する条件を得るために、対象文
字が基準文字に近づかなければならない移動量(移動量
データM1 )に他ならない。この移動量データM1 はA
NDゲートG22を介して出力され、RAM22に記憶
される。以下、同様にして、全文字について移動量MX
X は第2文字を1とし、MX ( X-1)番目の文字に対
するX 番目の文字の移動量を表す)を求めRAM22に
記憶する。
【0042】全ての文字列について移動量算出処理(図
5のステップS110〜S114)を終了すると、図3
に示したメインフローチャートのステップM10に戻
り、次のステップM20へ移行する。ここでは隣接する
文字間の隣接強度の算出のための準備を行う。
【0043】<隣接強度算出準備処理>この処理では、
隣接する文字の視覚的影響度を定量化するための処理を
行なう。この処理を、図14のフローチャートを参照し
て説明する。なお、以下の説明では、文字列「して」を
処理の対象とする。
【0044】ステップS201では、第1の太らせパタ
ーンバッファメモリ14から文字列「して」の第1の太
らせパターンA1 ,B1 (図7(a))を読み出し、ス
テップS202では、RAM22から移動量データM1
(「20ドット」)を読み出す。
【0045】ステップS203では、上記ステップS2
01,S202で読み出したデータに基づいて、太らせ
パターン列展開メモリ16に基準文字と対象文字の各第
1の太らせパターンA1 ,B1 を配置する。すなわち、
対象文字「し」を座標P1 に配置し、次に、対象文字
「て」を座標P2 に配置する(このときの状態は先の図
8(c)と同じである)。この座標P2 は、”文字幅W
(60ドット)−移動量データM1(20ドット)”で
求められる送り量R1 (40ドット)である。
【0046】ステップS204では、前記ステップS2
03で配置された文字「て」を、基準文字「し」の配置
方向に予め設定された値だけ更に近接させる。一例とし
て、前記ステップS203での送り量R1 から更に10
ドットを引いた値を送り量R2 として、文字「て」を座
標P3 の位置に再配置する(図9参照)。
【0047】ステップS205では、基準文字と対象文
字の各第1の太らせパターンA1 ,B1が重複した黒画
素面積を算出する(図9斜線部分参照)。このパターン
同士が重複した面積(以下、単にパターン重複面積と記
す)の算出方法には、種々の方法が用いられるが、本実
施例では、基準文字の太らせパターンA1 のデータと対
象文字の太らせパターンB1のデータとの論理積を求
め、論理積後の黒画素数を計数する。ここでは、「11
6ドット」が重複したものとし、この値をパターン重複
面積とする。なお、このパターン重複面積は先の図19
で説明したように、文字間の隣接強度に相応しているこ
とに注目しておく。
【0048】ステップS206では、ステップS205
で算出された各対象文字毎のパターン重複面積SXX
は第2文字を1とし(X-1) 番目の基準文字とX 番目の対
象文字とのパターン重複面積を表す)をRAM22に保
存する。そして、次の文字に対する処理(次の処理にお
ける基準文字には現在の対象文字を、次の対象文字には
次の新たな文字を設定して)をステップS201に戻っ
て実行する。全ての文字に対する処理が終了すると、各
文字間のパターン重複面積SXがRAM22に保存され
た状態で、図3のメインフローチャートのステップM2
0に戻り、ステップM30に移行する(ステップS20
7)。
【0049】<隣接強度算出と送り量算出処理>ステッ
プM30では、これまでの処理で求められたパターン重
複面積の値SXに基づいて、隣接強度算出と基準文字に
対する対象文字の配置位置(詰め量または送り量)を算
出する処理を行なう。この処理を、図15のフローチャ
ートを参照して説明する。
【0050】ステップS301では、RAM22から、
記憶されているパターン重複面積SXを全て読み出す。
【0051】ステップS302では、先の移動量MX
更に補正し、最終の送り量を算出するための補正量を算
出する演算処理を実行する。一方、仮想ボディ(文字
枠)同士を前記ステップS204と同じ距離(本実施例
では10ドット<参考>図19のrに相当)だけ移動さ
せて重複した時の重複面積(以下、単に文字枠重複面積
と記す)は全ての文字について一定であり、この値をS
ref とすると、本実施例では、仮想ボディIBが60×
60ドットで構成されているので、Sref =60×10
=600ドット)となる。ここで、文字枠重複データ量
ref に対するパターン重複面積Sx の割合S' x は、
言い換えると文字枠を基準にした隣接強度を定量化した
ものであり、次式で表すことができる。 S' x =Sx /Sref (0<S' x ≦1) 次に、この隣接強度S' x により、最終的な詰め量CX
を次式で求める。 Cx =Mx +k(1/S' x −1)(kは予め設定され
る係数) となる。この詰め量CX は、ベタ組の配置位置からの対
象文字の詰め量を示している。すなわち、隣接している
文字の各仮想ボディが全て黒画素の場合のように、隣接
強度S’X が最大値である場合は、前記文字間の詰め量
X は移動量データMX に等しくなるので、このとき両
文字間は先に指定された基準間隔に設定される。そし
て、隣接文字間の隣接強度S' x が小さくなるに従っ
て、詰め量CXが大きく、つまり文字間隔が基準間隔よ
りも狭く設定される。従って、k(1/S' x −1)
は、基準間隔での移動量Mx に対する対隣接強度補正項
とみることができる。
【0052】なお、通常では字面部分の高さH’(図1
9参照)は、指定される文字書体及び大きさ(ポイント
数)ではほぼ一定であり、この点で文字枠重複部Sref
を文字枠の高さ(文字高さH,図2参照)でなく字面部
分の高さH’に限られる部分(幅は不変)としてもよ
い。
【0053】ステップS303では、各文字の送り量R
x を算出する。ここで、文字幅をWとし、各文字間の詰
め量を補正量Cx とすると、各文字の送り量Rx は、 Rx =W−Cx で求められる。この各送り量Rx は、RAM22に記憶
される。なお、「x 」は、これまでのMX ,CX と同様
に文字列中の第2番目の文字から「1」としている。
【0054】ここで、文字列「して」における対象文字
「て」の補正量C1 と送り量R1 とを求めてみる。ま
ず、重複データ量S1はステップS206で算出された
「116ドット」であり、基準重複データ量Sref
「600ドット」であるので隣接強度S’x は「0.1
9」になる。また、移動量データM1 はステップS11
1で算出された「20ドット」であり、係数kを例えば
「0.7」とすると、補正量C1 (詰め量)は、「23
ドット」となる。また、文字幅Wは「60ドット」であ
るので、送り量R1 は、「37ドット」となる。
【0055】このステップS303において、各送り量
x の算出が終了すると、図3のメインフローチャート
のステップM30に戻り、一連の演算処理を終了する。
そして、文字組版編集装置のプログラムが、RAM22
に保存された各送り量Rx に基づいて、カーニング処理
の対象文字列を表示装置23上に再配置する。上記値で
配置された文字列「して」を、図16に示す。
【0056】<例外処理>次に図5のステップS115
〜S117に示した例外処理を説明する。ステップS1
15では、基準文字の第1の太らせパターンA1 と対象
文字の第2の太らせパターンB2 とが重複しない場合
に、それまでの移動量がカーニング限界量設定メモリ4
に予め設定されている移動限界値を越えているかどうか
を判断する。本実施例では、この移動限界値を仮想ボデ
ィの幅Wに等しい値(60ドット)に設定している。
【0057】移動限界値を越えて移動しても重複が起こ
らない場合の具体的な例として、図17(a)に示す縦
組の文字列「ハート」が挙げられる。このような文字列
では、太らせ処理を行った基準文字「ハ」に対して、同
様に太らせ処理を行った対象文字「ー」を近接させて
も、パターンが重複しないという現象(突き抜け現象)
が起こることがある(図17(b)参照)。本実施例
は、オペレータによって指定される基準間隔の半分を各
文字の太らせ量としているので、文字列「ハ」と「ー」
の字面の最も近接した部分の間隔(最小間隔)を基準間
隔に指定しておけば、両パタンーは必ず重複する。した
がって、このような言わば突き抜け現象は、上記のよう
な特殊な字体で、しかも、基準間隔が両文字間の最小間
隔よりも小さく設定された場合に生じる極めて稀なケー
スではあるが、種々の文字の組み合わせを取り扱う文字
組版編集装置においては、このような特殊な組み合わせ
に対応することも期待される。
【0058】ステップS115で、対象文字の第2の太
らせパターンB2 の移動量が移動限界値を越えたと判断
された場合は、ステップS116に進む。
【0059】ステップS116では、カーニング演算コ
ントローラ1が、ビットマップバッファメモリ13から
基準文字「ハ」と対象文字「ー」の各原データパターン
を読み出して、ビットマップ多角形枠メモリ17に書き
込む。
【0060】ステップS117では、カーニング演算コ
ントローラ1が、基準文字「ハ」と対象文字「ー」との
両文字に対して、例えば、4方向からの端点検出用テー
ブルを用いた論理フィルタにより黒画素の先端座標を検
出し、この検出された先端座標を結ぶ多角形枠を生成す
る。図17(c)に文字「ハ」に対する多角形枠の例
を、図中の斜線領域で示す。なお、このとき先端座標を
検出する論理フィルタでの処理後に、先端座標数を計数
し、多い方を複雑な形状の文字であると判断して多角形
枠を生成するというように、基準文字と対象文字の処理
対象のうち、多角形枠を生成する対象を一方のみにして
もよい。
【0061】以上のようにして基準文字と対象文字の各
多角形パターンを生成すると、ステップS111に戻
り、上述した通常の文字列と同様に、基板文字の多角形
パターンに対象文字の多角形パターンを近づけていき、
両パタンーが重複するときの移動量を求める。それ以降
の隣接強度算出処理(図3のステップM20)および送
り量算出処理(図3のステップM30)も、両文字の多
角形パターンを使って、通常の文字列と同様に処理が進
められる。ただし、ここでは多角形パターンを使って隣
接強度を求めている関係で、この隣接強度を使って各文
字間の補正量CXを通常の文字列と全く同様に求めると
不都合が生じることもある。そこで、突き抜け現象が生
じるような特殊な文字列については、これらの文字列に
ついて予め定めた固有の係数k’を使って、先と同様に
次式により文字間の補正量CX を求めるようにする。 CX =MX +k’(1/S’X −1)
【0062】あるいは、例外処理が発生した時点におい
て、文字組版編集装置の表示装置23に「例外処理が発
生しました!!」等のメッセージを出力し、自動処理が
選択された場合には、上述のような多角形パターンの隣
接強度に基づく文字間の補正量を求め、一方、手動処理
が選択された場合には、例外処理の対象となる文字列の
間隔をオペレータ自身が指定するように構成してもよ
い。
【0063】また、この「ー」のように、文字パターン
部の上下幅が狭い文字等、文字部の面積が少ない割に配
列方向の文字パターン部の幅が大きい文字の場合は、同
じく文字パターン部幅の小さい文字に比べて詰め量が大
きくなる傾向がある。このような場合は、対隣接強度補
正項による字詰めが基準間隔より大きくなり過ぎないよ
うな「基準間隔S0 内の限界値β」(例えば、β=MX
/2)を設けて行うようにすればよい。すなわち、前記
と同様に、この限界状態での、パターン重複面積を
X ,文字枠重複面積をSref とし、 対隣接強度補正項:k(1/(SX /Sref )−1)≦
β (β<基準間隔) となるkをそれらの文字について予め求めて、その値を
勘案してカーニング処理対象の文字列毎に適切な一定値
を設定する。
【0064】以上の手順で、文字列「ハー」の縦組みの
ような極めて稀なケースの場合でも、例外処理を実行す
るので、種々な文字の組合せにも自動的にカーニング処
理を行なうことができる。
【0065】なお、移動量算出処理における太らせ処理
において、基準文字と対象文字の各々の太らせ量は、各
々基準間隔の1/2づつとしたが、これに限定されるこ
となく基準間隔の1/3と2/3、また、0と1等でも
実施可能である。すなわち、太らせ量の総和が、基準間
隔に等しくなる組合せであれば適宜の値を設定してよ
い。
【0066】なお、上述した実施例において、処理対象
の文字列の隣接強度を利用した送り量算出処理の手法は
種々変更実施可能であり、実施例で説明したような演算
処理によるものに限定されない。
【0067】また、本発明のカーニング処理は、横方向
または縦方向に整然と配列された文字列だけでなく、例
えば、図18に示すように曲がりくねって配列された文
字列に対しても適用することが可能である。このような
場合、例えば各文字の仮想ボディの中心を結ぶ線分に沿
って対象文字の太らせパターンを基準文字の太らせパタ
ーンに近接させていき、両パターンの重複面積を求め、
このパターン重複面積に基づいて、各文字の配置を決定
すればよい。
【0068】
【発明の効果】以上の説明から明らかなように、本発明
によれば、文字の書体や大きさにかかわらず、対象文字
の基準文字に対する定量化された隣接強度に対応して字
詰めを行う、つまり隣接強度が弱い程大きく、また、強
い程小さく詰めるので、視覚的に見栄えのするカーニン
グ処理を人手によらず、自動的にできる。
【図面の簡単な説明】
【図1】本発明に係るカーニング処理方法を実施する文
字組版編集装置の概略構成を示すブロック図である。
【図2】文字の構成要素の説明に供する図である。
【図3】本発明に係るカーニング処理方法のメインフロ
ーチャートである。
【図4】移動量算出処理を示すフローチャートである。
【図5】移動量算出処理を示すフローチャートである。
【図6】ビットマップバッファメモリに展開された文字
列を示す模式図である。
【図7】第1の太らせパターンバッファメモリおよび第
2の太らせパターンバッファメモリの記憶内容の模式図
である。
【図8】太らせパターン列展開メモリの記憶内容の模式
図である。
【図9】太らせパターン列展開メモリの記憶内容の模式
図である。
【図10】対象文字移動量算出処理の説明に供する図で
ある。
【図11】対象文字移動量を算出するための論理回路の
構成を示した回路図である。
【図12】対象文字移動量算出用論理回路の動作タイミ
ング図である。
【図13】対象文字移動量算出用論理回路の動作説明に
供する図である。
【図14】隣接強度算出準備処理を示すフローチャート
である。
【図15】隣接強度算出と送り量算出処理を示すフロー
チャートである。
【図16】カーニング処理後の文字列を示す図である。
【図17】例外処理の説明に供する図である。
【図18】本発明を適用することができるその他の文字
列を示した図である。
【図19】隣接強度の説明に供する図である。
【図20】従来方法の説明に供する図である。
【符号の説明】
1 … カーニング演算コントローラ 2 … テキストバッファ 3 … 入力部 4 … カーニング限界量設定メモリ 5 … 基準間隔設定メモリ 11 … フォントファイル記憶装置 12 … フォントバッファ 13 … ビットマップバッファメモリ 14 … 第1の太らせパターンバッファメモリ 15 … 第2の太らせパターンバッファメモリ 16 … 太らせパターン列展開メモリ 17 … ビットマップの多角形枠メモリ

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 その中に文字パターン(字面)を配置し
    た矩形の文字枠(仮想ボディ)に基づいて、文字列の各
    文字を所定の配列方向に配置するときに、既に配置位置
    が確定している基準文字に対して、隣接して配置しよう
    とする対象文字の配置位置を調整するカーニング処理方
    法であって、 前記基準文字と前記対象文字の字面同士の基準間隔を指
    定する過程と、 前記両文字を太らせたときの太らせ量の和が前記指定さ
    れた基準間隔に等しくなるように、前記基準文字と前記
    対象文字の字面を所定量太らせる過程と、 前記太らせ処理後の対象文字の太らせパターンを前記太
    らせ処理後の基準文字の太らせパターンに向けて移動さ
    せて、前記両文字の太らせパターンが接する位置までの
    対象文字の移動量を求める過程と、 前記両文字の太らせパターンが接する位置から前記両文
    字の太らせパターンが重複するように対象文字の太らせ
    パターンをさらに所定の距離だけ移動させる過程と、 前記過程で両文字の太らせパターン同士の重複面積と両
    文字枠同士の重複面積をそれぞれ算出する過程と、 前記移動量と、前記パターン同士の重複面積の前記文字
    枠同士の重複面積に対する割合の逆数に基づく補正量
    と、に基づいて、前記基準文字に対する前記対象文字の
    配置位置を算出する過程と、 を含むことを特徴とするカーニング処理方法。
JP5354144A 1993-12-28 1993-12-28 カーニング処理方法 Expired - Fee Related JP2962392B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5354144A JP2962392B2 (ja) 1993-12-28 1993-12-28 カーニング処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5354144A JP2962392B2 (ja) 1993-12-28 1993-12-28 カーニング処理方法

Publications (2)

Publication Number Publication Date
JPH07195652A true JPH07195652A (ja) 1995-08-01
JP2962392B2 JP2962392B2 (ja) 1999-10-12

Family

ID=18435589

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5354144A Expired - Fee Related JP2962392B2 (ja) 1993-12-28 1993-12-28 カーニング処理方法

Country Status (1)

Country Link
JP (1) JP2962392B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10171437A (ja) * 1996-10-08 1998-06-26 Sanyo Electric Co Ltd 文字データ処理装置、文字データ処理方法及び文字データ処理プログラムを記録した媒体
JP2003005738A (ja) * 2001-06-20 2003-01-08 Sharp Corp 文字表示装置、文字表示方法、プログラムおよび記録媒体

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10171437A (ja) * 1996-10-08 1998-06-26 Sanyo Electric Co Ltd 文字データ処理装置、文字データ処理方法及び文字データ処理プログラムを記録した媒体
JP2003005738A (ja) * 2001-06-20 2003-01-08 Sharp Corp 文字表示装置、文字表示方法、プログラムおよび記録媒体
KR100441584B1 (ko) * 2001-06-20 2004-07-23 샤프 가부시키가이샤 문자 표시 장치, 문자 표시 방법, 문자 표시 프로그램, 및기록 매체
US7002582B2 (en) 2001-06-20 2006-02-21 Sharp Kabushiki Kaisha Character display apparatus, character display method, character display program, and recording medium therefor

Also Published As

Publication number Publication date
JP2962392B2 (ja) 1999-10-12

Similar Documents

Publication Publication Date Title
KR860001071B1 (ko) 문서편집(文書編輯)방법
JPH0926778A (ja) カーニング処理方法
JPH07195652A (ja) カーニング処理方法
JP3408685B2 (ja) カーニング処理方法
JPH0143338B2 (ja)
JPH0324701B2 (ja)
JPH0361198B2 (ja)
JPH0361197B2 (ja)
JP2726951B2 (ja) 文字・図形描画装置
JPH0366157B2 (ja)
JPH0143339B2 (ja)
JPH07137222A (ja) 文字間隔調整方法
JP2699974B2 (ja) パターン登録方法
JPH0456317B2 (ja)
JPH0345413B2 (ja)
JP3211404B2 (ja) 文字列出力装置
JPH03184182A (ja) 文字出力レイアウト決定方式
JPS6375964A (ja) 表作成方式
JP2800865B2 (ja) 文字処理装置
JPH09174798A (ja) カーニング処理方法およびその装置
JPH0560598B2 (ja)
JPH06110442A (ja) 文字図形処理装置、及び文字または図形の変形処理方法
JP3412203B2 (ja) 文字列出力装置
JP2698348B2 (ja) 文字処理装置
JPS62282381A (ja) 毛筆文字出力装置

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees