亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種字庫合并方法及系統(tǒng)的制作方法

文檔序號:6575350閱讀:181來源:國知局
專利名稱:一種字庫合并方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于文字處理技術(shù)領(lǐng)域,具體涉及一種合并字庫的方法及系統(tǒng)。
背景技術(shù)
目前,比較成熟的字庫技術(shù)主要分為兩類點陣字形字庫技術(shù)和輪廓字形字庫技 術(shù)。這兩類技術(shù)采用不同的組織方式來實現(xiàn)字形的存儲。例如,點陣字形存儲方式采用二進(jìn)制來存儲固定尺寸大小的點陣字形,也就是常 說的黑白位圖的存儲方式。在該存儲方式中,由于數(shù)據(jù)組織方式簡單,所以點陣字庫的合并 也比較簡單、直接。例如,可以根據(jù)具體的數(shù)據(jù)組織方式分別進(jìn)行碼表和數(shù)據(jù)的合并,即可 實現(xiàn)字庫的合并。輪廓字形存儲方式采用一個或多個封閉曲線輪廓來描述字形,同時提供了對曲線 進(jìn)行調(diào)整的機制,使得字庫廠商可以對字形在某些尺寸下的顯示效果予以控制。這雖然可 以保證字庫的顯示或打印質(zhì)量,但同時也為字庫的操作增加了難度,使字庫的編輯操作變 得不如點陣字形存儲方式那樣直接。特別是,在輪廓字形存儲方式的字庫發(fā)行之后,如需對其進(jìn)行修改,則要依賴于原 字庫廠商,g卩,由原廠商將該字庫轉(zhuǎn)換為其內(nèi)部格式進(jìn)行修改,并在修改后重新發(fā)行。如果 上述修改涉及字庫合并這樣的針對兩個以上字庫的操作,則還需要另外開發(fā)專用軟件來實 現(xiàn)內(nèi)部格式的合并,然后再轉(zhuǎn)換生成最終字庫。也就是說,上述字庫合并方法是一種間接方 式,其可靠性依賴于各字庫廠商自行開發(fā)的上述專用軟件,并且該方法還存在合并過程繁 瑣、不宜保證最終質(zhì)量等問題。

發(fā)明內(nèi)容
為解決上述技術(shù)問題,本發(fā)明提供一種字庫合并方法及系統(tǒng),其不僅能夠基于待 合并字庫的現(xiàn)有字庫格式而快捷高效地進(jìn)行字庫的合并,而且還能夠保證合并后字庫具有 良好的質(zhì)量及可靠性。為此,本發(fā)明提供了一種字庫合并方法,用于將至少兩個字庫合并而形成合并后 新字庫。該方法包括下述步驟10)基于待合并字庫的maxp表(Maximum profile,最大需 求表)中各個參數(shù)的數(shù)值而設(shè)置合并后字庫的maxp表中各相應(yīng)參數(shù)的數(shù)值;20)將待合并 字庫中的文件頭和各個表逐一進(jìn)行合并而形成合并后的新字庫。其中,在所述步驟10)中具體執(zhí)行下述操作讀取每一個待合并字庫的maxp表中 的參數(shù)maxFimctionDefs的數(shù)值,并將這些數(shù)值之和作為合并后字庫的maxp表中該參數(shù) maxFunctionDefs的數(shù)值;讀取待合并字庫的maxp表中除參數(shù)maxFunctionDefs之外的其 余各個參數(shù)的數(shù)值,并且對于每一參數(shù),將其在各個待合并字庫中的maxp表中的數(shù)值進(jìn)行 比較,取其中最大的數(shù)值作為合并后字庫的maxp表中該參數(shù)的數(shù)值。其中,在所述步驟20)之前還包括字庫基數(shù)調(diào)整步驟即,在待合并字庫所采用的 字庫基數(shù)不相同的情況下,以預(yù)先確定的合并后字庫基數(shù)為標(biāo)準(zhǔn)對待合并字庫的基數(shù)進(jìn)行調(diào)整。其中,在所述步驟20)之前還包括字庫基線調(diào)整步驟即,在待合并字庫所采用的 字庫基線不相同的情況下,以預(yù)先確定的合并后字庫基線為標(biāo)準(zhǔn)對待合并字庫的基線進(jìn)行 調(diào)整。其中,在所述步驟20)之前還包括函數(shù)編號調(diào)整步驟即,在待合并字庫的函數(shù)編 號存在沖突的情況下,對fpgm表(Font program,字體程序表)、pr印表(CVT Program,控 制值程序表)和/或glyf表(Glyph data,圖元數(shù)據(jù)表)中的相關(guān)函數(shù)編號進(jìn)行調(diào)整。具體地,可以這樣實現(xiàn)fpgm表中相關(guān)函數(shù)編號的調(diào)整即,讀取每一個待合并字 庫的maxp表中的參數(shù)maxFunctionDefs的數(shù)值,保持第一字庫的fpgm表中的函數(shù)編號不 變,將其他待合并字庫的fpgm表中的各函數(shù)編號分別加上該字庫序號之前的各個字庫中 的maxFunctionDefs的數(shù)值之和,以消除函數(shù)編號沖突問題。具體地,可以這樣實現(xiàn)pr印表中相關(guān)函數(shù)編號的調(diào)整即,對于每一個待合并字 庫的pr印表中的被調(diào)函數(shù)編號,按照同一字庫中fpgm表所采用的函數(shù)編號調(diào)整規(guī)則進(jìn)行 調(diào)整,以消除函數(shù)編號沖突問題。具體地,可以這樣實現(xiàn)glyf表中相關(guān)函數(shù)編號的調(diào)整即,對于每一個待合并字 庫的glyf表中的被調(diào)函數(shù)編號,按照同一字庫中fpgm表或pi^p表所采用的函數(shù)編號調(diào)整 規(guī)則進(jìn)行調(diào)整,以消除函數(shù)編號沖突問題。其中,在所述步驟20)之前還包括字形排版參數(shù)的調(diào)整步驟即,在待合并字庫采 用了不同的字庫基數(shù)和/或字庫基線的情況下,以預(yù)先確定的合并后字庫基數(shù)為標(biāo)準(zhǔn),對 待合并字庫的hmtx表中的與字形水平排版有關(guān)的參數(shù)進(jìn)行調(diào)整;和/或以預(yù)先確定的合并 后字庫基數(shù)和/或基線為標(biāo)準(zhǔn),對待合并字庫的vmtx表中的與字形豎直排版有關(guān)的參數(shù)進(jìn) 行調(diào)整。其中,在所述步驟20)之前還包括這樣的步驟即,在待合并字庫所采用的字庫基 數(shù)不相同的情況下,以預(yù)先確定的合并后字庫基數(shù)為標(biāo)準(zhǔn),對待合并字庫的cvt表中的相 關(guān)參數(shù)進(jìn)行調(diào)整。此外,本發(fā)明還提供一種字庫合并系統(tǒng),用于將至少兩個字庫合并而形成合并后 新字庫。該系統(tǒng)包括maXp表設(shè)置單元,其基于待合并字庫的maxp表中各個參數(shù)的數(shù)值而 設(shè)置合并后字庫的maxp表中各相應(yīng)參數(shù)的數(shù)值;合并及處理單元,其將待合并字庫中的文 件頭和各個表逐一進(jìn)行合并而形成合并后的新字庫。其中,所述maxp表設(shè)置單元具體包括maxp表內(nèi)參數(shù)讀取模塊、累加處理模塊 和比較處理模塊。所述maxp表內(nèi)參數(shù)讀取模塊,其讀取每一個待合并字庫的maxp表 中的參數(shù),并將所讀取的參數(shù)maxFunctionDefs的數(shù)值傳輸至累加處理模塊,將除參數(shù) maxFunctionDefs之外的其余各參數(shù)的數(shù)值傳輸至比較處理模塊;所述累加處理模塊,其 將每一個待合并字庫的maxp表中的maxFunctionDefs的數(shù)值進(jìn)行累加,并將累加之和作為 合并后字庫的maxp表中該參數(shù)maxFunctionDefs的數(shù)值;所述比較處理模塊執(zhí)行這樣的操 作即,對于每一參數(shù),將該參數(shù)在各個待合并字庫中的maxp表中的數(shù)值進(jìn)行比較,取其中 最大的數(shù)值作為合并后字庫的maxp表中該參數(shù)的數(shù)值。本發(fā)明提供的字庫合并系統(tǒng)還可以包括字庫基數(shù)調(diào)整單元和/或字庫基線調(diào)整 單元。其中,字庫基數(shù)調(diào)整單元,用于在待合并字庫所采用的字庫基數(shù)不相同的情況下,以預(yù)先確定的合并后字庫基數(shù)為標(biāo)準(zhǔn)對待合并字庫的基數(shù)進(jìn)行調(diào)整;字庫基線調(diào)整單元,用 于在待合并字庫所采用的字庫基線不相同的情況下,以預(yù)先確定的合并后字庫基線為標(biāo)準(zhǔn) 對待合并字庫的基線進(jìn)行調(diào)整。本發(fā)明提供的字庫合并系統(tǒng)還可以包括函數(shù)編號調(diào)整單元,其用于在待合并字庫 的函數(shù)編號存在沖突的情況下,對fpgm表、prep表和/或glyf表中的相關(guān)函數(shù)編號進(jìn)行 調(diào)整。本發(fā)明提供的字庫合并系統(tǒng)還可以包括字形排版參數(shù)調(diào)整單元,用于在待合并字 庫采用了不同的字庫基數(shù)和/或字庫基線的情況下,以預(yù)先確定的合并后字庫基數(shù)為標(biāo) 準(zhǔn),對待合并字庫的hmtx表中的與字形水平排版有關(guān)的參數(shù)進(jìn)行調(diào)整;和/或以預(yù)先確定 的合并后字庫基數(shù)和/或基線為標(biāo)準(zhǔn),對待合并字庫的vmtx表中的與字形豎直排版有關(guān)的 參數(shù)進(jìn)行調(diào)整。本發(fā)明提供的字庫合并系統(tǒng)還可以包括cvt表調(diào)整單元,用于在待合并字庫所采 用的字庫基數(shù)不相同的情況下,以預(yù)先確定的合并后字庫基數(shù)為標(biāo)準(zhǔn),對待合并字庫的CVt 表中的相關(guān)參數(shù)進(jìn)行調(diào)整。相對于現(xiàn)有技術(shù),本發(fā)明具有下述有益效果本發(fā)明提供的字庫合并方法及系統(tǒng)可以直接根據(jù)待合并字庫中的數(shù)據(jù)或指令來 修改/調(diào)整待合并字庫的各個表,并基于此將待合并字庫進(jìn)行合并,而無需像現(xiàn)有技術(shù)那 樣,借助于待合并字庫的原廠商及專用軟件進(jìn)行合并,因此,本發(fā)明提供的合并字庫的方法 及系統(tǒng)能夠避免弓I入第三方數(shù)據(jù)或指令格式,進(jìn)而避免因弓I入第三方數(shù)據(jù)或指令格式而可 能導(dǎo)致的問題,從而在簡單快捷地進(jìn)行字庫合并的同時能夠保證合并后字庫的質(zhì)量。


圖1為本發(fā)明提供的字庫合并方法的流程示意圖;圖2為本發(fā)明中所采用的字庫基數(shù)調(diào)整方式的示意圖;圖3示出了某一待合并字庫中所采用的字形基線;圖4示出了另一待合并字庫中所采用的字形基線;圖5為本發(fā)明提供的字庫合并方法的一個具體實施例的流程示意圖;以及圖6為本發(fā)明提供的字庫合并系統(tǒng)的一個具體實施例的原理框圖。
具體實施例方式下面結(jié)合實施例和附圖對本發(fā)明提供的字庫合并方法及相關(guān)系統(tǒng)進(jìn)行詳細(xì)描述。 在下述實施例中,字庫描述方式采用Windows系統(tǒng)上常用的TrueType字庫,其中所涉及的 數(shù)據(jù)或指令格式是基于開發(fā)軟件TTX導(dǎo)出的文本,而且該字庫的數(shù)據(jù)結(jié)構(gòu)主要包括文件頭 和一些數(shù)據(jù)表,例如maxp表、fpgm表、prep表、glyf表等。請參閱圖1,本發(fā)明提供的字庫合并方法的工作流程如下步驟10,基于待合并字庫的maxp表中各個參數(shù)的數(shù)值而設(shè)置合并后字庫的maxp 表中各相應(yīng)參數(shù)的數(shù)值。具體地,讀取每一個待合并字庫的maxp表中的參數(shù)maxFunctionDefs的數(shù)值,并 將這些數(shù)值之和作為合并后字庫的maxp表中該參數(shù)maxFimctionDefs的數(shù)值。同時,讀取待合并字庫的maxp表中除參數(shù)maxFimctionDefs之外的其余各個參數(shù)的數(shù)值,并且對于每 一參數(shù),將其在各個待合并字庫中的maxp表中的數(shù)值進(jìn)行比較,取其中最大的數(shù)值作為合 并后字庫的maxp表中該參數(shù)的數(shù)值。步驟20,在待合并字庫所采用的字庫基數(shù)和字庫基線一致的情況下,將待合并字 庫中的文件頭和其他各個表逐一進(jìn)行合并而形成合并后的新字庫。進(jìn)行合并時,可以根據(jù) 實際情況對文件頭和各個表中的有關(guān)內(nèi)容進(jìn)行相應(yīng)改動。然而在實際應(yīng)用中,不同的字庫在設(shè)計時,所采用的字庫基數(shù)可能同,如圖2所 示,左側(cè)矩形代表基數(shù)為AA χ BB的待合并字庫,右側(cè)矩形代表基數(shù)為CC χ DD的待合并字 庫。這種情況下,就需要在前述步驟20之前,對字庫基數(shù)進(jìn)行調(diào)整使其匹配,也就是說,可 以利用比例變換的方式使待合并字庫的基數(shù)達(dá)到一致。例如,若以圖2中右側(cè)字庫基數(shù)為 合并后字庫所采用的基準(zhǔn),則需將左側(cè)字庫基數(shù)變換為右側(cè)字庫基數(shù),即,由基數(shù)AA χ BB 變換到CC χ DD,這樣,水平方向的變換比例為CC/AA,豎直方向上的變換比例為DD/BB。一 般情況下,CC/AA = DD/BB。在確定了上述變換比例后,以x,= x*CC/AA、y,= y*DD/BB的 變換關(guān)系對左側(cè)字庫中每個需要合并的字形進(jìn)行比例變換,其中x’,y’代表變換后的坐標(biāo), x,y代表變換前的坐標(biāo)。這樣即可實現(xiàn)字庫基數(shù)的調(diào)整。類似地,在設(shè)計字形時,不同的字庫廠商通常也會采用不同的字庫基線,這種情況 下,就需要在前述步驟20之前對基線進(jìn)行調(diào)整。例如,圖3和圖4分別示出了兩種不同的 字庫基線,其中,圖3所示基線高度為hs ;圖4所示基線高度為hd。若以圖4所示基線為合 并后字庫的基線,則需對圖3所示基線進(jìn)行調(diào)整,即,在豎直方向上對其進(jìn)行調(diào)整即可得到 圖4所示基線。也就是說,上述基線調(diào)整就是將圖3中的字形坐標(biāo)進(jìn)行了這樣的調(diào)整即, 使y’ = y+hd-hs,其中,y和y’分別代表字形中各點變換前后的坐標(biāo)。實際應(yīng)用中,如果因待合并字庫的基數(shù)和/或基線不相同而對其進(jìn)行了上述相關(guān) 調(diào)整,則還需要對字形排版參數(shù)以及cvt表中的有關(guān)參數(shù)進(jìn)行調(diào)整。具體地,在待合并字庫采用了不同的字庫基數(shù)和/或字庫基線的情況下,對于適 用于水平排版方式的字庫而言,以預(yù)先確定的合并后字庫基數(shù)為標(biāo)準(zhǔn),對待合并字庫的 hmtx表中的與字形水平排版有關(guān)的參數(shù)進(jìn)行調(diào)整;對于適用于豎直排版方式的字庫而言, 以預(yù)先確定的合并后字庫基數(shù)和/或基線為標(biāo)準(zhǔn),對待合并字庫的vmtx表中的與字形豎 直排版有關(guān)的參數(shù)進(jìn)行調(diào)整;并且,以預(yù)先確定的合并后字庫基數(shù)為標(biāo)準(zhǔn),對待合并字庫的 cvt表中的全局控制指令所使用的有關(guān)參數(shù)進(jìn)行調(diào)整。此外,每一個待合并字庫通常都具有眾多函數(shù),這就難以避免在不同的待合并字 庫中對具有相同函數(shù)編號的函數(shù)進(jìn)行不同的定義等諸如此類的問題。這種情況下,如果合 并字庫時不對函數(shù)編號進(jìn)行調(diào)整而對其直接合并/使用,則會使合并后字庫中存在因函數(shù) 編號重復(fù)等現(xiàn)象而導(dǎo)致的沖突問題(以下簡稱為函數(shù)編號沖突問題)。為此,就需要在前述 步驟20之前,對待合并字庫中的有關(guān)函數(shù)編號進(jìn)行調(diào)整。例如,對fpgm表、prep表、glyf 表中的有關(guān)函數(shù)編號進(jìn)行調(diào)整。其中,fpgm表中相關(guān)函數(shù)編號的調(diào)整可以這樣實現(xiàn)即,讀取每一個待合并字庫 的maxp表中的參數(shù)maxFimctionDefs的數(shù)值,保持第一字庫的fpgm表中的函數(shù)編號不變, 將其他待合并字庫的fpgm表中的各函數(shù)編號分別加上該字庫序號之前的各個字庫中的參 數(shù)maxFimctionDefs的數(shù)值之和,從而消除上述函數(shù)編號沖突問題。
對于每一個待合并字庫的pr印表中的被調(diào)函數(shù)編號,可以按照同一字庫中fpgm 表所采用的函數(shù)編號調(diào)整規(guī)則進(jìn)行調(diào)整,從而消除上述函數(shù)編號沖突問題。對于每一個待合并字庫的glyf表中的被調(diào)函數(shù)編號,可以按照同一字庫中fpgm 表或prep表所采用的函數(shù)編號調(diào)整規(guī)則來進(jìn)行調(diào)整,從而消除上述函數(shù)編號沖突問題。下面結(jié)合圖5所示的一個具體實施例來詳細(xì)說明本發(fā)明提供的字庫合并方法。為 便于說明,本實施例中以兩個字庫的合并為例,即,將第一字庫與第二字庫進(jìn)行合并而生成 第三字庫,或者說,將第二字庫合并到第一字庫中而生成第三字庫,其中第一字庫和第二字 庫稱為待合并字庫,第三字庫稱為合并后字庫。其中,步驟110中,在待合并字庫所采用的字庫基數(shù)不相同的情況下,以預(yù)先確定 的合并后字庫基數(shù)為標(biāo)準(zhǔn)對待合并字庫的基數(shù)進(jìn)行調(diào)整。具體調(diào)整方法及過程類似于前面 結(jié)合圖2所作的說明,在此不再贅述。步驟120,在待合并字庫所采用的字庫基線不相同的情況下,以預(yù)先確定的合并后 字庫基線為標(biāo)準(zhǔn)對待合并字庫的基線進(jìn)行調(diào)整。具體調(diào)整方法及過程類似于前面結(jié)合圖3 和圖4所作的說明,在此不再贅述。步驟130,在待合并字庫的函數(shù)編號存在沖突的情況下,對fpgm表、pi^p表和/或 glyf表中的相關(guān)函數(shù)編號進(jìn)行調(diào)整。下面對這三個表的調(diào)整方法及過程進(jìn)行詳細(xì)說明。其一,fpgm表中函數(shù)編號的調(diào)整。首先,為便于說明如何調(diào)整fpgm表中的函數(shù)編號,先對fpgm表中的函數(shù)定義方式 進(jìn)行詳細(xì)說明。通常,TrueType字庫的fpgm表中以函數(shù)的形式定義有全局控制指令,以便 在字庫中的其他地方進(jìn)行調(diào)用。該fpgm表一般采用下述形式<fpgm><assembly>NPUSHB []/ * 59values pushed * /82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 5857 56 55 54 53 47 46 45 44 40 38 37 36 35 34 31 24 20 17 16 15 13 11 10 9876543210FDEF []RCVT []SWAP []GC
ADD []DUP []PUSHB []/ * lvalue pushed * /38ADD []PUSHB []/ * 1 value pushed * /4MINDEX []SWAP []
SCFS []SCFS []ENDF []FDEF []RCVT []SWAP []其實,fpgm表中的函數(shù)定義一般可以采用下述兩種方式。其中,第一種方式為逐 一定義函數(shù)編號,并且每定義一個函數(shù)編號就立即定義該函數(shù)體,例如NPUSHB [] aFDEF []...EDEF []第二種方式為首先定義若干函數(shù)編號,然后再逐一定義相應(yīng)函數(shù)體,例如NPUSHB [] a b c. · · ηFDEF []...EDEF []FDEF []...EDEF []......FDEF []EDEF []事實上,上述兩種定義方式可以單獨使用,也可以組合使用。其中,NPUSHB[]后的 字母a b c... η代表函數(shù)編號,為不小于零的整數(shù)。接下來,詳細(xì)說明fpgm表中函數(shù)編號的調(diào)整方法及過程。在實際應(yīng)用中,無論采用上述哪種定義方式,只要判定待合并字庫存在函數(shù)編號 沖突問題,就都可以采用下述方式予以解決即,在第一字庫和第二字庫的maxp表中,分別 讀取表示最大函數(shù)編號的參數(shù)maxFimctionDefs的數(shù)值,保持第一字庫的fpgm表中的函數(shù) 編號不變,將第二字庫的fpgm表中的各函數(shù)編號分別加上第一字庫中的maxFimctionDefs 的數(shù)值;同時,將兩個字庫的maxp表中的參數(shù)maxFimctionDefs的數(shù)值相加之和作為合并 后字庫的maxp表中的參數(shù)maxFimctionDefs的數(shù)值。這樣即可解決第一字庫和第二字庫 的fpgm表中的函數(shù)編號沖突問題。具體地,先從第一字庫的maxp表中讀取表示該字庫最大函數(shù)編號的參數(shù) maxFimctionDefs的數(shù)值,記為maxFunctionDefs_l ;相應(yīng)地,從第二字庫的maxp表中讀取 表示該字庫最大函數(shù)編號的參數(shù)maxFimctionDefs的數(shù)值,記為maxFunctionDefs_2 ;然 后,保持第一字庫的fpgm表中的函數(shù)編號不變,將第二字庫的fpgm表中的各函數(shù)編號分別加上第一字庫中的maxFimctionDefs的數(shù)值,即,將第二字庫的fpgm表中的各函數(shù)編號分 別加上maxFuncti0nDefS_2。這樣,即完成了待合并字庫的fpgm表中的函數(shù)編號的調(diào)整。然后,以fpgm表中的函數(shù)NPUSHB[]為例來詳細(xì)說明如何調(diào)整fpgm表中的函數(shù)編 號。其中,該函數(shù)NPUSHB[]采用前述第一種函數(shù)定義方式,函數(shù)編號為a。如前所述,保持第一字庫的fpgm表中的函數(shù)編號不變而只改變第二字庫的 fpgm表中的相應(yīng)函數(shù)編號,也就是說,將第二字庫的fpgm表中的相應(yīng)函數(shù)編號加上 maxFunctionDefs_l,這樣,上述函數(shù)編號a被調(diào)整為a+maxFunctionDefs_l,相應(yīng)地,第二 字庫的fpgm表中的函數(shù)NPUSHB []的定義即被調(diào)整為NPUSHB[](a+maxFunctionDefs_l)FDEF []EDEF []類似地,對fpgm表中其他函數(shù)定義所涉及的函數(shù)編號也作上述調(diào)整,即可完成待 合并字庫的fpgm表中的函數(shù)編號調(diào)整。需要指出的是,對第二字庫的fpgm表中的函數(shù)編號調(diào)整完成之后,可以將該fpgm 表中的內(nèi)容整體追加到第一字庫的fpgm表的后面或最前面,同時將第一字庫的maxp表中 的 maxFunctionDefs 修改為(maxFunctionDefs_l+maxFunctionDefs_2)。也就是說,可以在 對fpgm表中的函數(shù)編號調(diào)整完畢之后,立刻進(jìn)行fpgm表的合并。當(dāng)然,在實際應(yīng)用中,也 可以先進(jìn)行fpgm表的調(diào)整,而將fpgm表合并過程推遲而在后續(xù)步驟中與其他表的合并一
起進(jìn)行。
其二,prep表中函數(shù)編號的調(diào)整。
通常,TrueType字庫中的pr印表一般采用下述形式
<prep>
<assembly>
NPUSHB[]/ * 244values pushed * /
119 66 8 31 118 66 8 31 117 67 8 31 116 67 8 31 115 67 8 31 114 67 8 31 113
66 8 31 112 66 8 31 111 66 8 31 110 66 8 31 106 66 8 31 105 668 31 104 67
8 31 103 67 8 31 102 67 8 31 101 67 8 31 100 66 8 31 99 66 831 98 66 8
31 97 66 8 31 90 66 8 31 89 66 8 31 88 67 8 31 87 67 8 31 8667 8 31
85 67 8 31 84 66 8 31 83 66 8 31 82 66 8 31 81 66 8 31 77 668 31 76
66 8 31 75 67 8 31 74 67 8 31 73 67 8 31 72 67 8 31 71 668 31 70 66
8 31 69 66 8 31 68 66 8 31 67 65 8 31 66 65 8 31 35 14 6934 12 69 33
10 69 32 8 69 31 6 69 30 4 69 29 2 69 28 0 69 26 8 24 822 8 20 8
18 8 16 8 14 8 12 8 10 8886848280810110
9 1 2 0 8 0 40 40 0 0 0 18 17 8 2 64 55 15 63
PUSHW[]/ * 1 value pushed * /
256
PUSHB[]/ * 2 values pushed * /
221
MPPEM []PUSHW[]/ * lvalue pushed * /2047GT []MPPEM []PUSHB []/ * 1 value pushed * /8LT []如果判定待合并字庫的函數(shù)編號存在沖突,并且已對fpgm表中的函數(shù)編號進(jìn)行 了調(diào)整,那么就需要相應(yīng)地調(diào)整對應(yīng)字庫(即,第二字庫)的prep表中的調(diào)用代碼(即,被 調(diào)函數(shù)編號)。通常,在Pi^p表中一般采用下述形式來調(diào)用函數(shù)NPUSHB [] a b c d. . . η ...CALL[]或NPUSHB [] a b c d. . . η ...L00PCALL[]其中的CALL或L00PCALL指令為函數(shù)調(diào)用指令。通常,被調(diào)函數(shù)編號為程序執(zhí)行 到此時,堆棧頂部的操作數(shù)。為此,就需要先從堆棧內(nèi)的眾多數(shù)據(jù)中識別出相應(yīng)函數(shù)編號, 然后再參照前述fpgm表中函數(shù)編號的調(diào)整方式對其進(jìn)行調(diào)整。實際識別和調(diào)整過程中,通 常會引入下述表1來實現(xiàn)。而且,在識別和調(diào)整過程中,還需要設(shè)置一個用以記錄當(dāng)前操作 數(shù)位置的操作數(shù)當(dāng)前位置變量pos,其初值為0。表1:
權(quán)利要求
一種字庫合并方法,用于將至少兩個字庫合并而形成合并后新字庫,其特征在于,該方法包括下述步驟10)基于待合并字庫的maxp表中各個參數(shù)的數(shù)值而設(shè)置合并后字庫的maxp表中各相應(yīng)參數(shù)的數(shù)值;20)將待合并字庫中的文件頭和各個表逐一進(jìn)行合并而形成合并后的新字庫。
2.根據(jù)權(quán)利要求1所述的字庫合并方法,其特征在于,在所述步驟10)中,執(zhí)行下述操作讀取每一個待合并字庫的maxp表中的參數(shù)maxFunctionDefs的數(shù)值,并將這些數(shù)值之 和作為合并后字庫的maxp表中該參數(shù)maxFunctionDefs的數(shù)值;讀取待合并字庫的maxp表中除參數(shù)maxFimctionDefs之外的其余各參數(shù)的數(shù)值,并且 對于每一參數(shù),將其在各個待合并字庫中的maxp表中的數(shù)值進(jìn)行比較,取其中最大的數(shù)值 作為合并后字庫的maxp表中該參數(shù)的數(shù)值。
3.根據(jù)權(quán)利要求1所述的字庫合并方法,其特征在于,在所述步驟20)之前還包括字庫 基數(shù)調(diào)整步驟即,在待合并字庫所采用的字庫基數(shù)不相同的情況下,以預(yù)先確定的合并后 字庫基數(shù)為標(biāo)準(zhǔn)對待合并字庫的基數(shù)進(jìn)行調(diào)整。
4.根據(jù)權(quán)利要求1所述的字庫合并方法,其特征在于,在所述步驟20)之前還包括字庫 基線調(diào)整步驟即,在待合并字庫所采用的字庫基線不相同的情況下,以預(yù)先確定的合并后 字庫基線為標(biāo)準(zhǔn)對待合并字庫的基線進(jìn)行調(diào)整。
5.根據(jù)權(quán)利要求1所述的字庫合并方法,其特征在于,在所述步驟20)之前還包括函 數(shù)編號調(diào)整步驟即,在待合并字庫的函數(shù)編號存在沖突的情況下,對fpgm表、pi^p表和/ 或glyf表中的相關(guān)函數(shù)編號進(jìn)行調(diào)整。
6.根據(jù)權(quán)利要求5所述的字庫合并方法,其特征在于,這樣實現(xiàn)fpgm表中相關(guān)函數(shù)編 號的調(diào)整即,讀取每一個待合并字庫的maxp表中的參數(shù)maxFimctionDefs的數(shù)值,保持第 一字庫的fpgm表中的函數(shù)編號不變,將其他待合并字庫的fpgm表中的各函數(shù)編號分別加 上該字庫序號之前的各個字庫中的參數(shù)maxFimctionDefs的數(shù)值之和,以消除函數(shù)編號沖 突問題。
7.根據(jù)權(quán)利要求5所述的字庫合并方法,其特征在于,這樣實現(xiàn)prep表中相關(guān)函數(shù)編 號的調(diào)整即,對于每一個待合并字庫的Pr印表中的被調(diào)函數(shù)編號,按照同一字庫中fpgm 表所采用的函數(shù)編號調(diào)整規(guī)則進(jìn)行調(diào)整,以消除函數(shù)編號沖突問題。
8.根據(jù)權(quán)利要求5所述的字庫合并方法,其特征在于,這樣實現(xiàn)glyf表中相關(guān)函數(shù)編 號的調(diào)整即,對于每一個待合并字庫的glyf表中的被調(diào)函數(shù)編號,按照同一字庫中fpgm 表或prep表所采用的函數(shù)編號調(diào)整規(guī)則進(jìn)行調(diào)整,以消除函數(shù)編號沖突問題。
9.根據(jù)權(quán)利要求1所述的字庫合并方法,其特征在于,在所述步驟20)之前還包括字 形排版參數(shù)的調(diào)整步驟即,在待合并字庫采用了不同的字庫基數(shù)和/或字庫基線的情況 下,以預(yù)先確定的合并后字庫基數(shù)為標(biāo)準(zhǔn),對待合并字庫的hmtx表中的與字形水平排版有 關(guān)的參數(shù)進(jìn)行調(diào)整;和/或以預(yù)先確定的合并后字庫基數(shù)和/或基線為標(biāo)準(zhǔn),對待合并字庫 的vmtx表中的與字形豎直排版有關(guān)的參數(shù)進(jìn)行調(diào)整。
10.根據(jù)權(quán)利要求1所述的字庫合并方法,其特征在于,在所述步驟20)之前還包括這 樣的步驟即,在待合并字庫所采用的字庫基數(shù)不相同的情況下,以預(yù)先確定的合并后字庫基數(shù)為標(biāo)準(zhǔn),對待合并字庫的cvt表中的相關(guān)參數(shù)進(jìn)行調(diào)整。
11.一種字庫合并系統(tǒng),用于將至少兩個字庫合并而形成合并后新字庫,其特征在于, 包括下述單元maxp表設(shè)置單元,用以基于待合并字庫的maxp表中各個參數(shù)的數(shù)值而設(shè)置合并后字 庫的maxp表中各相應(yīng)參數(shù)的數(shù)值;合并及處理單元,用于將待合并字庫中的文件頭和各個表逐一進(jìn)行合并而形成合并后 的新字庫。
12.根據(jù)權(quán)利要求11所述的字庫合并系統(tǒng),其特征在于,所述maxp表設(shè)置單元具體包 括maxp表內(nèi)參數(shù)讀取模塊、累加處理模塊和比較處理模塊,其中maxp表內(nèi)參數(shù)讀取模塊,用于讀取每一個待合并字庫的maxp表中的參數(shù),并將所讀取 的參數(shù)maxFunctionDefs的數(shù)值傳輸至累加處理模塊,將除參數(shù)maxFunctionDefs之外的 其余各參數(shù)的數(shù)值傳輸至比較處理模塊;累加處理模塊,用于將每一個待合并字庫的maxp表中的參數(shù)maxFunctionDefs的數(shù)值 進(jìn)行累加,并將累加之和作為合并后字庫的maxp表中該參數(shù)maxFunctionDefs的數(shù)值;以 及比較處理模塊,用以執(zhí)行這樣的操作即,對于每一參數(shù),將該參數(shù)在各個待合并字庫 的maxp表中的數(shù)值進(jìn)行比較,取其中最大的數(shù)值作為合并后字庫的maxp表中該參數(shù)的數(shù)值。
13.根據(jù)權(quán)利要求11所述的字庫合并系統(tǒng),其特征在于,還包括字庫基數(shù)調(diào)整單元和/ 或字庫基線調(diào)整單元,其中字庫基數(shù)調(diào)整單元,用于在待合并字庫所采用的字庫基數(shù)不相同的情況下,以預(yù)先確 定的合并后字庫基數(shù)為標(biāo)準(zhǔn)對待合并字庫的基數(shù)進(jìn)行調(diào)整;字庫基線調(diào)整單元,用于在待合并字庫所采用的字庫基線不相同的情況下,以預(yù)先確 定的合并后字庫基線為標(biāo)準(zhǔn)對待合并字庫的基線進(jìn)行調(diào)整。
14.根據(jù)權(quán)利要求11所述的字庫合并系統(tǒng),其特征在于,還包括函數(shù)編號調(diào)整單元,用 于在待合并字庫的函數(shù)編號存在沖突的情況下,對fpgm表、prep表和/或glyf表中的相 關(guān)函數(shù)編號進(jìn)行調(diào)整。
15.根據(jù)權(quán)利要求11所述的字庫合并系統(tǒng),其特征在于,還包括字形排版參數(shù)調(diào)整單 元,用于在待合并字庫采用了不同的字庫基數(shù)和/或字庫基線的情況下,以預(yù)先確定的合 并后字庫基數(shù)為標(biāo)準(zhǔn),對待合并字庫的hmtx表中的與字形水平排版有關(guān)的參數(shù)進(jìn)行調(diào)整; 和/或以預(yù)先確定的合并后字庫基數(shù)和/或基線為標(biāo)準(zhǔn),對待合并字庫的vmtx表中的與字 形豎直排版有關(guān)的參數(shù)進(jìn)行調(diào)整。
16.根據(jù)權(quán)利要求11所述的字庫合并系統(tǒng),其特征在于,還包括cvt表調(diào)整單元,用于 在待合并字庫所采用的字庫基數(shù)不相同的情況下,以預(yù)先確定的合并后字庫基數(shù)為標(biāo)準(zhǔn), 對待合并字庫的CVt表中的相關(guān)參數(shù)進(jìn)行調(diào)整。
全文摘要
本發(fā)明屬于文字處理技術(shù)領(lǐng)域,具體公開了一種字庫合并方法,用于將至少兩個字庫合并而形成合并后新字庫。該方法包括下述步驟10)基于待合并字庫的maxp表中各個參數(shù)的數(shù)值而設(shè)置合并后字庫的maxp表中各相應(yīng)參數(shù)的數(shù)值;20)將待合并字庫中的文件頭和各個表逐一進(jìn)行合并而形成合并后的新字庫。此外,本發(fā)明還公開一種字庫合并系統(tǒng),主要包括maxp表設(shè)置單元,其基于待合并字庫的maxp表中各個參數(shù)的數(shù)值而設(shè)置合并后字庫的maxp表中各相應(yīng)參數(shù)的數(shù)值;合并及處理單元,其將待合并字庫中的文件頭和各個表逐一進(jìn)行合并而形成合并后的新字庫。本發(fā)明提供的方法及系統(tǒng)其不僅能夠快捷高效地進(jìn)行字庫的合并,而且還能夠保證合并后字庫具有良好的質(zhì)量及可靠性。
文檔編號G06F17/30GK101996192SQ20091009099
公開日2011年3月30日 申請日期2009年8月19日 優(yōu)先權(quán)日2009年8月19日
發(fā)明者李明 申請人:北大方正集團(tuán)有限公司;北京北大方正電子有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1