專利名稱::字庫的存儲與訪問方法
技術領域:
:本發(fā)明涉及文字處理領域,尤其涉及字庫的存儲和訪問方法。
背景技術:
:從計算機誕生以來,文字處理就是計算機所要完成的主要任務之一,文字顯示則是文字處理的ー個重要方面。計算機在做文字顯示的過程中,需要根據用戶的某種輸入方法轉換得到的文字編碼從存儲字形數據的字庫中提取相應文字的字形數據,進而由計算機根據這些字形數據在顯示終端或輸出設備上描述或輸出文字的字型,從而實現文字的顯示或輸出。從上面的說明可以看出,文字顯示或輸出主要涉及兩方面的內容,ー是文字編碼,ニ是字形描述數據。文字編碼是溝通用戶與計算機之間的ー個橋梁,計算機只有通過文字編碼才能“讀懂”用戶所輸入的信息,處理用戶所需要的文字。在現實生活中,世界各地有成百種不同類型的語言文字,應用到計算機上的常用語言文字也大約有三十多種。針對不同種類文字的文字編碼不具有統ー性的問題,Unicode協會提出了名稱為Unicode的字符編碼標準。該字符編碼標準為世界上各種語言文字中的每個字符設定了統ー并且唯一的ニ進制編碼,以滿足跨語言、跨平臺進行文本交換、處理的要求。Unicode后來又與國際標準化組織所提出的ISO10646相合并,基本解決了多語言文字編碼統一性的問題。針對字形數據,目前常見實現方式是在計算機中保存多個不同語言文字的字庫。字庫就是對文字及其它字符的數字化,存儲了每個文字字形的集合,定義了文字輸出的形狀等。如果在ー個文檔中調用多種文字字符,需要根據所用的語言種類從相應種類文字的字庫中調用字符。如果所在計算機上沒有安裝相應種類文字的字庫,則有可能無法顯示該文字或者可能會顯示亂碼。而且隨著互聯網和嵌入式技術的發(fā)展,人們可以隨時隨地利用身邊的各種計算設備(如手機、掌上電腦,智能家電等)來訪問網絡上的各種資源,或者使用多種語言文字與網絡上的其他用戶進行交互,或者這些設備之間進行交互。在不同的語言環(huán)境及其所使用的不同設備環(huán)境中進行文字處理面臨著新的挑戰(zhàn),這是由于各種移動設備以及嵌入式設備的資源有限,并且使用各種不同的操作系統,管理和維護用戶所使用的所有終端設備上的所有字庫文件,并確保無縫地跨平臺的信息交互是ー項非常艱巨的任務。例如,在某個終端上如果沒有所需文字所對應的字庫,則無法正常顯示該文字。此外,在文字處理時,使用多個獨立的字庫文件既占用了大量的存儲空間,又増加了字庫的檢索時間,這對于資源有限的嵌入式應用平臺有很多不利的影響。鑒于Unicode標準已經對各種文字的文字編碼做了統一分配,因此本領域技術人員想到將Unicode標準中的文字編碼與用于描述文字形狀的字形數據(字形數據中描述文字形狀的方式有多種,如點陣式、向量式、曲線式等)相結合,從而得到ー個包含多語言所有文字的所有字符的字庫來適應新的應用環(huán)境中。這種字庫也可被稱為多語言字庫,例如美國微軟公司委托蒙那公司制作的MonotypeArial0該多語言字庫為姆個Unicode編碼安排了對應的字形數據。但其中也存在ー些問題,比如UniCode2.0中對常用漢字字符集定義時,沒有為某些漢字字形在不同國家或地區(qū)使用的具有微小差異的同一文字分配不同的編碼,例如,如圖I所示,漢字“牙”在Unicode標準中用一個編碼“7259”表示,但實際上,中文簡體、中文繁體、日文、韓文中的“牙”字的字形各不相同。因此,在現有的多語言字庫中,ー個Unicode碼只對應ー種字形數據,對于前述“牙”字這種情況就只能從四種字形的字形數據中缺省選擇ー種放入所述多語言字庫中。但在中文文本中出現日文的“牙”字顯然不能滿足用戶的要求。而如果在多語言字庫中,允許ー個Unicode碼對應ー種以上的字形數據,又會遇到容易混淆的問題。例如,當用戶輸入7259編碼后,如果沒有其他的輔助信息,計算機無法知道是要調用中文簡體、中文繁體、日文、韓文中的哪ー個“牙”字的字形數據。另外,由于已有的不同文字的字形數據通常由不同的廠商提供,因此在風格、字體、大小、字間距等與字型有關的信息上存在較大的差異。當在同一文本中出現不同種類文字的字符時,這種差異會影響文本的總體美觀。而且,不同廠商所提供的字形數據的坐標通常也不相同,這使得不同種類文字字符之間存在無法對齊的現象,也影響了文本的美觀。
發(fā)明內容本發(fā)明的目的在于克服上述現有技術的缺陷,提供一種字庫的存儲方法,不僅可以節(jié)省字庫本身所占的存儲空間,而且可以靈活地對字庫進行存儲和訪問。本發(fā)明的目的是通過以下技術方案實現的一方面,本發(fā)明提供了一種字庫的存儲方法,所述字庫包括字形描述符和字形描述數據,所述方法包括步驟I)為不同的字形描述數據分配不同的字形描述符,使其一一對應;步驟2)將所述字形描述符映射到其對應的文字編碼。上述的字庫存儲方法中,所述字庫可以包括多種語言文字的字形描述數據。上述的字庫存儲方法中,所述字庫可以包括對同一種文字的各種異體字的字形描述數據。上述的字庫存儲方法中,所述語言文字可以包括中文簡體、中文繁體、日文、韓文。上述的字庫存儲方法中,所述步驟2)可以將所述字形描述符映射到Unicode碼。上述的字庫存儲方法中,所述步驟2)可以將所述字形描述符映射到各種文字對應的編碼。又一方面,本發(fā)明還提供了ー種用于對以上述的字庫存儲方法所存儲的字庫進行訪問的方法,所述訪問方法主要包括將文字的當前字符編碼轉換為該文字所對應的字形描述符;根據所述字形描述符從字庫中提取出該文字所對應的字形數據。在又一個實施例中,也可以首先將文字的當前字符編碼轉換為該文字所對應的Unicode編碼;接著根據該文字的Unicode編碼與所述字形描述符的映射,得到該文字對應的字形描述符;然后根據所述字形描述符從字庫中提取出該文字所對應的字形描述數據。又一方面,本發(fā)明還提供了一種用于多語言字庫的輸入方法,所述字庫是以上述的字庫存儲方法進行存儲的,所述輸入方法包括將用戶輸入轉換為文字標識,所述文字標識包括文字的編碼和語言標志,所述語言標志標識文字所屬的語言種類;根據語言標志找到該文字編碼與所述的字形描述符的映射;根據所述字形描述符找到該文字編碼所對應的字形描述數據;返回所述字形描述數據。在上述的輸入方法中,所述文字的編碼可以為Unicode碼。與現有技術相比,本發(fā)明的優(yōu)點在于通過為不同的字形描述數據分配不同的字形描述符的方式來對字庫進行存儲,不僅節(jié)省了字庫本身的所占用的存儲空間,而且還解決了由于沒有為某些字形具有微小差異的同一文字分配不同的編碼所造成的影響文本美觀的問題。此外,還可以根據用戶或實際需求來動態(tài)地生成具有不同大小且包括不同語言的多種字庫。以下,結合附圖來詳細說明本發(fā)明的實施例,其中圖I為漢字在Unicode中的編碼示意圖;圖2為根據本發(fā)明ー個實施例的字庫的存儲方式的示意圖;圖3為根據本發(fā)明ー個實施例的訪問字庫的索引表示意圖;圖4為根據本發(fā)明又一個實施例的訪問字庫的索引表示意圖;圖5為根據本發(fā)明又一個實施例的字庫的存儲方式的示意圖;圖6為根據本發(fā)明又一個實施例的訪問字庫的索引表示意圖。具體實施例方式為了使本發(fā)明的目的,技術方案及優(yōu)點更加清楚明白,以下結合附圖通過具體實施例對本發(fā)明進ー步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。為了更好地理解本發(fā)明,在介紹本發(fā)明的實施例之前,先介紹字符(Character)和字形(Glyph)的差異。字符與字形是不同的概念。字符代表文字的本義或內涵(即字義),而字形描述的是文字的形狀。例如對于“牙”字,在不同的地區(qū)和不同的文字中字形和字音可能不同,但其含義是一祥的,在Unicode中的編碼是唯一的。又例如,“日”字,在漢字發(fā)展的不同歷史時期,其字形是不同的(例如,“鉑,日,曰,O,0”),但其字義是不變的?,F有的文字編碼方法都是對字符進行編碼,正如在GB中文字編碼標準中所述的“本標準僅涉及字符和編碼的對應關系.....”。也就是說該標準僅涉及字符和編碼的對應關系,并不對該編碼所對應的字符的字形進行規(guī)定。此字符的規(guī)范字體是由政府主管単位(如國家語委)發(fā)布的另ー種規(guī)范,但這種規(guī)范僅針對字符的“正字”(即正確標準的字形),而不對字符的其他異體字及錯體字進行規(guī)定。例如,僅規(guī)定了“匯”(正字),而沒有規(guī)定“匯”的異體字。在本發(fā)明的一個實施例中提供了一種字庫的存儲方法,該方法為不同的字形描述數據分配不同的字形描述符,使其一一對應;將所述字形描述符映射到現有的各種文字編碼。下面以包括多種語言文字的字庫的存儲為例,來對該方法進行說明。考慮到漢字編碼在Unicode中所占的比重(約70%),在本發(fā)明下面的實施例中,以中文簡體、中文繁體、日文、韓文(China、JaparuKorea統稱為CJK)中的漢字為例,來對多文字字庫的存儲方式進行說明。本領域普通技術人員應理解,本發(fā)明實施例中所提供的方法還可以適用于其他多種語言文字。一般而言,漢字在CJK中分為以下三種情況ー是同一個漢字在不同的地區(qū)中有相同的字形,如圖I中所提到的“王”字;ニ是同一個漢字在不同的地區(qū)中有不同的字形,如圖I中所提到的“牙”字;三是ー個漢字只在ー種或幾種地區(qū)文字中存在,并且在其它地區(qū)文字中不存在,如圖I中所示的中文簡、中文繁和日文中的“廣”字。現有的多文字字庫(也可以稱為多語言字庫)中,按照Unicode編碼+字形數據的存儲方式,某ー種文字的字符會集中在某一段內。在將漢字的字形數據存儲到字庫中吋,對于同一漢字在不同文字中有相同字形的情形,會出現同一個字多次重復存儲;對于同一個漢字在不同的文字中有不同的字形的情形,由于Unicode沒有為某些漢字字形在不同地區(qū)使用的具有微小差異的同一文字分配不同的編碼,如圖I所示,“牙”字在Unicode標準中只用一個編碼“7259”表示,那么可能在中文文本中會出現日文的“牙”字,這顯然難以滿足用戶需求;對于ー個漢字只在ー種或幾種文字中存在,并且在其它文字中不存在的情形,就需要將其它文字中存在且在本文字中不存在的字符以重復或空格的方式存儲,浪費了存儲空間(如圖I中繁體的“廣”字所對應的簡體字部分不存在,在字庫存儲中文簡體的字形數據時,會將該編碼以重復或空格等方式存儲)。根據本發(fā)明的一個實施例,提出了ー種多文字字庫的存儲方法,其以字形為關鍵字來存儲字庫,使字形和編碼之間可以一一對應。以漢字為例,對于滿足第一種情況的漢字(即同一個漢字在不同地區(qū)使用的是相同的字形),對該漢字的字形分配ー個唯一的編碼,也就是用ー個編碼對不同文字中的同一個漢字統ー加以表示,且在字庫中將該漢字的編碼和字形數據只存儲一次。對于滿足第二種情況的漢字(即同一個漢字在不同地區(qū)使用的是不同的字形),用不同的編碼表示同一個漢字的不同字形,并在字庫中對這些編碼和字形數據分別加以存儲。對于滿足第三種情況的漢字(即一個漢字只在ー種或幾種地區(qū)文字中存在,并且在其它地區(qū)文字中不存在),由于針對字形來進行編碼,避免為了對應編碼而對某文字中不存在的漢字使用重復或空格的方式進行存儲的情形。這樣可以減少不必要的存儲空間。以實際應用為例,據統計,現實中常用的漢字(僅以Unicode2.0為例)接近兩萬一千個,如果用中文簡體、中文繁體、日文、韓文的方式分別對這些漢字加以描述存儲,那么相應的字庫需要存儲八萬多個字。如果采用上述方式對上文提及的滿足第三種情況的漢字進行存儲,那么相應的字庫只需要存儲五萬多個字。如果在此基礎上,再對重復的字形數據只存儲一次,那么相應的字庫只需要存儲三萬三千多個。顯然,采用上述存儲方法能夠極大地節(jié)省存儲空間。圖2所示的根據本發(fā)明實施例的字庫的存儲結構的示意圖。該結構主要下面兩項ー為用于標識字符的字形數據的字形標識符GID(GlyphIdentifier),ニ是字符的字形數據。其中,GID是可以自定義的。在本實施例中,用于標識字符的編碼不再是Unicode編碼,而是根據字形自定義的GID。例如,為“牙”字這類在不同文字中的字形存在差異的字符分別定義不同的GID編碼,使得字形與其GID編碼之間具有唯一對應關系。如圖2所示,“牙”字的四種字形分別具有四個不同的GID編碼2001、2002、2003、2004。同時在不同文字中具有相同字形的字符用同一GID編碼表示,如圖2所示,用“1101”表示“王”字的字形數據。需要說明的是,以上說明中所列舉的GID編碼都只用于舉例說明之用,GID編碼的位數、數值都可以根據實際情況由相關技術人員自行設定。例如在一些實施例中,GID可以是字形數據在字庫文件中實際的存儲地址。在圖2所示的數據結構中字符的字形數據也可以有多種實現方式,如常見的點陣定義方式、輪廓化定義方式(包括直線方式與曲線方式)、骨架定義方式、中心線定義方式或其他。用戶根據實際應用情況選擇合適的字形數據表示方式。在圖2所示的字庫存儲結構中,字形與編碼間具有唯一對應關系,并且節(jié)省了存儲空間,但由于現有的大部分文字輸入、顯示及跨平臺交互中仍然是通過Unicode編碼調用相應文字的字符,因此,還需要解決如何由利用現有Unicode編碼來訪問以上述方式存儲的字庫的問題。也就是由同一Unicode碼來識別不同的GID,進而得到特定的字形數據的問題。為了解決這ー問題,除了圖2所示的字庫存儲結構外,根據本發(fā)明的一個實施例,還提供了根據Unicode編碼調用GID的索引表,也可以稱為字形映射表Gmap(Glyphmap-table)。索引表可以是ー個或者多個,姆個索引表主要包括兩個表項=Unicode編碼和GID項。在本發(fā)明的一個實施例中,如圖3所示,提供有多個索引表,其中ー個索引表對應ー種文字。以本說明書中所提到的中文繁體、中文簡體、日文、韓文為例,需要有四個索引表圖3(a)中的索引表對應中文簡體,圖3(b)中的索引表對應中文繁體,圖3(c)中的索引表對應日文,圖3(d)中的索引表對應韓文。在這些索引表中,至少包括Unicode編碼項和GID編碼項,從圖3的四個圖中可以看出Unicode編碼與GID編碼間存在對應關系,“牙”字在四個索引表中的Unicode編碼都是7259,但其GID編碼各有不同。在本發(fā)明的另ー個實施例中,也可以是ー個大的索引表,如圖4所示,其包括兩個表項=Unicode編碼和GID編碼項,分段存儲英文、中文簡體和日文等的Unicode編碼和GID編碼。在本發(fā)明的一個實施例中,上述索引表可以和圖2所示的數據結構結合在一起作為ー個字庫文件來存儲。在該文件的起始部分為索引表,包括Unicode編碼項和GID項,其中GID項可以是指示對應字形數據在字庫文件中的存儲位置的指針。在本發(fā)明的又一個實施例中,索引表和字庫文件是分離的。索引表中包括Unicode編碼項和GID項,其中GID項可以是由用戶自定義的編碼。而在字庫文件的開始部分建立包括GID和指向對應的字形描述數據的地址的指針的索引,這樣可以在更新字庫文件所包含的字形數量和字形數據的存儲位置時,不需要改變對應的GID。在本發(fā)明的又一個實施例中,索引表和字庫文件可以分布在不同的位置。例如,索引表存儲于各種終端設備上,而字庫文件存儲于可通過網絡訪問的遠程服務器上。在又一個實施例中,也可以將包括ー個包括多語言的文字的字庫文件存儲于終端設備上,而對應的各語言的索引表存儲于遠程服務器上。在用戶所使用的終端設備上可以缺省地存放其常用語言所對應的索引表。當用戶需要輸入或查看使用新的語言文件時,可以通過網絡下載該語言所對應的索引表即可。當然,在本發(fā)明的其他實施例中,也可以將二者存儲在同一計算設備的不同和/或相同的芯片或者部件中。由于用戶通常只使用很少的幾種語言,而不是使用所有的語言類型,通過上述實施例可以減少對移動終端設備不必要的資源浪費。另外,根據上文所討論的多語言字庫的存儲方法還可以根據用戶的需求或實際系統情況動態(tài)地根據Gmap動態(tài)地創(chuàng)建其對應的字庫。例如,在本發(fā)明的一個實施例中,如果一篇文檔中使用了3種語言,那么在跨平臺或多設備間傳送或交互該文檔時,可以根據這3種語言對應的Gmap動態(tài)產生只包含這3種語言的字庫,將其與文檔一起打包傳輸,這樣就可以防止由于某個設備上沒有對應的字庫而影響該文檔的閱讀。在本發(fā)明的又一個實施例中,由于移動或嵌入式設備的資源有限,用戶可以根據自己所實際使用的語言種類來定制所對應的字庫,從而減少終端設備的資源浪費。例如,用戶最常用中英文,那么只要為該用戶創(chuàng)建包括常用字符集、中文和英文的文字的字庫及其對應的Gmap就可以了。根據本發(fā)明的一個實施例,還提供了對以上述方式存儲的字庫的訪問方法。該訪問方法包括以下步驟首先,將文字的當前字符編碼轉換為該文字所對應的Unicode編碼。接著,根據該文字的Unicode編碼檢索上文所述的字形映射表,例如,圖3或圖4所示的索引表,得到該文字對應的GID編碼。最后,根據GID編碼從字庫中提取出該文字所對應的字形數據。例如,在用戶通過手機瀏覽中文網頁時,如果該網頁中的文字當前所使用的是Big5碼,首先根據對應Big5的碼表(codepage)找到該文字所對應的Unicode編碼,所述對應Big5的碼表是指Big5與Unicode編碼之間的映射;接著根據其對應的Unicode編碼從字形映射表Gmap中檢索對應于該文字的GID,然后根據GID從字庫中提取出相應的字形數據,并將其顯示在手機的屏幕上。本領域普通技術人員可以理解,可以針對各種現有的文字編碼分別設置包含其與Unicode編碼之間映射的碼表,例如包括GB和Unicode映射的碼表、Big5和Unicode之間映射的碼表等等。類似地,對于本領域的普通技術人員來說,上述字庫的訪問方法可以用于諸如文字的打印、傳輸等文字輸出。根據本發(fā)明的另ー個實施例中,提供一種基于上述的多語言字庫進行文字輸入的方法。該方法包括下列步驟通過現有的各種文字輸入方法將接收到來自用戶輸入轉換為相應的字符編碼后,將該字符編碼轉換為對應的Unicode編碼,然后利用上文所提供的字庫訪問方法從字庫中提取出相應的字形數據。下面以Windows提供的輸入法管理器-輸入法編輯器結構(InputMethodManagement-InputMethodEditor,IMM-IME)為例介紹如何進行多語言字庫的文字輸入。其中,IMM管理當前系統中的各個ME,并維護ME和應用程序之間的通信;ME將用戶輸入轉換成相應的字符編碼。在具有多語言支持的環(huán)境中,每個可以接收用戶輸入的窗ロ都包含一個輸入上下文數據結構,其中記錄與頂E有關的用戶輸入信息,IMM通過此數據結構保存和維護與IME有關的數據(例如轉換狀態(tài)、寫作串、候選列表內容等),實現與IME和應用程序的數據通信。當用戶的鍵盤輸入被轉換為鍵盤消息后,通過IMM將這些消息傳遞給當前線程所對應的頂E;然后ME根據該消息以及輸入上下文中記錄的數據,將用戶的輸入動作轉換為結果串,以字符消息的形式返回給IMM,將其放入當前窗ロ的消息隊列中。在本發(fā)明的一個實施例中,可以由IME將文字的當前字符編碼轉換為該文字所對應的Unicode編碼,在其所返回的結果串中包括對應用戶輸入的字符的Unicode編碼。然后根據上文所述的字庫的訪問方法來提取相應的字形數據。在本發(fā)明的另ー個實施例中,可以在IME向當前窗ロ返回結果串之前,將結果串中的字符編碼替換為對應的GID編碼。在本發(fā)明的一個實施例中,在多語言環(huán)境中,針對每個IME(例如,37種語言獨立的ME),可以在其將用戶的輸入轉換為對應的文字的編碼時加入對應的語言標志(LanguageTab),這樣在IME所返回的結果中包括“Unicode碼”和“Ltab”。該語言標志Ltab標識用戶當前使用的語言環(huán)境,例如CN標識中文簡體,TW標識中文繁體,JP標識日文等,其可以用于指示對哪個Gmap進行檢索。例如當用戶采用中文簡體輸入法輸入“牙”吋,“牙,,的Unicode編碼“7259”,則ME返回“CN(7259)”,根據“CN”標志來選擇圖3(a)所示的索引表來進行檢索,由索引表得到GID碼2001,再根據GID碼2001可在圖2所示的字庫中得到中文簡體的“牙”字的字形數據,從而在顯示裝置上輸出中文簡體中的“牙”字。在同一篇文檔中,如果用戶在工作過程中需要輸入日文,當其改用日文輸入法后,IME返回“JP(7259)”,根據“JP”來檢索圖3(c)所示的索引表得到GID碼2003,再根據GID碼2003可在圖2所示的字庫中得到日文的“牙”字的字形數據,從而在顯示裝置上輸出日文中的“牙”字。對于轉換成中文繁體或韓文的輸入法,有關的操作過程與前面的說明相似。當然,如果用戶輸入的是“王”字的Unicode編碼,則無論是在哪個索引表中,最終調用的GID編碼都是“1101”,這也與“王”字在四種文字中的字形都一致的情況相符。在本發(fā)明的又ー個實施例中,針對包含多種語言的文檔,在保存其信息時,可以將每個文字表示為“Ltab(Unicod碼)”或者“Ltab(GID),,,例如JP(GID)、CN(GID)等,這樣在不同的平臺上顯示該文檔時,可以根據每個文件對應的語言標志檢索相應的Gmap以便獲得對應的字形描述數據。在又一個實施例中,針對IMM-ME架構,在用戶的終端設備上可以只有其常用語言的ME,而其他語言的頂E可以放在網絡中的其他計算機上,這樣當用戶要輸入某種語言時,可以從網絡上臨時下載該語言對應的ME,將其交由本地的MM來管理,這樣即方便了用戶使用,又防止了不必要的資源消耗。應理解上述文字的表示方式僅其示意的作用,實際上用戶切換當前語言環(huán)境之前,有頂E返回的字符串中可以僅包含一個標識用戶當前語言環(huán)境的語言標志即可,在該語言標志后可以跟隨多個對應于用戶輸入的文字的Unicode碼,例如CN(7259,7E12,......)。而當用戶改變語言環(huán)境時,相應地返回標識新的語言環(huán)境的語言O值得指出的是,由于Unicode碼應用范圍廣,且可以實現跨平臺的交互,所以在本實施例中,以Unicode編碼為例,對所述索引表的內容做了詳細說明。但本領域技術人員應當了解,在一些實施例中,索引表中的Unicode編碼項也可以替換成其它的編碼。例如,在表示中文簡體的索引表中,可以用GB碼代替Unicode編碼,在中文繁體的索引表中,可以用Big5碼代替Unicode編碼,在日文的索引表中,可以用JIS碼代替Unicode編碼,在韓文的索引表中,則可以用KIX碼代替Unicode編碼。這樣,在文字輸入和輸出時可以只需檢索對應的索引表就可以了,而不必執(zhí)行轉換為Unicode編碼的步驟。例如,當用戶打開文檔、瀏覽信息時,可以根據用戶設定的條件或者在文檔或網頁上的字符集信息來顯示文字。此處所述的條件或字符集信息不僅僅包括字符的編碼,還包括用戶所使用的文字環(huán)境。所述文字環(huán)境通俗的說,就是指用戶當前希望使用何種文字。文字環(huán)境的設定可以由用戶顯式地實現,例如電視節(jié)目制作商在字幕數據的數據包包頭中設置當前字幕的文字環(huán)境的參數,也可由用戶隱式實現,如前所述的改變文字輸入法的同時就可實現文字環(huán)境的設定?;蛘呤侨缜笆龅臋C頂盒接收數字電視節(jié)目中自帶的字幕的字符編碼等。所述字符的編碼可以有多種編碼方式,如前文所述的Unicode編碼、GB碼、Big5碼、JIS碼等,只要與所述的文字環(huán)境相適應,都可應用于本發(fā)明。可根據上述用戶設定的條件或字符集信息,來調用對應的索引表,然后在該索引表中,查找與用戶所輸入的字符的編碼相對應的項,從該項中提取對應的GID碼。在得到GID碼后,就可以從字庫中提取出對應的字形數據,將這一字形數據提取出來后,可以實現后續(xù)的諸如顯示的各種操作。作為公知常識,漢字包括多種字體,如宋體、楷體、隸書、新魏等,同一個漢字在不同字體下的字形會存在差異。對于每ー種字體,都可以參照前述說明生成相應的字庫。在上述實施例中,以CJK為例,對本發(fā)明中所涉及的多文字字庫做了說明,本領域技術人員很容易理解,在上述多文字字庫的基礎上可做進ー步的擴展,將包括英文、法文、德文、阿拉伯文、西班牙文、葡萄牙文、俄文在內的多種文字添加到字庫中,從而形成多語言字庫。這ー多語言字庫對不同文字中具有相同字形的字符的字形數據只存儲一次,而對不同文字中具有不同字形的同一字符(哪怕這些字符的字形只有微小的差別)的字形數據分別加以存儲。與簡單地將各個文字的所有字符的字形數據堆積在一起所形成的多語言字庫相比,這ー多語言字庫的大小有明顯的減小。根據上述實施例中所形成的多語言字庫具有廣泛的應用范圍。例如在現有的數字電視節(jié)目中,電視節(jié)目下方的字幕通常是由電視節(jié)目制作商將字幕中的字符制成圖片后,將字幕的數據流連同電視節(jié)目的數據流ー并發(fā)送到用戶端的機頂盒中,再由機頂盒將這些數據解碼播出。在日益多語言化的今天,為了滿足不同地區(qū)觀眾的需要,電視節(jié)目制作商應當為電視節(jié)目制作多種文字的字幕,以供用戶自行選擇。但以圖片方式表示的多種文字的字幕數據的數據量很大,如果將這些字幕數據與電視節(jié)目的數據流ー并發(fā)送,可能在傳輸帶寬有限的前提下,影響電視節(jié)目本身的傳輸質量,不利于電視節(jié)目清晰、流暢地播放。而且由于電視機分辨率的不同,采用圖片的方式不適合根據分辨率進行縮放,所以存在顯示缺陷。如果在用戶端的機頂盒中添加ー個包含有本發(fā)明的多語言字庫的模塊。那么,電視節(jié)目制作商只要在電視節(jié)目的數據流中傳輸字符的編碼,根據這些編碼信息機頂盒就可以從多語言字庫中調用相應的字符,從而顯示輸出。由于字符編碼與以圖片方式表示的字符相比,在數據量上有很大程度的降低,因此不會對帶寬產生太大的負荷,對電視節(jié)目自身的傳輸也不會造成大大的影響,而且所產生的字符顯示效果會有很大的提高。而在前面的說明中已經提到,采用本發(fā)明實施例提供的存儲方法的多語言字庫的體積很小,因此對于機頂盒等存儲資源有限的裝置也不會造成太大的負擔。上文雖然以包括多種語言文字的字庫為例來說明本發(fā)明提供的字庫的存儲和訪問方法,但應指出,上述方法還可以用于包括同一種語言文字中的異體(形)字的字庫的存儲和訪問。例如,對于中文中的異體、簡體、繁體等等;印度文中的異體字、阿拉伯文中的變體、英文中的連接字等等?,F以中文為例進行說明,所述異體字是字音字義相同而字形不同的一組字例如,“日(鉑,日,曰,O,0)”。在現有的中文編碼中,采用的是字符和編碼一一對應的關系,因此無法涵蓋例如“日”的異體字的情形,只能擇其ー進行編碼,因為所有這些異體字其字義是相同的,如果是字符和編碼一一對應,那么就會出現多對一的情形。因此,在需要使用異體字的情況下,目前還無法輸入異體字或錯體字,通常的解決方法通常是采用圖片的方式,對每個異體字或錯體字分別制作相應的圖片,這在出版、教學和研究中的異體字的輸入和使用帶來了很多不便。而如果采用上述實施例所介紹的方法,就可以很方便地存儲和管理同一種文字中的異體字。這是因為在上文所介紹的方法中,為不同的字形分別分配不同的標識符,這樣就可以在ー個字庫中包含同一文字的所有異體字,例如,如圖5所示,包含了王的所有異體字“王(迂,王,任,國)”。只需要改變上文參考圖3或4所述的索引表就可以完成對異體字字庫的訪問以及異體字的輸入。以圖6所示的異體字索引表為例,例如用戶希望能顯示“王”的異體字,先將用戶輸入轉化為“王”的Unicode編碼“738B”,然后,檢索圖6所示的索引表,可到“王”的所有GID,然后根據這些GID從字庫中提取相應的字形描述數據,顯示給用戶以供其選擇。最后所應說明的是,以上實施例僅用以說明本發(fā)明的技術方案而非限制。盡管參照實施例對本發(fā)明進行了詳細說明,本領域的普通技術人員應當理解,對本發(fā)明的技術方案進行修改或者等同替換,都不脫離本發(fā)明技術方案的精神和范圍,其均應涵蓋在本發(fā)明的權利要求范圍當中。權利要求1.一種字庫的存儲方法,所述字庫包括字形描述符和字形描述數據,所述方法包括步驟I)為不同的字形描述數據分配不同的字形描述符,使其一一對應;步驟2)將所述字形描述符映射到其對應的文字編碼。2.根據權利要求I所述的存儲方法,其中所述字庫包括多種語言文字的字形描述數據。3.根據權利要求I所述的方法,其中所述字庫包括對同一種文字的各種異體字的字形描述數據。4.根據權利要求2所述的存儲方法,其中所述語言文字包括中文簡體、中文繁體、日文、韓文。5.根據權利要求2、3或4所述的存儲方法,其中步驟2)將所述字形描述符映射到Unicode碼。6.根據權利要求2或4所述的存儲方法,其中步驟2)將所述字形描述符映射到各種文字對應的編碼。7.一種用于訪問字庫的方法,所述字庫根據權利要求I所述的存儲方法進行存儲,所述訪問方法包括將文字的當前字符編碼轉換為該文字所對應的字形描述符;根據所述字形描述符從字庫中提取出該文字所對應的字形數據。8.一種用于訪問字庫的方法,所述字庫根據權利要求5所述的存儲方法進行存儲,所述訪問方法包括將文字的當前字符編碼轉換為該文字所對應的Unicode編碼;根據該文字的Unicode編碼與所述字形描述符的映射,得到該文字對應的字形描述符;根據所述字形描述符從字庫中提取出該文字所對應的字形描述數據。9.一種用于多語言字庫的輸入方法,所述字庫根據權利要求2所述的存儲方法進行存儲,所述輸入方法包括將用戶輸入轉換為文字標識,所述文字標識包括文字的編碼和語言標志,所述語言標志標識文字所屬的語言種類;根據語言標志找到該文字編碼與所述的字形描述符的映射;根據所述字形描述符找到該文字編碼所對應的字形描述數據;返回所述字形描述數據。10.根據權利要求9所述的輸入方法,其中所述文字的編碼為Unicode碼。全文摘要本發(fā)明提供一種字庫的存儲方法,所述字庫包括字形描述符和字形描述數據,所述方法包括為不同的字形描述數據分配不同的字形描述符,使其一一對應以及將所述字形描述符映射到所述文字的編碼。該方法以字形描述數據為關鍵字,為不同字形分配不同的編碼,并且所述字庫可包括多種語言文字。采用這種方法來存儲字庫即可以節(jié)省大量的存儲空間,又可以使用戶根據需求來動態(tài)調整和構建字庫。另外,該方法還可以用于存儲同一種文字中的各種異體字或錯體字。文檔編號G06F17/22GK102662926SQ20121008804公開日2012年9月12日申請日期2012年3月29日優(yōu)先權日2012年3月29日發(fā)明者黃克儉申請人:常州華文文字技術有限公司