字庫部件壓縮方法及裝置與流程
2023-10-06 12:51:04 5
本發明涉及計算機文字處理
技術領域:
,尤其涉及一種字庫部件壓縮方法及裝置。
背景技術:
:隨著網際網路移動化,智慧型手機、平板電腦和其他移動網際網路終端層出不窮,數字出版、無紙閱讀和移動閱讀的用戶群也逐漸壯大,為了提供友好的顯示界面,目前大部分設備都採用字庫來存儲漢字。字庫中通常存儲有成千上萬個字符,每個字符都有其對應的編碼,每個字符都是由偏旁、部首等組合而成的,這些偏旁、部首等統稱為部件,為了實現字符的正常顯示,在字庫中還需要保存每個字符包含的部件的編碼以及每個部件的輪廓信息,從而導致字庫的整體數據量較大,需要佔用很大的存儲空間,使得字庫在實際應用、傳輸等方面受到了局限。技術實現要素:本發明提供一種字庫部件壓縮方法及裝置,用以解決現有技術中字庫佔用的存儲空間較大的技術問題。本發明提供一種字庫部件壓縮方法,包括:獲取字庫中各個字符包含的部件的編碼信息;獲取所述字庫中各個字符的筆順信息;根據各個字符的筆順信息以及各個字符包含的部件的編碼信息,確定各字符中包含的各個部件的筆順信息;根據部件的筆順信息,對字庫中的各個部件進行相似性合併。如上所述的方法,優選的是,根據各個字符的筆順信息以及各個字符包含的部件的編碼信息,確定各字符中包含的各個部件的筆順信息,包括:根據各個字符中的部件的編碼信息,獲取部件的輪廓信息;根據各個部件的所述輪廓信息,確定各個部件的筆畫數;根據所述各個字符的筆順信息以及字符中各個部件的筆畫數,確定字符中包含的各個部件的筆順信息。如上所述的方法,優選的是,根據部件的筆順信息,對字庫中的各個部件進行相似性合併,包括:將筆順信息相同的部件添加到同一聚類中;根據部件的輪廓信息,確定每一聚類中各部件之間的相似度;在同一聚類中,若至少兩個部件之間的相似度滿足預設條件,則將所述至少兩個部件進行合併,並建立部件的原始編碼信息和合併後的編碼信息之間的對應關係。如上所述的方法,優選的是,在確定各字符中包含的各個部件的筆順信息之後,還包括:根據各個部件的筆順信息,確定各個部件的序列碼,所述序列碼包括字形碼及序號碼,其中,筆順信息相同的部件對應的字形碼相同,對應的序號碼不同;建立部件的序列碼與編碼信息之間的對應關係;相應的,將筆順信息相同的部件添加到同一聚類中,包括:根據各個部件的序列碼,將字形碼相同的部件添加到同一聚類中。如上所述的方法,優選的是,在建立部件的原始編碼信息和合併後的編碼信息之間的對應關係之後,還包括:刪除原始編碼信息對應的部件的輪廓信息;將字庫中存儲的原始部件編碼信息替換為合併後的部件編碼信息。本發明還提供一種字庫部件壓縮裝置,包括:第一獲取模塊,用於獲取字庫中各個字符包含的部件的編碼信息;第二獲取模塊,用於獲取所述字庫中各個字符的筆順信息;確定模塊,用於根據各個字符的筆順信息以及各個字符包含的部件的編碼信息,確定各字符中包含的各個部件的筆順信息;合併模塊,用於根據部件的筆順信息,對字庫中的各個部件進行相似性合併。如上所述的裝置,優選的是,所述確定模塊,具體用於:根據各個字符中的部件的編碼信息,獲取部件的輪廓信息;根據各個部件的所述輪廓信息,確定各個部件的筆畫數;根據所述各個字符的筆順信息以及字符中各個部件的筆畫數,確定字符中包含的各個部件的筆順信息。如上所述的裝置,優選的是,所述合併模塊,具體用於:將筆順信息相同的部件添加到同一聚類中;根據部件的輪廓信息,確定每一聚類中各部件之間的相似度;在同一聚類中,若至少兩個部件之間的相似度滿足預設條件,則將所述至少兩個部件進行合併,並建立部件的原始編碼信息和合併後的編碼信息之間的對應關係。如上所述的裝置,優選的是,所述確定模塊還用於:在確定各字符中包含的各個部件的筆順信息之後,根據各個部件的筆順信息,確定各個部件的序列碼,所述序列碼包括字形碼及序號碼,其中,筆順信息相同的部件對應的字形碼相同,對應的序號碼不同;建立部件的序列碼與編碼信息之間的對應關係;相應的,將筆順信息相同的部件添加到同一聚類中,包括:根據各個部件的序列碼,將字形碼相同的部件添加到同一聚類中。如上所述的裝置,優選的是,所述合併模塊還用於:在建立部件的原始編碼信息和合併後的編碼信息之間的對應關係之後,刪除原始編碼信息對應的部件的輪廓信息;將字庫中存儲的原始部件編碼信息替換為合併後的部件編碼信息。本發明提供的字庫部件壓縮方法及裝置,通過獲取字庫中各個字符包含的部件的編碼信息以及所述字庫中各個字符的筆順信息,根據各個字符的筆順信息以及各個字符包含的部件的編碼信息,確定各字符中包含的各個部件的筆順信息,並根據部件的筆順信息,對字庫中的各個部件進行聚類並進行相似性合併,能夠有效減少字庫中的部件的個數,減少了部件佔用的存儲空間,有效減少了字庫的整體數據量,且簡單易行、復用性較好,有利於字庫的應用和傳輸。附圖說明圖1為本發明實施例一提供的字庫部件壓縮方法的流程圖;圖2為本發明實施例一提供的字庫部件壓縮方法中字符「齠」的部件組成示意圖;圖3為本發明實施例一提供的字庫部件壓縮方法中字符「鰠」的部件組成示意圖;圖4為本發明實施例一提供的字庫部件壓縮方法中部件庫a中的部分部件的示意圖;圖5為本發明實施例一提供的字庫部件壓縮方法中確定各個部件的筆順信息的流程圖;圖6為本發明實施例一提供的字庫部件壓縮方法中幾組筆順信息相同的部件的示意圖;圖7為本發明實施例二提供的字庫部件壓縮方法的流程圖;圖8為本發明實施例三提供的字庫部件壓縮裝置的結構框圖。具體實施方式為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。實施例一本發明實施例一提供一種字庫部件壓縮方法。圖1為本發明實施例一提供的字庫部件壓縮方法的流程圖。如圖1所示,本實施例中的方法,可以包括:步驟101、獲取字庫中各個字符包含的部件的編碼信息。具體地,本實施例中的方法可以適用於手寫風格的字庫,所述字庫可以為truetype壓縮字庫,也可以為非壓縮的truetype字庫,當然,也可以是其它類型的字庫,本實施例對此不作限制。字庫中可以包括多個字符,每個字符可能由一個或者多個部件組成,在 本步驟中,可以獲取字庫中所有字符包含的部件的編碼信息,字庫中每個部件的編碼信息都是唯一的。從字庫中獲取各個字符包含的部件的編碼信息之後,可以製作所有字符的組成信息表,組成信息表中包括每一字符的unicode編碼和組成該字符的一個或者多個部件的編碼信息。針對一個包括多個部件的字符來說,所述多個部件的編碼信息的排列順序根據部件在字符中的位置來確定,漢字書寫原則為從左到右、從上到下,因此,各部件編碼信息的排列順序也為從左到右、從上到下依次排列。表1為本發明實施例一提供的字庫部件壓縮方法中字符的組成信息表示例。表1字符的組成信息表字符編碼部件編碼部件編碼部件編碼部件編碼4f658000778c———4e07800075d2———4f2b80006f7280006fda80007b0a80006f709f86800072c6800076ba——9ccb8000706a800073d980007721—…………………………如表1所示,每個字符可能包括一個或者多個部件。多個部件的編碼信息的排列遵循漢字書寫的筆順原則。下面以兩個例子來進行說明。圖2為本發明實施例一提供的字庫部件壓縮方法中字符「齠」的部件組成示意圖。圖3為本發明實施例一提供的字庫部件壓縮方法中字符「鰠」的部件組成示意圖。圖2和圖3中的數字和字母用於表示字符或者部件的編碼信息。如圖2所示,字符9f86(齠)包括部件800072c6和部件800076ba,按照漢字從左至右的書寫原則,應該先寫部件800072c6再寫部件800076ba,因此,在表1中,部件800072c6排在800076ba前面。如圖3所示,字符9ccb(鰠)包括部件8000706a、部件800073d9和部件80007721,則按照漢字從左至右、從上至下的書寫原則,表1中的部件按照8000706a、800073d9、80007721依次排列。為了便於描述,可以在獲取字庫中所有部件的編碼信息後,形成部件庫 a,部件庫a中可以包括字庫中所有部件的編碼信息以及對應的輪廓信息,其中,所述輪廓信息可以是矢量圖形數據,也可以是點陣數據。圖4為本發明實施例一提供的字庫部件壓縮方法中部件庫a中的部分部件的示意圖。如圖4所示,數字代表部件的編碼信息,數字下方的圖案代表部件的輪廓信息。每個部件都有一個編碼信息,同時對應一個輪廓信息,每個部件的編碼信息都是唯一的,但是,不同部件的輪廓可能會很相似,甚至可以完全重合。步驟102、獲取所述字庫中各個字符的筆順信息。具體地,可以首先獲取字庫中每個字符的編碼信息,所述字符的編碼信息可以為unicode編碼,然後根據字符的unicode編碼查找所述字符對應的筆順信息。unicode編碼與筆順信息的對應關係屬於現有技術,此處不再詳述。或者,字符的筆順信息也可以由人工輸入。本實施例中筆順信息可以採用漢字筆順序號式表示,其中,橫、豎、撇、點、折五個基本筆畫的序號可以分別用數字1、2、3、4、5表示,另外,提歸為橫,豎鉤歸為豎,捺歸為點,各種折筆歸為折,這樣,可以用數字序列來表示每個字符的筆順信息,方便後續處理。步驟103、根據各個字符的筆順信息以及各個字符包含的部件的編碼信息,確定各字符中包含的各個部件的筆順信息。圖5為本發明實施例一提供的字庫部件壓縮方法中確定各個部件的筆順信息的流程圖。如圖5所示,可以通過下述方法來確定字符中包含的各個部件的筆順信息:步驟1031、根據各個字符中的部件的編碼信息,獲取部件的輪廓信息。步驟1031可以在步驟102之後執行,當然,也可以在步驟102之前執行,例如在步驟101的同時執行,本實施例對此不作限制。步驟1032、根據各個部件的所述輪廓信息,確定各個部件的筆畫數。具體地,每一個筆畫都由一個閉合的迴路組成,通過確定部件中的閉合迴路的個數,就可以確定部件的筆畫數。除了步驟1031和步驟1032給出的方法以外,還可以通過其它方式確定各個部件的筆畫數,例如,可以通過人工輸入的方式等。步驟1033、根據所述各個字符的筆順信息以及字符中各個部件的筆畫數,確定字符中包含的各個部件的筆順信息。具體地,假設一個字符由i個部件組成,每個部件的筆畫數分別為n1、n2……ni,則該字符中前n1個筆畫的信息為第一個部件的筆順信息,第n1+1至第n2個筆畫的信息為第二個部件的筆順信息,依次類推。圖2中顯示的字符「齠」的筆順信息為2121345253251,而第一個部件800072c6的筆畫數是8,則部件800072c6的筆順信息為21213452,第二個部件800076ba的筆畫數為5,則部件800076ba的筆順信息為53251。類似的,圖3中顯示的字符的「鰠」的筆順信息為35251211544251214,其所包含的三個部件的筆畫數分別為:8、3、6,則三個部件的筆順信息分別為:35251211、544和251214。在獲取各個部件的筆順信息後,可以將部件的編碼信息與部件的筆順信息對應存儲起來。表2為圖2和圖3所示字符中的部件的筆順信息表。表2圖2和圖3中部件的筆順信息表部件的編碼信息部件的筆順信息800072c621213452800076ba532518000706a35251211800073d954480007721251214步驟104、根據部件的筆順信息,對字庫中的各個部件進行相似性合併。具體地,在某些對字符精度要求不高的情況下,筆順信息相同的多個部件可以合併為一個部件,即從所有筆順信息相同的部件中挑選一個,其餘的部件均替換為被挑選出的部件;在某些對字符精度要求較高的情況下,可以在筆順信息相同的多個部件中,選擇相似度較高的部分部件進行合併。圖6為本發明實施例一提供的字庫部件壓縮方法中幾組筆順信息相同的部件的示意圖。如圖6所示,編碼為5df100、5df101、5df102、5df103的部件的筆順信息相同,這四個部件可以合併為一個,例如,僅保留部件5df103的編碼信息和輪廓信息,將部件5df100、5df101、5df102的編碼信息替換 為5df103。將5df100、5df101、5df102、5df103合併為一個部件之後,只需要佔用一個部件的存儲空間即可,相對於現有技術來說,有效節省了字庫的整體數據量。表3為圖6中部分部件的編碼替換表。表3部分部件的編碼替換表部件的原始編碼信息合併後的編碼信息2ea1012ea10053c80253c80153c80353c80153c80053c801592700592701本實施例提供的字庫部件壓縮方法,通過獲取字庫中各個字符包含的部件的編碼信息以及所述字庫中各個字符的筆順信息,根據各個字符的筆順信息以及各個字符包含的部件的編碼信息,確定各字符中包含的各個部件的筆順信息,並根據部件的筆順信息,對字庫中的各個部件進行相似性合併,能夠有效減少字庫中的部件的個數,減少了部件佔用的存儲空間,有效減少了字庫的整體數據量,且簡單易行、復用性較好,有利於字庫的應用和傳輸。實施例二本發明實施例二提供一種字庫部件壓縮方法。本實施例是在實施例一提供的技術方案的基礎上,通過聚類來實現部件的合併。圖7為本發明實施例二提供的字庫部件壓縮方法的流程圖。如圖2所示,本實施例中的方法,可以包括:步驟201、獲取字庫中各個字符包含的部件的編碼信息。步驟202、獲取所述字庫中各個字符的筆順信息。步驟203、根據各個字符的筆順信息以及各個字符包含的部件的編碼信息,確定各字符中包含的各個部件的筆順信息。步驟201至步驟203與實施例一中的步驟101至步驟103類似,此處不再贅述。本實施例中,優選的是,在步驟203中確定各字符中包含的各個部件的 筆順信息之後,還可以根據各個部件的筆順信息,確定各個部件的序列碼,所述序列碼可以包括字形碼及序號碼,其中,筆順信息相同的部件對應的字形碼相同,對應的序號碼不同,序號碼用於區分同一筆順信息的不同部件,每一個部件具有唯一的序列碼,這樣可以形成部件庫b。步驟204、將筆順信息相同的部件添加到同一聚類中。具體地,不同的部件可能具有相同的筆順信息,可以將這些筆順信息相同的部件添加到同一聚類中。以圖6為例,可以將部件5df100、5df101、5df102、5df103添加到一個聚類中,將部件2ea100、2ea101、2ea102、2ea103添加到另一個聚類中。相應的,如果在步驟203之後,形成了部件庫b,則在本步驟中,可以根據部件庫b中的各個部件的序列碼,將字形碼相同的部件添加到同一聚類中,從而快速、準確地實現相同筆順信息的部件的聚類。步驟205、根據部件的輪廓信息,確定每一聚類中各部件之間的相似度。按照兩部件的輪廓信息對應圖像像素點的匹配程度來確定其相似度,匹配程度越高其相似度越高,例如,若兩個部件的輪廓信息有90%是重合的,則可以認為相似度為90%。步驟206、在同一聚類中,若至少兩個部件之間的相似度滿足預設條件,則將所述至少兩個部件進行合併,並建立部件的原始編碼信息和合併後的編碼信息之間的對應關係。所述預設條件可以根據實際需要來設置,例如,所述預設條件可以為:所述至少兩個部件中,任意兩部件之間的相似度均大於90%。當滿足預設條件後,所述至少兩個部件可以合併為一個部件。若不滿足預設條件,則不進行合併。將至少兩個部件合併,具體可以為:在所述至少兩個部件中,選取其中一個作為待替換部件,將其餘部件的編碼信息替換為所述待替換部件的編碼信息。此外,還可以建立這些部件的原始編碼信息和合併後的編碼信息的對應關係,還可以刪除原始編碼信息對應的輪廓信息,以減少存儲空間。本實施例提供的字庫部件壓縮方法,通過筆順信息對部件進行聚類,能夠快速、準確地實現部件之間的合併,提高了字庫部件壓縮的效率,同時也 可以減少人工開發的工作量,降低成本,提高開發效率。實施例三本發明實施例三提供一種字庫部件壓縮裝置。圖8為本發明實施例三提供的字庫部件壓縮裝置的結構框圖。如圖8所示,本實施例中的裝置,可以包括:第一獲取模塊301,用於獲取字庫中各個字符包含的部件的編碼信息;第二獲取模塊302,用於獲取所述字庫中各個字符的筆順信息;確定模塊303,用於根據各個字符的筆順信息以及各個字符包含的部件的編碼信息,確定各字符中包含的各個部件的筆順信息;合併模塊304,用於根據部件的筆順信息,對字庫中的各個部件進行相似性合併。本實施例中的字庫部件壓縮裝置,可以用於執行實施例一所述的字庫部件壓縮方法,其具體實現原理與實施例一類似,此處不再贅述。本實施例提供的字庫部件壓縮裝置,通過獲取字庫中各個字符包含的部件的編碼信息以及所述字庫中各個字符的筆順信息,根據各個字符的筆順信息以及各個字符包含的部件的編碼信息,確定各字符中包含的各個部件的筆順信息,並根據部件的筆順信息,對字庫中的各個部件進行相似性合併,能夠有效減少字庫中的部件的個數,減少了部件佔用的存儲空間,有效減少了字庫的整體數據量,有利於字庫的應用和傳輸。進一步的,所述確定模塊303,具體可以用於:根據各個字符中的部件的編碼信息,獲取部件的輪廓信息;根據各個部件的所述輪廓信息,確定各個部件的筆畫數;根據所述各個字符的筆順信息以及字符中各個部件的筆畫數,確定字符中包含的各個部件的筆順信息。進一步的,所述合併模塊304,具體可以用於:將筆順信息相同的部件添加到同一聚類中;根據部件的輪廓信息,確定每一聚類中各部件之間的相似度;在同一聚類中,若至少兩個部件之間的相似度滿足預設條件,則將所述至少兩個部件進行合併,並建立部件的原始編碼信息和合併後的編碼信息之間的對應關係。進一步的,所述確定模塊303還可以用於:在確定各字符中包含的各個部件的筆順信息之後,根據各個部件的筆順信息,確定各個部件的序列碼,所述序列碼包括字形碼及序號碼,其中,筆順信息相同的部件對應的字形碼相同,對應的序號碼不同;建立部件的序列碼與編碼信息之間的對應關係;相應的,將筆順信息相同的部件添加到同一聚類中,包括:根據各個部件的序列碼,將字形碼相同的部件添加到同一聚類中。進一步的,所述合併模塊304還可以用於:在建立部件的原始編碼信息和合併後的編碼信息之間的對應關係之後,刪除原始編碼信息對應的部件的輪廓信息;將字庫中存儲的原始部件編碼信息替換為合併後的部件編碼信息。最後應說明的是:以上各實施例僅用以說明本發明的技術方案,而非對其限制;儘管參照前述各實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本發明各實施例技術方案的範圍。當前第1頁12