国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種字體文件的嵌入方法及裝置的制作方法

      文檔序號(hào):6613861閱讀:221來(lái)源:國(guó)知局
      專利名稱:一種字體文件的嵌入方法及裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于字體技術(shù)領(lǐng)域,特別涉及字體文件的嵌入方法及裝置。
      背景技術(shù)
      文字是一份電子文檔的主要內(nèi)容,而任何文字都不能脫離字體而單獨(dú)存
      在,目前大多數(shù)電子文檔都使用了 TrueType字體。由于中文字符較多,并且 字形復(fù)雜,所以中文字體的字體文件都比較大。GB2312-80《信息交換用漢字 編碼字符集基本集》共收錄了 6763個(gè)簡(jiǎn)體漢字,GBK碼收錄了 21003個(gè)漢字, 而單、雙、四字節(jié)混合編碼的GB18030-2000標(biāo)準(zhǔn)更是收錄了 27000個(gè)漢字。 與上述字符集對(duì)應(yīng)的漢字字庫(kù)文件一般都在1謹(jǐn)B以上。為了保證電子文檔的 文字所采用的字體在不同的軟、硬件環(huán)境下顯示正確,可以考慮將字體文件嵌 入到電子文檔中,這樣即使在沒(méi)有該字體的計(jì)算機(jī)上也可以正常顯示字體。 字體文件中包括glyf表、loca表和Hmtx表。
      字形數(shù)據(jù)存儲(chǔ)在glyf表中。眾多字形(Glyph )數(shù)據(jù)的順序排列。TrueType 字體文件中的字形數(shù)據(jù)有兩種形式,即簡(jiǎn)單類型字形和復(fù)合類型字形。簡(jiǎn)單 類型字形數(shù)據(jù)直接通過(guò)若干條Bezier曲線描述字形的輪廓;而復(fù)合類型字形 則通過(guò)若干個(gè)簡(jiǎn)單類型字形和復(fù)合類型字形的放縮變換描述字形的輪廓,實(shí)際 上是一種對(duì)現(xiàn)有字形數(shù)據(jù)的復(fù)用。當(dāng)字體引擎解析復(fù)合字形時(shí),必須找到所有 該復(fù)合類型字形所引用的簡(jiǎn)單類型字形才能輸出該字的位圖,即對(duì)于復(fù)合類型 字形在glyf表內(nèi)的字形數(shù)據(jù)為其所引用的簡(jiǎn)單類型字形數(shù)據(jù)的索引。glyf表 內(nèi)部順序存》文了所有的字形數(shù)據(jù)。
      loca表沒(méi)有表頭,其內(nèi)部記錄了字形索引(Glyph Index )到字形(Glyph)
      數(shù)據(jù)偏移量的一對(duì)一映射關(guān)系。根據(jù)TrueType文件4各式規(guī)范可知,loca表存 在兩種格式,即短格式和長(zhǎng)格式。當(dāng)loca使用短格式時(shí),表內(nèi)部為一個(gè)SHORT 類型(2字節(jié))的數(shù)組;當(dāng)loca使用長(zhǎng)格式時(shí),表內(nèi)部為一個(gè)UL0NG類型(4 字節(jié))的數(shù)組。字體文件中的head表中的indexToLocFormat字段指明了該字 體文件使用了上述兩種格式中的哪一種。
      由字形索引(Glyph Index)計(jì)算字形數(shù)據(jù)偏移量(Glyph Offset)的計(jì) 算規(guī)則是
      若head表中的indexToLocFormat值為1,則使用公式A計(jì)算字形數(shù)據(jù)的 偏移量;若indexToLocFormat值為0,則使用公式B計(jì)算字形數(shù)據(jù)的偏移量。 (offsets為loca表內(nèi)部的2字節(jié)或4字節(jié)數(shù)組) 公式A: GlyphOffset = offsets [Glyphlndex*4] 公式B: GlyphOffset = offsets [Glyphlndex*2] Hmtx表記錄了所有字形數(shù)據(jù)(Glyph)的Metrix信息。 就當(dāng)前而言,嵌入到電子文檔內(nèi)部的字體文件體積較大,嵌入后電子文檔 的體積通常會(huì)大幅增加,這是與電子出版物要求的文件小巧,傳輸便捷的特點(diǎn) 相沖突的。

      發(fā)明內(nèi)容
      為了解決嵌入到電子文檔內(nèi)部的字體文件體積較大,嵌入后電子文檔的體 積通常會(huì)大幅增加的問(wèn)題,本發(fā)明實(shí)施例提供了一種字體文件的嵌入方法,包 括
      在字體文件中獲取待嵌入字符的字形數(shù)據(jù);
      重新分配所獲取的字形數(shù)據(jù)的字形索引的索引號(hào),重新分配的最大索引號(hào) 小于未重新分配前最大索引號(hào);
      按照重新分配的字形索引號(hào)順序,將字形數(shù)據(jù)重新記錄在glyf表中; 按照重新分配的字形數(shù)據(jù)的索引號(hào),獲取字形數(shù)據(jù)對(duì)應(yīng)的偏移量;
      將重新分配的字形索引的索引號(hào)和字形數(shù)據(jù)對(duì)應(yīng)的偏移量的映射關(guān)系,記
      錄在loca表中;
      修改字體文件maxp表的numGlyphes和hhea表的number0f HMetrics數(shù)據(jù) 域的值,使之等于字形數(shù)據(jù)的數(shù)量; 將字體文件嵌入到電子文檔中。
      同時(shí)本發(fā)明實(shí)施例還提供一種字體文件的嵌入裝置,包括 字形數(shù)據(jù)獲取^^塊用于在字體文件中獲取待嵌入字符的字形數(shù)據(jù); 分配模塊用于重新分配所獲取的字形數(shù)據(jù)的字形索引的索引號(hào),重新分
      配的最大索引號(hào)小于未重新分配前最大索引號(hào);
      glyf表修改模塊用于按照重新分配的字形索引號(hào)順序,將字形數(shù)據(jù)重新
      記錄在glyf表中;
      偏移量獲取模塊用于按照重新分配的字形數(shù)據(jù)的索引號(hào),獲取字形數(shù)據(jù) 對(duì)應(yīng)的偏移量;
      loca表修改模塊用于將重新分配的字形索引的索引號(hào)和字形數(shù)據(jù)對(duì)應(yīng)的 偏移量的映射關(guān)系,記錄在loca表中;
      maxp表修改模塊用于修改字體文件maxp表的謹(jǐn)Glyphes和hhea表的 numberOfHMetrics數(shù)據(jù)域的值,使之等于字形數(shù)據(jù)的數(shù)量;
      字體文件嵌入模塊用于將字體文件嵌入到電子文檔中。
      由本發(fā)明4是供的具體實(shí)施方案可以看出,正是由于重新分配字形數(shù)據(jù)的字 形索引的索引號(hào),按照重新分配的字形索引號(hào)順序,將字形數(shù)據(jù)重新記錄在 glyf表,同樣修改loca表,使得新生成的glyf表和loca表不必再攜帶不必要的 內(nèi)容,字體文件體積較小。


      圖1為本發(fā)明提供的第一實(shí)施例方法流程圖2為本發(fā)明提供的第一實(shí)施例解析復(fù)合類型字形數(shù)據(jù)的方法流程圖3為本發(fā)明提供的第二實(shí)施例裝置結(jié)構(gòu)圖。
      具體實(shí)施例方式
      本發(fā)明提供的第一實(shí)施例是一種字體文件的嵌入方法,以將楷體字體文件 待嵌入字符為"中國(guó)人民",嵌入到電子文檔為例,方法流程如圖1所示,包 括
      步驟101:根據(jù)"中"對(duì)應(yīng)的字體文件在cmap表中的數(shù)據(jù),將"中"字的 Unicode字符映射到字體文件中的Glyphlndex (字形索引)1000;
      步驟102:根據(jù)字體文件現(xiàn)有l(wèi)oca表,得到"中"字對(duì)應(yīng)的字形索引 Glyphlndex的索引號(hào)"1000"對(duì)應(yīng)的字形數(shù)據(jù)在現(xiàn)有g(shù)lyf表中的字形數(shù)據(jù)的 GlyphOffset(偏移量)為"10023",同時(shí)得到字形索引的索引號(hào)為Glyphlndex "1001"對(duì)應(yīng)的字形數(shù)據(jù)在現(xiàn)有g(shù)lyf表中的字形數(shù)據(jù)GlyphOff set (偏移量) "10123";
      步驟103:根據(jù)字形數(shù)據(jù)偏移量GlyphOffset "10023"和"10123",在現(xiàn) 有g(shù)lyf表查找并獲取到"中"字的字形數(shù)據(jù)GlyphData。
      步驟101-103僅是以Unicode編碼為例,通過(guò)Unicode查找并獲取字形 (Glyph)數(shù)據(jù)的過(guò)程。
      如果提前知道待提取字符的字形索引,還通過(guò)如下步驟獲取字形(Glyph) 數(shù)據(jù)執(zhí)行步驟102和步驟103,利用已知的字形索引獲得相應(yīng)的字形數(shù)據(jù)。 由上述步驟可知,通過(guò)現(xiàn)有技術(shù),有多種方式可獲得相應(yīng)的字形數(shù)據(jù)。
      步驟104:解析字形數(shù)據(jù),對(duì)欲添加到待嵌入的字體文件中的字形數(shù)據(jù), 重新分配字形索引的索引號(hào)(Glyph Index)。如在現(xiàn)有技術(shù)中"中國(guó)人民"中 的"中"對(duì)應(yīng)的字形索引的索引號(hào)為"1000","國(guó)"對(duì)應(yīng)的字形索引的索引號(hào) 為"2000","人"對(duì)應(yīng)的字形索引的索引號(hào)為"3000","民"對(duì)應(yīng)的字形索引 的索引號(hào)為"4000,,。為"中""國(guó),,"人""民"重新分配字形索引(Glyph Index), 例如分別分配為T(mén)、 "2"、 "3"、 "4",或者"4"、 "3"、 "2"、 T,或者"3"、"4"、 'T,、 "2"。重新分配的原則為重新分配后的字形索引的最大索引號(hào), 小于未重新分配時(shí)字形索引的最大索引號(hào),在本實(shí)施例中,從新分配的最大索 引號(hào)小于"民"對(duì)應(yīng)的字形索引的索引號(hào)"4000"。作為優(yōu)選的方案,重新連 續(xù)分配字形索引的索引號(hào),作為進(jìn)一步優(yōu)選的方案,重新連續(xù)分配的字形索引 的索引號(hào)從l開(kāi)始。
      步驟105:修改字體文件的glyf表,按照新字形索引的順序'T,、 "2"、 "3"、 "4"輸出"中國(guó)人民,,對(duì)應(yīng)的字形數(shù)據(jù)到glyf表中。
      步驟106:按照重新分配的字形數(shù)據(jù)的字形索引號(hào)"1"、 "2"、 "3"、 "4", 獲取"中國(guó)人民,,對(duì)應(yīng)的字形數(shù)據(jù)偏移量分別為"0" "100" "330" "450"。
      步驟107: ^修改字體文件的loca表,將重新分配的字形索引和字形數(shù)據(jù)對(duì) 應(yīng)的偏移量的映射關(guān)系保存在loca表。重新分配后"中"字對(duì)應(yīng)的字形索引 的索引號(hào)為'T,,對(duì)應(yīng)的偏移量為"0",將它們的映射關(guān)系保存在loca表中。
      步驟108:修改字體文件的maxp表和hhea表中的謡Glyphes和 numberOfHMetrics數(shù)據(jù)域的值,使之等于被嵌入的字形數(shù)據(jù)的數(shù)量4。
      步驟109:生成表目錄,記錄每個(gè)表項(xiàng)的偏移量等信息。
      步驟110:將字體文件嵌入到電子文檔中。
      由于重新分配字形數(shù)據(jù)的字形索引的索引號(hào),按照重新分配的字形索引號(hào) 順序,將字形數(shù)據(jù)重新記錄在glyf表,同樣修改loca表。修改后的glyf表和loca 表只記錄了待嵌入字符的字形數(shù)據(jù)和與之對(duì)應(yīng)的字形索引的相關(guān)數(shù)據(jù),相對(duì)于 現(xiàn)有技術(shù),去除了非待嵌入字符的字形數(shù)據(jù)和與之對(duì)應(yīng)的字形索引的相關(guān)數(shù) 據(jù)。新生成的glyf表和loca表不必再攜帶不必要的內(nèi)容,字體文件體積較小。
      為了減少字體文件的體積,進(jìn)一步還可以刪除字體文件的cmap表。
      字形數(shù)據(jù)包括簡(jiǎn)單字形數(shù)據(jù)如"中"對(duì)應(yīng)的字形數(shù)據(jù)和復(fù)雜字形數(shù)據(jù)如 "國(guó)"對(duì)應(yīng)的字形數(shù)據(jù),對(duì)于解析復(fù)合字形數(shù)據(jù),重新連續(xù)分配字形索引的方 法流程圖如圖2所示,具體過(guò)程如下
      步驟201:解析該復(fù)合類型字形數(shù)據(jù),并為該復(fù)合類型字形數(shù)據(jù)(Glyph)
      重新分配一個(gè)新的字形索引(Glyph Index),同時(shí)為#1其引用的字形數(shù)據(jù)重新 分配一個(gè)新的字形索引。如"國(guó)"對(duì)應(yīng)的字形數(shù)據(jù)為復(fù)合類型字形數(shù)據(jù),其引 用"口"和"玉"對(duì)應(yīng)的字形數(shù)據(jù),為"國(guó)"對(duì)應(yīng)的字形數(shù)據(jù)重新分配一個(gè)字 形索引為"2",并為"口"和"玉,,對(duì)應(yīng)的字形數(shù)據(jù)重新分配字形索引分別為 "5" "6"。
      步驟202:檢查是否存在引用其他復(fù)合類型字形數(shù)據(jù)的情況。 若存在引用復(fù)合類型字形數(shù)據(jù)的情況,重復(fù)執(zhí)行步驟201,解析新出現(xiàn)的
      復(fù)合類型字形;反之,若引用的字形數(shù)據(jù)全部是簡(jiǎn)單字形數(shù)據(jù),就跳轉(zhuǎn)至步驟
      203終止解析。
      在步驟201和步驟202中可能存在多個(gè)復(fù)合字形同時(shí)引用相同字形的情況, 這時(shí)只需保存一傷"陂多次引用的字形數(shù)據(jù),減少數(shù)據(jù)的重復(fù)。
      在解析字形數(shù)據(jù)時(shí)需要區(qū)分簡(jiǎn)單類型和復(fù)合類型的字形數(shù)據(jù)。上面介紹了 對(duì)復(fù)合類型的字形數(shù)據(jù)的解析過(guò)程,在此過(guò)程中解析的結(jié)果為被解析的字形數(shù) 據(jù)本身和被其引用的字形數(shù)據(jù)分配的新的字形索引。
      進(jìn)一步優(yōu)化的方案還包括修改字體文件的hmtx表,提取待嵌入字符的 Metrix信息,并按照新分配的字形索引順序,重新記錄每個(gè)字形的Metrix信 白
      本發(fā)明提供的第二實(shí)施例是一種字體文件的嵌入裝置,其結(jié)構(gòu)如圖3所示, 包括
      字形數(shù)據(jù)獲取模塊301:用于在字體文件中獲取待嵌入字符的字形數(shù)據(jù);
      分配^t塊302:用于重新分配所獲取的字形數(shù)據(jù)的字形索引的索引號(hào),重 新分配的最大索引號(hào)小于未重新分配前最大索引號(hào);
      glyf表修改模塊303:用于按照重新分配的字形索引號(hào)順序,將字形數(shù)據(jù) 重新記錄在glyf表中;
      偏移量獲取模塊304:用于按照重新分配的字形數(shù)據(jù)的索引號(hào),獲取字形 數(shù)據(jù)對(duì)應(yīng)的偏移量;
      loca表修改模塊305:用于將重新分配的字形索引的索引號(hào)和字形數(shù)據(jù)對(duì) 應(yīng)的偏移量的映射關(guān)系,記錄在loca表中;
      maxp表》務(wù)改4莫塊306:用于^f奮改字體文件maxp表的n咖Glyphes和hhea 表的numberOfHMetrics數(shù)據(jù)域的值,使之等于字形數(shù)據(jù)的數(shù)量;
      字體文件嵌入^t塊307:用于將字體文件嵌入到電子文檔中。
      明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及 其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
      權(quán)利要求
      1、一種字體文件的嵌入方法,其特征在于,包括在字體文件中獲取待嵌入字符的字形數(shù)據(jù);重新分配所獲取的字形數(shù)據(jù)的字形索引的索引號(hào),重新分配的最大索引號(hào)小于重新分配前最大索引號(hào);按照重新分配的字形索引號(hào)順序,將字形數(shù)據(jù)重新記錄在glyf表中;按照重新分配的字形數(shù)據(jù)的索引號(hào),獲取字形數(shù)據(jù)對(duì)應(yīng)的偏移量;將重新分配的字形索引的索引號(hào)和字形數(shù)據(jù)對(duì)應(yīng)的偏移量的映射關(guān)系,記錄在loca表中;修改字體文件maxp表的numGlyphes和hhea表的numberOfHMetrics數(shù)據(jù)域的值,使之等于字形數(shù)據(jù)的數(shù)量;將字體文件嵌入到電子文檔中。
      2、 如權(quán)利要求1所述的方法,其特征在于,重新分配所獲取的字形數(shù)據(jù)的字形索引的索引號(hào)的步驟具體為 重新連續(xù)分配待嵌入字符字形數(shù)據(jù)的字形索引的索引號(hào)。
      3、 如權(quán)利要求2所述的方法,其特征在于,重新連續(xù)分配待嵌入字符字 形數(shù)據(jù)的字形索引的索引號(hào)從l開(kāi)始遞增編碼。
      4、 如權(quán)利要求1所述的方法,其特征在于,所述將字體文件嵌入到電子 文檔中的步驟前還包括刪除字體文件cmap表。
      5、 如權(quán)利要求1所述的方法,其特征在于,所述將字體文件嵌入到電子 文檔中的步驟前還包括修改字體文件hmtx表,提取待嵌入字符字形數(shù)據(jù)的Metrix信息,并按照 新分配的字形索引順序,重新記錄提取的Metrix信息到hmtx表。
      6、 如權(quán)利要求1所述的方法,其特征在于,所述字形數(shù)據(jù)包括簡(jiǎn)單字形數(shù)據(jù)和/或復(fù)合字形數(shù)據(jù)。
      7、 如權(quán)利要求6所述的方法,其特征在于,若字形數(shù)據(jù)為簡(jiǎn)單字形數(shù)據(jù), 直接為該簡(jiǎn)單類型字形數(shù)據(jù)重新分配新的字形索引。
      8、 如權(quán)利要求6所述的方法,其特征在于,若字形數(shù)據(jù)為復(fù)合字形數(shù)據(jù),首先為復(fù)合類型字形數(shù)據(jù)重新分配新的字形索引,再為被其引用的字形數(shù)據(jù)重 新分配新的字形索引。
      9、 如權(quán)利要求8所述的方法,其特征在于,還包括 檢查是否存在引用其他復(fù)合類型字形數(shù)據(jù)的步驟;若存在引用復(fù)合類型字形數(shù)據(jù),重復(fù)復(fù)合類型字形數(shù)據(jù)字形索引重新分配 的步驟,若引用的字形數(shù)據(jù)全部是簡(jiǎn)單字形數(shù)據(jù),直接為該簡(jiǎn)單類型字形數(shù)據(jù) 重新分配新的字形索引。
      10、 一種字體文件的嵌入裝置,其特征在于,包括 字形數(shù)據(jù)獲取模塊用于在字體文件中獲取待嵌入字符的字形數(shù)據(jù); 分配模塊用于重新分配所獲取的字形數(shù)據(jù)的字形索引的索引號(hào),重新分配的最大索引號(hào)小于未重新分配前最大索引號(hào);glyf表修改模塊按照重新分配的字形索引號(hào)順序,將字形數(shù)據(jù)重新記錄 在glyf表中;偏移量獲取^f莫塊用于按照重新分配的字形數(shù)據(jù)的索引號(hào),獲取字形數(shù)據(jù) 對(duì)應(yīng)的偏移量;loca表修改模塊用于將重新分配的字形索引的索引號(hào)和字形數(shù)據(jù)對(duì)應(yīng)的 偏移量的映射關(guān)系,記錄在loca表中;maxp表修改模塊用于修改字體文件maxp表的numGlyphes和hhea表的 numberOfHMetrics數(shù)據(jù)域的值,使之等于字形數(shù)據(jù)的數(shù)量;字體文件嵌入it塊用于將字體文件嵌入到電子文檔中。
      全文摘要
      本發(fā)明公開(kāi)了一種字體文件的嵌入方法及裝置,為了解決嵌入到電子文檔內(nèi)部的字體文件體積較大,嵌入后電子文檔的體積通常會(huì)大幅增加的問(wèn)題,本發(fā)明公開(kāi)的方法包括獲取待嵌入字符的字形數(shù)據(jù);重新分配字形數(shù)據(jù)的字形索引的索引號(hào),重新分配的最大索引號(hào)小于重新分配前最大索引號(hào);按照索引號(hào)順序,將字形數(shù)據(jù)重新記錄在glyf表中;獲取字形數(shù)據(jù)對(duì)應(yīng)的偏移量;索引號(hào)和偏移量的映射關(guān)系,重新記錄在loca表中;修改字體文件maxp表的numGlyphes和hhea表的numberOfHMetrics數(shù)據(jù)域的值,使之等于字形數(shù)據(jù)的數(shù)量;將字體文件嵌入到電子文檔中。由于重新分配索引號(hào),因此glyf表和loca表不必?cái)y帶非必要內(nèi)容,字體文件的體積較小。
      文檔編號(hào)G06F17/30GK101187939SQ20071017793
      公開(kāi)日2008年5月28日 申請(qǐng)日期2007年11月22日 優(yōu)先權(quán)日2007年11月22日
      發(fā)明者何震生, 源 劉, 毅 王 申請(qǐng)人:北大方正集團(tuán)有限公司;北京方正阿帕比技術(shù)有限公司;北京大學(xué)
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1