供用戶自定義字體的方法
2023-04-24 09:50:16 1
專利名稱::供用戶自定義字體的方法
技術領域:
:本發明涉及一種供用戶自定義字體的方法,尤其是一種讓用戶以字符圖片打包成字體文件在嵌入式系統中使用的
技術領域:
。
背景技術:
:隨著嵌入式裝置(掌上型數字助理機)的存儲容量越來越大,用戶對嵌入式裝置的功能也越來越多。其中,嵌入式裝置個人化便是其中一項受重視的功能。許多用戶喜歡用可以代表其個性的特殊字體,雖然嵌入式裝置上有很多種字型字體可供用戶下載,但仍不夠滿足一些用戶對更個性化字體的的需求,如親筆字體等。在
背景技術:
中,嵌入式裝置可以通過制定特殊的腳本(script),逐個使用圖片來顯示一些字符(character),但圖片的顯示不具備字庫顯示的基本特點。顯示這種圖片的數據也需要再特別指定圖片資源,而且這種傳統的圖片資源的顯示手法需要大量的運算,對於性能限定的嵌入式裝置不一定可以快速地使用圖片來顯示字符。因此,如何兼顧讓用戶在嵌入式裝置上可自行定義字體有不會消耗過多資源是亟待解決的問題。
發明內容本發明為解決
背景技術:
中存在的上述技術問題,而提出一種供用戶自定義字體的方法。本發明的技術解決方案是本發明為一種供用戶自定義字體的方法,其特殊之處在於該方法包含下列步驟1)提供字符圖片;2)解析字符圖片的文件名,取得字符圖片所對應的字符碼,並讀取字符圖片的文件數據;的索引;4)當用戶選擇使用字體時,根據欲顯示的字符碼,對字體文件的索引進行檢索;當檢索匹配時,從字體文件中取得對應欲顯示字符碼的字符圖片並顯示。上述步驟3)的具體步驟如下31)判斷是否有指定的欲打包字符圖片清單,若是,則進行步驟32),若否,則進行步驟33);32)解析字符圖片的文件名,取得字符圖片所對應的字符碼,並讀取字符圖片的文件數據;33)判斷是否有指定的合法目錄或路徑,若否,則回到步驟31),若是,則進行步驟34);34)掃描此合法目錄內的文件產生欲打包字符圖片清單,並進行步驟32);35)將字符圖片打包成字體文件,以及將字符碼及文件數據記錄在字體文件的索引;36)判斷此字體文件及其索引是否需壓縮,若否,則進行步驟37),若是,則進行步驟38);37)輸出此字體文件及其索引,接著結束此流程;38)選擇壓縮算法;39)對字體文件及其索引進行壓縮,接著進行步驟37)。上述步驟4)的具體步驟如下41)進行字體應用程式接口函數,取得字體來顯示;42)判斷所操作的字體是否為下載字體,若是,則進行步驟43),若否,則進行步驟44)43)以最近最久未使用算法查詢此字體是否己經加載到緩衝區中,若此字體已經加載到緩衝區中,則進行步驟45,若否,則進行步驟46);44)使用預設字體等等的備用方案,或是報告錯誤並以特定字符;45)取得緩衝區的數據節點,並調整LRU鍊表,進行步驟48);46)加載此字體的相關數據至緩衝區;47)判斷是否加載成功,若是,則進行步驟45),若否,則進行步驟44);48)提供下載字體數據服務。上述字符圖片的文件名包含字符碼。上述步驟1)中還包括提供對照表,對照表記錄字符圖片的文件名與字符碼的對應關係。上述步驟32)中,當字符圖片的文件名包含字符碼,則解析字符圖片的文件名便可取得字符圖片所對應的字符碼,當字符圖片的文件名不包含字符碼,則進行需要記錄字符圖片的文件名與字符碼的對應關係的對照表,並在此對照表中査詢每個對應字符圖片的字符碼。上述該字符圖片的文件數據包含字符圖片的寬度高度以及檔案偏移量。上述步驟3)中打包字體文件時,將字符圖片所公用的調色板信息和字高信息儲存在字體文件中。上述步驟3)中字體文件的索引以紅黑樹數據結構來記錄。本發明可輸入用戶製作的圖像資源作為字符圖片,並以目錄名區分字體類型,或以文件名對應上字符碼,此舉可降低使用者自定義字體的複雜度。本發明使用字體文件的索引及去除了很多冗餘的信息,避免不必要過濾和解析處理。此外,字體類型可為單位在緩衝區集中管理,避免頻繁的加載圖像資源,可提高字體顯示速度,特別是用於運算能力有限的嵌入式裝置的用戶字體的應用。此外,本發明所產生的字體文件可用於字體的統一接口函數(FONTAPI)進行操作,並不需要修改到使用字體顯示應用層的程序,從而保證了已經發布出去的應用程式能夠二進位兼容。圖1為本發明方法的步驟流程圖2為本發明顯示示意圖3為本發明方法產生字體文件及其索引的實施例步驟流程圖;圖4為本發明方法使用自定義字體的實施例步驟流程圖。具體實施方式參見圖1,供用戶自定義字體的方法包含下列步驟步驟11,提供字符圖片,例如表一所示的分別顯示"體"、"字"、"我"、"的"、"A"、"B"、"C"及"D"的8張用戶手寫字符圖片。相同類型的字符圖片可儲存於同一目錄,且目錄名稱可包含這些字符圖片的字體類型名稱。表一tableseeoriginaldocumentpage7步驟12,解析字符圖片的文件名,取得字符圖片所對應的字符碼,並讀取字符圖片的文件數據。文件數據包含字符圖片的寬度高度以及檔案偏移量(offset)。步驟13,將字符圖片打包成字體文件,以及將字符碼及文件數據記錄於字體文件的索引。其中,字體文件的索引可以具備快速查找能力的數據結構來記錄,例如紅黑樹數據結構(RedBlackTree),提高之後索引進行檢索的速度。字符圖片的文件名視需要可包含字符碼,例如在表一中,"體"字符圖片的文件名為ISN_0x4f53.bmp,"4f53"為"體"的字符碼,"D"字符圖片的文件名為ISN_68.bmp,"68"為"D"的字符碼,可加快此字體文件的索引的產生。此夕卜,進行步驟12前,還包含提供對照表,對照表記錄字符圖片的文件名與字符碼的對應關係,而進行步驟12,根據該對照表取得字符圖片所對應的字符碼。此外,步驟13,打包字體文件時,將字符圖片所公用的調色板信息和字高信息儲存在字體文件中。由此,可加速之後應用此字體文件時的檢索速度。而字體文件產生後,也可對字體文件進行壓縮,縮小其數據量。步驟14,當用戶選擇使用該字體時,根據欲顯示的字符碼,對字體文件的索引進行檢索,並在步驟15判斷檢索是否匹配。其中,當字體文件的索引以紅黑樹數據結構(RedBlackTree)來記錄時,則在步驟14可使用最近最久未使用算法(LeastRecentlyUsed,LRU),並搭配緩衝區來進行檢索。當檢索匹配時,在步驟16從字體文件中取得對應欲顯示字符碼的字符圖片並顯示,參見圖2,第1行及第2行顯示錶一中的8個字體,而第3行為一般標準字體。參見圖3,步驟31,判斷是否有指定的欲打包字符圖片清單,若是,則進行步驟32。若否,則在步驟33判斷是否有指定的合法目錄或路徑,若否,則回到開始步驟,若是,則在步驟34掃描此合法目錄內的文件產生欲打包字符圖片清單,並進行步驟32。步驟32,解析字符圖片的文件名,取得字符圖片所對應的字符碼,並讀取字符圖片的文件數據。其中,當字符圖片的文件名包含字符碼,則解析字符圖片的文件名便可取得字符圖片所對應的字符碼。當字符圖片的文件名不包含字符碼,則步驟32進行需要記錄字符圖片的文件名與字符碼的對應關係的對照表,並在此對照表中查詢每個對應字符圖片的字符碼。步驟35,將字符圖片打包成字體文件,以及將字符碼及文件數據記錄在字體文件的索引。字體文件的索引可使用具備快速査找能力的數據結構來記錄,例如紅黑樹數據結構(RedBlackTree),提高之後此索引進行檢索的速度。步驟36,判斷此字體文件及其索引是否需壓縮,若否,則進行步驟37輸出此字體文件及其索引,接著結束此流程。若此字體文件及其索引需壓縮,則在步驟38選擇壓縮算法,而在步驟39對字體文件及其索引進行壓縮,接著進行步驟37。參見圖4,步驟41,進行字體應用程式接口函數(FontAPI),取得字體來顯示。此字體應用程式接口函數可為嵌入式系統中內建統一的接口函數,如表二所示的C或0++語言中的字型接口函數。由於通過本發明方法來製作的字體文件可使用字體的統一接口函數(FONTAPI)進行操作,並不需要修改到使用字體顯示應用層的程序,從而保證了己經發布出去的應用程式能夠二進位兼容(binarycompatible)。由此,可滿足用戶對字型的任意特殊的自定義要求,且在編輯和製作自定義過程也不再需要複雜的字體專業描述軟體。表二與字型相關的接口函數1USHORTGetCharWidth(USHORTch,USHORTfonttype)2USHORTGetFontHeight(USHORTfonttype)3USHORTGetFon她trix(USHORTch,PUCHARbuffer,USHORTfonttype)4USHORTWriteChar(SHORTx,SHORTy,USHORTch,USHORToperate)步驟42,判斷所操作的字體是否為下載字體,若是,則進行步驟43,若否,則進行步驟44使用預設字體等等的備用方案,或是報告錯誤並以特定字符,例如"?"替換顯示等。若所操作的字體為下載字體,則在步驟43以最近最久未使用(LRU)算法査詢此字體是否已經加載到緩衝區中。若此字體已經加載到緩衝區中,則進行步驟45,若否,則進行步驟46加載此字體的相關數據至緩衝區,並在步驟47判斷是否加載成功,若是,則進行步驟45,若否,則進行步驟44。在步驟45取得緩衝區的數據節點,並調整LRU鍊表,接著在步驟48提供下載字體數據服務,顯示出圖2所示的畫面。通過上述實施例,可說明本發明可輸入用戶製作的圖像資源作為字符圖片,並以目錄名區分字體類型,或以文件名對應上字符碼,此舉可降低使用者自定義字體的複雜度。本發明使用字體文件的索引及去除了很多冗餘的信息,避免不必要過濾和解析處理。此外,字體類型可為單位在緩衝區集中管理,避免頻繁的加載圖像資源,可提高字體顯示速度,特別是用於運算能力有限的嵌入式裝置的用戶字體的應用。此外,本發明所產生的字體文件可用於字體的統一接口函數(FONTAPI)進行操作,並不需要修改到使用字體顯示應用層的程序,從而保證了已經發布出去的應用程式能夠二進位兼容。權利要求1、一種供用戶自定義字體的方法,其特徵在於該方法包含下列步驟1)提供字符圖片;2)解析字符圖片的文件名,取得字符圖片所對應的字符碼,並讀取字符圖片的文件數據;3)將字符圖片打包成字體文件,以及將字符碼及文件數據記錄於字體文件的索引;4)當用戶選擇使用字體時,根據欲顯示的字符碼,對字體文件的索引進行檢索;當檢索匹配時,從字體文件中取得對應欲顯示字符碼的字符圖片並顯示。2、根據權利要求l所述的一種供用戶自定義字體的方法,其特徵在於所述步驟3)的具體步驟如下31)判斷是否有指定的欲打包字符圖片清單,若是,則進行步驟32),若否,則進行步驟33);32)解析字符圖片的文件名,取得字符圖片所對應的字符碼,並讀取字符圖片的文件數據;33)判斷是否有指定的合法目錄或路徑,若否,則回到步驟31),若是,則進行步驟34);34)掃描此合法目錄內的文件產生欲打包字符圖片清單,並進行步驟32);35)將字符圖片打包成字體文件,以及將字符碼及文件數據記錄在字體文件的索引;36)判斷此字體文件及其索引是否需壓縮,若否,則進行步驟37),若是,則進行步驟38);37)輸出此字體文件及其索引,接著結束此流程;38)選擇壓縮算法;39)對字體文件及其索引進行壓縮,接著進行步驟37)。3、根據權利要求2所述的一種供用戶自定義字體的方法,其特徵在於所述步驟4)的具體步驟如下41)進行字體應用程式接口函數,取得字體來顯示;42)判斷所操作的字體是否為下載字體,若是,則進行步驟43),若否,則進行步驟44)43)以最近最久未使用算法査詢此字體是否己經加載到緩衝區中,若此字體己經加載到緩衝區中,則進行步驟45,若否,則進行步驟46);44)使用預設字體等等的備用方案,或是報告錯誤並以特定字符;45)取得緩衝區的數據節點,並調整LRU鍊表,進行步驟48);46)加載此字體的相關數據至緩衝區;47)判斷是否加載成功,若是,則進行步驟45),若否,則進行步驟44);48)提供下載字體數據服務。4、根據權利要求2或3所述的一種供用戶自定義字體的方法,其特徵在於:所述字符圖片的文件名包含字符碼。5、根據權利要求4所述的一種供用戶自定義字體的方法,其特徵在於所述步驟l)中還包括提供對照表,對照表記錄字符圖片的文件名與字符碼的對應關係。6、根據權利要求5所述的一種供用戶自定義字體的方法,其特徵在於所述步驟32)中,當字符圖片的文件名包含字符碼,則解析字符圖片的文件名便可取得字符圖片所對應的字符碼,當字符圖片的文件名不包含字符碼,則進行需要記錄字符圖片的文件名與字符碼的對應關係的對照表,並在此對照表中查詢每個對應字符圖片的字符碼。7、根據權利要求l所述的一種供用戶自定義字體的方法,其特徵在於所述該字符圖片的文件數據包含字符圖片的寬度高度以及檔案偏移量。8、根據權利要求l所述的一種供用戶自定義字體的方法,其特徵在於所述步驟3)中打包字體文件時,將字符圖片所公用的調色板信息和字高信息儲存在字體文件中。9、根據權利要求l所述的一種供用戶自定義字體的方法,其特徵在於所述步驟3)中字體文件的索引以紅黑樹數據結構來記錄。全文摘要本發明是一種供用戶自定義字體的方法,適用於內嵌式系統,該方法包含下列步驟1)提供字符圖片;2)解析字符圖片的文件名,取得字符圖片所對應的字符碼,並讀取字符圖片的文件數據;3)將字符圖片打包成字體文件,以及將字符碼及文件數據記錄於字體文件的索引;4)當用戶選擇使用字體時,根據欲顯示的字符碼,對字體文件的索引進行檢索;當檢索匹配時,從字體文件中取得對應欲顯示字符碼的字符圖片並顯示。本發明可降低使用者自定義字體的複雜度,去除了很多冗餘的信息,避免不必要過濾和解析處理,避免頻繁的加載圖像資源,可提高字體顯示速度。文檔編號G06F17/30GK101639846SQ200910023659公開日2010年2月3日申請日期2009年8月20日優先權日2009年8月20日發明者剛劉,輝鍾,陳淮琰申請人:無敵科技(西安)有限公司