專利名稱:產(chǎn)生字符的方法和裝置的制作方法
技術領域:
本發(fā)明涉及一種在用整數(shù)值表示的物理坐標上顯現(xiàn)用邏輯坐標系表示的輪廓字符的產(chǎn)生字符的方法和裝置。
打印機、顯示器或類似物需要產(chǎn)生供打印或顯示字符的字符圖象?,F(xiàn)在,在字符圖形的產(chǎn)生中,即使對于同一字符都要求產(chǎn)生各種不同字符尺寸的字符。因此,如果對同一字符用二進制數(shù)圖形給出各種不同字符尺寸的字符,那么就要增加存儲器容量,特別地,象漢字字符這樣帶有許多字符形式的字符需要大的存儲器容量。
作為解決這一問題的方法,已有一種用輪廓字形產(chǎn)生字符的方法。根據(jù)該方法,提供了其輪廓線用實數(shù)并且也通過邏輯坐標系表示的字符圖形的數(shù)據(jù),這種數(shù)據(jù)被轉(zhuǎn)換到指定字符尺寸坐標系以將字符顯現(xiàn)到由整數(shù)值表示的二進制數(shù)變換圖上。
通常,在把用實數(shù)表示的邏輯坐標數(shù)據(jù),例如數(shù)字或輪廓字形顯現(xiàn)到由整數(shù)值表示的二進制數(shù)變換圖上時,字符數(shù)據(jù)的小數(shù)部分要四舍五入取整數(shù),以便數(shù)據(jù)用打印機或顯示器的象素的單元來表示。為了用最接近的象素來表示坐標數(shù)據(jù),一般的四舍五入辦法是把小數(shù)為5或大于5的作為一個整數(shù)。
例如,構成用
圖1所示的輪廓形式所表示的漢字字符“車”的各個點(輪廓點)用象1000×1000的整數(shù)邏輯坐標存儲。
在邏輯坐標上的字符輪廓數(shù)據(jù)被轉(zhuǎn)換成帶有含小數(shù)點的坐標值的必要字符尺寸。如果所有的點都被四舍五入以用物理坐標表示坐標值,那么,所有的點都將被四舍五入到最接近整數(shù)。為了變換成24×24點的字符尺寸,例如,圖1所示的漢字字符“車”通過坐標變換和四舍五入變成如圖2A所示。再該例中,由于原來字符設計得較厚,因此,所產(chǎn)生的字符二進制數(shù)變換圖寬度為二個象素。
如果同一個字符被轉(zhuǎn)換成在橫向和縱向都有16點(16×16點)的二進制數(shù)變換圖,那么它就變成了如圖2B所示,而且兩個相鄰的中間橫向筆劃相互接觸。
同樣地,當由用圖3所示的1000×1000邏輯坐標以輪廓形式表示的漢字字符“龜”變換成16×16點的字符尺寸,它就變成了如圖4A所示。
漢字字符“龜”在構成該漢字字符的兩個組成單元“Hi”中每一個都含有三個橫向筆劃,一個橫向筆劃在頂部,一個橫向筆劃在下部。因此,這個漢字字符包含總共八個橫向筆劃。為了表示這八個橫向筆劃,需要16點,包括兩個橫向筆劃之間的空白部分。因此,16×16點的二進制數(shù)變換圖是能準確表示的最小尺寸。
如果漢字字符被縮小到12×12點的物理坐標,那么有些橫向筆劃將會象圖4B所示那樣相互接觸,因為沒有點來表示橫向筆劃之間的空白空間。
當把象黑體字符一樣用粗線設計的字符縮小時,一些橫向筆劃將如圖2B所示相互接觸。接觸的部分涂滿了黑色,字符將不能準確地辨認,這樣可讀性下降。
同樣地,當縮小即使用細線表示的有復雜構形的字符時,如圖4B所示,有些橫向筆劃也將相互接觸,接觸的部分也會涂滿黑色,以至字符不能清晰地辨識,這樣降低了可讀性。
進一步地,構成用圖5所示的輪廓形式表達的漢字字符“目”的各個點(輪廓點)用象1000×1000的整數(shù)邏輯坐標存儲。例如,要把這個漢字字符變換成12×14點的字符尺寸,漢字字符“目”的左豎筆劃通過圖6A所示的坐標變換由X坐標e=1.2到e′=2.7表示。通過四舍五入處理后,這個豎筆劃就變成如圖6B所示的、X坐標從1到3的帶有兩個象素寬度的二進制數(shù)變換圖。漢字字符“目”的右邊豎筆劃用X坐標f=7.7到f′=9.2表示,通過四舍五入處理后,這個豎筆劃變成如圖6B所示的、X坐標從8到9的帶有一個象素寬度的二進制數(shù)變換圖。
用這種方式,即使原來有相同寬度的豎筆劃,通過四舍五入處理后,在物理坐標上將有不同的寬度,左手邊為量兩個象素,右手邊為一個象素。
同樣地,通過坐標轉(zhuǎn)換,漢字字符“目”的四個橫筆劃如圖6A所示從上到下分別用y坐標d=11.5到d′=12.7,c=8.3到c′=9.5,b=4.5到b′=5.7和a=0.3到a′=1.5表示。通過四舍五入,如圖6B所示,這些筆劃分別用d=12到d′=13、c=8到c′=10、b=5到b′=6和a=0到a′=2表示。即橫筆劃分別有一個象素、兩個象素、一個象素和兩個象素的線寬度。
盡管這些橫筆劃有“1.2”的線寬度,但通過四舍五入處理,它們的線寬度中有兩個將變成一個象素、其余的線寬度變成兩個象素。
對于從輪廓字形顯現(xiàn)的二進制數(shù)變換字形,由于這種寬度差會改變字符的視覺印象,因此,它應該做得盡可能小。
作為對這個問題的解決方法,已提出進行保持線寬度不變的四舍五入處理,如圖7A和7B所示,這種方法就是優(yōu)先對橫筆劃的上和下輪廓線之一或豎筆劃的右和左輪廓線之一四舍五入,而且在保持線寬度不變時對其它輪廓線四舍五入。
在圖7所示的坐標變換之后的漢字字符“目”中,a,b,c,d,e和f是優(yōu)先四舍五入的輪廓線,a′,b′,c′,d′,e′和f′是在保持它們的線寬度原樣時四舍五入的輪廓線。首先,用y坐標a表示的橫筆劃的輪廓線被四舍五入,通過四舍五入處理,“0.3”變成“0”。
然后對用y坐標a′表示的底橫筆劃的輪廓線四舍五入。由于同時要保持線寬度不變,由從0.3到0四舍五入產(chǎn)生的差值“-0.3”要加到a′的y坐標上去,a′=1.5-0.3=1.2。這樣,線寬度通過四舍五入處理后變成了一個象素。
同樣地,作為最頂端橫筆劃的輪廓線d的y坐標是“11.5”,通過四舍五入變成“12”。根據(jù)線寬度保持不變處理,輪廓線d′的y坐標變成12.7+0.5(差值)=13.2,這樣,經(jīng)過四舍五入處理后y坐標變成“13”,線寬度變成一個象素。對于從最頂端橫筆劃向下數(shù)的第二橫筆劃的輪廓線c的y坐標是“8.3”,四舍五入后變成“8”。根據(jù)線寬度保持不變的方法,輪廓線c′的y坐標變成9.5-0.3(差值)=9.2,這樣,四舍五入處理后y坐標變成“9”,線寬度變成一個象素。第三橫筆劃輪廓線b的y坐標是“4.5”,四舍五入后變成“5”,按線寬度保持不變的方法處理,輪廓線b′的y坐標變成5.7-0.5(差值)=6.2,這樣,四舍五入處理后y坐標變成“6”,線寬度變成一個象素。用這種方式,橫筆劃的線寬度都變成一個象素,與原始寬度1.2很接近。相似地,豎筆劃的線寬度變成如圖7B所示的兩個象素。
用這種方法,盡管橫筆劃的線寬度變?yōu)橄嗤?,但這些橫筆劃兩兩之間的間隔,如圖7B所示,從上到下分別變成了三個象素、兩個象素和四個象素。把這些間隔與原間隔相比較,如圖7A所示,四舍五入前從上到下的筆劃間隔依次為d-c′=11.5-9.5=2.0,c-b′=8.3-5.7=2.6和b-a′=4.5-1.5=3.0。即當橫筆劃的原間隔從上到下變寬時,四舍五入后這個間隔是按中間筆劃、頂筆劃和底筆劃的順序變寬的,其順序發(fā)生了變化。
更特別地,位置c′和d之間的間隔原來是2.0時,卻變成了三個象素,而b′和c之間的間隔原來是2.6,它已經(jīng)變成了二個象素。對于一個有許多橫筆劃和豎筆劃的字符來講,為了提高字符質(zhì)量,準確地產(chǎn)生線寬度和筆劃間隔以得到邏輯坐標表示的字符是很重要的。然而,即使改善了線寬度,但筆劃間隔還不能得到適當?shù)恼{(diào)整。
因此,本發(fā)明的目的是提供一種產(chǎn)生字符的方法和裝置,以便從輪廓字形數(shù)據(jù)產(chǎn)生一個具有改善的可讀性的小尺寸字符。
本發(fā)明的另一目的是提供一種產(chǎn)生字符的方法和裝置,能防止二進制數(shù)變換圖在產(chǎn)生具有許多相同豎向筆劃或橫向筆劃的字符時因相互鄰接的筆劃的接觸點而引起的局部變黑,二進制數(shù)變換圖由物理坐標產(chǎn)生。
本發(fā)明還有一個目的是提供一個產(chǎn)生筆劃之間的間隔可調(diào)整的字符的方法和裝置。
本發(fā)明的進一步目的是提供一個產(chǎn)生具有給定筆劃間隔的二進制數(shù)變換圖的字符產(chǎn)生方法和裝置,所述筆劃間隔為新設計的有許多平行豎筆劃或橫筆劃的字符的筆劃間隔。
根據(jù)本發(fā)明的一個方面,提供一種由輪廓字形數(shù)據(jù)產(chǎn)生一個二進制數(shù)變換圖的產(chǎn)生字符的方法,其中字符的輪廓線由坐標來表示,它包括以下步驟把輪廓字形數(shù)據(jù)轉(zhuǎn)換成一個指定尺寸的坐標系的坐標值;把轉(zhuǎn)換后的坐標值四舍五入成整數(shù)坐標值;由四舍五入后的坐標計算在同一方向許多個筆劃之間的間隔的總和;把該總和與目標筆劃數(shù)減1進行比較;當該總數(shù)比由該減法所產(chǎn)生的值小時改變該整數(shù)坐標值,以便調(diào)整目標筆劃的一個所希望的筆劃的線寬度;顯現(xiàn)包括有調(diào)整的坐標值的整數(shù)坐標值以產(chǎn)生二進制數(shù)變換圖。
根據(jù)本發(fā)明的另一方面,提供一種由輪廓字形數(shù)據(jù)產(chǎn)生一個二進制數(shù)變換圖的產(chǎn)生字符的裝置,其中字符的輪廓線由坐標來表示,它包括一個字形存儲器,以用來存儲每個字符的輪廓字形數(shù)據(jù);一個字符顯現(xiàn)電路,以用來把從字形存儲器中讀取的一個指定字符的輪廓字形數(shù)據(jù)變成一個指定尺寸的坐標系的坐標值,將坐標值四舍五入變成整數(shù)坐標值,由四舍五入后的坐標值來檢測在字符的筆劃之間是否存在接觸點,如果存在這樣的接觸點則改變整數(shù)坐標值以產(chǎn)生二進制數(shù)變換圖。
根據(jù)上面所述的兩個方面,由四舍五入后的整數(shù)坐標值來確定四舍五入后的筆劃是否彼此接觸。為了做到這一點,首先計算四舍五入后筆劃間隔的總和。由于筆劃相互不接觸對應的最小狀態(tài)是任意間隔等于筆劃總數(shù)減1,所以,總和將與由減法所產(chǎn)生的值進行比較。當總和小于由減法所得值時,斷定某些筆劃相互接觸,從而調(diào)節(jié)這些筆劃的線寬度。調(diào)節(jié)線寬度的一個方法是,使線寬度變薄以防止筆劃相互接觸,從而避免部分字符被黑涂滿。調(diào)節(jié)線寬度的另一方法是,刪掉一些筆劃以防止在筆劃間有任何接觸點,從而避免部分字符被黑涂滿。
根據(jù)本發(fā)明的進一步方面,提供一種由輪廓字形數(shù)據(jù)產(chǎn)生一個二進制數(shù)變換圖的產(chǎn)生字符的方法,其中字符的輪廓線由坐標來表示,它包括以下步驟把輪廓字形數(shù)據(jù)轉(zhuǎn)換成一個指定尺寸的坐標系的坐標值;將轉(zhuǎn)換后的坐標值四舍五入變成整數(shù)坐標值;由四舍五入前的各個筆劃之間的間隔以及四舍五入后的各個筆劃之間的間隔來計算各個間隔的比例因數(shù);計算在比例因數(shù)之中在最大比例因數(shù)和最小比例因數(shù)之間的差值,和沿一個方向改變在筆劃中的一個所希望的筆劃的整數(shù)坐標值以使此差值變小;顯現(xiàn)包括有變化的坐標值的坐標值以產(chǎn)生二進制數(shù)變換圖。
根據(jù)本發(fā)明的更進一步的方面,提供一種由輪廓字形數(shù)據(jù)產(chǎn)生一個二進制數(shù)變換圖的產(chǎn)生字符的裝置,其中字符的輪廓線由坐標來表示,它包括一個字形存儲器,以用來存儲每個字符的輪廓字形數(shù)據(jù);一個字符顯現(xiàn)電路,以用來把從字形存儲器讀取的一個指定字符的輪廓字形數(shù)據(jù)轉(zhuǎn)變成一個指定尺寸的坐標系的坐標值,將坐標值四舍五入變成整數(shù)坐標值,并以這樣一種方式改變整數(shù)坐標值使四舍五入前和四舍五入后的筆劃間隔的最大比例因數(shù)與最小比例因數(shù)之間的差值變化以產(chǎn)生二進制數(shù)變換圖。
根據(jù)上述的這兩個方面,如果四舍五入處理后的筆劃間隔的比例因數(shù)與原始字符的筆劃間隔的比例因數(shù)接近,則可以認為四舍五入處理后的筆劃間隔已經(jīng)再現(xiàn)了原始字符的結(jié)構。在這方面,計算四舍五入前后的各筆劃之間各間隔的比例因數(shù),和改變多個筆劃間隔之間的筆劃的坐標以使得在所計算的比例因數(shù)中最大比例因數(shù)和最小比例因數(shù)之間的差值變小。
本發(fā)明的其它特征和優(yōu)點由下面結(jié)合附圖的描述將變得很清楚。
附圖引入說明書中并構成說明書的一個組成部分,以描述本發(fā)明最好實施方式,附圖與上面所給出的概括性描述和下面將給出的最好實施方式的詳細描述一起用于解釋本發(fā)明的原理。
圖1是表示了用于解釋已有技術的漢字字符的示意圖;
圖2A是由已有技術顯現(xiàn)圖1中漢字字符為24×24點的一個附圖;
圖2B是由已有技術顯現(xiàn)圖1中漢字字符為16×16點的一個附圖;
圖3是解釋已有技術的另一漢字字符;
圖4A是由已有技術顯現(xiàn)圖3中漢字字符為16×16點的一個附圖;
圖4B是由已有技術顯現(xiàn)圖3中漢字字符為12×12點的一個附圖;
圖5是解釋已有技術的又一不同的漢字字符;
圖6A是以圖案表示的圖5中漢字字符進行坐標變換后的坐標;
圖6B是以圖案表示的圖5中漢字字符四舍五入處理后的坐標;
圖7A是以圖案表示的圖5中漢字字符進行坐標變換后的坐標;
圖7B是以圖案表示的圖5中漢字字符四舍五入處理后線寬保持不變的坐標;
圖8是說明本發(fā)明原理的一個示意圖(第一部分);
圖9是說明本發(fā)明原理的一個示意圖(第二部分);
圖10是說明本發(fā)明原理的一個示意圖(第三部分);
圖11是本發(fā)明的一個實施方式的方框圖;
圖12是根據(jù)本發(fā)明第一個實施方式的顯現(xiàn)字符部分的方框圖;
圖13是表示圖11中字形存儲器結(jié)構的圖(第一部分);
圖14是表示圖11中字形存儲器結(jié)構的圖(第二部分);
圖15是根據(jù)本發(fā)明第一個實施方式的流程圖;
圖16是根據(jù)本發(fā)明第一個實施方式產(chǎn)生字符操作的解釋示意圖(第一部分);
圖17是根據(jù)本發(fā)明第一個實施方式產(chǎn)生字符操作的解釋示意圖(第二部分);
圖18表示的是圖16和圖17中所示實施方式所用的漢字字符圖案;
圖19是描述圖15所示實施方式中顯現(xiàn)字符表的解釋示意圖;
圖20是根據(jù)本發(fā)明第二個實施方式的流程圖;
圖21是根據(jù)本發(fā)明第二個實施方式產(chǎn)生字符操作的解釋示意圖(第一部分);
圖22是根據(jù)本發(fā)明第二個實施方式產(chǎn)生字符操作的解釋示意圖(第二部分);
圖23表示的是圖21和22所示的實施方式所用的漢字字符圖案;
圖24是圖20所示實施方式的顯現(xiàn)字符表的解釋示意圖;
圖25是根據(jù)本發(fā)明第三個實施方式的顯現(xiàn)字符部分的方框圖;
圖26是表示圖25中字形存儲器結(jié)構的附圖(第一部分);
圖27是表示圖25中字形存儲器結(jié)構的附圖(第二部分);
圖28是根據(jù)本發(fā)明第三個實施方式的流程圖;
圖29是根據(jù)本發(fā)明第三個實施方式產(chǎn)生字符操作的解釋示意圖(第一部分);
圖30是根據(jù)本發(fā)明第三個實施方式產(chǎn)生字符操作的解釋示意圖(第二部分);
圖31表示的是圖29和30中所示的實施方式使用的漢字字符圖案;
圖32是圖28所示實施方式的顯現(xiàn)字符表的解釋示意圖;
圖33A表示的是四舍五入前坐標值以解釋第三個實施方式;
圖33B用于解釋第三個實施方式的四舍五入后的坐標值的一個附圖;
圖34是解釋第三實施方式的操作的解釋示意圖。
圖8是演示本發(fā)明原理的一個示意圖(第一部分)。如圖8所示,對存儲在1000×1000的一個坐標系中的輪廓坐標ao到co進行坐標變換變?yōu)橹付ǔ叽纭H缓髮λ媒Y(jié)果四舍五入以獲得整數(shù)坐標值。例如,當一個漢字字符“車”轉(zhuǎn)換成一個16×16點陣列時,中間筆劃的較低端坐標b1′和較低筆劃的較上端坐標c1變成同一坐標值,結(jié)果這些筆劃相互接觸。為探測這種接觸點,計算目標筆劃的間隔的總和,并與目標筆劃總數(shù)減1進行比較。當總和小于目標筆劃總數(shù)減1時,進行變細處理。即,使除較外面的筆劃以外的目標筆劃的中間筆劃變細,從而防止筆劃相互接觸。
圖9是表示本發(fā)明原理的一個示意圖(第二部分)。如圖9所示,存儲在1000×1000的一個坐標系中的輪廓坐標ao至co′經(jīng)坐標變換變?yōu)橹付ǔ叽?。接著對所得值四舍五入以獲得整數(shù)坐標值。例如,當一個漢字字符“龜”被轉(zhuǎn)換成一個16×16點陣的尺寸,較上筆劃的較低端坐標a1′和中間筆劃的較上端坐標b1變成同一坐標值,并且中間筆劃的較低坐標b1′和較低筆劃的較上端坐標c1也變成同一坐標值。因此,這些筆劃相互接觸。為了探測這種接觸,計算目標筆劃的間隔的總和,并與目標筆劃總數(shù)減1進行比較。當總和小于目標筆劃總數(shù)減1時,斷定筆劃相互接觸。在這種情況下,當筆劃線寬是一個象素時,若使筆劃線寬變小,筆劃將被刪除。因此,將進行刪除處理。也就是說,不包括較外面的筆劃的目標筆劃的中間筆劃被刪除,從而防止筆劃相互接觸。
圖10表示了本發(fā)明的原理。如圖10所示,存儲在輪廓坐標系中的輪廓坐標a至e經(jīng)坐標變換變?yōu)橐恢付ǔ叽?。然后對所得值四舍五入以獲得整數(shù)坐標值。例如當一個漢字字符“目”被轉(zhuǎn)換成一個14×12點的尺寸,筆劃間隔發(fā)生變化。為了使筆劃間隔的變化減至最小,計算四舍五入前的筆劃間隔和四舍五入后的筆劃間隔。接著計算四舍五入前的筆劃間隔的比例因數(shù)和四舍五入后筆劃間隔的比例因數(shù)。在計算所得的比例因數(shù)中找出最大比例因數(shù)和最小比例因數(shù)。然后改變筆劃以使最大比例因數(shù)與最小比例因數(shù)之差值為最小。因而對筆劃間隔能按原始設計進行調(diào)整。
圖11是本發(fā)明一個實施方式的方框圖,圖12是根據(jù)本發(fā)明第一個實施方式的顯現(xiàn)字符部分的方框圖,圖13(第一部分)和14(第二部分)表示了本發(fā)明一個實施方式的字形存儲器的結(jié)構。
如圖11所示,接收電路1接收來自較高級器件(計算機等)的打印指令和打印數(shù)據(jù)。接收電路由微處理機構成。指令分析器2分析在接收電路1中接收的打印指令等的含義,將接收的數(shù)據(jù)分成一個字符和一個圖。顯現(xiàn)字符電路3從指令分析器2中接收字符碼、字符尺寸和字符方向,從字形存儲器4中讀取字符數(shù)據(jù),顯現(xiàn)相應字符為二進制變換圖。顯現(xiàn)字符電路3下面將參考圖12詳細描述。字形存儲器4以一個輪廓形式存儲字符數(shù)據(jù)。字形存儲器4下面將參考圖13和14詳細描述。
繪圖電路5將一個圖或圖象顯現(xiàn)為一個二進制數(shù)變換圖,將已經(jīng)顯現(xiàn)為二進制數(shù)變換圖的字符和圖疊加,一個疊加在另一個的上面,并將所得圖象寫入二進制數(shù)變換存儲器6中。一個打印機7將二進制數(shù)變換存儲器6中的打印數(shù)據(jù)打印在一張紙上。指令分析器2、字符顯現(xiàn)電路3以及繪畫電路5由一個單片微處理器8構成。
現(xiàn)在描述微處理器8的操作。在接收電路1中接收的打印指令和打印數(shù)據(jù)的含義由指令分析器2來分析,并分解成字符和輪廓。由繪圖電路5將輪廓和圖顯現(xiàn)成二進制數(shù)變換圖。由字符顯現(xiàn)電路3使用存儲在字形存儲器4中的輪廓字形數(shù)據(jù)使字符顯現(xiàn)成指定字符尺寸的二進制數(shù)變換圖。
繪圖電路5將已經(jīng)顯現(xiàn)為二進制數(shù)變換圖的字符和圖形疊加,一個疊加在另一個的上面,并將所得的圖象寫入二進制數(shù)變換存儲器6中。二進制數(shù)變換存儲器6中的數(shù)據(jù)將由打印機7打印在一張紙上。
圖12詳細描述了字符顯現(xiàn)電路3。一個放大/縮小電路30進行放大/縮小操作使得與字形存儲器4的字符碼相對應的字符輪廓數(shù)據(jù)變成所設計的字符尺寸。
啟發(fā)處理器31有一個字符顯現(xiàn)表(后面將參考附圖19和24來討論),該表保存了每個筆劃啟發(fā)處理前和啟發(fā)處理后的數(shù)據(jù)。啟發(fā)處理器31進行四舍五入(啟發(fā))處理或類似的處理以調(diào)整筆劃的寬度或?qū)⑵鋭h除從而改進二進制數(shù)變換的字符性能。
筆劃間隔計算器32計算啟發(fā)(四舍五入)處理后豎筆劃之間或橫筆劃之間的間隔和計算間隔總和。比較器33將計算所得的筆劃間隔總數(shù)與待考慮的筆劃的總數(shù)減1進行比較。當總和小于筆劃總數(shù)減1時,測定電路34指示啟發(fā)電路31使所考慮的筆劃變細或?qū)⑵鋭h除。填充電路35根據(jù)啟發(fā)處理器31中輪廓數(shù)據(jù)填充在輪廓線內(nèi)以完成一個二進制數(shù)變換圖。
上述字符顯現(xiàn)電路3的方框電路30至35都是微處理器8的軟件功能塊。
下面將描述這些方框電路的操作。
字符顯現(xiàn)電路3檢索字形存儲器4以尋找所設計好的字符的輪廓數(shù)據(jù)。然后由放大/縮小電路30將輪廓數(shù)據(jù)放大或縮小成指定尺寸。啟發(fā)處理器31將放大/縮小后的坐標數(shù)據(jù)存儲在字符顯現(xiàn)表中,并對這個數(shù)據(jù)四舍五入以獲得啟發(fā)處理后的坐標數(shù)據(jù)。所得的坐標數(shù)據(jù)存儲在字符顯現(xiàn)表中。
把坐標數(shù)據(jù)輸給筆劃間隔計算器32。筆劃間隔計算器32計算啟發(fā)處理后豎筆劃之間或橫筆劃之間的間隔并計算間隔的總和。
比較器33將計算所得的筆劃間隔總和與待檢測的筆劃總數(shù)減1進行比較,并將比較結(jié)果給測定電路34。當由比較值確定該總和小于該減法所產(chǎn)生的值以及在筆劃之間沒有空白間隔時,測定電路34指示啟發(fā)處理器31使一個筆劃(不包括外層兩個筆劃)變細或?qū)⑵鋭h除。
當比較結(jié)果表明該總和等于或大于該減法所產(chǎn)生的值時,啟發(fā)處理器31將不進行特定處理并把啟發(fā)處理后數(shù)據(jù)給填充電路35。當比較結(jié)果表明總和小于該減法所產(chǎn)生的值時,啟發(fā)處理器31用使筆劃之一(不包括外層筆劃)變細或?qū)⑵鋭h除的這樣一種方式來改變四舍五入后的數(shù)據(jù)以預備啟發(fā)處理后的數(shù)據(jù),并將該數(shù)據(jù)輸給填充電路35。最后填充電路35根據(jù)接收到的數(shù)據(jù)填在輪廓線內(nèi)以完成一個二進制數(shù)變換圖。
現(xiàn)將參考圖13和14描述字形存儲器4的結(jié)構??梢詤⒖枷旅娴那闆r給以描述,在這種情況下,字符在分級結(jié)構中被拆成對應于構成該字符的左手旁根和右手旁根單元、對應于畫筆移動的筆劃、以及對應于筆劃起始部分和筆劃結(jié)尾部分的組成部分。更一步地,用這種描述將闡明為了減少數(shù)據(jù)量,字形存儲器4包括圖13所示的結(jié)構數(shù)據(jù)存儲器4a以存儲字符的分級結(jié)構和特征數(shù)據(jù);以及包括一個輪廓數(shù)據(jù)存儲器4b以存儲被拆成筆劃或部分的每一個字符的輪廓數(shù)據(jù)。
如圖13所示,結(jié)構數(shù)據(jù)存儲器4a包括一個存儲字符設置類型(Minchq黑體字等)和公用數(shù)據(jù)(例如預備好的數(shù)據(jù))的一個標題40、一個根據(jù)字符碼檢索目標數(shù)據(jù)的字符指示符塊41、一個表示被拆成單元(例如左手根和右手根)的單元指示符塊42、以及一個描述每個單元具有什么結(jié)構的單元目錄塊43。
單元目錄塊43包括單元塊44和筆劃塊45,每個單元塊44由各單元的分類碼構成,每個筆劃塊描述了構成每個單元的筆劃的詳細數(shù)據(jù)。
每個筆劃塊45包括各筆劃的分類碼,每一個都描述構成一個筆劃的區(qū)段部分的數(shù)據(jù)的組成部分塊(例如由各組成部分的字符坐標系所看到的原始坐標等),以及空白空間塊。存儲在每個空白空間塊內(nèi)的數(shù)據(jù)是控制筆劃之間的間隔的數(shù)據(jù),空白空間塊有X組號、Y組號、變細標示位以及刪除標示位。
X數(shù)組表示是否需要在X方向控制筆劃與另一筆劃間的間隔。當間隔的控制不必要時,“O”寫入X組號中,而當需要這種控制時,寫入需要筆劃控制的那組筆劃的組號。例如,前面提到圖1中所示的漢字字符“車”有三個豎筆劃。當這些豎筆劃需要在X方向間隔控制等時,同樣的組號(例如“1”)寫入X組號中。
Y組號表示是否需要在Y方向控制筆劃與另一筆劃間的間隔。當間隔的控制不需要時,“0”寫入這個Y組號中,而當需要這種控制時,寫入需要筆劃控制的那組筆劃的組號。例如,前面提到的圖1所示的“車”有五個橫筆劃。當在Y方向這些筆劃中的三個筆劃需要筆劃控制時,相同的組號(例如,“1”)寫入Y組號中。
提供變細標識位以防止在粗字體中線之間的間隔相互接觸。使帶變細標識位“1”的筆劃比原來的筆劃要細以保持線之間的間隔。
提供刪除標位以防止當一個字符被顯現(xiàn)到一個非常小的二進制數(shù)變換圖和線的寬度為一個象素并不能變細時,鄰近的筆劃相互接觸。帶標識位“1”的筆劃被刪除以改善可讀性。
指定字符是否包括需要調(diào)整的筆劃由順序讀取結(jié)構數(shù)據(jù)存儲器4a中空白空間隔塊中的X組號和Y組號來檢測。當寫入的是除“0”以外的一個組號時,對那些有相同組號的筆劃進行線寬調(diào)整或線刪除操作。
當一個字符分成許多組成部分時,輪廓數(shù)據(jù)存儲器具有如圖14所示的數(shù)據(jù)結(jié)構。更特殊地,輪廓數(shù)據(jù)存儲器4b包括一個存儲字符設置類型(Mincho,黑體字等)和公用數(shù)據(jù)(例如預備的數(shù)據(jù))的一個標題塊46、一個根據(jù)字符碼檢索目標數(shù)據(jù)的字符指示符塊47、一個檢索構成指定字符的組成部分的圖象的組成部分指示符塊48、一個以輪廓線描述組成部分圖象的輪廓信息塊49。
組成部分指示塊48按各筆劃的順序配備了組成部分指示符1至n。組成部分指示符1至n帶有指示筆劃尾端的標識位。假定一個筆劃有由組成部分指示符1和2表示的組成部分,表示該筆劃尾端的標識位設置在組成部分指示符2中,能清楚看到那一筆劃對應那些組成部分。
用上述設計,如果給每一字符配組成部分指示符塊48,輪廓信息塊49各組成部分的輪廓數(shù)據(jù)能由許多字符共用,因而,確保字形存儲器的容量減小。
圖15是根據(jù)本發(fā)明第一個實施方式的流程圖,圖16和17是根據(jù)本發(fā)明第一個實施例的產(chǎn)生字符的過程的解釋圖(部分1和部分2),圖18表示的是用于這實施例中的漢字字符圖案,圖19描述了本發(fā)明一個實施例的字符顯現(xiàn)表的解釋性圖表。
首先,描述圖18所示的黑體字漢字字符“車”的產(chǎn)生過程,例如由參照圖16、17和19的字形存儲器4。如圖16所示,根據(jù)漢字字符“車”的字符碼“8ED4”在字形存儲器4的結(jié)構數(shù)據(jù)存儲器4a的字符指示符塊41中獲得一個單元的指示符。然后在單元指示符塊42中得到存儲結(jié)構數(shù)據(jù)的單元塊44的指示符。
由于漢字字符“車”由八個筆劃S1至S8構成,如圖18所示,關于構成漢字字符“車”的八個筆劃S1至S8的數(shù)據(jù)存在靠近單元塊44中的單元分類碼的筆劃塊45中。這個例子表明按照劃字符的筆劃順序來布置數(shù)據(jù)。
第一筆劃S1是一橫線,它有一個橫線分類碼“000010”??刂茦酥静糠质恰?000”,在控制標識位部分中X組號、Y組號、變細標識位以及刪除標識位按敘述的順序排列。也就是說,對應Y方向筆劃控制的組號設置為“0”,變細標識位和刪除標識位,都是“0”。第二筆劃S2是一豎線,它有一個豎線分類碼“000001”以及這個筆劃具有一個設置“1”的X組號。而且,對于第三筆劃S3、第五筆劃S5、第六筆劃S6以及第七筆劃S7都有設置為“1”的Y數(shù)組號,而第四筆劃S4有一個設置為“1”的X組號。
換句話說,漢字字符“車”在X方向有三個調(diào)整筆劃并且在Y方向也有三個調(diào)整筆劃。
由于第五筆劃S5有一個變細標識位“1”,如果若用粗的字體等,當字符顯現(xiàn)為一個二進制數(shù)變換圖時橫筆劃相互接觸沒有空著的間隔,則使這些筆劃線變細以保持有間隔。
更進一步地,由于第五筆劃S5有一個刪除標識位“1”,如果在產(chǎn)生一個小的二進制變換圖時,橫筆劃相互間靠的很近以至于涂滿了黑色則刪除這一筆劃使得筆劃間保持有間隔。
因此,根據(jù)漢字字符“車”的字符碼,從結(jié)構數(shù)據(jù)存儲器4a中讀出相對應的筆劃塊45的內(nèi)容。類似地,組成部分指示符塊48的指示符可由圖17所示的漢字字符“車”的字符碼“8ED4”從字符指示符塊47獲得。接著,相應輪廓數(shù)據(jù)可以從組成部分指示符塊48中的輪廓信息塊49中獲得。
圖12所示放大/縮小電路30將該組成部分的輪廓數(shù)據(jù)放大或縮小為指定字符尺寸的輪廓數(shù)據(jù)。例如,在圖8中為了提供指定一個X方向16象素和Y方向16象素的尺寸,由1000×1000坐標系表示的一個字符的輪廓數(shù)據(jù)在X方向和Y方向都乘以16/1000。
將這樣變換過的輪廓數(shù)據(jù)與筆劃塊45的數(shù)據(jù)一起送到圖12中的啟發(fā)處理器31。啟發(fā)處理器31預備圖19所示的字符顯現(xiàn)表。對于構成一個字符的每一筆劃,如圖19所示,該字符顯現(xiàn)表都包括一個筆劃編號,四舍五入前的筆劃的坐標(X坐標的X1是一個豎筆劃的線寬的左手邊的坐標,X坐標的Xr是該豎筆劃的線寬的右手邊的坐標,Y坐標的Yb是一個橫筆劃的線寬的下端的坐標,Y坐標的Yu是該橫筆劃的線寬的上端的坐標),四舍五入后的筆劃的坐標(X坐標的X1是一個豎筆劃的線寬的左手邊的坐標,X坐標的Xr是該豎筆劃的線寬的右手邊的坐標,Y坐標的Yb是一個橫筆劃的線寬的下端的坐標,Y坐標的Yu是該橫筆劃的線寬的上端的坐標),一個組號(X,Y),變細標識位(X,Y),刪除標識位(X,Y)以及該筆劃的輪廓數(shù)據(jù)。
從而,啟發(fā)處理器31將由放大/縮小電路計算的各段輪廓數(shù)據(jù)存儲在圖19所示字符顯現(xiàn)表中相應筆劃的輪廓數(shù)據(jù)欄中。然后啟發(fā)處理器31將筆劃的結(jié)構數(shù)據(jù)存儲在控制標識位欄(組號(X,Y),變細標識位(X,Y),刪除標識位(X,Y))中。啟發(fā)處理器31根據(jù)輪廓數(shù)據(jù)并且不管筆劃是豎筆劃還是橫筆劃獲得每一筆劃的結(jié)尾坐標,并將坐標數(shù)據(jù)存儲在四舍五入前的筆劃坐標欄中。更進一步地,啟發(fā)處理器31對四舍五入前的筆劃坐標進行線寬保持不變四舍五入處理。啟發(fā)處理器31因而得到四舍五入后的筆劃坐標并將其存儲在字符顯現(xiàn)表中四舍五入后筆劃坐標欄中。
上面參考圖18所示漢字字符“車”被轉(zhuǎn)換為圖8所示的16×16點的尺寸的這種情況進行了描述。如圖18所示,因第一筆劃S1是一橫筆劃,該橫筆劃的線寬的下端Y坐標Yb和上端Y坐標Yu由坐標變換后的輪廓數(shù)據(jù)獲得。Yb和Yu分別是13.4和15.8,它們被存儲在圖19所示的字符顯現(xiàn)表中的四舍五入前筆劃欄中。
對坐標進行線寬度不變四舍五入處理,結(jié)果該橫筆劃線寬的下端Y坐標Yb變?yōu)椤?3”而該橫筆劃線寬的下端Y坐標Yu變?yōu)?5,如圖8所示。所得Y坐標被存儲在字符顯現(xiàn)表的四舍五入后筆劃欄中。
此后,用同樣的方法,可獲得第二筆劃S2、第三筆劃S3、第四筆劃S4、第五筆劃S5、第六筆劃S6、第七筆劃S7以及第八筆劃S8的四舍五入前后的筆劃坐標,并將它們存儲在字符顯現(xiàn)表中。用這種方式,四舍五入前的漢字字符“車”通過四舍五入處理變成了如圖8所示的形式。
用這些數(shù)據(jù)段,由圖11所示的筆劃間隔計算器32、比較器33以及測定電路34來完成圖15所示的線寬調(diào)整處理。
(1)啟發(fā)處理器31從字形存儲器4的結(jié)構數(shù)據(jù)存儲器4a中讀取一個指定字符一個組成部分的筆劃區(qū)段。然后啟發(fā)處理器31把坐標變換后的輪廓數(shù)據(jù)(該數(shù)據(jù)由放大/縮小電路30獲得)以及該筆劃區(qū)段的內(nèi)容存儲在圖19所示字符顯現(xiàn)表中。
(2)啟發(fā)處理器31閱讀字符顯現(xiàn)表的組號欄采取具有相同組號的筆劃組。啟發(fā)處理器31讀取四舍五入處理后的筆劃坐標并將它們送到筆劃間隔計算器32。例如,對于前面提到的漢字字符“車”,三個筆劃S3,S5以及S6作為來自字符顯現(xiàn)表具有相同組號的筆劃提取出來。然后,讀出四舍五入處理后的筆劃坐標。
(3)筆劃間隔計算器32由四舍五入后的筆劃坐標計算啟發(fā)處理后的筆劃間隔WS。在圖19所示例子中,計算兩個筆劃間隔a1′-b1和b1′-c1。a1′是筆劃S3的下Y坐標Yb(=10),而b1是筆劃S5的上Y坐標Yu(=9)。b1′是筆劃S5的下Y坐標Yb(=7),c1是筆劃S6的上Y坐標Yu(=7)。因此,啟發(fā)處理后筆劃間隔WS變?yōu)閃S=(a1′-b1)+(b1′-c1)=10-9+7-7=1然后,從筆劃總數(shù)N(=3)中減去1以便獲得對于N個筆劃所需空白(空白)區(qū)域數(shù)目,即N-1=2。
(4)比較器33從(N-1)中減去筆劃間隔數(shù)WS,并將計算結(jié)果傳給測定電路34。測定電路34檢測比較結(jié)果是否為“0”或正數(shù)。如果比較結(jié)果是“0”或正數(shù)這意味著在筆劃間有空白間隔,不需進行線變細處理,進行步驟(7)。
(5)如果測定電路34檢測到比較結(jié)果為負數(shù),不是“0”或正,則筆劃之間沒有足夠的間隔以及鄰近的筆劃相互接觸。因而,測定電路34指示啟發(fā)處理器31對筆劃進行線變細處理。結(jié)果是,啟發(fā)處理器31由四舍五入處理后的坐標值來檢驗這N個目標筆劃的線寬度,提取具有兩個或更多象素的線寬的筆劃。如果沒有找到具有兩個或更多象素的線寬的筆劃,不進行線變細處理,進行步驟(7)。
當檢測到任一具有兩個或更多象素線寬的筆劃時,啟發(fā)處理器31在字符顯現(xiàn)表中查閱變細標識位欄以核對是否為這筆劃設置了變細標識位。當沒有為具有兩個或更多象素線寬的每個筆劃設置變細標識位時,將不進行線變細處理,而進行步驟(7)。
(6)啟發(fā)處理器31將具有兩個或更多象素寬度并具有變細標識位的字符的線寬減1。也就是說,改變在字符顯現(xiàn)表中四舍五入處理后的該筆劃對應的坐標以使得線寬減少了一個象素。在圖18所示例子中,在漢字字符“車”中的組成部分“Hi”的中間筆劃S5具有兩個或更多象素一個線寬并具有變細標識位。所以,“1”與字符顯現(xiàn)表中對應于經(jīng)四舍五入處理后的筆劃S5的下坐標Yb相加,使其為“8”,線寬減少了一個象素。
用這種方式,漢字字符“車”變成如圖8所示,防止字符“車”的組成部分“Hi被填滿并使其外形接近原始字符圖。
如果對不包括最外層的兩個筆劃的組成部分的這個筆劃進行變細處理,所得的字符的外形更接近原始字符圖。因此,為不包括最外兩個筆劃(在本例中為筆劃S3和S6)的組成部分的筆劃設置變細標識位。
(7)接著,啟發(fā)處理器31檢查字符顯現(xiàn)表中的組號欄以核對是否還有未處理的組號。如果存在這樣一個未處理組號,啟發(fā)處理器返回到步驟(2)。
如果啟發(fā)處理器31確定沒有未處理的組號,則核對是否已完成了X方向和Y方向的調(diào)整。當調(diào)整還沒有完成時,啟發(fā)處理器31返回步驟(2)。當調(diào)整已經(jīng)完成,則啟發(fā)處理器31檢測是否已對字符的所有的組成部分重復了上述操作。當沒有對所有的組成部分完成該操作時,啟發(fā)處理器31返回到步驟(1)。當已對所有的組成部分完成該操作時,啟發(fā)處理器31終止該調(diào)整操作。
當完成調(diào)整操作時,字符顯現(xiàn)電路3中的填充電路35根據(jù)字符顯現(xiàn)表中的內(nèi)容進行繪制以完成一個二進制數(shù)變換圖。
通過上述處理,即使是縮小了漢字字符“車”,也能由調(diào)整筆劃的線寬來獲得接近原始字符設計的二進制數(shù)變換圖,如圖8所示。
圖20是根據(jù)本發(fā)明的第二個實施方式的流程圖,圖21和22是根據(jù)本發(fā)明第二實施方式的字符產(chǎn)生方法的解釋圖,圖23表示了一個用在該實施方式中的字符圖案,圖24是本發(fā)明的一個實施例中的字符顯現(xiàn)表的解釋圖。
首先,描述圖23所示的漢字字符“龜”的產(chǎn)生過程,例如由參照圖21、22和24中的字形存儲器4。
如圖21所示,根據(jù)漢字字符“龜”的字符碼“8B54”,在字形存儲器4的結(jié)構存儲器4a的字符指示符塊41中獲得一個單元指示符。然后,存儲結(jié)構數(shù)據(jù)的單元塊44的指示符在單元指示符塊41中獲得。由于漢字字符“龜”由十四筆劃S1到S14組成,如圖23所示,構成漢字字符“龜”的十四個筆劃S1至S14的數(shù)據(jù)用筆劃區(qū)塊45來描述,筆劃塊45緊跟在單元塊44的單元分類碼之后。這個例子表明以字符的筆劃順序來放置數(shù)據(jù)。
由于第一筆劃S1是斜線,它有一個斜線鑒別碼和控制標識位部分,在控制標識位部分中以命名順序排列的X數(shù)組、Y數(shù)組、變細標識位和刪除標識位是“0000”。即,在X和Y方向筆劃控制的數(shù)組設置為“0”和變細標識位及刪除標識位都是“0”。由于第二筆劃S2是橫線,這個筆劃有一個橫線鑒別碼,而且有在X和Y方向都設置為“0”的筆劃控制的數(shù)組,變細標識位和刪除標識位都是“0”。
換句話說,對于如圖24所示的漢字字符“龜”,筆劃S9,S11和S14設置成X方向調(diào)節(jié)的第一數(shù)組,筆劃S5,S7和S8設置成Y方向調(diào)節(jié)的第一數(shù)組,筆劃S10,S12和S13設置成Y方向調(diào)節(jié)的第二數(shù)組。
第七個筆劃和第十二筆劃S12都有為“1”的變細標識位。如果當字符用粗體或類似形式顯現(xiàn)到二進制數(shù)圖上時由于沒留間隔而使橫筆劃相互接觸,那么這些線要變細以保持按第一實施例所述的間隔。
進一步地,由于第七筆劃S7和第十二筆劃S12都有值為“1”的刪除標識位,如果當產(chǎn)生小的二進制數(shù)變換圖時橫筆劃相互非常接近以至沒有留空,那么,這個筆劃就會被刪除以在筆劃之間保留間隔。
因此,依據(jù)漢字字符“龜”的字符碼,相應的筆劃塊45的內(nèi)容從結(jié)構數(shù)據(jù)存儲器4a中讀出。相似地,根據(jù)圖22所示的漢字字符“龜”的字符碼“8B54”從字符指示符塊47中得到單元指示符塊48的指示符,然后,從單元指示符塊48中的輪廓信息塊49中得到相應的輪廓數(shù)據(jù)。
參考圖12已經(jīng)解釋了的放大/縮小電路30將該輪廓數(shù)據(jù)放大或縮小到指定的字符尺寸的輪廓數(shù)據(jù)。例如,為了得到圖9中的X方向12個象素和Y方向12個象素的尺寸,用1000×1000的坐標系表示的字符的輪廓數(shù)據(jù)在X方向乘以12/1000,在Y方向也乘以12/1000。
這樣,變換過的輪廓數(shù)據(jù)和筆劃塊45的數(shù)據(jù)被一同送到圖12中的啟發(fā)處理器31中。啟發(fā)處理器31形成圖24所示的字符顯現(xiàn)表。
對于構成字符的每一筆劃,如圖24所示,字符顯現(xiàn)表包含有筆劃數(shù)、四舍五入前的筆劃的坐標(豎筆劃線寬左手邊的X坐標X1,豎筆劃線寬度右手邊的X坐標Xr,橫筆劃線寬度底邊的Y坐標Yb和橫筆劃線寬度上邊的Y坐標Yu)。四舍五入后筆劃的坐標(豎筆劃線寬度左手邊的X坐標X1,豎筆劃線寬度右手邊的X坐標Xr,橫筆劃線寬度底邊的Y坐標Yb和橫筆劃線寬度上邊的Y坐標Yu)、數(shù)組(X、Y),變細標識位(X、Y),刪除標識位(X、Y)和這個筆劃的輪廓數(shù)據(jù)。
因此,啟發(fā)處理器31將輪廓數(shù)據(jù)中的各部分存儲在字符顯現(xiàn)表中的相應筆劃的輪廓數(shù)據(jù)欄中,輪廓數(shù)據(jù)由放大/縮小電路30進行計算。然后啟發(fā)處理器31把筆劃的結(jié)構數(shù)據(jù)存儲在控制標識位欄中數(shù)組(X、Y)、變細標識位(X、Y)、刪除標識位(X、Y)。啟發(fā)處理器31根據(jù)輪廓數(shù)據(jù)和該筆劃是豎筆劃還是橫筆劃來得到四舍五入前每個筆劃的坐標,并把四舍五入前的坐標數(shù)據(jù)存儲在筆劃坐標欄中。
進一步地,啟發(fā)處理器31根據(jù)四舍五入前的筆劃坐標進行線寬度保持不變的四舍五入處理,以得到四舍五入后的筆劃坐標,然后,啟發(fā)處理器31把取四舍五入后的這些坐標存儲在字符顯現(xiàn)表中的四舍五入后筆劃坐標欄中。
上述過程參考如下情況進行描述,在這種情況下,圖21和22所示的漢字字符“龜”被變換成圖9中的12×12點的尺寸。如圖23所示,由于第二筆劃S2是橫筆劃,橫筆劃的線寬度的底Y坐標Yb和上Y坐標Yu以坐標變換后的輪廓數(shù)據(jù)中獲得。Y坐標Yb和Yu分別是11.5和12.1,并存儲在字符顯現(xiàn)表中的四舍五入前的筆劃欄中。
對這些坐標進行線寬度保持不變的四舍五入處理,以便第二橫筆劃S2的線寬度的底Y坐標Yb變成“11”,這個橫筆劃S2的線寬度的上Y坐標YU變成“12”,見圖9。最后的Y坐標被存儲在字符顯現(xiàn)表中的四舍五入后筆劃欄中。此后,相似地,可以得到豎筆劃和橫筆劃S4、S5、S6、S7、S8、S9、S10、S11、S12、S13以及S14的四舍五入前后的筆劃坐標,斜線除外,并將這些坐標存儲字符顯現(xiàn)表中。以此方式,通過四舍五入的方法使四舍五入前的漢字字符“龜”變成了如圖9所示的那樣。
采用那些數(shù)據(jù),用筆劃間隔計算器32、比較器33和測定電路34(如圖12所示)來執(zhí)行圖20中的筆劃刪除/調(diào)整步驟。
(1)啟發(fā)處理器31從字形存儲器4的結(jié)構數(shù)據(jù)存儲器4a中讀取一個指定字符的一個組成部分的一個筆劃塊。啟發(fā)處理器31然后存儲由放大/縮小電路30獲得的輪廓數(shù)據(jù)和該筆劃區(qū)段的內(nèi)容在字符顯現(xiàn)表(見圖24)中。
(2)啟發(fā)處理器31閱讀在字符顯現(xiàn)表中的組號欄以便采集具有相同組號的筆劃組。啟發(fā)處理器31讀取在四舍五入過程之后的筆劃坐標并把它們送到筆劃間隔計算器32。例如,對于圖23所示的漢字字符“龜”,把三個筆劃S5、S7和S8作為來自字符顯現(xiàn)表的相同組號的筆劃提取出來,并且然后讀出四舍五入過程之后的筆劃坐標。
(3)在啟發(fā)過程之后,筆劃間隔計算器32從在四舍五入過程之后的筆劃坐標中計算筆劃間隔WS。
在圖24的例子中,計算兩個筆劃間隔a1′-b1和b1′-c1。a1′是筆劃S5的底Y坐標Yb(=9),和b1是筆劃S7的上Y坐標Yu(=9)。b1′是筆劃S7的底Y坐標Yb(=8),和c1是筆劃S8的上Y坐標Yu(=8)。因而,在啟發(fā)過程之后,筆劃間隔變成WS=(a1′-b1)+(b1′-c1)=9-9+8-8=0接著,從筆劃總數(shù)N(=3)中減去1以便獲得對于N筆劃所需要的白(空白)區(qū)域的數(shù)目;即,N-1=2。
(4)比較器33從(N-1)中減去筆劃間隔WS,并且通知測定電路34結(jié)果。測定電路34測定比較結(jié)果是否為“0”或者正數(shù)。如果比較結(jié)果是“0”或者是正數(shù),即意味著在筆劃之間存在空白間隔,則不需要線刪除。因而,流程前進到步驟(7)。
(5)如果測定電路34測定比較結(jié)果是負數(shù)(即不是“0”或正數(shù)),則在筆劃之間沒有足夠的間隔和鄰近的筆劃相互接觸。因而,測定電路34指示啟發(fā)處理器31執(zhí)行筆劃刪除。結(jié)果是,啟發(fā)處理器31查閱字符顯現(xiàn)表中的刪除標識位欄以檢查刪除標識位是否為該筆劃而設定。當對于每個目標筆劃沒有設定刪除標識位時,不執(zhí)行線刪除過程,并且流程前進到步驟(7)。
(6)當檢測到一個具有刪除標識位的筆劃時,啟發(fā)處理器31刪除該筆劃。這就意味著使在字符顯現(xiàn)表中的四舍五入后那個筆劃的底和上坐標在Y方向彼此相等。在圖9的例子中,在漢字字符“龜”中的上組成部分“Hi”的中間筆劃S7有刪除標識位。因而,對于在字符顯現(xiàn)表中的四舍五入過程之后的筆劃S7的底Y坐標Yb加“1”以使其變?yōu)椤?”,因而使線寬度變?yōu)?,結(jié)果是刪除了該筆劃。
以此方式,漢字字符“龜”變成如圖9所示那樣,避免了字符“龜”的上組成部分“Hi”被涂滿并且使其外形接近原字符形象。
如果除去最外面的筆劃的組成部分的那個筆劃進行了線刪除,最后字符的字形變得更接近原始字符形象。因此,為除去最外面兩筆劃(在此例子中為筆劃S5和S8)的組成部分的那個筆劃設置刪除標識位。
(7)接著,啟發(fā)處理器31檢查在字符顯現(xiàn)表中的組號欄以檢查是否仍有未處理的組號。如果存在有這樣一個未處理的組號,啟發(fā)處理器31返回到步驟(2)。如果啟發(fā)處理器31測定沒有未處理的組號,則啟發(fā)處理器31檢查對于X和Y方向的調(diào)整是否都已完成。調(diào)整還沒完成,啟發(fā)處理31返回到步驟(2)。當調(diào)整已經(jīng)完成時,啟發(fā)處理器31則檢測上面的的操作是否對于字符的所有組成部分已經(jīng)重復。當沒有對所有組成部分重復該操作時,啟發(fā)處理器31返回到步驟(1)。當對所有組成部分已經(jīng)重復該操作時,啟發(fā)處理器31終止該調(diào)整過程。
當已經(jīng)完成調(diào)整后,在字符顯現(xiàn)電路3中的填充電路35基于字符顯現(xiàn)表中的內(nèi)容進行繪制以完成一個二進制數(shù)變換圖。
通過上述過程,即使對于縮小了的漢字字符“龜”,接近原字符設計的二進制數(shù)變換圖也能通過調(diào)整筆劃的線寬而獲得,如圖9所示。通常,在那些實施例中,當一個字符的最外面的筆劃粗時,可讀性高,這樣最外面的筆劃就不能變窄或被刪除。如果使具有一個象素寬的一個筆劃變細,將刪除該筆劃,這樣來說可使具有兩個象素或更多象素寬度的筆劃變細。
為使一個目標筆劃變細,在該筆劃顯現(xiàn)成一個二進制變換圖之前改變該筆劃的坐標,因此很容易地使該筆劃變細。另外,有可能指定一個筆劃,通過事先使線寬較細或事先設置一個要刪除的筆劃,該筆劃既使當在字符設計時作得較細也能保持可讀性。進一步說,有可能容易地識別制得較細的一個筆劃,因而保證了與原始字符設計相配的筆劃調(diào)整。
盡管是參考漢字字符“車”描述了第一實施例,該實施例也可應用于其它具有平行水平筆劃的漢字字符,象漢字字符“龜”。盡管是參考漢字字符“龜”的上組成部分“Hi”描述了第二實施例,也可以檢查這個字符的下組成部分“Hi”。同樣,第二實施例也可用于具有平行垂直筆劃的其它漢字字符中,象漢字字符“車”。另外,可以把第一和第二實施例結(jié)合起來,使得可以對一個具有兩個象素或更多象素寬度的筆劃進行第一實施例的線變細操作,并且也可以對一個小于兩個象素寬度的筆劃進行第二實施例的線刪除操作。在字符坐標系中可以設置一個表示的一個組成部分的原點,這樣由離開此原點的相對位置可以表示輪廓數(shù)據(jù)。盡管已經(jīng)把字形存儲器解釋為一個組成部分分段式,但它也可以是一個筆劃分段式的。
現(xiàn)描述第三實施例。根據(jù)本實施例的一個字符發(fā)生裝置的結(jié)構與圖11所示的相同。圖25是一個字符顯現(xiàn)電路3的方框圖,圖26和27是表示一個字形存儲器結(jié)構的圖(第一部分和第二部分)。
圖25表示在字符顯現(xiàn)電路3的方框圖中的詳細演示。放大/縮小電路30放大或縮小對應于來自字形存儲器4的字符編碼的字符輪廓數(shù)據(jù),使得該數(shù)據(jù)具有指定的字符尺寸。啟發(fā)處理器31有一個表(該表以后參考圖32描述)以便保存對于每個筆劃的在一個啟發(fā)過程之前的數(shù)據(jù)和在此之后的數(shù)據(jù),和執(zhí)行一個四舍五入(啟發(fā))過程或相似的過程以調(diào)整線寬或位置以便因而改善一個二進制數(shù)變換的字符質(zhì)量。筆劃間隔計算器32計算在啟發(fā)(四舍五入)過程之后的水平筆劃或垂直筆劃之間的間隔,和在啟發(fā)過程之前的水平筆劃或垂直筆劃之間的間隔。一個比例因數(shù)計算器36計算一個在啟發(fā)過程之前的一個筆劃間隔和在該過程之后的一個筆劃間隔之間的比例因數(shù)。一個最大/最小比例因數(shù)檢測器38檢測最大和最小比例因數(shù)并且計算它們之間的差值。一個試用部件37指示筆劃間隔計算器32向在啟發(fā)過程之后的筆劃間隔加一個象素,這就提供了最小比例因數(shù),和從啟發(fā)過程之后的筆劃間隔中減少一個象素,這就提供了最大比例因數(shù)。一個測定電路39把在試用前最大和最小比例因數(shù)之間的差值與在試用后最大和最小比例因數(shù)之間的差值進行比較。當靠試用已經(jīng)使差值變得較小時,在試用之后測定電路39把計算結(jié)果供回給啟發(fā)處理器31,并且當靠試用沒有使差值變得更小時,把試用之前的計算結(jié)果供回給啟發(fā)處理器31。填充電路35根據(jù)來自啟發(fā)處理器31的輪廓數(shù)據(jù)填充進輪廓線內(nèi)部以完成一個二進制數(shù)變換圖。
字符顯現(xiàn)電路3由一個處理器設成,并且方框電路30和39是該處理器的軟件的功能塊。
下面將描述字符顯現(xiàn)電路3的操作。字符顯現(xiàn)電路3為了指定的字符數(shù)據(jù)(輪廓數(shù)據(jù))而檢索字形存儲器4,并且允許放大/縮小電路30來放大或縮小該數(shù)據(jù)到指定的尺寸。啟發(fā)處理器31在該放大或縮小之后把該坐標數(shù)據(jù)存儲在表中,并且在一個啟發(fā)過程之后取整數(shù)該數(shù)據(jù)以獲得坐標數(shù)據(jù)。把所得的坐標數(shù)據(jù)存在表中。把該數(shù)據(jù)給筆劃間隔計算器32。該筆劃間隔計算器32計算在啟發(fā)過程之后在水平筆劃或垂直筆劃之間的間隔,以及在啟發(fā)過程之前在水平筆劃或垂直筆劃之間的間隔。比例因數(shù)計算器36根據(jù)由筆劃間隔計算其32計算的間隔來計算比例因數(shù)。最大/最小比例因數(shù)檢測器38檢測在計算出的比例因數(shù)中的最大和最小的比例因數(shù)。該檢測器38計算在這兩個比例因數(shù)之間的差值(第一差值)并且暫時把它存儲在測定電路39中。
試用部件37指示筆劃間隔計算器32嘗試向提供了最小比例因數(shù)的啟發(fā)過程之后的筆劃間隔增加一個象素,以及從提供了最大比例因數(shù)的啟發(fā)過程之后的筆劃間隔中減少一個象素。筆劃間隔計算器32根據(jù)該指示計算在啟發(fā)過程之后的筆劃間隔,并且把計算結(jié)果輸出給比例因數(shù)計算器36。比例因數(shù)計算器36計算在啟發(fā)過程之后修正了比例因數(shù)的筆劃間隔。最大/最小比例因數(shù)檢測器38計算在最大和最小比例因數(shù)之間的差值(第二差值),并且把它送到測定電路39。
測定電路39把暫時保留的第一差值與在試用后的第二差值進行比較,當靠試用該差值已經(jīng)變小時,則在試用之后把計算結(jié)果反饋回啟發(fā)處理器31,當靠試用該差值沒有變小時,則把在試用前的計算結(jié)果反饋回啟發(fā)處理器31。當試用不成功時,啟發(fā)處理器31不執(zhí)行什么特定的操作并且在啟動過程之后把數(shù)據(jù)給填充電路35。當試用是成功的時候,在啟發(fā)過程之后,啟發(fā)處理器31預備數(shù)據(jù),該數(shù)據(jù)是通過把位于在提供最大比例因數(shù)的筆劃間隔和提供最小比例因數(shù)的筆劃間隔之間的筆劃向著帶有最大比例因數(shù)的筆劃間隔移動一個象素而獲得,并且該啟發(fā)處理器31把合成數(shù)據(jù)送到填充電路35。最后,根據(jù)來自啟發(fā)處理器31的接收到的輪廓數(shù)據(jù),填充電路35填充輪廓線的內(nèi)部以完成一個二進制數(shù)變換圖。
根據(jù)圖26和27描述字形存儲器4的結(jié)構。類似于圖13和14的描述,可以根據(jù)這樣的情形進行描述,其中以一個分級的結(jié)構來分解一個字符,以便存儲對應于構成該字符的左邊根及右邊根的單元、對應于刷子運動的筆劃、和對應于筆劃開始部分及筆劃結(jié)束部分的組成部分。另外,在此描述中將解釋為了減少數(shù)據(jù)量,字形存儲器4包括結(jié)構數(shù)據(jù)存儲器4a(圖26中)以存儲字符的分級結(jié)構和特征數(shù)據(jù),和一個輪廓數(shù)據(jù)存儲器4b以存儲分解成筆劃或組成部分的每個字符的輪廓數(shù)據(jù)。
如圖26所示,結(jié)構數(shù)據(jù)存儲器4a具有與圖13所示的存儲器相同的結(jié)構。通過順序地讀取在結(jié)構數(shù)據(jù)存儲器4a中的空白間隔塊中的X組號和Y組號可以檢查被指定的字符是否包括一個需要調(diào)整的筆劃。當寫入一個不是“0”的組號時,在具有相同組號的那些筆劃上執(zhí)行線間隔調(diào)整。
當一個字符被分解為組成部分時,輪廓數(shù)據(jù)存儲器4b有一個如圖27所示的數(shù)據(jù)結(jié)構。該結(jié)構與如圖14所示的那個相同。
圖28是根據(jù)本發(fā)明第三實施例的間隔控制的流程圖,圖29和30是對根據(jù)本發(fā)明的一個實施例的字符發(fā)生操作的解釋性的圖表(第一部分第二和部分),圖31表示用于本實施例的一個字符的圖案,圖32是對于在本發(fā)明第三實施例中的字符顯現(xiàn)表的解釋性的圖表,并且圖33A、33B、及34是根據(jù)本發(fā)明第三實施例的操作的解釋性的圖表(第一部分第二和部分)。
首先,解釋如圖31所示的產(chǎn)生一個漢字字符“目”的操作,例如,出自參照圖29、30和32的字形存儲器4。如圖29所示,在基于漢字字符“目”的字符編碼“96DA”的字形存儲器4的結(jié)構數(shù)據(jù)存儲器4a的字形指示符塊41中得到對于一個單元的指示符。另外,在單元指示符方框42中可得到對于其中存儲有結(jié)構數(shù)據(jù)的單元塊44的指示符。在接著單元塊44中的單元的分類編碼之后的筆劃塊45中描述關于構成漢字字符“目”的六個筆劃S1到S6的數(shù)據(jù)。這個例子表示了以字符的筆劃順序放置數(shù)據(jù)。
由于第一筆劃S1是一個垂直線,它有一個垂直線分類編碼“000001”,并且一個標識位部分(其中的X組號、Y組號、變細標識位和刪除標識位以標定的順序安排)是“0000”。由于把對于在X和Y方向的間隔控制的組號設定為“0”,則無需要間隔控制,并且變細標識位和刪除標識位都是“0”。
由于第二筆劃S2是一個水平線,它有一個水平線分類編碼“000010”,并且這個筆劃有一個設置為“1”的Y組號。這個筆劃S2與第四、第五和第六筆劃S4、S5和S6是進行Y方向的間隔控制的目標。因而漢字字符“目”在Y方向有4個間隔控制組。
第四和第五筆劃S4和S5有設置為“1”的變細標識位。如果當用一個粗體字體或類似物把字符顯現(xiàn)為一個二進制數(shù)變換圖時水平筆劃彼此接觸無間隔分享,則使這些線變細以維持間隔。另外,第四筆劃S4有一個為“1”的刪除標識位。如果當產(chǎn)生一個小二進制數(shù)變換圖時水平筆劃彼此靠得肥非常近以至于涂滿了黑色,則該筆劃被刪除以保持筆劃間的間隔。
因此,基于漢字字符“目”的字符編碼,從結(jié)構數(shù)據(jù)存儲器4a中讀出相關筆劃塊45的內(nèi)容。類似地,如圖30所示,基于漢字字符“目”的字符編碼“96DA”從字符指示符塊47中可以獲得對于組成部分指示符塊48的指示符。然后,從在組成部分指示符塊48的輪廓信息塊49中可得到相關的輪廓數(shù)據(jù)。
放大/縮小電路30(已經(jīng)參照圖25解釋過)把這部分的輪廓數(shù)據(jù)放大或縮小為指定的字符尺寸的輪廓數(shù)據(jù)。例如,為了提供在圖33A中的對于X為12個象素和對于Y為14個象素的尺寸,在X方向用12/1000及在Y方向用14/1000來乘由1000×1000坐標系統(tǒng)表示的一個字符的輪廓數(shù)據(jù)。把因而轉(zhuǎn)換的輪廓數(shù)據(jù)連同筆劃塊45的數(shù)據(jù)一起送到在圖25中的啟發(fā)處理器31中。啟發(fā)處理器31預備圖32所示的字符顯現(xiàn)表。
對于構成一個字符的每個筆劃,該字符顯現(xiàn)表包括一個筆劃編號,四舍五入前的筆劃的坐標(一個垂直筆劃的線寬的左側(cè)邊的X坐標X1,該垂直筆劃的線寬的右側(cè)邊的X坐標Xr,一個水平筆劃的線寬的底邊的Y坐標Yb,和該水平筆劃的線寬的頂邊的Y坐標Yu),四舍五入后的筆劃的坐標(一個垂直筆劃的線寬的左側(cè)邊的X坐標X1,該垂直筆劃的線寬的右側(cè)邊的X坐標Xr,一個水平筆劃的線寬的底邊的Y坐標Yb,和該水平筆劃的線寬的頂邊的Y坐標Yu),一個組號(X,Y),變細的標識位(X,Y),刪除標識位(X,Y)和那個筆劃的輪廓數(shù)據(jù)。
因而,啟發(fā)處理器31將由放大/縮小電路30計算的每個輪廓數(shù)據(jù)存儲在字符顯現(xiàn)表中的相關筆劃的輪廓數(shù)據(jù)欄中的。接著,啟發(fā)處處理器31在控制標識位欄中存儲筆劃的結(jié)構數(shù)據(jù)(組號(X,Y),變細標識位(X,Y),刪除標識位(X,Y))。根據(jù)輪廓數(shù)據(jù)及根據(jù)該筆劃是一個垂直筆劃還是一個水平筆劃,啟發(fā)處理器31得到四舍五入前每個筆劃的坐標,并且把坐標數(shù)據(jù)存儲在四舍五入前筆劃坐標欄中。另外,啟發(fā)處理器31對四舍五入前的筆劃坐標執(zhí)行上面提到的線寬保留不變的四舍五入處理。啟發(fā)處理器31則得到四舍五入后的筆劃坐標并且把它們存在字符顯現(xiàn)表中的四舍五入后的筆劃坐標欄中。
以上所說將參照這種情況描述,這種情況是圖29和30所示的漢字字符“目”被轉(zhuǎn)變?yōu)閳D33A所示的尺寸。如圖31所示,由于第一筆劃S1是一個垂直筆劃,可以得到在圖33A中的e的坐標“1.3”作為左邊X坐標X1以及可以得到在圖33A中的e′的坐標“2.7”作為該垂直筆劃的線寬的右邊X坐標Xr,這些筆劃是在坐標變換之后從輪廓數(shù)據(jù)中得到的。把這些坐標X1和Xr存儲在字符顯現(xiàn)表之中的四舍五入前的筆劃欄中。
當坐標進行了線寬保留不變四舍五入處理后,第一筆劃S1的線寬的左邊X坐標X1變?yōu)椤?”并且該筆劃S1的線寬的右邊X坐標Xr變?yōu)椤?”(如圖33B所示)。把合成的X坐標存在字符顯現(xiàn)表中四舍五入后的筆劃欄中。
在此之后,同樣,可以得到對于第二筆劃S2、第三筆劃S3、第四筆劃S4、第五筆劃S5和第六筆劃S6的四舍五入之前和之后的筆劃坐標,并且把它們存儲在字符顯現(xiàn)表中。以此方式,以四舍五入之前漢字字符“目”如圖33A所示,在四舍五入之后漢字字符“目”如圖33B所示。
用這些數(shù)據(jù),通過筆劃間隔計算器32、比例因數(shù)計算器36、最大/最小比例因數(shù)檢測器38、試用部件37和測定電路39(圖25所示)可以進行圖28所示的間隔控制處理。
(1)啟發(fā)處理器31從字形存儲器4的結(jié)構數(shù)據(jù)存儲器4a中讀取一個指定字符的一個組成部分的一個筆劃塊,并且把該筆劃塊的內(nèi)容和由放大/縮小電路30得到的輪廓數(shù)據(jù)一起存儲在圖32所示的字符顯現(xiàn)表中。
(2)啟發(fā)處理器31讀取在字符顯現(xiàn)表中的組號欄以便采集具有相同組號的筆劃組。啟發(fā)處理器31讀取在四舍五入前的筆劃坐標和在四舍五入處理后的筆劃坐標并且把它們送給筆劃間隔計算器32。例如對于圖31所示的漢字字符“目”,把四個筆劃S2、S4、S5和S6作為來自字符顯現(xiàn)表的相同組號的筆劃提取出來,并且讀出在四舍五入處理前的筆劃坐標和四舍五入處理后的筆劃坐標。
(3)筆劃間隔計算器32由四舍五入處理之前的筆劃坐標來計算原始字符的筆劃間隔,并且由四舍五入處理之后的筆劃坐標來計算在啟發(fā)過程之后的筆劃間隔。在圖32、33A和33B所示的例子中,在圖33A中計算出三個筆劃間隔Wa1=d-c′,Wa2=c-b′和Wa3=b-a′作為原始字符的筆劃間隔。另外,在圖33B中計算出三個筆劃間隔Wb1=d0-c′0,Wb2=c0-b′0和Wb3=b0-a′0作為在啟發(fā)處理后的筆劃間隔。
(4)接著,比例因數(shù)計算器36用啟發(fā)處理后的筆劃間隔除以原始字符的筆劃間隔以計算出每個筆劃間隔的比例因數(shù)(比率)。在圖33A和33B的例子中,計算出Wb1/Wa1,Wb2/Wa2和Wb3/Wa3作為各個筆劃間隔的比例因數(shù)。最大/最小比例因數(shù)檢測器38相互比較計算出來的比例因數(shù)以檢測出最小和最大的比例因數(shù)。檢測38還可得到在最大比例因數(shù)(例如Wb1/Wa1)和最小比例因數(shù)(例如Wb2/Wa2)之間的差值(第一差值)。
(5)試用部件37指示筆劃間隔計算器32從最大比例因數(shù)(在啟發(fā)過程之后的筆化間隔)計算器中減去“1”,并且向最小比例因數(shù)(在啟發(fā)過程之后的筆劃間隔)的計數(shù)器加“1”。
(6)結(jié)果是,筆劃間隔計算器32從最大比例因數(shù),Wa1,的計數(shù)器中減去“1”,并且向最小比例因數(shù),Wa2,的計數(shù)器中加上“1”。比例因數(shù)計算器36計算對于最大比例因數(shù)的筆劃間隔的比例因數(shù)并且計算對于最小比例因數(shù)的筆劃間隔的比例因數(shù)。即是,計算器36計算(Wb1-1)/Wa1和(Wb2+1)/Wa2。接著,最大/最小比例因數(shù)檢測器38計算在這兩個比例因數(shù)之間的差值(第二差值)。
(7)測定電路39比較第一差值和第二差值以測定是否第二差值變小了,變小了則表明通過試用差值變小了。如果差值沒有變小,則測定電路39不改變啟發(fā)處理器31的字符顯現(xiàn)表。如果該差值變小了,則測定電路39指示啟發(fā)處理器31向位于在最大比例因數(shù)的筆劃間隔和最小比例因數(shù)的筆劃間隔之間的筆劃的坐標加一個象素或者從這些坐標中減去一個象素,因而改變了筆劃圖。啟發(fā)處理器31改變在字符顯現(xiàn)表中四舍五入后的筆劃的坐標值一個象素。
在這里,向在筆劃間隔Wb1和Wb2之間的水平筆劃S4的線寬的每個底Y坐標Yb和頂Y坐標Yu加“1”,改變了字符顯現(xiàn)表。因此,這樣產(chǎn)生的漢字字符“目”變成如圖34所示。
(8)接著,啟發(fā)處理器31檢查在字符顯現(xiàn)表中的組號欄以檢查是否還有未處理的組號。如果有這樣的一個未處理的組號,則啟發(fā)處理器31返回到步驟(2)。如果啟發(fā)處理器31測定沒有未處理的組號,則它檢查是否已經(jīng)完成了對X和Y方向的間隔控制。當該間隔控制還沒有完成時,啟發(fā)處理器31返回到步驟(2)。如果已經(jīng)完成了間隔控制,則啟發(fā)處理器31測定是否上面的操作已經(jīng)對字符的所有組成部分重復。當該操作還沒有對所有組成部分完成時,啟發(fā)處理器31返回到步驟(1)。當該操作已經(jīng)對所有組成部分完成時,啟發(fā)處理器31結(jié)束間隔控制過程。
當已經(jīng)完成了間隔控制時,在字符顯現(xiàn)電路3中的填充電路35基于字符顯現(xiàn)表的內(nèi)容進行繪制以完成一個二進制數(shù)變換圖。
作為例子,用圖32、33A、33B和34所示的漢字字符“目”詳細解釋這一點。在步驟(2)中,從圖32所示的字符顯現(xiàn)表示中把筆劃S2、S4、S5和S6作為相同的水平筆劃組而提取出來,并且讀出在四舍五入前的水平筆劃坐標和四舍五入后的筆劃坐標。然后,在步驟(3)中如以下計算在四舍五入前的筆劃之間的間隔Wa1、Wa2和Wa3。
Wa1=d(筆劃S2的Yb)-c′(筆劃S4的Yu)=11.5-9.5=2.0Wa2=c(筆劃S4的Yb)-b′(筆劃S5的Yu)=8.3-5.7=2.6Wa3=b(筆劃S5的Yb)-a′(筆劃S6的Yu)=4.5-1.5=3.0如以下計算在四舍五入過程之后的筆劃之間的間隔Wb1、Wb2和Wb3。
Wb1=d0(筆劃S4的Yb)-c′0(筆劃S5的Yu)=12-9=3Wb2=c0(筆劃S4的Yb)-b′0(筆劃S5的Yu)=8-6=2Wb3=c0(筆劃S5的Yb)-a′0(筆劃S6的Yu)=5-1=4接著,如下述在步驟(4)中計算筆劃間隔的比例因數(shù)Wb1/Wa1,Wb2/Wa2和Wb3/Wa3。
Wb1/Wa1=3/2.0=1.5Wb2/Wa2=2/2.6=0.77Wb3/Wa3=4/3.0=1.33如下述計算在最大和最小比例因數(shù)之間的差值r1。
r1=Wb1/Wa1-Wb2/Wa2=1.5-0.77=0.73接著,對最小比例因數(shù)的筆劃間隔四舍五入之后的間隔Wb2增加“1”并且對最大比例因數(shù)的筆劃間隔四舍五入之后的間隔Wb1減去“1”。然后,在步驟(6)中再計算筆劃間隔的比例因數(shù)Wb1/Wa1,Wb2/Wa2和Wb3/Wa3。
Wb1/Wa1=2/2.0=1.0Wb2/Wa2=3/2.6=1.15Wb3/Wa3=4/3.0=1.33如下述計算在最大和最小比例因數(shù)之間的差值。
r2=Wb3/Wa3-Wb1/Wa1=1.33-1.0=0.33當比較在步驟(7)中在變換試用前的差值r1和在試用之后的差值r2時,在試用之后的差值r2較小。很明顯該試用已經(jīng)使筆劃間隔的倍率因數(shù)(比例因數(shù))之間的差值變小。
所有夾在最小比例因數(shù)的筆劃間隔和最大比例因數(shù)的筆劃間隔之間的筆劃向著最大比例因數(shù)的筆劃間隔移動一個象素。由于在此例子中最小比例因數(shù)的筆劃間隔是c0-b′0并且最大比例因數(shù)的筆劃間隔是d0-c′0,只有從頂部往下的第二水平筆劃S4是被夾在所述的兩個筆劃間隔中。因而,向著最大比例因數(shù)的筆劃間隔移動該筆劃S4的坐標。
這就是,把在字符顯現(xiàn)表中四舍五入過程之后的水平筆劃的坐標向上移動一個象素。向該水平筆劃S4的線寬的底Y坐標Yb加“1”,使其從“8”變?yōu)椤?”,并且向該水平筆劃S4的線寬的上Y坐標Yu加“1”,使其從“9”變成“10”。
通過以上操作,如圖34所示,可以得到接近漢字字符“目”的原始設計的二進制數(shù)變換圖。
為了使在最大比例因數(shù)和最小比例因數(shù)之間的差值變小(如上所述),當移動一個筆劃一個象素時可以得到在這些比例因數(shù)之間的差值,比較在移動之前的第一差值和在移動之后的第二差值以決定使該差值最小的筆劃位置。通過簡單的操作可完成該移動。由于在四舍五入前的筆劃間隔是從四舍五入前的筆劃坐標中計算出來的,則很容易計算在四舍五入過程前的筆劃間隔。另外,由于指定一個字符(該字符的筆劃間隔將受到控制)的筆劃的數(shù)據(jù)與該字符的輪廓數(shù)據(jù)設定在一起,將要控制的筆劃間隔將易于識別,保證了與原始字符設計相配的筆劃調(diào)整。另外,由于從通過轉(zhuǎn)變由字符輪廓數(shù)據(jù)而得到的筆劃數(shù)據(jù)來計算四舍五入前的筆劃間隔,所以在四舍五入前的筆劃間隔很容易得到,因此在不使產(chǎn)生速度降低很大的情況下完成字符的產(chǎn)生。
盡管該實施例的描述是參照漢字字符“目”進行的,該實施例也可應用于其它具有平行水平筆劃的漢字字符或者具有平行的垂直筆劃的漢字字符。盡管可以從在坐標轉(zhuǎn)變之后的坐標值中計算在四舍五入前的筆劃間隔,這些筆劃間隔也可以從在字形存儲器4中的原始輪廓數(shù)據(jù)中計算出,并且可以把筆劃間隔存儲在字形存儲器中。在字符坐標系中可以設定一個表示組成部分的原起點,這樣輪廓數(shù)據(jù)可由離開該原點相對的位置來表示。盡管把字形存儲器已經(jīng)被解釋為一個組成部分段式,但它也可以是一個筆劃分段式。
簡言之,根據(jù)本發(fā)明可以檢測筆劃之間的任何接觸,并且可以使四舍五入后目標筆劃變細或者刪除該筆劃。即使當字符縮小時,也有可能避免在鄰近筆劃之間的間隔被抹掉并且提供一個復制原始字符設計的二進制數(shù)變換圖??梢缘玫皆谒纳嵛迦胫蟮墓P劃間隔的總數(shù)并且可以把它與筆劃總和減“1”相比較。當該總和比該減法的所得值小時,則判定目標筆劃彼此接觸,并且使某一筆劃變細或刪除,因此在不使產(chǎn)生速度降低很多的情況下完成字符產(chǎn)生。
另外,當把在四舍五入之后的筆劃間隔調(diào)整到等于原始字符的筆劃間隔時,則有可能提供一個復制原始字符設計的二進制數(shù)變換圖。以這樣的一種方式調(diào)整筆劃間隔,使得可以從在四舍五入前的筆劃間隔和在四舍五入后的筆劃間隔中計算各個間隔的比例因數(shù),并且這樣變換位于多個筆劃間隔之間的筆劃的坐標以減小計算得到的比例因數(shù)之中的最大和最小比例因數(shù)之間的差值。這可以在不使產(chǎn)生速度降低很多的情況下完成字符產(chǎn)生過程。
權利要求
1.一種從輪廓字形數(shù)據(jù)產(chǎn)生一個二進制數(shù)變換圖的字符產(chǎn)生方法,在該輪廓字形數(shù)據(jù)中用坐標表示一個字符的輪廓線,該方法包括以下步驟把所說的輪廓字形數(shù)據(jù)轉(zhuǎn)換成一個指定尺寸的坐標系的坐標值;把所說的轉(zhuǎn)換的坐標值四舍五入成整數(shù)坐標值;用在四舍五入過程之后的坐標計算在同一方向的多個筆劃的間隔的總和;把所說的總和與目標筆劃數(shù)減1比較;當所說的總和小于由減法所得的值時,改變所說的整數(shù)坐標值以便調(diào)整所說目標筆劃的一個所需要的筆劃的線寬;和顯現(xiàn)包括所說的調(diào)整的坐標值的所說整數(shù)坐標值的產(chǎn)生所說的二進制數(shù)變換圖。
2.根據(jù)權利要求1的字符產(chǎn)生方法,其特征在于所說的整數(shù)坐標值變化步驟以這樣的方式改變所說的整數(shù)坐標值以便使所說的所需要的筆劃變細。
3.根據(jù)權利要求2的字符產(chǎn)生方法,其特征在于所說的整數(shù)坐標值變化步驟以這樣的方式改變所說的整數(shù)坐標值以便使那些所說的非最外邊的且具有兩個象素或更大的線寬的多個筆劃變細一些。
4.根據(jù)權利要求1的字符產(chǎn)生方法,其特征在于所說的整數(shù)坐標值變化步驟以這樣的方式改變所說的整數(shù)坐標值以刪除所需的變細的筆劃。
5.根據(jù)權利要求1的字符產(chǎn)生方法,其特征在于所說的總和計算步驟從多個指定筆劃的所說的四舍五入后的整數(shù)坐標中計算筆劃之間的間隔的總和。
6.根據(jù)權利要求5的字符產(chǎn)生方法,其特征在于當所說的總和小于由該減法所得的所說值時,所說的整數(shù)坐標值改變步驟改變所說指定的多個筆劃中的特定一個的線寬。
7.根據(jù)權利要求1的字符產(chǎn)生方法,其特征在于所說的二進制數(shù)變換圖產(chǎn)生步驟顯現(xiàn)構成每個筆劃的多個組成部分的輪廓字形數(shù)據(jù)以產(chǎn)生所說的筆劃字符的二進制數(shù)變換圖。
8.根據(jù)權利要求2的字符產(chǎn)生方法,其特征在于所說的總和計算步驟從多個指定筆劃的所說的四舍五入后的整數(shù)坐標中計算在筆劃之間的所說間隔的總和。
9.根據(jù)權利要求8的字符產(chǎn)生方法,其特征在于當所說的總和小于由該減法所得的所說值時,所說的整數(shù)坐標值改變步驟改變所說指定的多個筆劃中的特定一個的線寬。
10.根據(jù)權利要求4的字符產(chǎn)生方法,其特征在于所說的總和計算步驟從多個指定筆劃的所說的四舍五入后的整數(shù)坐標中計算筆劃之間的間隔的總和。
11.根據(jù)權利要求10的字符產(chǎn)生方法,其特征在于當所說的總和小于由該減法所得的所說值時,所說整數(shù)坐標值改變步驟改變所說指定的多個筆劃中的特定一個的線寬。
12.一種從輪廓字形數(shù)據(jù)產(chǎn)生一個二進制數(shù)變換圖的字符產(chǎn)生方法,在該輪廓數(shù)據(jù)中用坐標表示一個字符的倫輪廓線,該方法包括以下步驟把所說的輪廓字形數(shù)據(jù)轉(zhuǎn)換成一個指定尺寸的坐標系的坐標值;把所說的轉(zhuǎn)換坐標值四舍五入成整數(shù)坐標值;從在四舍五入前的各個筆劃間的間隔和在所說四舍五入后的各個筆劃間的間隔中計算各個間隔的比例因數(shù);計算在所說比例因數(shù)中在最大比例因數(shù)和最小比例因數(shù)之間的差值;沿一個方向改變在所說筆劃中一個所需筆劃的所說整數(shù)坐標值;和顯現(xiàn)包括所說改變的坐標值的所說整數(shù)坐標值以產(chǎn)生所說的二進制數(shù)變換圖。
13.根據(jù)權利要求12的字符產(chǎn)生方法,其特征在于所說的整數(shù)坐標值變化步驟包括以下步驟計算第一比例因數(shù)和第二比例因數(shù)通過從在所說的提供所說最大比例因數(shù)的四舍五入過程之后的筆劃間隔中減1而得到第一比例因數(shù),和通過向在提供所說最小比例因數(shù)的所說四舍五入過程之后的筆劃間隔中加1而得到第二比例因數(shù);計算在所說第一比例因數(shù)和所說第二比例因數(shù)之間的差值;把所說初始差值與在所說第一和第二比例因數(shù)之間的所說差值進行比較;和當在所說第一和第二比例因數(shù)之間的所說差值比所說初始差值小時,則向著所說最大比例因數(shù)的所說筆劃間隔移動位于所說最大比例因數(shù)的所說筆劃間隔和所說最小比例因數(shù)的所說筆劃間隔之間的筆劃一個坐標單位。
14.根據(jù)權利要求12的字符產(chǎn)生方法,其特征在于根據(jù)多個指定的筆劃,所說的比例計算步驟從在所說的四舍五入過程之前的各個筆劃和在所說的四舍五入過程之后的各個筆劃之間的間隔中計算各個間隔的比例因數(shù)。
15.根據(jù)權利要求14的字符產(chǎn)生方法,其特征在于所說的整數(shù)坐標值變化步驟沿一個方向改變所說多個指定筆劃中的一個所需要筆劃的所說整數(shù)坐標值以使所說的差值變小。
16.根據(jù)權利要求12的字符產(chǎn)生方法,其特征在于所說的二進制數(shù)變換圖產(chǎn)生步驟顯現(xiàn)構成每個筆劃的多個組成部分的輪廓字形數(shù)據(jù)以產(chǎn)生所說的字符的二進制數(shù)變換圖。
17.一種從輪廓字形數(shù)據(jù)產(chǎn)生一個二進制數(shù)變換圖的字符產(chǎn)生裝置,在該輪廓字形數(shù)據(jù)中用坐標表示一個字符的輪廓線,該裝置包括一個字形存儲器以存儲每個字符的所說輪廓字形數(shù)據(jù);和一個字符顯現(xiàn)電路,該字符顯現(xiàn)電路可用來把從所說的字形存儲器讀取的一個指定字符的輪廓字形數(shù)據(jù)轉(zhuǎn)變成一個指定尺寸的坐標系的坐標值,把所說的坐標值四舍五入成整數(shù)坐標值,從在四舍五入處理后的所說坐標值中檢查在所說字符的筆劃之間是否有任何接觸,和如果存在這樣的接觸則改變所說整數(shù)坐標值以產(chǎn)生所說二進制數(shù)變換圖。
18.根據(jù)權利要求17的字符產(chǎn)生裝置,其特征在于在通過在四舍五入處理之后的坐標沿相同的方向計算了多個筆劃間的間隔的總和之后,所說字符顯現(xiàn)電路把所說的總數(shù)與目標筆劃數(shù)減1進行比較,當所說的總和小于由減法所得的值時改變所說整數(shù)坐標值以便調(diào)整所說目標筆劃的一個所需筆劃的線寬,和顯現(xiàn)包括所說調(diào)整的坐標值的所說整數(shù)坐標值以產(chǎn)生所說二進制數(shù)變換圖。
19.根據(jù)權利要求18的字符產(chǎn)生裝置,其特征在于所說的字符顯現(xiàn)電路以這樣的方式改變所說的整數(shù)坐標值以使所說的需要的筆劃變細。
20.根據(jù)權利要求19的字符產(chǎn)生裝置,其特征在于為了改變所說的整數(shù)坐標值,所說的字符顯現(xiàn)電路以這樣的方式改變所說整數(shù)坐標值以使得所說的多個不是最外邊且具有兩個象素或更多象素的線寬的筆劃變細。
21.根據(jù)權利要求18的字符產(chǎn)生裝置,其特征在于所說的字符顯現(xiàn)電路以這樣的方式改變所說的整數(shù)坐標值以刪除所說的所需變細的筆劃。
22.根據(jù)權利要求18的字符產(chǎn)生裝置,其特征在于所說的字符存儲器存儲指定的所說目標筆劃的數(shù)據(jù)作為對應于所說字符的筆劃數(shù)據(jù);和所說筆劃顯現(xiàn)電路由多個指定的筆劃的所說的四舍五入后的整數(shù)坐標來計算筆劃之間的所說的間隔的總和。
23.根據(jù)權利要求22的字符產(chǎn)生裝置,其特征在于所說的字形存儲器存儲指定將被調(diào)整的所述筆劃的數(shù)據(jù)作為對應于所說字符的筆劃數(shù)據(jù);和為了改變所說的整數(shù)坐標值,當所說的總和比所說的從減法所得的值小時,所說的字符顯現(xiàn)電路改變所說的多個指定筆劃中指定的一個的線寬。
24.根據(jù)權利要求18的字符產(chǎn)生裝置,其特征在于所說的字形存儲器存儲每個字符的組成部分的輪廓字形數(shù)據(jù)和每個字符的組成部分指定的數(shù)據(jù);和所說字符顯現(xiàn)電路通過一個指定字符的所說組成部分指定數(shù)據(jù)提取該指定的輪廓字形數(shù)據(jù),并且顯現(xiàn)構成每個筆劃的多個組成部分的輪廓字形數(shù)據(jù)以產(chǎn)生所說字符的所說二進制數(shù)變換圖。
25.根據(jù)權利要求19的字符產(chǎn)生裝置,其特征在于所說的字形存儲器存儲指定所說目標筆劃的數(shù)據(jù)作為對應于所說字符的筆劃數(shù)據(jù);和所說筆劃顯現(xiàn)電路由多個指定的筆劃的所說的四舍五入后的整數(shù)坐標來計算筆劃之間的所說的間隔的總和。
26.根據(jù)權利要求25的字符產(chǎn)生裝置,其特征在于所說的字形存儲器存儲指定將被調(diào)整的筆劃的數(shù)據(jù)作為對應于所說字符的筆劃數(shù)據(jù);和為了改變所說的整數(shù)坐標值,當所說的總和比所說的從減法所得的值小時,所說的字符顯現(xiàn)電路改變所說的多個指定筆劃的一個的線寬。
27.根據(jù)權利要求21的字符產(chǎn)生裝置,其特征在于所說的字形存儲器存儲指定所說目標筆劃的數(shù)據(jù)作為對應于所說字符的筆劃數(shù)據(jù);和所說筆劃顯現(xiàn)電路由多個指定的筆劃的所說的四舍五入后的整數(shù)坐標來計算筆劃之間的所說的間隔的總和。
28.根據(jù)權利要求27的字符產(chǎn)生裝置,其特征在于所說的字形存儲器存儲指定將被調(diào)整的筆劃的數(shù)據(jù)作為對應于所說字符的筆劃數(shù)據(jù);和為了改變所說的整數(shù)坐標值,當所說的總和比所說的從減法所得的值小時,所說的字符顯現(xiàn)電路改變所說的多個指定筆劃中指定的一個的線寬。
29.一種從輪廓字形數(shù)據(jù)產(chǎn)生一個二進制數(shù)變換圖的字符產(chǎn)生裝置,在該輪廓字形數(shù)據(jù)中用坐標表示一個字符的輪廓線,該裝置包括一個字形存儲器以存儲每個筆劃的所說輪廓字形數(shù)據(jù);和一個字符顯現(xiàn)電路,該字符顯現(xiàn)電路可用來把從所說的字形存儲器讀取的一個指定字符的輪廓字形數(shù)據(jù)轉(zhuǎn)變成一個指定尺寸的坐標系的坐標值,把所說的坐標值四舍五入成整數(shù)坐標值,并且以這樣的方式改變所說的整數(shù)坐標值以使在四舍五入之前和之后的筆劃間隔的最大和最小比例因數(shù)之間的差值變小,以便因而產(chǎn)生所說的二進制數(shù)變換圖。
30.根據(jù)權利要求29的字符產(chǎn)生裝置,其特征在于在從取整數(shù)之前的各個筆劃之間的間隔和在四舍五入之后的各個筆劃之間的間隔中計算完各個間隔的比例因數(shù)之后,所說的字符顯現(xiàn)電路計算在所說比例因數(shù)之中在最大比例因數(shù)和最小比例因數(shù)之間的差值,沿一個方向改變在所說筆劃當中的一個所需筆劃的所說整數(shù)坐標值以使所說的差值變小,和顯現(xiàn)包括所說改變的坐標值的所說整數(shù)坐標值以產(chǎn)生所說的二進制數(shù)變換圖。
31.根據(jù)權利要求30的字符產(chǎn)生裝置,其特征在于在計算完第一比例因數(shù)和第二比例因數(shù)之后,該第一比例因數(shù)是通過從在提供所說的最大比例因數(shù)的所說四舍五入處理之后的該筆劃間隔中減1而獲得,該第二比例因數(shù)是通過向在提供所說的最小比例因數(shù)的所說取整數(shù)之后的該筆劃間隔中加1而獲得,所說的字符顯現(xiàn)電路計算在所說第一比例因數(shù)和所說第二比例因數(shù)之間的差值,把所說的初始差值與在所說第一和第二比例因數(shù)之間的所說差值進行比較,并且當在所說第一和第二比例因數(shù)之間的所說差值比所說初始差值小時,則向著所說最大比例因數(shù)的所說筆劃間隔移動位于所說最大比例因數(shù)的所說筆劃間隔和所說最小比例因數(shù)的所說筆劃間隔之間的筆劃一個坐標單位。
32.根據(jù)權利要求30的字符產(chǎn)生裝置,其特征在于所說的字形存儲器存儲指定所說目標筆劃的數(shù)據(jù)作為對應于所說字符的筆劃數(shù)據(jù);和所說的字符顯現(xiàn)電路計算所說指定的多個筆劃間隔。
33.根據(jù)權利要求32的字符產(chǎn)生裝置,其特征在于所說的字形存儲器存儲指定將被改變的所說筆劃的數(shù)據(jù)作為對應于所說字符的筆劃數(shù)據(jù);和所說的字符顯現(xiàn)電路改變所說指定的多個筆劃中的特定的一個。
34.根據(jù)權利要求29的字符產(chǎn)生裝置,其特征在于所說的字形存儲器存儲每個字符的組成部分的輪廓字形數(shù)據(jù)和每個字符的組成部分指定的數(shù)據(jù);和所說字符顯現(xiàn)電路通過一個指定字符的所說組成部分指定數(shù)據(jù)提取該指定的輪廓字形數(shù)據(jù)并且顯現(xiàn)構成每個筆劃的多個組成部分的輪廓字形數(shù)據(jù)以產(chǎn)生所說字符的所說二進制數(shù)變換圖。
全文摘要
本發(fā)明公開了一種產(chǎn)生字符的方法和裝置,以便從輪廓字形數(shù)據(jù)產(chǎn)生一個具有改善的可讀性的小字符。該方法包括以下步驟把輪廓字形數(shù)據(jù)轉(zhuǎn)換成一個指定尺寸的坐標系的坐標值;把轉(zhuǎn)換的坐標值取整數(shù)成整數(shù)坐標值;由一個啟發(fā)過程調(diào)整整數(shù)坐標值;和顯現(xiàn)包括有調(diào)整的坐標值的整數(shù)坐標值以產(chǎn)生二進制數(shù)變換圖。該裝置包括一個字形存儲器,以用來存儲每個字符的輪廓字形數(shù)據(jù);和一個字符顯現(xiàn)電路。
文檔編號G06T11/20GK1090937SQ9312114
公開日1994年8月17日 申請日期1993年12月7日 優(yōu)先權日1992年12月7日
發(fā)明者本門慎一郎, 大伴武都美, A·赫爾曼 申請人:富士通株式會社