專利名稱:多級結(jié)構(gòu)漢字字庫技術(shù)及其中文電腦操作系統(tǒng)設(shè)計的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬計算機漢字信息處理范籌。中文電腦的基礎(chǔ)是漢字字庫,中文操作系統(tǒng)主要由漢字輸入、顯示、打印輸出等模塊組成,而每一模塊的實現(xiàn)都要通過字形產(chǎn)生器和字庫管理模塊調(diào)用漢字庫。
目前,大部分漢字系采用統(tǒng)仍點陣漢字庫,主要代表有北大方正(5.0以下版本)、北京聯(lián)想、王碼、四通、金峰、曉軍2.13和巨人漢字系統(tǒng)等;一般采用48×48點陣以下的各種字體的字庫。
點陣漢字的弱點在于低點陣漢字字形粗糙,放大有鋸齒,而高點陣字庫對存儲容量的占用以幾何級數(shù)倍增長。例如,一個256×256點分辨率點陣字要占用8K字節(jié),一個國標漢字基本集(含7445個漢字及字符)的一種字體要占60M字節(jié),10種字體的字庫要600M字節(jié),這在中低檔微機上不能實現(xiàn),制成漢卡要非常昂貴的造價,高點陣字庫由于占用存儲容量大,不可能將各字體一次調(diào)入內(nèi)存,從而增加了內(nèi)、外存的數(shù)據(jù)調(diào)進調(diào)出次數(shù)因而大大降低了計算機的處理速度和外存的使用壽命。
矢量漢字技術(shù)為特征的漢字系統(tǒng)其主要代表有西安凱特計算機公司的CAD漢字系統(tǒng)(采用AUTOCAD系統(tǒng)劃線數(shù)據(jù)結(jié)構(gòu)描述)和北大方正、香港金山(SUPER)的6.0F版本(采用POSTSCRIPT技術(shù)的輪廓矢漢字)。這些系統(tǒng)在提高處理高分辨率的漢字信息和減少對存儲容量的占用方面已經(jīng)有了明顯的進步,但是,它們的共同特點是字庫描述的基本單位仍然是字,描述一個字的輪廓曲線仍要占用較大的存儲容量,而且,每增加一種字體仍然要增加差不多等量的存儲容量;以北大方正6.0F漢字系統(tǒng)為例,每一種字體要占用1-2MB存儲容量,8種字體占用了10MB多字節(jié)存儲容量,對于中低檔微機來說,將所有字庫一次調(diào)入內(nèi)存使用仍不可能,制成漢卡價格仍然昂貴。
本發(fā)明的目的在于實現(xiàn)一種高精度、省內(nèi)存、價廉且應(yīng)用面廣的漢字字庫技術(shù)和漢字系統(tǒng),它與傳統(tǒng)的計算機漢字字形產(chǎn)生技術(shù)的不同點在于傳統(tǒng)的計算機漢字庫將漢字看成一個獨立的不可分的基本單位,而本技術(shù)的漢字計算機字形描述將漢字又向下細分若干級,分級編碼,最終以筆劃或組成筆劃的曲線段為基本單位,由于漢字筆劃數(shù)比漢字字符集少得多,該技術(shù)充分利用了漢字字形的特點和計算機的特點,從而這種在計算機里的新型表示法和處理方法能夠達到計算機對漢字字形以任意高精度最完美地描述和最大限度地節(jié)省存儲容量的目的。例如同樣描述8種不同字體的256×256點分辨率的國標漢字基本級的字庫,多級結(jié)構(gòu)字庫只要占用600KB存儲容量,這是同等點陣字庫所占容量的千分之一和同等矢量字庫的十五分之一,而每增加一種字體只要增加10KB到70KB的存儲容量,漢字字符集越大、字體越多、字形精度要求越高就越能顯示其優(yōu)越性,把多種字體同時調(diào)入內(nèi)存使用對于中低檔微機都已成為可能。
目前已研制成功含五種字體的256×256點以上分辨率的國標漢字基本集〔含6763個漢字等〕字庫僅占190K字節(jié);正在研制第二版包括9種字體的256×256點以上分辨率的國標基本集和第一輔助集〔繁體字〕字庫約占300K字節(jié);第三版包括24種字體的、分辨率256×256以上的、含國標漢字基本集和第一輔助集漢字的字庫只約占750K字節(jié);第四版包括所有漢字字體的256×256點以上分辨率的國標漢字基本集及第一、二、三、四、五輔助集所有漢字及圖形字符〔約五萬字〕的字庫約只占存儲容量為1.5至2M字節(jié)。
該技術(shù)除了可以用于設(shè)計含有超大型國標漢字字符集的漢字操作系統(tǒng)外,還可以用以研制具有多國文字的多字體字庫,特別是我國各少數(shù)民族的文字、日文、朝鮮文、東南亞各國文字。
本技術(shù)生成的中文電腦應(yīng)用復(fù)蓋面廣,由于它最大限度地節(jié)省存儲資源,解決了漢字字集大字體多難于一次調(diào)入內(nèi)存使用的難題,可以很方便地生產(chǎn)各種不同的中文信息處理應(yīng)用的版本適于從家用電腦到大型計算機系統(tǒng)使用,對于用戶的應(yīng)用都可以節(jié)省投資,勢必推動中文電腦的更廣泛地使用,該技術(shù)特別適于高級排版印刷系統(tǒng)、高級動畫系統(tǒng)、字幕機等應(yīng)用,由于它們對字庫的依賴而可以提高性能和大大降低造價。
總之,該技術(shù)應(yīng)用的前景廣闊。
多級結(jié)構(gòu)漢字字庫的設(shè)計原理概述如下將國標碼表示的漢字的字形再自下細分若干級分級編碼最終以筆劃或構(gòu)成筆劃的曲線段為基本單位來描述和生成該漢字的字形的方法構(gòu)成的字庫稱為多級結(jié)構(gòu)字庫。附
圖1是一個多級結(jié)構(gòu)字庫示意圖。
如附圖1所示“啊”字是該字庫的第0號字;
“啊”字分解成簡字“阿”和字元“口”,稱為二元字;
“阿”簡字分解成復(fù)合字元“可”和字元“阝”稱為二元簡字;
“可”復(fù)合字元分解成字元“口”和“丁”,為二元復(fù)合字元;
“口”字元分解成復(fù)合筆劃“丨”和筆劃“一”、“”,稱為三劃字元;
“阝”字元分解成筆劃“ㄋ”和“丨”,稱為二劃字元;
“丁”字元分解成筆劃“一”和“亅”,稱為二劃字元;
“”復(fù)合筆劃分解成筆劃“一”和“丿”,稱為二劃復(fù)合筆劃;
筆劃“一”“丨”“ㄋ”“亅”分別為四、四、九、五段曲線段構(gòu)成的筆劃;
從附圖1可知,“啊”字最終分解成四種不同的12個筆劃,而每個筆劃又由若干曲線段構(gòu)成它的閉合輪廓線;最后對每個閉合曲線構(gòu)成的圖形進行填充處理。
附圖2a所示“ㄋ”筆劃由九條曲線段構(gòu)成閉合曲線,而每條曲線又用曲線方程或折線段擬合。本節(jié)描述了一個由字、簡字、復(fù)合字元、字元、復(fù)合筆劃、筆劃、曲線段七級結(jié)構(gòu)的字庫,為了描述和實現(xiàn)簡便起見,將之合并為三級即字、字元、筆劃〔含曲線段〕。
下面闡述三級字庫編碼方案的實例字結(jié)構(gòu)編碼一個字由若干個字元構(gòu)成,對字的編碼規(guī)則是先對僅含一個字元的字編碼,接著對含二個字元的字編碼,以此類推,約定一個字最多含七個字元,即最后對七元字編碼,每元字號從1開始,依次往下編碼。
字元結(jié)構(gòu)編碼一個字元由若干筆劃組成,約定一個字元最多含15個筆劃,對字元編碼的規(guī)則是先對含2個筆劃的字元編碼,最后對15個筆劃的元字編碼,每劃字元字元號從1到255。用一個字節(jié)數(shù)據(jù)表示字元號,可節(jié)省內(nèi)存容量。
對筆劃的編碼筆劃是各種大小形狀不同的“橫”、“豎”、“撇”、“捺”、“點”的封閉曲線,每個筆劃由兩條以上的曲線段組成;從1至255編碼,也是用一個字節(jié)數(shù)據(jù)表示一個筆劃號,筆劃所含各曲線段的坐標點數(shù)據(jù)也用一個字節(jié)表示一個數(shù)。
三級結(jié)構(gòu)24種字體漢字庫的結(jié)構(gòu)說明如下字結(jié)構(gòu)級由漢字國標碼經(jīng)索引文件變換成為結(jié)構(gòu)字編碼,以字結(jié)構(gòu)編碼為序形成各字體公用的字結(jié)構(gòu)文件,用以描述構(gòu)成該字的字元數(shù)和每字元在字座標系下的位置、大小。
字元結(jié)構(gòu)級由字體形狀近似的字體公用一種字元結(jié)構(gòu),24種分為6類不同的字元宋體類字元、楷體類字元、圓體類字元、魏碑類字元、隸書類字元、行楷類字元;以每種字元結(jié)構(gòu)編碼為序形成各字體公用的字元結(jié)構(gòu)文件,用以描述構(gòu)成該字元的筆劃數(shù)和每筆劃在字元座標系下的位置、大小;
共用宋體類字元的字體包括細宋、標宋、大宋、書宋、大黑、中黑、細黑、仿宋、鋼筆體字形;
共用楷體類字元的字體包括細楷、中楷、粗楷體字形;
共用圓體類字元的字體包括細圓、中圓、粗圓體字形;
共用魏碑體類字元的字體包括細、中、粗體魏碑字形;
共用隸書體類字元的字體包括細、中、粗隸書體字形;
共用行楷體類字元的字體包括細、中、粗行楷體字形。
筆劃結(jié)構(gòu)級每一種字體有一個筆劃結(jié)構(gòu)文件,24個筆劃文件對應(yīng)24種字體。
從以上結(jié)構(gòu)圖可知字結(jié)構(gòu)文件為所有字體公用;而相似的字體共用字元結(jié)構(gòu)文件;每一種字體有一個筆劃文件;因此每增加一種字體只要增加一個筆劃文件,根據(jù)實踐可知一個筆劃文件僅要不到10K字節(jié)的數(shù)據(jù),從而非常經(jīng)濟,該字庫共占750K字節(jié),其中索引文件和簡繁字結(jié)構(gòu)文件占150K字節(jié),每類字元不到60K字節(jié),六類共360K字節(jié),每個筆劃文件不到10K字節(jié),24種字體共占240K字節(jié)。
漢字字形產(chǎn)生模塊工作流程如下國標漢字編碼經(jīng)索引文件可獲取結(jié)構(gòu)漢字編碼,以結(jié)構(gòu)漢字編碼可換算該字含幾個字元和在該元字中的字號,然后經(jīng)字結(jié)構(gòu)文件獲取該字的各字元號等數(shù)據(jù),根據(jù)各字元所含筆劃數(shù)和字元號從字元文件中獲取組成各字元的筆劃號,最后從筆劃文件獲取構(gòu)成各筆劃的曲線段的參數(shù)經(jīng)填充算法生成該漢字。
生成字結(jié)構(gòu)文件、字元文件和筆劃文件,必須建立各種座標系屏幕座標系〔對于顯示〕,打印輸出塊座標系〔對于打印輸出〕,字座標系,字元座標系,筆劃坐標系;字形產(chǎn)生模塊調(diào)用這些文件的數(shù)據(jù)經(jīng)過坐標變換產(chǎn)生字形。
屏幕座標系以計算機VGA顯示器〔12H模式〕為例,屏幕左上角為座標原點,過原點向下為Y軸,過原點向右為X軸,顯示分辨率為640×480,因此屏幕右下角座標為〔639,479〕。
打印輸出塊座標系類似屏幕座標系,左上角為塊座標原點,過原點向下為Y軸,過原點向右為X軸,右下角座標為〔塊寬,塊長〕;塊寬只受物理設(shè)備的限制,塊長可任意,在這個坐標系下可以打印任意超大漢字。
字座標系字座標系是相對于屏幕座標系〔對于顯示〕打印塊座標系〔對于打印〕下的相對座標系,原點為字的中心;用以描述256×256點大小的基準字。
字元座標系字元座標系是相對于字座標系的相對座標系,原點為字元的中心,在該坐標系下描述的基準字元為256×256點。
筆劃座標系筆劃座標系是相對于字元座標系的相對座標系,原點是筆劃的中心,基準筆劃為256×256點大小。
多級結(jié)構(gòu)字庫的設(shè)計方法步驟如下拆字進行字元的設(shè)置與字的編碼確定構(gòu)成字的字元,要設(shè)計多少字元,并對各字元在字庫中重復(fù)使用的次數(shù)進行分析;確定每一個字由幾個字元組成,并對字編碼。
拆字元設(shè)置筆劃并對字元編碼同樣,拆字元確定要設(shè)計多少筆劃,對筆劃設(shè)計定形;確定每一個字元由幾個筆劃組成,并對字元編碼;分類出2-15劃字元。
筆劃的設(shè)計在256×256的方格紙上精確描述筆劃圖形,根據(jù)對曲線段的擬合方法將筆劃分成若干曲線段,判讀曲線段上特征點座標和該段特征值并記錄下來輸入計算機,用測試程序檢驗筆劃的設(shè)計效果,然后設(shè)計定型并編碼。
使用字庫生成調(diào)試工具軟件生成字庫使用字元生成及調(diào)試程序生成和調(diào)試每一個字元,即二劃至十五劃字元文件等十四個文件,一一進行生成和調(diào)試。在筆劃設(shè)計及字元生成調(diào)試完成后,使用字生成調(diào)試程序調(diào)試每一個字,當每一個字都調(diào)試完畢后,重新組合字結(jié)構(gòu)文件,生成由國標碼到結(jié)構(gòu)字庫編碼的索引文件。使用字庫測試修改程序?qū)ψ謳爝M行最后的測試和修改,直到達到正確、精確、美觀的要求時,該字庫即告完成。
筆劃中的曲線段的擬合方法可以采用折線方法、貝塞爾二次曲線、二次和三次多項式逼近等方法擬合,不論采取何種擬的方法均把表示筆劃的數(shù)據(jù)結(jié)構(gòu)統(tǒng)一,即一個筆劃用若干座標點表示,座標點數(shù)據(jù)的意義隨擬合方法的不同而不同。折線擬合的曲線段數(shù)即是曲線段數(shù),段數(shù)同點數(shù);貝塞爾二次曲線擬合的段數(shù)正好是點數(shù)的一半,而且點數(shù)是偶數(shù),偶數(shù)號點又正好是相鄰兩點的切線交點;二次多項式的段數(shù)與點數(shù)的關(guān)系同貝塞爾二次曲線,不同的是所取的點的位置不同;三次多項式逼近點數(shù)為段數(shù)的三倍。
筆劃數(shù)據(jù)文件的格式如下約定每個字體的筆劃數(shù)為200;約定筆劃文件頭占600個字節(jié),每個筆劃占3個字節(jié),依筆劃號次序排列;3個數(shù)據(jù)的內(nèi)容是第一個字節(jié)為筆劃含座標的點數(shù),第二和第三字節(jié)合起來為該筆劃的座標數(shù)據(jù)在文件中的起始位置,這種數(shù)據(jù)結(jié)構(gòu)允許每一個筆劃所含的點數(shù)為任意。
字元數(shù)據(jù)結(jié)構(gòu)對所含每一筆劃用5個字節(jié)表示,分別為筆劃號、X和Y方向的縮放系數(shù)、筆劃中心的X座標和Y座標;2劃字元占10個字節(jié)數(shù)據(jù);3劃字元占15個字節(jié)數(shù)據(jù);如此類推、15劃字元占75個字節(jié)數(shù)據(jù)。
字的數(shù)據(jù)格式一元字用兩個字節(jié)表示,內(nèi)容分別為所含字元的筆劃數(shù)和字元號;二元以上字對所含每一字元用6個字節(jié)表示,分別為各字元所含筆劃數(shù)、字元號、X和Y方向的縮放系數(shù)、字元中心的X座標和Y座標;2元字占12個字節(jié)數(shù)據(jù);3元字占18個字節(jié)數(shù)據(jù);如此類推,五元字占30個字節(jié)數(shù)據(jù)。
國標碼變換到結(jié)構(gòu)字編碼的索引文件的格式由國標碼轉(zhuǎn)換到漢字順序號,國標碼用兩個字節(jié)表示一個漢字,設(shè)為C0、C1,定義為無符號字符型數(shù),漢字順序號=94×(C0-176)+C1-161,順序號為0的是“啊”字,依此類推;索引文件格式按順序號依次排列結(jié)構(gòu)字號,結(jié)構(gòu)字號,……,結(jié)構(gòu)字號;根據(jù)漢字順序號可查到結(jié)構(gòu)漢字號,結(jié)構(gòu)漢字號是按一元字、二元字、三元字、四元字、五元字等依次排序,又可根據(jù)結(jié)構(gòu)漢字號求出該漢字所含的字元數(shù)和各字元號,這樣就可以生成該字字形了。
在屏幕座標系下顯示結(jié)構(gòu)字的座標變換如下(1)在屏幕上顯示字的調(diào)用參數(shù)格式一個字在屏幕上顯示至少要8個參數(shù),它們是結(jié)構(gòu)字號,為一個正整數(shù),兩個字節(jié)表示,它是從漢字國標碼轉(zhuǎn)換而來的;
字體號,該參數(shù)表明該字用何字體顯示;
X方向的縮放系數(shù)XS,為1-255的無符號整數(shù);
Y方向的縮放系數(shù)YS,為1-255的無符號整數(shù);
字中心的在屏幕座標系下X座標X0,為有符號的字符型整數(shù);
字中心的在屏幕座標系下Y座標Y0,為有符號的字符型整數(shù);
字的顯示顏色;
字的顯示方式(與、或、異或、直寫)。
(2)在屏幕上顯示一個字的座標變換在屏幕座標系下寫一個字;
每一個字元的每一個筆劃的各座標點由在字座標系到屏幕座標系的坐標變換公式如下Xkij=((X2i+XBi×X3j÷128)×XUk/128+Xk1)×XS/128+XO;
Ykij=((Y2i+YBi×Y3j÷128)×YUk/128+Yk1)×YS/128+YO;
式中,(X3j,Y3j)為i筆劃各座標點在筆劃座標系下的坐標,(Xkij,Ykij)為i筆劃各座標點在字座標系下的坐標,(Xk1,Yk1)為第k字元中心在字座標下的座標,(XUk,YUk)為第k字元在X和Y方向上的縮放系數(shù),(X2i,Y2i)為第k字元的第i筆劃中心在該字元座標系下的座標,(XBi,YBi)為k字元的第i筆劃在X和Y方向上的縮方系數(shù),k=1-該字所含字元數(shù);
i=1-第k字元所含的筆劃數(shù);
j=1-第k字元的第i筆劃所含的點數(shù);
(X0,Y0)為字中心在屏幕座標系下的座標;
XS為字顯示在屏幕上X方向縮放系數(shù);
YS為字顯示在屏幕上Y方向縮放系數(shù)。
結(jié)構(gòu)字庫生成和調(diào)試工具主要有三個程序字元生成與調(diào)試、字生成與調(diào)試、字庫生成與調(diào)試。
字元生成與調(diào)試程序流程見附圖2b;
附圖2b中(1)對話輸入字元的筆劃數(shù)及相應(yīng)的字元文件名舉例例如要生成調(diào)試3劃字元,則輸入3,然后輸入3劃字元文件名(該文件是拆字元分解為相應(yīng)筆劃后用文本編輯輸入的);將磁盤文件讀入字元數(shù)組;
附圖2b中(8)將宋體以外相應(yīng)筆劃用異或方式清除,其含義是先僅調(diào)試宋體字元的各筆劃,因而將其他字體的相應(yīng)筆劃清除,待宋體的該筆劃基本調(diào)試好再顯示其他字體的筆劃,如不合適可反復(fù)調(diào)試,使每個筆劃的大小和位置數(shù)據(jù)合理。
附圖2b中(9)調(diào)用縮放模塊的目的在于修改筆劃在X和Y方向上的縮放系數(shù),以使該筆劃有合理的長寬;用↑↓→←鍵(小步縮放)及HOME END PUGEUP PUGEDOWN鍵(大步)調(diào)試縮放系數(shù),直到滿意為止;
附圖2b中(10)調(diào)用平移模塊的目的在于修改該筆劃在字元座標系下的位置中心坐標,以使該字元的筆劃分布合理,調(diào)試所用鍵同(9),鍵的意義表示平移增量。
字生成與調(diào)試程序流程見附圖3;
附圖3中(1)初始化的含義包括將各字體的筆劃文件讀入各筆劃數(shù)組;
將各字體字元文件讀入各字元數(shù)組;
輸入該字結(jié)構(gòu)含的字元數(shù)及相應(yīng)的文件名;
讀字結(jié)構(gòu)文件數(shù)據(jù)送字結(jié)構(gòu)數(shù)組;
設(shè)置顯示方式為VGA模式。
附圖3中(6)輸入并顯示樣字是將用掃描儀或其他方式獲取的標準字顯示在屏幕上。
附圖3中(8)屏幕處理包括將宋體以外相應(yīng)字元用異或方式清除;
清除屏幕提示區(qū)。
附圖3中(9)調(diào)用縮放和平移模塊目的是修改各字元在X和Y方向上的縮放系數(shù),以使字元劃有合理的長寬;用↑↓→←鍵及HOME END PUGEUP PUGEDOWN鍵調(diào)試縮放系數(shù),直到滿意為止;
調(diào)用平移模塊修改該字元在字座標系下的位置中心坐標,以使該字的各字元分布合理,調(diào)試所用鍵同縮放,鍵的意義表示平移增量。
字庫的調(diào)試工具說明一個字庫生成后需要測試,測試過程中往往要修改,例如將二元字改成三元字,這不但引起字庫數(shù)據(jù)的改變,也引起字庫結(jié)構(gòu)的改變,因而同時要修改索引文件和文件頭,使用程序自動修改很方便,具體流程見附圖4。
附圖4中(1)按裝字庫包括將要修改的字庫文件調(diào)入內(nèi)存,同時將字元文件及各字體筆劃文件調(diào)入內(nèi)存數(shù)組。
附圖4中(6)更改則先從字結(jié)構(gòu)文件中去掉該字結(jié)構(gòu)數(shù)據(jù)并調(diào)整該字結(jié)構(gòu)文件,修改該文件頭。
附圖4中(7)輸入構(gòu)成該字所含的新字元數(shù)目,例如從二元字改為三元字輸入3,將含該字元數(shù)的最高字號加1分配給該字,并在字結(jié)構(gòu)文件中分配數(shù)據(jù)區(qū)增加到該字結(jié)構(gòu)文件,調(diào)整字結(jié)構(gòu)文件并修改文件頭、索引文件等。
多級結(jié)構(gòu)字庫的中文電腦操作系統(tǒng)設(shè)計總體設(shè)計說明如下本操作系統(tǒng)的設(shè)計是以多級結(jié)構(gòu)字庫技術(shù)為基礎(chǔ)的,雖然其模塊設(shè)置同傳統(tǒng)的漢字操作系統(tǒng)大體相同,但由于字庫結(jié)構(gòu)的根本不同,因而各模塊的設(shè)計就不同。
與傳統(tǒng)的字庫結(jié)構(gòu)不同,多級結(jié)構(gòu)多字體字庫(字結(jié)構(gòu)、字元、各筆劃、索引等數(shù)據(jù))是不可分割的整體,由此而必需一個與之相適應(yīng)的字庫管理與字形產(chǎn)生模塊;該模塊可直接被應(yīng)用程序調(diào)用,也可被漢字顯示管理模塊與漢字打印輸出管理模塊調(diào)用;漢字顯示管理模塊可被漢字輸入鍵盤管理模塊調(diào)用;以上各模塊均可直接用于應(yīng)用程序。
上面說明了漢字操作系統(tǒng)所需的模塊、模塊間的相互關(guān)系以及它們同應(yīng)用程序間的關(guān)系;從以上可知,漢字操作系統(tǒng)的設(shè)計依賴于字庫,最基礎(chǔ)的模塊就是字庫管理與字形產(chǎn)生模塊,其它模塊都要通過它來調(diào)用字庫;字庫管理將結(jié)構(gòu)字庫調(diào)入基本內(nèi)存或擴展內(nèi)存或擴充內(nèi)存,然后建立一個軟中斷供字形產(chǎn)生模塊使用,字形產(chǎn)生模塊將根據(jù)漢字國標碼從多級結(jié)構(gòu)字庫讀取字結(jié)構(gòu)數(shù)據(jù),供漢字顯示模塊、漢字打印輸出模塊及應(yīng)用程序使用;漢字顯示管理模塊一方面要根據(jù)字形產(chǎn)生模塊提供的字形數(shù)據(jù)和應(yīng)用的其它參數(shù)(例如顯示位置、大小、顏色和方式等)顯示在屏幕上,另一方面要將漢字顯示功能附加到原來的顯示中斷10H里;漢字打印輸出管理模塊包括字形數(shù)據(jù)到打印緩沖區(qū)格式數(shù)據(jù)的轉(zhuǎn)換和利用17H中斷控制點陣打印機打印,使用結(jié)構(gòu)字庫可以顯示或打印任意大小的字,只受到物理設(shè)備的限制,例如可以顯示一屏幕大的字、可以打印長度任意而寬度為寬行紙所允許的寬度的一個字等而字形不變形無鋸齒;漢字輸入鍵盤管理模塊管理漢字輸入鍵盤、漢字輸入處理和修改鍵盤中斷管理16H。
下面是一個含5種字體多級結(jié)構(gòu)字庫的實例,5種字體都屬于同一字元類,故共一個字元文件,所有類字體都公用一個字結(jié)構(gòu)文件。
(1)五種字體的筆劃①標宋體筆劃,筆劃編碼1-200,筆劃數(shù)據(jù)文件占7800字節(jié),具體編碼和形狀如下(只列101-198)
②粗黑體筆劃,筆劃編碼1-200,筆劃數(shù)據(jù)文件占5800字節(jié),具體編碼和形狀如下(只列1-100) ③書宋體筆劃數(shù)據(jù)文件占7850字節(jié),④細黑體筆劃數(shù)據(jù)文件占5900字節(jié),⑤鋼筆體筆劃數(shù)據(jù)文件占4800字節(jié),具體編碼和形狀(略);
五種字體筆劃數(shù)據(jù)文件共32150字節(jié)。
(2)宋體類字元,宋體類字元結(jié)構(gòu)文件可為9種字體共用,上面5種字體都為宋體類,從2劃字到15劃字元如下2劃字元71個占710字節(jié),編碼1到71,只列前20 3劃字元156個,占2340字節(jié),編碼從1到156 4劃字元217個,占4340字節(jié),編碼從1至217
5劃字元200個,占5000字節(jié),編碼從1到200 6劃字元230個,占6900字節(jié),編碼從1到230耒耳 亞虍 衣羊及米 7劃字元174個,占6090字節(jié),編碼從1到174走走赤辰 辛 來我孚矣色僉 西 而 頁蟲8劃字元149個,占5760字節(jié),編碼從1到149其 非 隹采采林 金 考參卒堅定宗多賣9劃字元110個,占4950字節(jié),編碼從1到110差夌奏柔叔青齒 魚單苗者昔咅果京兒疌奇10劃字元107個,占5350字節(jié),編碼從1到107髟賓革音鬼度前帝查荅春宛胥宣俞枼爰周居易11劃字元66個,占3630字節(jié),編碼從1到66 愛敖敖旁莫 復(fù)段真畐扁眉貴胡叟昷耑島 12劃字元49個,占2940字節(jié),編碼從1到49焦 票堇堂章鬲留唐骨曷黃叕 康斯鹿彎駦敢13劃字元48個,占3120字節(jié),編碼從1到48黑黑番善童 敦高曹商嬰咢散蒙惠尊嗇雋奧桑14劃字元31個,占2170字節(jié),編碼從1到31景廉粦闌雷朝最崩敬曼登禽覃喜曾魯矞鼠意感
15劃字元22個,占1650字節(jié),編碼從1到22葛辟敫需察稟署畺豊熏辟豪 睘侖 葛裹微蕤該字元結(jié)構(gòu)數(shù)據(jù)共占55150字節(jié)。
(3)字結(jié)構(gòu)文件,字結(jié)構(gòu)文件含1到5元字一元結(jié)構(gòu)字411個占822字節(jié),從1到411,只列20個乘面阜食甚首弟重盾恭畫荒柬家前宛俞賓南酋二元結(jié)構(gòu)字4745個占56940字節(jié),從1到4745編碼締顛滇點靛墊佃甸店淀碉雕掉釣調(diào)跌碟蝶諜盯,三元結(jié)構(gòu)字1204個占21672字節(jié),從1到1205編碼蛤閣隔鉻各給根跟埂耿梗功鞏供拱貢鉤溝狗垢四元結(jié)構(gòu)字308個占7392字節(jié),從1到308編碼酃塾壅墀芡茇茺荸荼萆蒎蒽蒡甍蓰蕨蕺蕃薨薏五元結(jié)構(gòu)字95個,占2850字節(jié),從1到95順序編碼勉膩攀薔燃傻舒蓑嚏停信燕殷應(yīng)葬展噩侃龠黌國標基本級漢字結(jié)構(gòu)字庫字結(jié)構(gòu)文件共占89676字節(jié);
從國標碼到結(jié)構(gòu)字編碼轉(zhuǎn)換索引文件占13526字節(jié);
綜上所述,一個五字體的256×256點分辨率的多級結(jié)構(gòu)字庫共占存儲容量為190502字節(jié)。
字庫管理與字形產(chǎn)生模塊的設(shè)計包括二個模塊(1)結(jié)構(gòu)字庫駐留基本內(nèi)存的模塊準備工作先把字庫測試完畢,將字結(jié)構(gòu)文件、字元結(jié)構(gòu)文件、各筆劃文件合并成一個文件,并記下各自指針供字形產(chǎn)生模塊使用、字庫駐留內(nèi)存流程見附圖5。
附圖5中⑥計算字庫駐留的長度,并加上字形產(chǎn)生模塊,以節(jié)為單位,(1節(jié)=16字節(jié))。
附圖5中⑦分配一個軟中斷給字形產(chǎn)生模塊并設(shè)置該中斷。
附圖5中⑧使用INT21H的31H功能駐留退出。
字庫可以使用INT15H中斷AH=87H功能調(diào)到擴展內(nèi)存,在有擴充內(nèi)存和EMM驅(qū)動程序的計算機里可以使用INT67H中斷將字庫調(diào)擴充內(nèi)存。
字形產(chǎn)生模塊程序入口DX寄存器為國標碼漢字,BL寄存器存放字體號;
返回參數(shù)DX0為結(jié)構(gòu)字形數(shù)據(jù)(該字所含各字元,各字元所含各筆劃,各筆劃所含各坐標點所有該基準字的256×256點分辨率字形數(shù)據(jù))。
程序流程見附圖6。
漢字顯示管理包括三個模塊(1)漢字顯示模塊程序入口參數(shù)DS0為入口參數(shù)地址,入口參數(shù)漢字國標碼C1、C2為兩個字符,功能號BZ為一個字節(jié)整數(shù),字體號ZT為一字節(jié)整數(shù),字在屏幕座標系下的中心坐標(X0,Y0)為兩個整數(shù),字在X和Y方向上的縮放系數(shù)為兩個正整數(shù),顯示顏色為一字節(jié)整數(shù),顯示方式為一字節(jié)整數(shù);
出口參數(shù)無;
該模塊調(diào)用字形產(chǎn)生模塊獲取基準字數(shù)據(jù),然后將個筆劃的各點座標轉(zhuǎn)換到屏幕座標系下,調(diào)用填充模塊將字按指定大小、顏色、方式和字體顯示在指定位置上;
功能號BZ約定(0鋼筆體字顯示,1一般字顯示,4超大字顯示-即大于512×512點分辨率的大字顯示;其它號為打印輸出所用),字體號約定(1標宋,2粗黑,3書宋,4細黑,5仿宋……),模塊流程附圖7。
筆劃填充模塊程序入口參數(shù)座標點數(shù)S、各點座標值、顯示顏色和方式;
出口參數(shù)無;
模塊流程見附圖8。
附圖8中④求Y=Y(jié)Y的水平線與曲線段的交點,對于不同的曲線擬合方法求交點的方法基本相同,即將Y=Y(jié)Y代入曲線段的曲線方程,解方程對X求解。
附圖8中⑤有交點記錄該點的X座標,如果該點與曲線端點重合則判斷該點的特性(極值點否)并記錄特征值。
附圖8中⑨以X座標的起點和終點、Y=Y(jié)Y、顯示顏色和方式為入口參數(shù)調(diào)用劃水平線函數(shù)劃各條水平線(X座標在排序后兩兩交點間劃水平線)。
(3)顯示一個漢字串入口參數(shù)漢字串存放首地址、在屏幕上顯示的左上點坐標、漢字的寬和長、字距、顯示顏色和方式;
出口參數(shù)無;
漢字串可以以任意大小和顯示顏色顯示在屏幕的任意位置。
模塊的流程見附圖9。
顯示中斷10H增加漢字顯示處理功能AH=20H為調(diào)用字形產(chǎn)生模塊;
AH=21H為顯示一個漢字;
AH=22H為顯示一個漢字串。
漢字打印輸出管理包括五個模塊本管理是根據(jù)結(jié)構(gòu)字庫的特性而設(shè)計的,本字庫字串可以以任意大小和任意長寬比例打印輸出,本設(shè)計定義了打印輸出塊,以塊作為打印的一個描述單位為用戶提供了強有力的排版印刷輸出功能,這個塊的長度可以無限而寬度只受物理設(shè)備的限制,在塊內(nèi)的每個字或字串都可以以任意大小和任意長寬比例在塊的任意位置打印輸出而與編輯順序無關(guān),這與傳統(tǒng)的行輸出不同,但可以把行輸出作為輸出的特例處理,即塊輸出包含行輸出,與該輸出方法相對應(yīng)的編輯程序稱為“塊編輯”。
(1)“打印輸出塊”編輯文件格式約定一個“打印輸出塊”文件包括塊頭,若干字串,字串含若干字;約定如下
①塊頭數(shù)據(jù)描述塊頭標志,用以區(qū)分不同的塊;該塊含要打印串數(shù);該塊的長度,用打印次數(shù)表示,實際長度為24×打印次數(shù);該塊的寬度,用打印機的行寬點數(shù)表示。
②字串頭數(shù)據(jù)每串的字以相同的大小打印(不同則用另一串),可以是任意大小和在塊的任意位置,字串頭數(shù)據(jù)描述這些數(shù)據(jù),共有7個數(shù)據(jù)分別為功能號BZ(2一般字打印,5大于256×256點分辨率的超大字打印,3一般字空心打印,6大于256×256點的超大字打印);字體號ZT(1標宋,2粗黑,3書宋,4細黑,5仿宋……);字串首字左上角在塊內(nèi)的座標(X0,Y0)為兩個整數(shù);字寬ZK;字長ZC;字距ZQ。
③漢字串國標碼漢字串,緊跟在字串頭控制數(shù)據(jù)之后。
④塊大小的約定允許每塊擁有100個串,每串100個漢字(國標碼)。
“打印輸出塊”的塊打印功能實現(xiàn)模塊入口“打印輸出塊”文件名;
模塊主要流程見附圖10。
附圖10中①打開數(shù)據(jù)文件讀一塊輸出數(shù)據(jù)調(diào)入內(nèi)存數(shù)組,設(shè)置一個控制塊數(shù)組和一個字串塊數(shù)組,控制塊數(shù)組除了存放塊頭數(shù)據(jù)外,還為每串存放9個字控制數(shù)據(jù)。
附圖10中④對每一串的每一個字循環(huán),根據(jù)字串控制數(shù)據(jù)和該字在串中的相對號計算該字在塊內(nèi)的中心座標、X和Y方向的縮放系數(shù)、起始點的打印機緩沖區(qū)地址等。
漢字打印點位生成控制模塊程序入口參數(shù)DS0為入口參數(shù)地址,出口參數(shù)將打印點位送打印緩沖區(qū);
該模塊調(diào)用字形產(chǎn)生模塊獲取基準字數(shù)據(jù),然后將個筆劃的各點座標轉(zhuǎn)換到打印輸出塊座標系下,調(diào)用打印點位生成模塊將字的24點長度和該字的寬度的點位數(shù)據(jù)送到為該字準備好的打印點位緩沖區(qū)里;一個長度超過了24點長的字打印要多次調(diào)用該模塊;
打印緩沖區(qū)點位數(shù)據(jù)排列列順序排列,一列24點為3個字節(jié)接下列3個字節(jié)。
模塊流程見附圖11。
打印點位生成模塊程序入口參數(shù)功能號BZ、字體號ZT、字在打印塊座標系下的中心坐標、字在X和Y方向上的縮放系數(shù),該字打印次數(shù)號MN打印超大字時X和Y方向上的放大倍數(shù)XS、YS,該字打印點位緩沖區(qū)首地址、座標點數(shù)S、各點在打印塊座標系下座標值;
出口參數(shù)將打印點位送緩沖區(qū)。
模塊流程見附圖10。
打印驅(qū)動程序打印輸出24點長度的一行入口參數(shù)打印緩沖區(qū)首地址、打印行的寬度、功能號;
出口參數(shù)無;
使用17H中斷對打印機初始化或打印24列的一行。
模塊的流程見附圖13。
漢字輸入管理對字庫的依賴相對少一點,它只是通過顯示管理模塊調(diào)用字庫顯示漢字提示,除此以外該設(shè)計均使用已有的技術(shù),該設(shè)計包括鍵盤功能鍵約定、漢字輸入編碼方案和掛接方案、漢字輸入顯示屏幕介面設(shè)計、漢字輸入鍵盤管理自舉程序、鍵盤中斷管理模塊等,程序流程略。
權(quán)利要求
1.本多級結(jié)構(gòu)字庫技術(shù)其特征是將字向下細分為字、字元和筆劃三級結(jié)構(gòu)編碼,即字結(jié)構(gòu)編碼、字元結(jié)構(gòu)編碼最終以字的筆劃或曲線段作為基本單位描述生成計算機漢字字形,構(gòu)成字庫。
2.據(jù)權(quán)利要求1所述多級漢字字形字庫編碼中字結(jié)構(gòu)編碼字最多含有7個字元構(gòu)成,先對僅含1個字元的字編碼,最后對7字元字編碼,每元字字號從1開始編碼。所有字體共用這唯一字結(jié)構(gòu)文件。
3.據(jù)權(quán)利要求1所述字元結(jié)構(gòu)編碼,一個字元最多含15個筆劃,先對僅含2個筆劃的字元編碼,最后對含15個筆劃的字元編碼,每劃字元號從1至255編碼。形狀相似的字體共用同一字元結(jié)構(gòu)數(shù)據(jù)文件。
4.據(jù)權(quán)利要求1所述對筆劃的編碼和描述筆劃為各種大小形狀不同的封閉曲線,每個筆劃由2條以上的曲線段組成,筆劃號從1至255編碼,每一種字體對應(yīng)一種不同的筆劃結(jié)構(gòu)。
5.據(jù)權(quán)利要求1所述的多級結(jié)構(gòu)字形字庫在計算機上實現(xiàn)的生成漢字字形的數(shù)學(xué)模型的特征為設(shè)立一系列坐標系(屏幕坐標系或打印輸出塊坐標系、字坐標系、字元坐標系、筆劃坐標系),經(jīng)過若干坐標變換由曲線構(gòu)成筆劃、由筆劃生成字元、由字元生成字最后在屏幕上顯示或在打印機上輸出。
6.結(jié)構(gòu)字庫生成和調(diào)試工具包括筆劃的設(shè)計、字元數(shù)據(jù)文件的生成與調(diào)試程序、字的生成與調(diào)試程序、多級結(jié)構(gòu)字庫的生成與調(diào)試程序。
7.使用本多級結(jié)構(gòu)字庫技術(shù)設(shè)計的中文電腦操作系統(tǒng)的主要技術(shù)特點有字形產(chǎn)生模塊產(chǎn)生256×256點分辨率的基準字數(shù)據(jù);字形顯示模塊采用直接寫屏的快速填充,可無級縮放顯示任意大小的字形;打印輸出模塊定使義了用“打印輸出塊”概念,使排版印刷模塊的實現(xiàn)變得很容易,多種字體的字庫可同時駐留內(nèi)存或擴存,可同多種漢字輸入方案掛接。
8.據(jù)權(quán)利要求7所述漢字顯示模塊的實現(xiàn)使用多級結(jié)構(gòu)字形產(chǎn)生模塊提供的字結(jié)構(gòu)、字元結(jié)構(gòu)和筆劃數(shù)據(jù),進行一系列的座標變換,最后使用快速筆劃填充模塊顯示漢字,實現(xiàn)了漢字顯示的無級縮放且不變形無鋸齒。
9.據(jù)權(quán)利要求7所述多級結(jié)構(gòu)漢字系統(tǒng)的打印輸出模塊使用了“打印輸出塊坐標系”和“打印輸出塊”概念,使排版印刷變得簡便容易實現(xiàn),可在西文操作系統(tǒng)下使用本字庫開發(fā)排版印刷系統(tǒng)應(yīng)用,因字庫省而使該具有超高精度的電子排版印刷系統(tǒng)設(shè)備造價低廉。
10.使用本多級結(jié)構(gòu)字庫技術(shù)可開發(fā)設(shè)計東方語言各國文字的高精度、多字體、高度省存儲的計算機字庫。
全文摘要
在計算機漢字信息處理技術(shù)領(lǐng)域中,中文電腦的基礎(chǔ)是漢字字庫,本多級結(jié)構(gòu)字庫技術(shù)是將字向下細分為字、字元和筆劃三級編碼,以字的筆劃或曲線段作為基本單位描述生成計算機漢字字形,構(gòu)成字庫,能使高精度地描述字形達到高度節(jié)省存儲容量的目的,字形精度越高、字體越多、字符集越大就越顯示其優(yōu)越性。從而解決中文字符集大字體多難于一次調(diào)入內(nèi)存使用的難題,能使各種漢字信息處理應(yīng)用系統(tǒng)都大大提高性能和降低造價。
文檔編號G06F3/00GK1105762SQ9410347
公開日1995年7月26日 申請日期1994年4月15日 優(yōu)先權(quán)日1994年4月15日
發(fā)明者曾冬初 申請人:曾冬初