两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

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

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

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


圖1為本發(fā)明提供的字庫(kù)合并方法的流程示意圖;圖2為本發(fā)明中所采用的字庫(kù)基數(shù)調(diào)整方式的示意圖;圖3示出了某一待合并字庫(kù)中所采用的字形基線(xiàn);圖4示出了另一待合并字庫(kù)中所采用的字形基線(xiàn);圖5為本發(fā)明提供的字庫(kù)合并方法的一個(gè)具體實(shí)施例的流程示意圖;以及圖6為本發(fā)明提供的字庫(kù)合并系統(tǒng)的一個(gè)具體實(shí)施例的原理框圖。
具體實(shí)施例方式下面結(jié)合實(shí)施例和附圖對(duì)本發(fā)明提供的字庫(kù)合并方法及相關(guān)系統(tǒng)進(jìn)行詳細(xì)描述。 在下述實(shí)施例中,字庫(kù)描述方式采用Windows系統(tǒng)上常用的TrueType字庫(kù),其中所涉及的 數(shù)據(jù)或指令格式是基于開(kāi)發(fā)軟件TTX導(dǎo)出的文本,而且該字庫(kù)的數(shù)據(jù)結(jié)構(gòu)主要包括文件頭 和一些數(shù)據(jù)表,例如maxp表、fpgm表、prep表、glyf表等。請(qǐng)參閱圖1,本發(fā)明提供的字庫(kù)合并方法的工作流程如下步驟10,基于待合并字庫(kù)的maxp表中各個(gè)參數(shù)的數(shù)值而設(shè)置合并后字庫(kù)的maxp 表中各相應(yīng)參數(shù)的數(shù)值。具體地,讀取每一個(gè)待合并字庫(kù)的maxp表中的參數(shù)maxFunctionDefs的數(shù)值,并 將這些數(shù)值之和作為合并后字庫(kù)的maxp表中該參數(shù)maxFimctionDefs的數(shù)值。同時(shí),讀取待合并字庫(kù)的maxp表中除參數(shù)maxFimctionDefs之外的其余各個(gè)參數(shù)的數(shù)值,并且對(duì)于每 一參數(shù),將其在各個(gè)待合并字庫(kù)中的maxp表中的數(shù)值進(jìn)行比較,取其中最大的數(shù)值作為合 并后字庫(kù)的maxp表中該參數(shù)的數(shù)值。步驟20,在待合并字庫(kù)所采用的字庫(kù)基數(shù)和字庫(kù)基線(xiàn)一致的情況下,將待合并字 庫(kù)中的文件頭和其他各個(gè)表逐一進(jìn)行合并而形成合并后的新字庫(kù)。進(jìn)行合并時(shí),可以根據(jù) 實(shí)際情況對(duì)文件頭和各個(gè)表中的有關(guān)內(nèi)容進(jìn)行相應(yīng)改動(dòng)。然而在實(shí)際應(yīng)用中,不同的字庫(kù)在設(shè)計(jì)時(shí),所采用的字庫(kù)基數(shù)可能同,如圖2所 示,左側(cè)矩形代表基數(shù)為AA χ BB的待合并字庫(kù),右側(cè)矩形代表基數(shù)為CC χ DD的待合并字 庫(kù)。這種情況下,就需要在前述步驟20之前,對(duì)字庫(kù)基數(shù)進(jìn)行調(diào)整使其匹配,也就是說(shuō),可 以利用比例變換的方式使待合并字庫(kù)的基數(shù)達(dá)到一致。例如,若以圖2中右側(cè)字庫(kù)基數(shù)為 合并后字庫(kù)所采用的基準(zhǔn),則需將左側(cè)字庫(kù)基數(shù)變換為右側(cè)字庫(kù)基數(shù),即,由基數(shù)AA χ BB 變換到CC χ DD,這樣,水平方向的變換比例為CC/AA,豎直方向上的變換比例為DD/BB。一 般情況下,CC/AA = DD/BB。在確定了上述變換比例后,以x,= x*CC/AA、y,= y*DD/BB的 變換關(guān)系對(duì)左側(cè)字庫(kù)中每個(gè)需要合并的字形進(jìn)行比例變換,其中x’,y’代表變換后的坐標(biāo), x,y代表變換前的坐標(biāo)。這樣即可實(shí)現(xiàn)字庫(kù)基數(shù)的調(diào)整。類(lèi)似地,在設(shè)計(jì)字形時(shí),不同的字庫(kù)廠(chǎng)商通常也會(huì)采用不同的字庫(kù)基線(xiàn),這種情況 下,就需要在前述步驟20之前對(duì)基線(xiàn)進(jìn)行調(diào)整。例如,圖3和圖4分別示出了兩種不同的 字庫(kù)基線(xiàn),其中,圖3所示基線(xiàn)高度為hs ;圖4所示基線(xiàn)高度為hd。若以圖4所示基線(xiàn)為合 并后字庫(kù)的基線(xiàn),則需對(duì)圖3所示基線(xiàn)進(jìn)行調(diào)整,即,在豎直方向上對(duì)其進(jìn)行調(diào)整即可得到 圖4所示基線(xiàn)。也就是說(shuō),上述基線(xiàn)調(diào)整就是將圖3中的字形坐標(biāo)進(jìn)行了這樣的調(diào)整即, 使y’ = y+hd-hs,其中,y和y’分別代表字形中各點(diǎn)變換前后的坐標(biāo)。實(shí)際應(yīng)用中,如果因待合并字庫(kù)的基數(shù)和/或基線(xiàn)不相同而對(duì)其進(jìn)行了上述相關(guān) 調(diào)整,則還需要對(duì)字形排版參數(shù)以及cvt表中的有關(guān)參數(shù)進(jìn)行調(diào)整。具體地,在待合并字庫(kù)采用了不同的字庫(kù)基數(shù)和/或字庫(kù)基線(xiàn)的情況下,對(duì)于適 用于水平排版方式的字庫(kù)而言,以預(yù)先確定的合并后字庫(kù)基數(shù)為標(biāo)準(zhǔn),對(duì)待合并字庫(kù)的 hmtx表中的與字形水平排版有關(guān)的參數(shù)進(jìn)行調(diào)整;對(duì)于適用于豎直排版方式的字庫(kù)而言, 以預(yù)先確定的合并后字庫(kù)基數(shù)和/或基線(xiàn)為標(biāo)準(zhǔn),對(duì)待合并字庫(kù)的vmtx表中的與字形豎 直排版有關(guān)的參數(shù)進(jìn)行調(diào)整;并且,以預(yù)先確定的合并后字庫(kù)基數(shù)為標(biāo)準(zhǔn),對(duì)待合并字庫(kù)的 cvt表中的全局控制指令所使用的有關(guān)參數(shù)進(jìn)行調(diào)整。此外,每一個(gè)待合并字庫(kù)通常都具有眾多函數(shù),這就難以避免在不同的待合并字 庫(kù)中對(duì)具有相同函數(shù)編號(hào)的函數(shù)進(jìn)行不同的定義等諸如此類(lèi)的問(wèn)題。這種情況下,如果合 并字庫(kù)時(shí)不對(duì)函數(shù)編號(hào)進(jìn)行調(diào)整而對(duì)其直接合并/使用,則會(huì)使合并后字庫(kù)中存在因函數(shù) 編號(hào)重復(fù)等現(xiàn)象而導(dǎo)致的沖突問(wèn)題(以下簡(jiǎn)稱(chēng)為函數(shù)編號(hào)沖突問(wèn)題)。為此,就需要在前述 步驟20之前,對(duì)待合并字庫(kù)中的有關(guān)函數(shù)編號(hào)進(jìn)行調(diào)整。例如,對(duì)fpgm表、prep表、glyf 表中的有關(guān)函數(shù)編號(hào)進(jìn)行調(diào)整。其中,fpgm表中相關(guān)函數(shù)編號(hào)的調(diào)整可以這樣實(shí)現(xiàn)即,讀取每一個(gè)待合并字庫(kù) 的maxp表中的參數(shù)maxFimctionDefs的數(shù)值,保持第一字庫(kù)的fpgm表中的函數(shù)編號(hào)不變, 將其他待合并字庫(kù)的fpgm表中的各函數(shù)編號(hào)分別加上該字庫(kù)序號(hào)之前的各個(gè)字庫(kù)中的參 數(shù)maxFimctionDefs的數(shù)值之和,從而消除上述函數(shù)編號(hào)沖突問(wèn)題。
對(duì)于每一個(gè)待合并字庫(kù)的pr印表中的被調(diào)函數(shù)編號(hào),可以按照同一字庫(kù)中fpgm 表所采用的函數(shù)編號(hào)調(diào)整規(guī)則進(jìn)行調(diào)整,從而消除上述函數(shù)編號(hào)沖突問(wèn)題。對(duì)于每一個(gè)待合并字庫(kù)的glyf表中的被調(diào)函數(shù)編號(hào),可以按照同一字庫(kù)中fpgm 表或prep表所采用的函數(shù)編號(hào)調(diào)整規(guī)則來(lái)進(jìn)行調(diào)整,從而消除上述函數(shù)編號(hào)沖突問(wèn)題。下面結(jié)合圖5所示的一個(gè)具體實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明提供的字庫(kù)合并方法。為 便于說(shuō)明,本實(shí)施例中以?xún)蓚€(gè)字庫(kù)的合并為例,即,將第一字庫(kù)與第二字庫(kù)進(jìn)行合并而生成 第三字庫(kù),或者說(shuō),將第二字庫(kù)合并到第一字庫(kù)中而生成第三字庫(kù),其中第一字庫(kù)和第二字 庫(kù)稱(chēng)為待合并字庫(kù),第三字庫(kù)稱(chēng)為合并后字庫(kù)。其中,步驟110中,在待合并字庫(kù)所采用的字庫(kù)基數(shù)不相同的情況下,以預(yù)先確定 的合并后字庫(kù)基數(shù)為標(biāo)準(zhǔn)對(duì)待合并字庫(kù)的基數(shù)進(jìn)行調(diào)整。具體調(diào)整方法及過(guò)程類(lèi)似于前面 結(jié)合圖2所作的說(shuō)明,在此不再贅述。步驟120,在待合并字庫(kù)所采用的字庫(kù)基線(xiàn)不相同的情況下,以預(yù)先確定的合并后 字庫(kù)基線(xiàn)為標(biāo)準(zhǔn)對(duì)待合并字庫(kù)的基線(xiàn)進(jìn)行調(diào)整。具體調(diào)整方法及過(guò)程類(lèi)似于前面結(jié)合圖3 和圖4所作的說(shuō)明,在此不再贅述。步驟130,在待合并字庫(kù)的函數(shù)編號(hào)存在沖突的情況下,對(duì)fpgm表、pi^p表和/或 glyf表中的相關(guān)函數(shù)編號(hào)進(jìn)行調(diào)整。下面對(duì)這三個(gè)表的調(diào)整方法及過(guò)程進(jìn)行詳細(xì)說(shuō)明。其一,fpgm表中函數(shù)編號(hào)的調(diào)整。首先,為便于說(shuō)明如何調(diào)整fpgm表中的函數(shù)編號(hào),先對(duì)fpgm表中的函數(shù)定義方式 進(jìn)行詳細(xì)說(shuō)明。通常,TrueType字庫(kù)的fpgm表中以函數(shù)的形式定義有全局控制指令,以便 在字庫(kù)中的其他地方進(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 []其實(shí),fpgm表中的函數(shù)定義一般可以采用下述兩種方式。其中,第一種方式為逐 一定義函數(shù)編號(hào),并且每定義一個(gè)函數(shù)編號(hào)就立即定義該函數(shù)體,例如NPUSHB [] aFDEF []...EDEF []第二種方式為首先定義若干函數(shù)編號(hào),然后再逐一定義相應(yīng)函數(shù)體,例如NPUSHB [] a b c. · · ηFDEF []...EDEF []FDEF []...EDEF []......FDEF []EDEF []事實(shí)上,上述兩種定義方式可以單獨(dú)使用,也可以組合使用。其中,NPUSHB[]后的 字母a b c... η代表函數(shù)編號(hào),為不小于零的整數(shù)。接下來(lái),詳細(xì)說(shuō)明fpgm表中函數(shù)編號(hào)的調(diào)整方法及過(guò)程。在實(shí)際應(yīng)用中,無(wú)論采用上述哪種定義方式,只要判定待合并字庫(kù)存在函數(shù)編號(hào) 沖突問(wèn)題,就都可以采用下述方式予以解決即,在第一字庫(kù)和第二字庫(kù)的maxp表中,分別 讀取表示最大函數(shù)編號(hào)的參數(shù)maxFimctionDefs的數(shù)值,保持第一字庫(kù)的fpgm表中的函數(shù) 編號(hào)不變,將第二字庫(kù)的fpgm表中的各函數(shù)編號(hào)分別加上第一字庫(kù)中的maxFimctionDefs 的數(shù)值;同時(shí),將兩個(gè)字庫(kù)的maxp表中的參數(shù)maxFimctionDefs的數(shù)值相加之和作為合并 后字庫(kù)的maxp表中的參數(shù)maxFimctionDefs的數(shù)值。這樣即可解決第一字庫(kù)和第二字庫(kù) 的fpgm表中的函數(shù)編號(hào)沖突問(wèn)題。具體地,先從第一字庫(kù)的maxp表中讀取表示該字庫(kù)最大函數(shù)編號(hào)的參數(shù) maxFimctionDefs的數(shù)值,記為maxFunctionDefs_l ;相應(yīng)地,從第二字庫(kù)的maxp表中讀取 表示該字庫(kù)最大函數(shù)編號(hào)的參數(shù)maxFimctionDefs的數(shù)值,記為maxFunctionDefs_2 ;然 后,保持第一字庫(kù)的fpgm表中的函數(shù)編號(hào)不變,將第二字庫(kù)的fpgm表中的各函數(shù)編號(hào)分別加上第一字庫(kù)中的maxFimctionDefs的數(shù)值,即,將第二字庫(kù)的fpgm表中的各函數(shù)編號(hào)分 別加上maxFuncti0nDefS_2。這樣,即完成了待合并字庫(kù)的fpgm表中的函數(shù)編號(hào)的調(diào)整。然后,以fpgm表中的函數(shù)NPUSHB[]為例來(lái)詳細(xì)說(shuō)明如何調(diào)整fpgm表中的函數(shù)編 號(hào)。其中,該函數(shù)NPUSHB[]采用前述第一種函數(shù)定義方式,函數(shù)編號(hào)為a。如前所述,保持第一字庫(kù)的fpgm表中的函數(shù)編號(hào)不變而只改變第二字庫(kù)的 fpgm表中的相應(yīng)函數(shù)編號(hào),也就是說(shuō),將第二字庫(kù)的fpgm表中的相應(yīng)函數(shù)編號(hào)加上 maxFunctionDefs_l,這樣,上述函數(shù)編號(hào)a被調(diào)整為a+maxFunctionDefs_l,相應(yīng)地,第二 字庫(kù)的fpgm表中的函數(shù)NPUSHB []的定義即被調(diào)整為NPUSHB[](a+maxFunctionDefs_l)FDEF []EDEF []類(lèi)似地,對(duì)fpgm表中其他函數(shù)定義所涉及的函數(shù)編號(hào)也作上述調(diào)整,即可完成待 合并字庫(kù)的fpgm表中的函數(shù)編號(hào)調(diào)整。需要指出的是,對(duì)第二字庫(kù)的fpgm表中的函數(shù)編號(hào)調(diào)整完成之后,可以將該fpgm 表中的內(nèi)容整體追加到第一字庫(kù)的fpgm表的后面或最前面,同時(shí)將第一字庫(kù)的maxp表中 的 maxFunctionDefs 修改為(maxFunctionDefs_l+maxFunctionDefs_2)。也就是說(shuō),可以在 對(duì)fpgm表中的函數(shù)編號(hào)調(diào)整完畢之后,立刻進(jìn)行fpgm表的合并。當(dāng)然,在實(shí)際應(yīng)用中,也 可以先進(jìn)行fpgm表的調(diào)整,而將fpgm表合并過(guò)程推遲而在后續(xù)步驟中與其他表的合并一
起進(jìn)行。
其二,prep表中函數(shù)編號(hào)的調(diào)整。
通常,TrueType字庫(kù)中的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 []如果判定待合并字庫(kù)的函數(shù)編號(hào)存在沖突,并且已對(duì)fpgm表中的函數(shù)編號(hào)進(jìn)行 了調(diào)整,那么就需要相應(yīng)地調(diào)整對(duì)應(yīng)字庫(kù)(即,第二字庫(kù))的prep表中的調(diào)用代碼(即,被 調(diào)函數(shù)編號(hào))。通常,在Pi^p表中一般采用下述形式來(lái)調(diào)用函數(shù)NPUSHB [] a b c d. . . η ...CALL[]或NPUSHB [] a b c d. . . η ...L00PCALL[]其中的CALL或L00PCALL指令為函數(shù)調(diào)用指令。通常,被調(diào)函數(shù)編號(hào)為程序執(zhí)行 到此時(shí),堆棧頂部的操作數(shù)。為此,就需要先從堆棧內(nèi)的眾多數(shù)據(jù)中識(shí)別出相應(yīng)函數(shù)編號(hào), 然后再參照前述fpgm表中函數(shù)編號(hào)的調(diào)整方式對(duì)其進(jìn)行調(diào)整。實(shí)際識(shí)別和調(diào)整過(guò)程中,通 常會(huì)引入下述表1來(lái)實(shí)現(xiàn)。而且,在識(shí)別和調(diào)整過(guò)程中,還需要設(shè)置一個(gè)用以記錄當(dāng)前操作 數(shù)位置的操作數(shù)當(dāng)前位置變量pos,其初值為0。表1:
權(quán)利要求
一種字庫(kù)合并方法,用于將至少兩個(gè)字庫(kù)合并而形成合并后新字庫(kù),其特征在于,該方法包括下述步驟10)基于待合并字庫(kù)的maxp表中各個(gè)參數(shù)的數(shù)值而設(shè)置合并后字庫(kù)的maxp表中各相應(yīng)參數(shù)的數(shù)值;20)將待合并字庫(kù)中的文件頭和各個(gè)表逐一進(jìn)行合并而形成合并后的新字庫(kù)。
2.根據(jù)權(quán)利要求1所述的字庫(kù)合并方法,其特征在于,在所述步驟10)中,執(zhí)行下述操作讀取每一個(gè)待合并字庫(kù)的maxp表中的參數(shù)maxFunctionDefs的數(shù)值,并將這些數(shù)值之 和作為合并后字庫(kù)的maxp表中該參數(shù)maxFunctionDefs的數(shù)值;讀取待合并字庫(kù)的maxp表中除參數(shù)maxFimctionDefs之外的其余各參數(shù)的數(shù)值,并且 對(duì)于每一參數(shù),將其在各個(gè)待合并字庫(kù)中的maxp表中的數(shù)值進(jìn)行比較,取其中最大的數(shù)值 作為合并后字庫(kù)的maxp表中該參數(shù)的數(shù)值。
3.根據(jù)權(quán)利要求1所述的字庫(kù)合并方法,其特征在于,在所述步驟20)之前還包括字庫(kù) 基數(shù)調(diào)整步驟即,在待合并字庫(kù)所采用的字庫(kù)基數(shù)不相同的情況下,以預(yù)先確定的合并后 字庫(kù)基數(shù)為標(biāo)準(zhǔn)對(duì)待合并字庫(kù)的基數(shù)進(jìn)行調(diào)整。
4.根據(jù)權(quán)利要求1所述的字庫(kù)合并方法,其特征在于,在所述步驟20)之前還包括字庫(kù) 基線(xiàn)調(diào)整步驟即,在待合并字庫(kù)所采用的字庫(kù)基線(xiàn)不相同的情況下,以預(yù)先確定的合并后 字庫(kù)基線(xiàn)為標(biāo)準(zhǔn)對(duì)待合并字庫(kù)的基線(xiàn)進(jìn)行調(diào)整。
5.根據(jù)權(quán)利要求1所述的字庫(kù)合并方法,其特征在于,在所述步驟20)之前還包括函 數(shù)編號(hào)調(diào)整步驟即,在待合并字庫(kù)的函數(shù)編號(hào)存在沖突的情況下,對(duì)fpgm表、pi^p表和/ 或glyf表中的相關(guān)函數(shù)編號(hào)進(jìn)行調(diào)整。
6.根據(jù)權(quán)利要求5所述的字庫(kù)合并方法,其特征在于,這樣實(shí)現(xiàn)fpgm表中相關(guān)函數(shù)編 號(hào)的調(diào)整即,讀取每一個(gè)待合并字庫(kù)的maxp表中的參數(shù)maxFimctionDefs的數(shù)值,保持第 一字庫(kù)的fpgm表中的函數(shù)編號(hào)不變,將其他待合并字庫(kù)的fpgm表中的各函數(shù)編號(hào)分別加 上該字庫(kù)序號(hào)之前的各個(gè)字庫(kù)中的參數(shù)maxFimctionDefs的數(shù)值之和,以消除函數(shù)編號(hào)沖 突問(wèn)題。
7.根據(jù)權(quán)利要求5所述的字庫(kù)合并方法,其特征在于,這樣實(shí)現(xiàn)prep表中相關(guān)函數(shù)編 號(hào)的調(diào)整即,對(duì)于每一個(gè)待合并字庫(kù)的Pr印表中的被調(diào)函數(shù)編號(hào),按照同一字庫(kù)中fpgm 表所采用的函數(shù)編號(hào)調(diào)整規(guī)則進(jìn)行調(diào)整,以消除函數(shù)編號(hào)沖突問(wèn)題。
8.根據(jù)權(quán)利要求5所述的字庫(kù)合并方法,其特征在于,這樣實(shí)現(xiàn)glyf表中相關(guān)函數(shù)編 號(hào)的調(diào)整即,對(duì)于每一個(gè)待合并字庫(kù)的glyf表中的被調(diào)函數(shù)編號(hào),按照同一字庫(kù)中fpgm 表或prep表所采用的函數(shù)編號(hào)調(diào)整規(guī)則進(jìn)行調(diào)整,以消除函數(shù)編號(hào)沖突問(wèn)題。
9.根據(jù)權(quán)利要求1所述的字庫(kù)合并方法,其特征在于,在所述步驟20)之前還包括字 形排版參數(shù)的調(diào)整步驟即,在待合并字庫(kù)采用了不同的字庫(kù)基數(shù)和/或字庫(kù)基線(xiàn)的情況 下,以預(yù)先確定的合并后字庫(kù)基數(shù)為標(biāo)準(zhǔn),對(duì)待合并字庫(kù)的hmtx表中的與字形水平排版有 關(guān)的參數(shù)進(jìn)行調(diào)整;和/或以預(yù)先確定的合并后字庫(kù)基數(shù)和/或基線(xiàn)為標(biāo)準(zhǔn),對(duì)待合并字庫(kù) 的vmtx表中的與字形豎直排版有關(guān)的參數(shù)進(jìn)行調(diào)整。
10.根據(jù)權(quán)利要求1所述的字庫(kù)合并方法,其特征在于,在所述步驟20)之前還包括這 樣的步驟即,在待合并字庫(kù)所采用的字庫(kù)基數(shù)不相同的情況下,以預(yù)先確定的合并后字庫(kù)基數(shù)為標(biāo)準(zhǔn),對(duì)待合并字庫(kù)的cvt表中的相關(guān)參數(shù)進(jìn)行調(diào)整。
11.一種字庫(kù)合并系統(tǒng),用于將至少兩個(gè)字庫(kù)合并而形成合并后新字庫(kù),其特征在于, 包括下述單元maxp表設(shè)置單元,用以基于待合并字庫(kù)的maxp表中各個(gè)參數(shù)的數(shù)值而設(shè)置合并后字 庫(kù)的maxp表中各相應(yīng)參數(shù)的數(shù)值;合并及處理單元,用于將待合并字庫(kù)中的文件頭和各個(gè)表逐一進(jìn)行合并而形成合并后 的新字庫(kù)。
12.根據(jù)權(quán)利要求11所述的字庫(kù)合并系統(tǒng),其特征在于,所述maxp表設(shè)置單元具體包 括maxp表內(nèi)參數(shù)讀取模塊、累加處理模塊和比較處理模塊,其中maxp表內(nèi)參數(shù)讀取模塊,用于讀取每一個(gè)待合并字庫(kù)的maxp表中的參數(shù),并將所讀取 的參數(shù)maxFunctionDefs的數(shù)值傳輸至累加處理模塊,將除參數(shù)maxFunctionDefs之外的 其余各參數(shù)的數(shù)值傳輸至比較處理模塊;累加處理模塊,用于將每一個(gè)待合并字庫(kù)的maxp表中的參數(shù)maxFunctionDefs的數(shù)值 進(jìn)行累加,并將累加之和作為合并后字庫(kù)的maxp表中該參數(shù)maxFunctionDefs的數(shù)值;以 及比較處理模塊,用以執(zhí)行這樣的操作即,對(duì)于每一參數(shù),將該參數(shù)在各個(gè)待合并字庫(kù) 的maxp表中的數(shù)值進(jìn)行比較,取其中最大的數(shù)值作為合并后字庫(kù)的maxp表中該參數(shù)的數(shù)值。
13.根據(jù)權(quán)利要求11所述的字庫(kù)合并系統(tǒng),其特征在于,還包括字庫(kù)基數(shù)調(diào)整單元和/ 或字庫(kù)基線(xiàn)調(diào)整單元,其中字庫(kù)基數(shù)調(diào)整單元,用于在待合并字庫(kù)所采用的字庫(kù)基數(shù)不相同的情況下,以預(yù)先確 定的合并后字庫(kù)基數(shù)為標(biāo)準(zhǔn)對(duì)待合并字庫(kù)的基數(shù)進(jìn)行調(diào)整;字庫(kù)基線(xiàn)調(diào)整單元,用于在待合并字庫(kù)所采用的字庫(kù)基線(xiàn)不相同的情況下,以預(yù)先確 定的合并后字庫(kù)基線(xiàn)為標(biāo)準(zhǔn)對(duì)待合并字庫(kù)的基線(xiàn)進(jìn)行調(diào)整。
14.根據(jù)權(quán)利要求11所述的字庫(kù)合并系統(tǒng),其特征在于,還包括函數(shù)編號(hào)調(diào)整單元,用 于在待合并字庫(kù)的函數(shù)編號(hào)存在沖突的情況下,對(duì)fpgm表、prep表和/或glyf表中的相 關(guān)函數(shù)編號(hào)進(jìn)行調(diào)整。
15.根據(jù)權(quán)利要求11所述的字庫(kù)合并系統(tǒng),其特征在于,還包括字形排版參數(shù)調(diào)整單 元,用于在待合并字庫(kù)采用了不同的字庫(kù)基數(shù)和/或字庫(kù)基線(xiàn)的情況下,以預(yù)先確定的合 并后字庫(kù)基數(shù)為標(biāo)準(zhǔn),對(duì)待合并字庫(kù)的hmtx表中的與字形水平排版有關(guān)的參數(shù)進(jìn)行調(diào)整; 和/或以預(yù)先確定的合并后字庫(kù)基數(shù)和/或基線(xiàn)為標(biāo)準(zhǔn),對(duì)待合并字庫(kù)的vmtx表中的與字 形豎直排版有關(guān)的參數(shù)進(jìn)行調(diào)整。
16.根據(jù)權(quán)利要求11所述的字庫(kù)合并系統(tǒng),其特征在于,還包括cvt表調(diào)整單元,用于 在待合并字庫(kù)所采用的字庫(kù)基數(shù)不相同的情況下,以預(yù)先確定的合并后字庫(kù)基數(shù)為標(biāo)準(zhǔn), 對(duì)待合并字庫(kù)的CVt表中的相關(guān)參數(shù)進(jìn)行調(diào)整。
全文摘要
本發(fā)明屬于文字處理技術(shù)領(lǐng)域,具體公開(kāi)了一種字庫(kù)合并方法,用于將至少兩個(gè)字庫(kù)合并而形成合并后新字庫(kù)。該方法包括下述步驟10)基于待合并字庫(kù)的maxp表中各個(gè)參數(shù)的數(shù)值而設(shè)置合并后字庫(kù)的maxp表中各相應(yīng)參數(shù)的數(shù)值;20)將待合并字庫(kù)中的文件頭和各個(gè)表逐一進(jìn)行合并而形成合并后的新字庫(kù)。此外,本發(fā)明還公開(kāi)一種字庫(kù)合并系統(tǒng),主要包括maxp表設(shè)置單元,其基于待合并字庫(kù)的maxp表中各個(gè)參數(shù)的數(shù)值而設(shè)置合并后字庫(kù)的maxp表中各相應(yīng)參數(shù)的數(shù)值;合并及處理單元,其將待合并字庫(kù)中的文件頭和各個(gè)表逐一進(jìn)行合并而形成合并后的新字庫(kù)。本發(fā)明提供的方法及系統(tǒng)其不僅能夠快捷高效地進(jìn)行字庫(kù)的合并,而且還能夠保證合并后字庫(kù)具有良好的質(zhì)量及可靠性。
文檔編號(hào)G06F17/30GK101996192SQ20091009099
公開(kāi)日2011年3月30日 申請(qǐng)日期2009年8月19日 優(yōu)先權(quán)日2009年8月19日
發(fā)明者李明 申請(qǐng)人:北大方正集團(tuán)有限公司;北京北大方正電子有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
手游| 通州市| 肥东县| 平远县| 普洱| 德格县| 贵德县| 昌吉市| 平阴县| 阳山县| 左云县| 游戏| 长宁县| 都兰县| 永寿县| 无棣县| 新巴尔虎左旗| 通许县| 衡水市| 克拉玛依市| 湟源县| 海南省| 苏州市| 辉南县| 革吉县| 溧水县| 绥芬河市| 石家庄市| 娱乐| 盐津县| 天长市| 高密市| 长海县| 金乡县| 康平县| 西藏| 绩溪县| 绥滨县| 林甸县| 罗山县| 科尔|