專利名稱:漢字造字方法和設(shè)備、構(gòu)造字體庫(kù)的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于字體庫(kù)技術(shù)領(lǐng)域,具體涉及一種漢字造字方法和設(shè)備、構(gòu)造字體庫(kù)的方法。
背景技術(shù):
在電子設(shè)備中,漢字是以字符編碼(如Unicode、GB2312等)形式表示的;但字符編碼僅僅是電子設(shè)備內(nèi)部的代碼,一個(gè)漢字要被以一定字體(如黑體、宋體等)顯示或打印出來(lái)必須要用到字形數(shù)據(jù),字形數(shù)據(jù)可為輪廓圖、點(diǎn)陣圖、矢量圖等形式,用于規(guī)定該漢字是什么“樣子”的;而構(gòu)造一個(gè)漢字的字形數(shù)據(jù)并將其與字符編碼對(duì)應(yīng)起來(lái)的過(guò)程就稱為“造字”。顯然,不同字體庫(kù)中同一漢字的字形數(shù)據(jù)不同,因此當(dāng)要構(gòu)造一個(gè)新字體庫(kù)時(shí)要進(jìn)行大量的造字工作。現(xiàn)有的漢字造字方法通常是字體設(shè)計(jì)師先用一種字體設(shè)計(jì)出常用的幾百個(gè)漢字,之后工作人員再以這些常用漢字為基礎(chǔ),根據(jù)感覺(jué)一筆一畫(huà)的造出其它漢字的字形數(shù)據(jù)并進(jìn)行調(diào)整。發(fā)明人發(fā)現(xiàn),現(xiàn)有技術(shù)中至少存在如下問(wèn)題:現(xiàn)有漢字造字方法是人工逐字進(jìn)行的,效率低下、花費(fèi)時(shí)間長(zhǎng)(構(gòu)造常規(guī)的萬(wàn)字左右的字體庫(kù)通常需要數(shù)月),成本高,尤其當(dāng)要為含幾十萬(wàn)漢字的超大字體庫(kù)(例如用于漢字研究領(lǐng)域的字體庫(kù))造字時(shí),工作量就更加龐大;同時(shí),字體庫(kù)不論多大都不可能包括人們可能用到的全部漢字,故當(dāng)用戶用到一些字體庫(kù)中沒(méi)有的字(如生僻字或自造字),這些字就不能顯示或不能按所需的字體顯示。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題包括,針對(duì)現(xiàn)有技術(shù)中的漢字造字方法效率低、成本高、無(wú)法實(shí)時(shí)造字的問(wèn)題,提供一種效率高、成本低、可實(shí)時(shí)造字的漢字造字方法。解決本發(fā)明技術(shù)問(wèn)題所采用的技術(shù)方案是一種漢字造字方法,包括:獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼,并根據(jù)所述部件編碼從漢字部件庫(kù)中提取相應(yīng)的漢字部件,其中所述結(jié)構(gòu)編碼規(guī)定所述漢字的結(jié)構(gòu)及所述漢字部件在所述漢字中的位置;用所述漢字部件根據(jù)所述結(jié)構(gòu)編碼生成所述漢字的字形數(shù)據(jù),并將所述漢字的字形數(shù)據(jù)與字符編碼相對(duì)應(yīng)。其中,“漢字部件”是指漢字中相對(duì)獨(dú)立的結(jié)構(gòu)單元,其可按不同的方法劃分。例如,漢字部件可以是“筆畫(huà)”,如橫、點(diǎn)等,也可以是“偏旁部首”,如單人旁、利刀旁、寶蓋頭等,還可以是漢字的組成部分,如“發(fā)”字下邊的“又”以及去掉“又”后剩余的“夕”可分別作為一個(gè)漢字部件。值得注意的是,漢字部件還與其大小、形狀有關(guān),故筆畫(huà)和結(jié)構(gòu)相同的單元可能是不同的漢字部件,例如,“可”字和“于”字最上邊一筆都是“橫”,但這兩橫的寬度、形狀不同,故可被認(rèn)定為兩個(gè)漢字部件;再如,“國(guó)”字和“喝”字中均有“ 口 ”,但二者的尺寸、形狀不同,故可被認(rèn)定為兩個(gè)漢字部件。當(dāng)然,由于漢字?jǐn)?shù)量極多,因此不可能將每個(gè)漢字的每個(gè)結(jié)構(gòu)單元都認(rèn)定為單獨(dú)的漢字部件,對(duì)多個(gè)相似度較高的結(jié)構(gòu)單元,可只選取其中的一個(gè)作為漢字部件;比如,若認(rèn)為“晶”字中的三個(gè)“日”部件形態(tài)雖有差別但差別不大,可只選取其中的一個(gè)作為漢字部件??傊?,漢字部件的劃分沒(méi)有絕對(duì)的標(biāo)準(zhǔn),但從方便的角度說(shuō),通常可將漢字中較常見(jiàn)的、相對(duì)獨(dú)立的、形態(tài)較相似的結(jié)構(gòu)單元作為一個(gè)漢字部件。優(yōu)選的是,在所述獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼之前,還包括:從漢字部件獲取單元獲取漢字部件,為所述漢字部件賦予部件編碼以構(gòu)造漢字部件庫(kù)。進(jìn)一步優(yōu)選的是,所述漢字部件獲取單元包括筆跡記錄單元、圖像獲取單元、圖像處理單元、數(shù)據(jù)存儲(chǔ)單元中的至少一種。進(jìn)一步優(yōu)選的是,所述構(gòu)造漢字部件庫(kù)還包括:獲取所述漢字部件庫(kù)中的漢字部件的部件參數(shù),所述部件參數(shù)包括部件高度、部件寬度、部件高寬比、部件面積、部件黑白t匕、部件重心、部件來(lái)源字符、部件原位置、部件推薦位置中的至少一種。優(yōu)選的是,所述結(jié)構(gòu)編碼為ISO 10646標(biāo)準(zhǔn)中的IDS屬性的結(jié)構(gòu)編碼。優(yōu)選的是,所述獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼包括:通過(guò)輸入設(shè)備獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼;或通過(guò)預(yù)存的編碼對(duì)應(yīng)表獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼,所述編碼對(duì)應(yīng)表中存儲(chǔ)有所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼的對(duì)應(yīng)關(guān)系。優(yōu)選的是,所述用所述漢字部件根據(jù)所述結(jié)構(gòu)編碼生成所述漢字的字形數(shù)據(jù)包括:步驟1、根據(jù)所述結(jié)構(gòu)編碼將所述漢字部件置于指定位置,得到中間字形;步驟2、判斷所述中間字形的字形參數(shù)是否符合預(yù)訂值,是則進(jìn)行步驟5,否則進(jìn)行步驟3 ;步驟3、根據(jù)所述字形參數(shù)與預(yù)訂值的差別調(diào)整所述中間字形;步驟4、判斷調(diào)整后的所述中間字形的字形參數(shù)是否符合預(yù)訂值,以及調(diào)整次數(shù)是否超出限制,有至少一項(xiàng)是則進(jìn)行步驟5,均否則進(jìn)行步驟3 ;步驟5、根據(jù)當(dāng)前的所述中間字形生成所述漢字的字形數(shù)據(jù)。進(jìn)一步優(yōu)選的是,所述字形參數(shù)包括:漢字高度、漢字寬度、漢字高寬比、漢字面積、漢字黑白比、漢字重心、部件高度、部件寬度、部件高寬比、部件面積、部件黑白比、部件重心、部件距離、部件尺寸比中的至少一種。進(jìn)一步優(yōu)選的是,所述調(diào)整所述中間字形包括下列調(diào)整操作中的至少一種:調(diào)整漢字高度、調(diào)整漢字寬度、調(diào)整漢字面積、調(diào)整漢字黑白比、調(diào)整部件高度、調(diào)整部件寬度、調(diào)整部件面積、調(diào)整部件黑白比、調(diào)整部件位置。在本發(fā)明的漢字造字方法中,可利用漢字部件庫(kù)自動(dòng)完成造字過(guò)程,從而大大提高了造字效率,減少了造字時(shí)間,降低了造字成本;同時(shí),當(dāng)用戶要用到字體庫(kù)中沒(méi)有的生僻字和自造字等時(shí),可自行造字,將所需的漢字加入字體庫(kù)中,使用方便。本發(fā)明所要解決的技術(shù)問(wèn)題還包括,針對(duì)現(xiàn)有技術(shù)中的構(gòu)造字體庫(kù)的方法效率低、成本聞、無(wú)法實(shí)時(shí)造字的問(wèn)題,提供一種效率聞、成本低、可實(shí)時(shí)造字的構(gòu)造字體庫(kù)的方法。
解決本發(fā)明技術(shù)問(wèn)題所采用的技術(shù)方案是構(gòu)造字體庫(kù)的方法,包括:用上述漢字造字方法生成對(duì)應(yīng)的漢字的字形數(shù)據(jù)與字符編碼;用所得的漢字的字形數(shù)據(jù)構(gòu)造字體庫(kù)。在本發(fā)明的構(gòu)造字體庫(kù)的方法中,可利用漢字部件庫(kù)自動(dòng)完成造字過(guò)程并據(jù)此構(gòu)造字體庫(kù),從而大大提高了構(gòu)造字體庫(kù)的效率,減少了構(gòu)造字體庫(kù)的時(shí)間,降低了構(gòu)造字體庫(kù)的成本,尤其對(duì)于超大字體庫(kù)更是如此;同時(shí),當(dāng)用戶要用到字體庫(kù)中沒(méi)有的生僻字和自造字等時(shí),可自行造字,將所需的漢字加入字體庫(kù)中,使用方便。本發(fā)明所要解決的技術(shù)問(wèn)題還包括,針對(duì)現(xiàn)有技術(shù)中的漢字造字技術(shù)效率低、成本聞、無(wú)法實(shí)時(shí)造字的問(wèn)題,提供一種效率聞、成本低、可實(shí)時(shí)造字的構(gòu)造字體庫(kù)的設(shè)備。解決本發(fā)明技術(shù)問(wèn)題所采用的技術(shù)方案是一種漢字造字設(shè)備,包括:漢字部件庫(kù)存儲(chǔ)單元,用于存儲(chǔ)漢字部件庫(kù),所述漢字部件庫(kù)中存儲(chǔ)有對(duì)應(yīng)的漢字部件和部件編號(hào);編碼獲取單元,用于獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼,其中所述結(jié)構(gòu)編碼規(guī)定所述漢字的結(jié)構(gòu)及所述漢字部件在所述漢字中的位置;字形數(shù)據(jù)生成單元,用于根據(jù)所述漢字的部件編碼和結(jié)構(gòu)編碼生成所述漢字的字形數(shù)據(jù),并將所述字形數(shù)據(jù)與所述漢字的字符編碼相對(duì)應(yīng)。優(yōu)選的是,還包括:漢字部件獲取單元,用于獲取所述漢字部件并將其提供給所述漢字部件庫(kù)存儲(chǔ)單
J Li ο使用本發(fā)明的漢字造字設(shè)備可自動(dòng)完成造字過(guò)程,從而大大提高造字效率,減少造字時(shí)間,降低造字成本;同時(shí),當(dāng)用戶要用到字體庫(kù)中沒(méi)有的生僻字和自造字等時(shí),可自行造字,將所需的漢字加入字體庫(kù)中,使用方便。本發(fā)明特別適用于構(gòu)造超大字體庫(kù)。
圖1為本發(fā)明的實(shí)施例的漢字造字方法的一個(gè)造字過(guò)程的示意圖;圖2為本發(fā)明的實(shí)施例的漢字造字方法的一個(gè)造字過(guò)程的示意圖;圖3為本發(fā)明的實(shí)施例2的漢字造字方法的流程圖;圖4為本發(fā)明的實(shí)施例2的漢字造字方法的中生成字形數(shù)據(jù)的具體過(guò)程的流程圖。
具體實(shí)施例方式為使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明的技術(shù)方案,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。實(shí)施例1:本實(shí)施例提供一種漢字造字方法,包括:獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼,并根據(jù)部件編碼從漢字部件庫(kù)中提取相應(yīng)的漢字部件,其中結(jié)構(gòu)編碼規(guī)定漢字的結(jié)構(gòu)及漢字部件在漢字中的位置;用漢字部件根據(jù)結(jié)構(gòu)編碼生成漢字的字形數(shù)據(jù),并將漢字的字形數(shù)據(jù)與字符編碼相對(duì)應(yīng)。在本實(shí)施例的漢字造字方法中,可利用漢字部件庫(kù)自動(dòng)完成造字過(guò)程,從而大大提高了造字效率,減少了造字時(shí)間,降低了造字成本;同時(shí),當(dāng)用戶要用到字體庫(kù)中沒(méi)有的生僻字和自造字等時(shí),可自行造字,將所需的漢字加入字體庫(kù)中,使用方便。實(shí)施例2:本實(shí)施例提供一種漢字造字方法,包括以下步驟:S01、從漢字部件獲取單元獲取漢字部件;也就是說(shuō),獲取各種漢字部件的字形數(shù)據(jù),從而為用漢字部件造字提供基礎(chǔ)。優(yōu)選的,漢字部件獲取單元為筆跡記錄單元、圖像獲取單元、圖像處理單元、數(shù)據(jù)存儲(chǔ)單元中至少一種。顯然,獲取漢字部件的具體方法可根據(jù)漢字部件獲取單元的不同而不同;比如,當(dāng)使用筆跡記錄單元時(shí),可由字形設(shè)計(jì)師直接手寫(xiě)特定的漢字部件(或漢字),而筆跡記錄單元獲取所寫(xiě)的漢字部件的數(shù)據(jù);使用圖像獲取單元時(shí),可由字形設(shè)計(jì)師在紙上寫(xiě)下漢字部件(或漢字),再通過(guò)掃描、照相等方式獲得漢字部件的數(shù)據(jù);使用圖像處理單元時(shí),可將字體設(shè)計(jì)師設(shè)計(jì)的漢字或者現(xiàn)有字體庫(kù)中的漢字的圖像“拆分”為不同的漢字部件;使用數(shù)據(jù)存儲(chǔ)單元時(shí),則可將之前存儲(chǔ)的漢字部件數(shù)據(jù)直接導(dǎo)入。S02、為獲取的漢字部件賦予部件編碼以構(gòu)造漢字部件庫(kù);也就是說(shuō),將漢字部件與部件編碼對(duì)應(yīng)起來(lái),并構(gòu)成特定格式的數(shù)據(jù)庫(kù)。在賦予部件編碼的過(guò)程中,通??蔀槎鄠€(gè)類似的漢字部件(例如多種同形狀的“ + ”部件)賦予一個(gè)部件編碼,這樣的方法比較適于與現(xiàn)有技術(shù)相結(jié)合,且編碼量少,易于掌握,但其需要在后續(xù)的步驟中從多個(gè)漢字部件中進(jìn)行進(jìn)一步的選擇;當(dāng)然,為每個(gè)漢字部件賦予一個(gè)獨(dú)立的部件編碼也是可行的。顯然,由于字部件的數(shù)量比漢字的數(shù)量少得多,因此,獲取某種字體的漢字部件(或者構(gòu)造漢字部件庫(kù))的操作顯然比構(gòu)造該種字體的全部漢字要簡(jiǎn)單得多;同時(shí),由于漢字是由各種漢字部件構(gòu)成的,故在構(gòu)造漢字部件庫(kù)后,即可利用其中的漢字部件自動(dòng)組合出大量的該字體的漢字,從而大大提高漢字造字工作的效率,降低成本。S03、優(yōu)選的,獲取漢字部件的部件參數(shù);獲取部件參數(shù)可為后續(xù)步驟提供便利,例如要從一個(gè)部件編碼下的多個(gè)漢字部件中選擇一個(gè)進(jìn)行造字時(shí),就可以根據(jù)它們的部件參數(shù)進(jìn)行選擇。其中,部件參數(shù)可通過(guò)對(duì)漢字部件庫(kù)中的漢字部件的數(shù)據(jù)進(jìn)行計(jì)算得到,由于該計(jì)算過(guò)程可為常規(guī)的對(duì)圖像進(jìn)行分析處理的方法,故在此不再詳細(xì)描述;當(dāng)然,部件參數(shù)也可在獲取漢字部件的同時(shí)計(jì)算或獲取(如輸入)。優(yōu)選的,部件參數(shù)包括部件高度、部件寬度、部件高寬比、部件面積、部件黑白比、部件重心、部件來(lái)源字符、部件原位置、部件推薦位置中的至少一種。其中,部件高度、部件寬度、部件高寬比、部件面積等很好理解,不再具體解釋;部件黑白比是指在漢字部件的圖形中,黑色部分(或者說(shuō)被筆畫(huà)占據(jù)的部分)與剩余空白部分的面積比,其體現(xiàn)了漢字部件是不是被筆畫(huà)占的很“滿”;部件重心則表示若以漢字部件的筆畫(huà)為重量均勻的實(shí)體,漢字部件整體重心所處的位置;部件來(lái)源字符和部件原位置表示該漢字部件是從哪個(gè)漢字的哪個(gè)部分提取的,部件推薦位置則表示該漢字部件優(yōu)選用于什么結(jié)構(gòu)的漢字(如左右結(jié)構(gòu)、半包圍結(jié)構(gòu)等)的什么位處置(如上方、左方等),這三個(gè)參數(shù)均可幫助選擇最合適的漢字部件進(jìn)行造字(例如來(lái)自上下結(jié)構(gòu)漢字上方的漢字部件顯然最可能適用于其它上下結(jié)構(gòu)漢字的上方)。S04、獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼,并根據(jù)部件編碼從漢字部件庫(kù)中提取相應(yīng)的漢字部件;也就是說(shuō),通過(guò)獲取字符編碼、部件編碼、結(jié)構(gòu)編碼確定目前要構(gòu)造什么漢字,以及這個(gè)漢字由什么漢字部件組成、各部件位于什么位置。例如在圖1中,選擇位于上邊的“a”部件和位于下邊的“子”部件以構(gòu)造“字”字;而在圖2中,選擇位于左邊的“日”部件和位于右邊的“月”部件以構(gòu)造“明”字。其中,字符編碼可為Unicode、GB2312、GB18030、GB13000(即 GBK)、Big5 等常規(guī)的漢字編碼,其用來(lái)表示所要構(gòu)造的是哪個(gè)漢字。而結(jié)構(gòu)編碼規(guī)定漢字的結(jié)構(gòu)及漢各字部件在漢字中的位置。優(yōu)選的,結(jié)構(gòu)編碼可為ISO 10646標(biāo)準(zhǔn)中的IDS屬性的結(jié)構(gòu)編碼,該IDS屬性是對(duì)漢字結(jié)構(gòu)屬性的一種編碼,不同的編碼代表漢字為不同結(jié)構(gòu)(如左右結(jié)構(gòu)、上下結(jié)構(gòu)、左中右結(jié)構(gòu)、半包圍結(jié)構(gòu)等)。顯然,由于一個(gè)漢字可能由多個(gè)漢字部件構(gòu)成(即具有多個(gè)部件編碼),故可通過(guò)一定的規(guī)則確定漢字部件的位置,例如結(jié)構(gòu)編碼表示漢字為左右結(jié)構(gòu)時(shí),可規(guī)定先輸入的部件編碼代表左邊的漢字部件,而后輸入的部件編碼代表右邊的漢字部件等。顯然,當(dāng)一個(gè)部件編碼代表了多個(gè)漢字部件時(shí),若要從漢字部件庫(kù)中提取相應(yīng)的漢字部件,還可讓用戶進(jìn)一步選擇具體使用哪個(gè)漢字部件;比如客戶輸入了 “ + ”部件的部件編碼后,系統(tǒng)可給出多個(gè)不同形式的“ + ”部件的圖像以及相應(yīng)的部件參數(shù)信息供用戶選擇,用戶選定某個(gè)“ + ”部件后系統(tǒng)再?gòu)臐h字部件庫(kù)中提取相應(yīng)的漢字部件。優(yōu)選的,字符編碼、部件編碼、結(jié)構(gòu)編碼是通過(guò)輸入設(shè)備獲取的。顯然,字符編碼、部件編碼、結(jié)構(gòu)編碼等具體的輸入方法是多樣的;例如,可通過(guò)鍵盤(pán)輸入,也可通過(guò)語(yǔ)音識(shí)別設(shè)備、筆記識(shí)別設(shè)備等輸入;可先輸入字符編碼后再輸入對(duì)應(yīng)的部件編碼和結(jié)構(gòu)編碼,也可先輸入部件編碼和結(jié)構(gòu)編碼后再輸入字符編碼;輸入的內(nèi)容可以是直接的編碼,也可輸入語(yǔ)言或符號(hào)后系統(tǒng)自動(dòng)將其轉(zhuǎn)換為編碼,如要輸入“啊”字時(shí),可直接輸入其Unicode字符編碼“21834”,也可通過(guò)拼音輸入法等輸入“啊”字;再如,要輸入“a”部件的部件編碼時(shí),可直接輸入其編碼,也可輸入“寶蓋頭”字樣而系統(tǒng)自動(dòng)將其轉(zhuǎn)換為部件編碼。本實(shí)施例的方法在用戶自造字時(shí)特別適用,當(dāng)用戶要用到某個(gè)字體庫(kù)中沒(méi)有的字時(shí),即可用本實(shí)施例的方法進(jìn)行造字并將其添加入字體庫(kù)中。當(dāng)然,在構(gòu)造完整的字體庫(kù)時(shí),也可使用本實(shí)施例的造字方法,或者也可由系統(tǒng)逐一給出不同漢字(或字符編碼),再人工選擇相應(yīng)的部件編碼、結(jié)構(gòu)編碼。S05、用漢字部件根據(jù)結(jié)構(gòu)編碼生成漢字的字形數(shù)據(jù);也就是說(shuō),根據(jù)結(jié)構(gòu)編碼將所選的漢字部件放在特定位置處,以形成所需漢字的字形數(shù)據(jù)。優(yōu)選的,本步驟還包括用循環(huán)運(yùn)算對(duì)字形數(shù)據(jù)進(jìn)行優(yōu)化的過(guò)程,其具體方法可包括:S051、根據(jù)結(jié)構(gòu)編碼將漢字部件置于指定位置處,得到中間字形;例如,將“ ”部件置于上方,將“子”部件置于下方,組合得到圖1中右起第3個(gè)“字”字;或者,將“日”部件置于左方,將“月”部件置于右方,組合得到圖2中右起第4個(gè)“明”字。S052、判斷中間字形的字形參數(shù)是否符合預(yù)訂值,是則進(jìn)行步驟S055,否則進(jìn)行步驟S053;其中,字形參數(shù)可通過(guò)對(duì)中間字形進(jìn)行分析計(jì)算得到,也可通過(guò)對(duì)部件參數(shù)進(jìn)行計(jì)算得到。本步驟的目的在于判斷當(dāng)前中間字形的優(yōu)劣(如是否美觀、是否符合人們的閱讀習(xí)慣等),以確定是否要對(duì)其進(jìn)行調(diào)整。顯然,人們認(rèn)為“美觀”的漢字的結(jié)構(gòu)通常具有一定的共性,比如整個(gè)字的高度、寬度、面積在一定范圍內(nèi),高寬比接近于1,整個(gè)字的重心接近于漢字的幾何中心,各漢字部件間的距離較小、尺寸比例適當(dāng)、分布均勻等;而且,這些共性經(jīng)??赏ㄟ^(guò)一定的參數(shù)體現(xiàn)出來(lái)。因此,可以設(shè)定一些字形參數(shù)的預(yù)定值,并用中間字形的字形參數(shù)是否符合這些預(yù)定值來(lái)判斷該字形的優(yōu)劣。當(dāng)然,預(yù)定值的選擇和具體數(shù)值會(huì)根據(jù)漢字結(jié)構(gòu)等的不同有所不同(比如獨(dú)立結(jié)構(gòu)的字就無(wú)需使用部件距離參數(shù),再如上下結(jié)構(gòu)的字和上中下結(jié)構(gòu)的字的部件距離參數(shù)的預(yù)訂值肯定不同)。同時(shí),判斷字形參數(shù)是否符合預(yù)定值的方法也是多樣的,比如可以判斷多個(gè)字形參數(shù)是否均分別符合相應(yīng)預(yù)定值,也可判斷由多個(gè)字形參數(shù)計(jì)算得到的綜合值是否符合一個(gè)預(yù)定值,也可先對(duì)某個(gè)(或某些)字形參數(shù)進(jìn)行優(yōu)先判斷,在其合格(或不合格)時(shí)才對(duì)其它的字形參數(shù)進(jìn)行判斷。優(yōu)選的,字形參數(shù)包括漢字高度、漢字寬度、漢字高寬比、漢字面積、漢字黑白比、漢字重心、部件高度、部件寬度、部件高寬比、部件面積、部件黑白比、部件重心、部件距離、部件尺寸比中的至少一種。其中,漢字寬度、漢字高度等參數(shù)指中間字形整體的相應(yīng)參數(shù),而部件面積、部件黑白比等指中間字形中各漢字部件的相應(yīng)參數(shù);部件距離指中間字形中各漢字部件間的距離(可為漢字部件邊框間的距離,也可為漢字部件中心間的距離),其能體現(xiàn)各漢字部件的位置是否合理;部件尺寸比則指各漢字部件的尺寸的比例(可為面積t匕、高度比等),可體現(xiàn)漢字中各漢字部件的大小是否合適。例如,S051步驟得到的圖1中右起第3個(gè)“字”字,看起來(lái)感覺(jué)其上下分離,從而計(jì)算時(shí)可發(fā)現(xiàn)其部件距離(上下距離)偏大,不符合預(yù)定值;同樣,S051步驟得到的圖2中右起第4個(gè)“明”字也是部件距離(左右距離)偏大,不符合預(yù)定值。S053、根據(jù)字形參數(shù)與預(yù)訂值的差別調(diào)整中間字形;即根據(jù)S052步驟的判斷結(jié)果,確定中間字形具體哪里不合適,并進(jìn)行相應(yīng)的調(diào)整,從而得到新的中間字形。顯然,本步驟中進(jìn)行的調(diào)整應(yīng)當(dāng)是根據(jù)字形參數(shù)與預(yù)訂值的差別進(jìn)行的;比如,如果發(fā)現(xiàn)漢字高度偏大,就應(yīng)進(jìn)行能夠降低漢字高度的調(diào)整操作。優(yōu)選的,調(diào)整中間字形的操作包括調(diào)整漢字高度、調(diào)整漢字寬度、調(diào)整漢字面積、調(diào)整漢字黑白比、調(diào)整部件高度、調(diào)整部件寬度、調(diào)整部件面積、調(diào)整部件黑白比、調(diào)整部件位置中的至少一種。其中,調(diào)整漢字高度、調(diào)整漢字寬度等是指對(duì)漢字整體進(jìn)行調(diào)整,調(diào)整部件高度、調(diào)整部件位置等是指對(duì)漢字中的各漢字部件單獨(dú)進(jìn)行調(diào)整;調(diào)整漢字黑白比和調(diào)整部件黑白比是指改變字形中筆畫(huà)的“粗細(xì)”,從而改變筆畫(huà)所占的比例;調(diào)整漢字面積和調(diào)整部件面積是指在不改變高寬比的情況下放大、縮小漢字部件或漢字;調(diào)整部件位置是指移動(dòng)漢字部件在中間字形中的位置。當(dāng)然,調(diào)整中間字形的操作還有很多其它類型(例如使?jié)h字或漢字部件傾斜或扭曲);在此就不再逐一說(shuō)明。顯然,調(diào)整操作與字形參數(shù)并不一一對(duì)應(yīng),一個(gè)字形參數(shù)可通過(guò)多種不同的操作調(diào)整,一個(gè)調(diào)整操作也可用于改變多種字形參數(shù)。例如,中間字形的漢字重心參數(shù)不合格時(shí),可用調(diào)整部件位置的操作解決,也可用調(diào)整部件面積的操作解決,還可用調(diào)整部件高度、調(diào)整部件寬度、調(diào)整漢字高度、調(diào)整漢字寬度等操作解決;同樣,調(diào)整部件位置的操作即可用于調(diào)整漢字重心,也可用于調(diào)整部件距離,還可用于調(diào)整漢字高度、漢字寬度等。例如,S052步驟判斷出圖1中右起第3個(gè)“字”字的部件距離(上下距離)偏大,故進(jìn)行調(diào)整部件位置的操作,將上下兩個(gè)漢字部件“拉近”,得到右起第2個(gè)“字”字;而5052步驟判斷出圖2中“明”字部件距離(左右距離)偏大,故進(jìn)行調(diào)整部件位置的操作,將其左右兩個(gè)漢字部件“拉近”,得到右起第3個(gè)“明”字。顯然,雖然在圖1、圖2的例子中,本步驟中均只進(jìn)行了一個(gè)調(diào)整操作,但在本步驟中進(jìn)行多項(xiàng)調(diào)整操作也是可行的。S054、判斷調(diào)整后的中間字形的字形參數(shù)是否符合預(yù)訂值,以及調(diào)整次數(shù)是否超出限制,有至少一項(xiàng)為是則進(jìn)行步驟S055,均為否則進(jìn)行步驟S053 ;也就是說(shuō),對(duì)調(diào)整后的中間字形的字形參數(shù)進(jìn)行再次判斷,如果仍不合格則繼續(xù)進(jìn)行循環(huán)調(diào)整,直到字形參數(shù)合格或調(diào)整次數(shù)超出限制為止。例如,圖1中右起第2個(gè)“字”字經(jīng)一次調(diào)整后字形參數(shù)全部合格,故直接進(jìn)入S055步驟;而圖2中右起第3個(gè)“明”經(jīng)一次調(diào)整后,雖然部件距離合格,但其左側(cè)的“日”部件明顯偏寬、偏矮,即其部件高寬比仍不合格,故要返回步驟S053中,對(duì)“日”部件進(jìn)行調(diào)整部件高度和調(diào)整部件寬度的操作,得到右起第2個(gè)“明”字,而這個(gè)“明”字的字形參數(shù)均合格,可進(jìn)入S055步驟。當(dāng)然,如前所述,如果在S052步驟中直接判斷出圖2中右起第4個(gè)“明”字的部件距離和部件高寬比均不合格,并在步驟S053中同時(shí)進(jìn)行了調(diào)整部件距離、調(diào)整部件高度、調(diào)整部件寬度的操作,一次就得到圖2中右起第2個(gè)“明”字,則就不必進(jìn)行循環(huán)調(diào)整了 ;由此可見(jiàn),具體的字形參數(shù)判斷、中間字形調(diào)整過(guò)程可以是多樣的。顯然,上述調(diào)整畢竟不同于人工操作,對(duì)有些字形參數(shù)可能難以進(jìn)行合理的調(diào)整,或者將一個(gè)自行參數(shù)調(diào)整合格的同時(shí)可能導(dǎo)致其它字形參數(shù)變成不合格的,因此這種調(diào)整有可能耗費(fèi)很長(zhǎng)時(shí)間(即進(jìn)行很多次循環(huán)),甚至可能陷入死循環(huán)而一直進(jìn)行下去;為避免這種現(xiàn)象,可記錄調(diào)整的次數(shù)(如每進(jìn)行一次調(diào)整則將調(diào)整次數(shù)加1,或每進(jìn)行一次調(diào)整將剩余調(diào)整次數(shù)減I),并判斷調(diào)整次數(shù)是否超出限制(如調(diào)整次數(shù)過(guò)多),如果是則不論自行參數(shù)是否合格,強(qiáng)行進(jìn)入S055步驟而終止調(diào)整。S055、以當(dāng)前的中間字生成該漢字的字形數(shù)據(jù);也就是生成字體庫(kù)中所用的點(diǎn)陣圖、矢量圖、輪廓圖等形式的字形數(shù)據(jù)。例如,以圖1中最右邊的“字”字、圖2中最右邊的“明”字作為最終的字形數(shù)據(jù)。S06、將所得的字形數(shù)據(jù)與該漢字的字符編碼對(duì)應(yīng)起來(lái);即明確該字形數(shù)據(jù)代表的是哪個(gè)漢字,完成造字。實(shí)施例3:本實(shí)施例提供一種漢字造字方法,其與實(shí)施例2的漢字造字方法類似,區(qū)別在于:其步驟S04中,不是由用戶輸入字符編碼、部件編碼、結(jié)構(gòu)編碼,而是通過(guò)預(yù)存的編碼對(duì)應(yīng)表獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼;該編碼對(duì)應(yīng)表中存儲(chǔ)有所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼的對(duì)應(yīng)關(guān)系。也就是說(shuō),可預(yù)先構(gòu)造一個(gè)編碼對(duì)應(yīng)表(可專門(mén)構(gòu)造,也可在之前的造字過(guò)程中同時(shí)生成),之后再進(jìn)行造字時(shí),系統(tǒng)即可從該編碼對(duì)應(yīng)表逐一讀取字符編碼以及相應(yīng)的部件編碼、結(jié)構(gòu)編碼,并自動(dòng)完成造字過(guò)程。這樣,在完成了 一個(gè)字體庫(kù)(尤其是超大字體庫(kù))的構(gòu)造后,即可同時(shí)獲取該字體庫(kù)的編碼對(duì)應(yīng)表,從而可用該編碼對(duì)應(yīng)表全自動(dòng)的完成其它許多字庫(kù)的造字工作(當(dāng)然,這要求各造字過(guò)程中所用的漢字部件庫(kù)的編碼規(guī)則一致),進(jìn)一步大幅提聞造字效率。實(shí)施例4:本實(shí)施例提供一種構(gòu)造字體庫(kù)的方法,包括以下步驟:用上述各實(shí)施例的漢字造字方法生成對(duì)應(yīng)的漢字的字形數(shù)據(jù)與字符編碼;即用上述的漢字造字方法造出字體庫(kù)中所需的漢字。其中,如果使用上述實(shí)施例3的方法,則本步驟可全自動(dòng)進(jìn)行,如果使用上述實(shí)施例2的方法,則可由系統(tǒng)逐一給出(當(dāng)然也可由用戶輸入)不同的漢字或漢字編碼,再讓用戶選擇相應(yīng)的部件編碼和結(jié)構(gòu)編碼。用所得的字形數(shù)據(jù)構(gòu)造字體庫(kù);即按照字體庫(kù)所需的格式將字形數(shù)據(jù)“裝庫(kù)”,得到可用的字體庫(kù)文件。在本實(shí)施例的構(gòu)造字體庫(kù)的方法中,可利用漢字部件庫(kù)自動(dòng)完成造字過(guò)程并據(jù)此構(gòu)造字體庫(kù),從而大大提高了構(gòu)造字體庫(kù)的效率,減少了構(gòu)造字體庫(kù)的時(shí)間,降低了構(gòu)造字體庫(kù)的成本,尤其對(duì)于超大字體庫(kù)更是如此;同時(shí),當(dāng)用戶要用到字體庫(kù)中沒(méi)有的生僻字和自造字等時(shí),可自行造字,將所需的漢字加入字體庫(kù)中,使用方便。實(shí)施例5:本實(shí)施例提供一種漢字造字設(shè)備,包括:漢字部件庫(kù)存儲(chǔ)單元,用于存儲(chǔ)漢字部件庫(kù),漢字部件庫(kù)中存儲(chǔ)有對(duì)應(yīng)的漢字部件和部件編號(hào)。編碼獲取單元,用于獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼,其中結(jié)構(gòu)編碼規(guī)定漢字的結(jié)構(gòu)及漢字部件在漢字中的位置。字形數(shù)據(jù)生成單元,用于根據(jù)漢字的部件編碼和結(jié)構(gòu)編碼生成漢字的字形數(shù)據(jù),并將該字形數(shù)據(jù)與漢字的字符編碼相對(duì)應(yīng)。優(yōu)選的,漢字造字設(shè)備還包括漢字部件獲取單元,用于獲取漢字部件并將其提供給漢字部件庫(kù)存儲(chǔ)單元;該漢字部件獲取單元可為筆跡記錄單元、圖像獲取單元、圖像處理單元、數(shù)據(jù)存儲(chǔ)單元等。當(dāng)然,漢字造字設(shè)備中還可包括與上述各實(shí)施例的漢字造字方法相對(duì)應(yīng)的功能單元,如計(jì)算部件參數(shù)的單元,計(jì)算字形參數(shù)的單元、調(diào)整中間字形的單元等;漢字造字設(shè)備的各單元可以是獨(dú)立的,也可集成為一體,例如集成為一個(gè)處理器和一個(gè)存儲(chǔ)器等。使用本實(shí)施例的漢字造字設(shè)備可自動(dòng)完成造字過(guò)程,從而大大提高造字效率,減少造字時(shí)間,降低造字成本;同時(shí),當(dāng)用戶要用到字體庫(kù)中沒(méi)有的生僻字和自造字等時(shí),可自行造字,將所需的漢字加入字體庫(kù)中,使用方便??梢岳斫獾氖?,以上實(shí)施方式僅僅是為了說(shuō)明本發(fā)明的原理而采用的示例性實(shí)施方式,然而本發(fā)明并不局限于此。對(duì)于本領(lǐng)域內(nèi)的普通技術(shù)人員而言,在不脫離本發(fā)明的精神和實(shí)質(zhì)的情況下,可以做出各種變型和改進(jìn),這些變型和改進(jìn)也視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種漢字造字方法,其特征在于,包括: 獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼,并根據(jù)所述部件編碼從漢字部件庫(kù)中提取相應(yīng)的漢字部件,其中所述結(jié)構(gòu)編碼規(guī)定所述漢字的結(jié)構(gòu)及所述漢字部件在所述漢字中的位置; 用所述漢字部件根據(jù)所述結(jié)構(gòu)編碼生成所述漢字的字形數(shù)據(jù),并將所述漢字的字形數(shù)據(jù)與字符編碼相對(duì)應(yīng)。
2.根據(jù)權(quán)利要求1所述的漢字造字方法,其特征在于,在所述獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼之前,還包括: 從漢字部件獲取單元獲取漢字部件,為所述漢字部件賦予部件編碼以構(gòu)造漢字部件庫(kù)。
3.根據(jù)權(quán)利要求2所述的漢字造字方法,其特征在于,所述漢字部件獲取單元包括筆跡記錄單元、圖像獲取單元、圖像處理單元、數(shù)據(jù)存儲(chǔ)單元中的至少一種。
4.根據(jù)權(quán)利要求2所述的漢字造字方法,其特征在于,所述構(gòu)造漢字部件庫(kù)還包括: 獲取所述漢字部件庫(kù)中的漢字部件的部件參數(shù),所述部件參數(shù)包括部件高度、部件寬度、部件高寬比、部件面積、部件黑白比、部件重心、部件來(lái)源字符、部件原位置、部件推薦位置中的至少一種。
5.根據(jù)權(quán)利要求1所述的漢字造字方法,其特征在于,所述結(jié)構(gòu)編碼為ISO10646標(biāo)準(zhǔn)中的IDS屬性的結(jié)構(gòu)編碼。
6.根據(jù)權(quán)利要求1所述的 漢字造字方法,其特征在于,所述獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼包括: 通過(guò)輸入設(shè)備獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼; 或 通過(guò)預(yù)存的編碼對(duì)應(yīng)表獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼,所述編碼對(duì)應(yīng)表中存儲(chǔ)有所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼的對(duì)應(yīng)關(guān)系。
7.根據(jù)權(quán)利要求1至6中任意一項(xiàng)所述的漢字造字方法,其特征在于,所述用所述漢字部件根據(jù)所述結(jié)構(gòu)編碼生成所述漢字的字形數(shù)據(jù)包括: 步驟1、根據(jù)所述結(jié)構(gòu)編碼將所述漢字部件置于指定位置,得到中間字形; 步驟2、判斷所述中間字形的字形參數(shù)是否符合預(yù)訂值,是則進(jìn)行步驟5,否則進(jìn)行步驟3 ; 步驟3、根據(jù)所述字形參數(shù)與預(yù)訂值的差別調(diào)整所述中間字形; 步驟4、判斷調(diào)整后的所述中間字形的字形參數(shù)是否符合預(yù)訂值,以及調(diào)整次數(shù)是否超出限制,有至少一項(xiàng)是則進(jìn)行步驟5,均否則進(jìn)行步驟3 ; 步驟5、根據(jù)當(dāng)前的所述中間字形生成所述漢字的字形數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的漢字造字方法,其特征在于,所述字形參數(shù)包括:漢字高度、漢字寬度、漢字高寬比、漢字面積、漢字黑白比、漢字重心、部件高度、部件寬度、部件高寬t匕、部件面積、部件黑白比、部件重心、部件距離、部件尺寸比中的至少一種。
9.根據(jù)權(quán)利要求7所述的漢字造字方法,其特征在于,所述調(diào)整所述中間字形包括下列調(diào)整操作中的至少一種: 調(diào)整漢字高度、調(diào)整漢字寬度、調(diào)整漢字面積、調(diào)整漢字黑白比、調(diào)整部件高度、調(diào)整部件寬度、調(diào)整部件面積、調(diào)整部件黑白比、調(diào)整部件位置。
10.一種構(gòu)造字體庫(kù)的方法,其特征在于,包括: 用權(quán)利要求1至9中任意一項(xiàng)所述的漢字造字方法生成對(duì)應(yīng)的漢字的字形數(shù)據(jù)與字符編碼; 用所得的漢字的字形數(shù)據(jù)構(gòu)造字體庫(kù)。
11.一種漢字造字設(shè)備,其特征在于,包括: 漢字部件庫(kù)存儲(chǔ)單元,用于存儲(chǔ)漢字部件庫(kù),所述漢字部件庫(kù)中存儲(chǔ)有對(duì)應(yīng)的漢字部件和部件編號(hào); 編碼獲取單元,用于獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼,其中所述結(jié)構(gòu)編碼規(guī)定所述漢字的結(jié)構(gòu)及所述漢字部件在所述漢字中的位置; 字形數(shù)據(jù)生成單元,用于根據(jù)所述漢字的部件編碼和結(jié)構(gòu)編碼生成所述漢字的字形數(shù)據(jù),并將所述字形數(shù)據(jù)與所述漢字的字符編碼相對(duì)應(yīng)。
12.根據(jù)權(quán)利要求11所述的漢字造字設(shè)備,其特征在于,還包括: 漢字部件獲取單元,用于獲取所述漢字部件并將其提供給所述漢字部件庫(kù)存儲(chǔ)單元。
全文摘要
本發(fā)明提供一種漢字造字方法和設(shè)備、構(gòu)造字體庫(kù)的方法,屬于字體庫(kù)技術(shù)領(lǐng)域,其可解決現(xiàn)有的漢字造字技術(shù)效率低、成本高、不能實(shí)時(shí)造字的問(wèn)題。本發(fā)明的漢字造字方法包括獲取所要構(gòu)造的漢字的字符編碼、部件編碼、結(jié)構(gòu)編碼,根據(jù)部件編碼從漢字部件庫(kù)中提取漢字部件,其中結(jié)構(gòu)編碼規(guī)定了漢字的結(jié)構(gòu)及漢字部件在漢字中的位置;用漢字部件根據(jù)結(jié)構(gòu)編碼生成漢字的字形數(shù)據(jù),并將字形數(shù)據(jù)與字符編碼對(duì)應(yīng)。本發(fā)明的構(gòu)造字體庫(kù)的方法包括用上述漢字造字方法生成對(duì)應(yīng)的漢字的字形數(shù)據(jù)與字符編碼,并用所得的字形數(shù)據(jù)構(gòu)造字體庫(kù)。本發(fā)明的漢字造字設(shè)備包括與上述方法相應(yīng)的單元。本發(fā)明可用于構(gòu)造超大字體庫(kù)。
文檔編號(hào)G06F17/22GK103186511SQ201110459270
公開(kāi)日2013年7月3日 申請(qǐng)日期2011年12月31日 優(yōu)先權(quán)日2011年12月31日
發(fā)明者唐英敏, 馬蕾, 劉洋, 王晨曦, 劉金妮, 欒瑛, 于萍萍 申請(qǐng)人:北京大學(xué), 北大方正集團(tuán)有限公司, 北京北大方正電子有限公司