專利名稱:一種機頂盒快速顯示矢量字體的方法
一種機頂盒快速顯示矢量字體的方法
技術(shù)領域:
本發(fā)明涉及一種嵌入式技術(shù)領域,尤其涉及一種機頂盒快速顯示矢量字體的方法。
背景技術(shù):
隨著國家數(shù)字電視的大規(guī)模普及,作為數(shù)字電視終端產(chǎn)品的數(shù)字電視機頂盒的功能也越來越強大,作為與用戶使用最多的人機交互界面也越來越多樣。用戶對不同界面下的字體大小的要求越來越多,如在電子節(jié)目指南下的7天詳細EPG數(shù)據(jù)要求字體盡量小,以便顯示更多的內(nèi)容。對于菜單要求字體盡量大,以便良好的操作等。對于傳統(tǒng)數(shù)字電視機頂盒上使用的是點陣字體,在需要放大縮小時,一般使用按比例填充的方法,造成放大后的字體出現(xiàn)嚴重的鋸齒,縮小的字體產(chǎn)生抖動,缺行的問題, 在機頂盒系統(tǒng)引入了對truetpye矢量字庫的解析,則機頂盒對文字處理上可以達到任意縮放的功能,同時加入了抗鋸齒功能,即對字體的放大和縮小后,字體保存平整光滑。但是使用矢量字體相對于點陣字體來其的處理速度會慢的多,同時造成性能下降。現(xiàn)矢量字體已廣泛的應用,使用矢量字體可以達到任意縮放?,F(xiàn)有技術(shù)提供一種面向嵌入式平臺的矢量字庫實現(xiàn)方法,見2010年01月13日公開的中國發(fā)明專利申請第 101625848公開號。該方法利用下面步驟實現(xiàn)(1)、用戶將所需顯示的目標字符集中所有字符的Unicode碼,簡稱字符碼,發(fā)送到應用程序中;O)、獲取所述需顯示目標字符集的X,y坐標位置,長度Ien和顯示方向 direction ;(3)、將所述目標字符集中的第i個字符的字符碼和用戶設定的該字符的大小傳遞給移植到嵌入式系統(tǒng)中的freetype字體引擎,所述i為自1開始的自然數(shù),且
len,該引擎通過所接受到的字符碼在新型的Truetype矢量字庫文件中找到該字符,并將找到的輪廓信息轉(zhuǎn)化成位圖信息;(4)、所述移植到嵌入式系統(tǒng)中的freetype字體引擎將第i個字符的位圖信息、該字符的大小信息渲染成第i個字符的字形信息;(5)、獲取所述第i個字符的字形信息后,調(diào)用圖形設備接口層即GDI層中字體模塊繪制接口函數(shù),在屏幕上繪制并顯示該字符;(6)、調(diào)用嵌入式系統(tǒng)中自帶的字體解碼器接口函數(shù),解碼所述第i個字符的字形信息,并通過采用本發(fā)明提供的一種顏色混合和像素點的過濾方法,將所述字形信息顯示在屏幕上;(7)、執(zhí)行i++,若i ( len,則轉(zhuǎn)到步驟(3)運行,若i > len,則結(jié)束執(zhí)行,所述字
符在屏幕中顯示完畢。后現(xiàn)有技術(shù)還提供了一種顯示矢量字體的方法和終端,如2010年08月11日公開的中國發(fā)明專利申請第101800043A公開號,其實現(xiàn)方法是讀取預先保存的當前的矢量字體的位置信息;生成所述當前的矢量字體的描述信息,并利用所述描述信息和所述當前的矢量字體的位置信息,對所述當前的矢量字體進行顯示。該方法要配合其特定的終端設備才能實現(xiàn),且顯示的速度并沒得到很好的提高。
發(fā)明內(nèi)容本發(fā)明為了解決的技術(shù)存在的問題,提供了一種機頂盒快速顯示矢量字體的方法,加速了矢量字體在機頂盒中的快速顯示。本發(fā)明是這樣實現(xiàn)的一種機頂盒快速顯示矢量字體的方法,其特征在于包括以下步驟步驟10、在機頂盒內(nèi)存中設置一字符循環(huán)緩沖區(qū);步驟20、將機頂盒所需顯示的字體,通過機頂盒freetype的程序在矢量字庫中進行查找,得到該字體的字符數(shù)據(jù),并在矢量字庫中進行解析,并進行抗鋸齒處理后存儲在所述字符循環(huán)緩區(qū)中,并記下對應字符的字符編碼和字符大??;步驟30、當機頂盒對所需字體的字符進行繪制文字時,對所述字符循環(huán)緩區(qū)中的字符數(shù)據(jù)進行查找,判斷是否有所需字符的字符編碼和字符大小數(shù)據(jù);是,則直接讀取所述字符循環(huán)緩區(qū)中對應的數(shù)據(jù)進行繪制,顯示在屏幕上;否則返回步驟20操作。本發(fā)明具有如下優(yōu)點利用一字符循環(huán)緩存沖區(qū),將機頂盒所需顯示的字體,的字符數(shù)據(jù),并在矢量字庫中進行解析,并進行抗鋸齒處理后存儲在所述字符循環(huán)緩區(qū)中,并記下對應字符的字符編碼和字符大小;當機頂盒對所需字體的字符進行繪制文字時,通過字符的字符編碼和字符大小數(shù)據(jù)進行快速查找進行顯示。本發(fā)明實現(xiàn)了機頂盒上的字體可以達到任意縮放的功能(矢量字體),同時加入了抗鋸齒功能,并加速了機頂盒矢量字體的快速顯示。
圖1為本發(fā)明方法流程示意圖。
具體實施方式參照圖1所述,一種機頂盒快速顯示矢量字體的方法,包括以下步驟步驟10、在機頂盒內(nèi)存中設置一字符循環(huán)緩沖區(qū);步驟20、將機頂盒所需顯示的字體,通過機頂盒freetype的程序在矢量字庫中進行查找,得到該字體的字符數(shù)據(jù),并在矢量字庫中進行解析,并進行抗鋸齒處理后存儲在所述字符循環(huán)緩區(qū)中,并記下對應字符的字符編碼和字符大??;步驟30、當機頂盒對所需字體的字符進行繪制文字時,對所述字符循環(huán)緩區(qū)中的字符數(shù)據(jù)進行查找,判斷是否有所需字符的字符編碼和字符大小數(shù)據(jù);是,則直接讀取所述字符循環(huán)緩區(qū)中對應的數(shù)據(jù)進行繪制,顯示在屏幕上;否則返回步驟20操作;當所述的字符循環(huán)緩沖區(qū)的字符數(shù)據(jù)溢出時,則機頂盒刪除最早的一字符數(shù)據(jù),再進行寫入操作。由于機頂盒中菜單的字體一般是常規(guī),為了提高機頂盒菜單中的矢量字體顯示的效率,也可通過如下步驟實現(xiàn)步驟40、在機頂盒內(nèi)存中設置一字符中間存儲區(qū),將機頂盒菜單中所需顯示的字體,通過機頂盒freetype的程序在矢量字庫中進行查找,得到該字體的字符數(shù)據(jù),并在矢量字庫中進行解析,并進行抗鋸齒處理后轉(zhuǎn)換為點陣字體;其中為了減少機頂盒的內(nèi)存空間,將處理后的字符數(shù)據(jù)轉(zhuǎn)換為點陣字體后,把這些點陣字體通過點陣字庫進行編碼為jpg 或者Png格式,然后存儲到所述字符中間存儲區(qū)中;步驟41、當下次機頂盒菜單需要顯示時,直接從緩沖區(qū)中找到對應的點陣字體,并進行jpg或者Png的解碼操作,最終顯示在屏幕上。上述的將字體的字符數(shù)據(jù),在矢量字體中進行解析,并進行抗鋸齒處理,具體為 機頂盒在矢量字體中獲取字體的字符數(shù)據(jù)中的輪廓數(shù)據(jù)(outline),其輪廓就是用來描述字體的基本手段,它由直線和貝塞爾(B6zier)曲線組成。貝塞爾(B6zier)曲線是一條由三個點確定的曲線,假設這三點在矢量字庫中的坐標是(Ax,Ay)、(Bx,By)和(Cx,Cy),那么曲線方程為px = (1-t) 2. Ax+2t (l_t) · Bx+t2. Cx ;py = (l_t) 2. Ay+2t (l_t) · By+t2. Cy ;其中t是作為參數(shù),0 <= t <= 1,t為浮點數(shù);假設兩點坐標是(Ax,Ay)、(Bx,By),則直線方程為(y_Ay) / (Ay-By) = (χ-Αχ) / (Ax-Bx),其中x、y為所求的值。雖然通過直線和貝塞爾(B6zier)曲線描述了字體的表現(xiàn)形式,但是由于這些通過數(shù)學方法得到的數(shù)值對于人眼來說仍然不是很合適,特別是縮放到特定的大小和分辨率的時候,字體可能變得不好看,或者不清析。因此同時需要獲得字庫中字體精調(diào)提示 (hint),Hint是一種抗鋸齒的技術(shù),用來精調(diào)字體,讓字體變得更美觀,更清析;因此將所述輪廓數(shù)據(jù)進行抗鋸齒處理。其中進行繪制處理是通過機頂盒的2D繪圖函數(shù)進行相應的繪制,程序中使用機頂盒的2D繪圖函數(shù),包括點,線,矩形框,弧線按照讀出來的輪廓數(shù)據(jù)和需要字體大小計算封閉的輪廓線的實際的需要顯示的數(shù)值,然后根據(jù)計算出來的數(shù)字在顯示緩沖區(qū)中使用2D 函數(shù)進行相應的繪制。值得一提的是由于truetpye的矢量字庫一般體積比較大,將矢量字庫應用到機頂盒中時,首先把它進行相應的壓縮,如使用7z,gz等方式進行壓縮。把壓縮后的字庫燒寫在flash存儲器上。當開機時,把flash上的字庫導入內(nèi)存并進行相應的解壓。以上所述僅為本發(fā)明的較佳實施例,凡依本發(fā)明申請專利范圍所做的均等變化與修飾,皆應屬本發(fā)明的涵蓋范圍。
權(quán)利要求
1.一種機頂盒快速顯示矢量字體的方法,其特征在于包括以下步驟步驟10、在機頂盒內(nèi)存中設置一字符循環(huán)緩沖區(qū);步驟20、將機頂盒所需顯示的字體,通過機頂盒freetype的程序在矢量字庫中進行查找,得到該字體的字符數(shù)據(jù),并在矢量字庫中進行解析,并進行抗鋸齒處理后存儲在所述字符循環(huán)緩區(qū)中,并記下對應字符的字符編碼和字符大?。徊襟E30、當機頂盒對所需字體的字符進行繪制文字時,對所述字符循環(huán)緩區(qū)中的字符數(shù)據(jù)進行查找,判斷是否有所需字符的字符編碼和字符大小數(shù)據(jù);是,則直接讀取所述字符循環(huán)緩區(qū)中對應的數(shù)據(jù)進行繪制,顯示在屏幕上;否則返回步驟20操作。
2.根據(jù)權(quán)利要求1所述的一種機頂盒快速顯示矢量字體的方法,其特征在于當所述的字符循環(huán)緩沖區(qū)的字符數(shù)據(jù)溢出時,則機頂盒刪除最早的一字符數(shù)據(jù),再進行寫入操作。
3.根據(jù)權(quán)利要求1所述的一種機頂盒快速顯示矢量字體的方法,其特征在于進一步包括,當顯示機頂盒菜單中的矢量字體時采用如下步驟步驟40、在機頂盒內(nèi)存中設置一字符中間存儲區(qū),將機頂盒菜單中所需顯示的字體,通過機頂盒freetype的程序在矢量字庫中進行查找,得到該字體的字符數(shù)據(jù),并在矢量字庫中進行解析,并進行抗鋸齒處理后轉(zhuǎn)換為點陣字體;步驟41、將所述的點陣字體存儲到所述字符中間存儲區(qū)中;步驟42、當下次機頂盒菜單需要顯示時,直接從緩沖區(qū)中找到對應的點陣字體讀取,并顯示在屏幕上。
4.根據(jù)權(quán)利要求3所述的一種機頂盒快速顯示矢量字體的方法,其特征在于所述步驟41進一步包括,將處理后的字符數(shù)據(jù)轉(zhuǎn)換為點陣字體后,把這些點陣字體通過點陣字庫進行編碼為jpg或者Png格式,然后存儲到所述字符中間存儲區(qū)中。
5.根據(jù)權(quán)利要求4所述的一種機頂盒快速顯示矢量字體的方法,其特征在于所述步驟42進一步包括,當下次機頂盒菜單需要顯示時,直接從緩沖區(qū)中找到對應的點陣字體, 并進行jpg或者Png的解碼操作,最終顯示在屏幕上。
6.根據(jù)權(quán)利要求1或3所述的一種機頂盒快速顯示矢量字體的方法,其特征在于所述的將字體的字符數(shù)據(jù),在矢量字體中進行解析,并進行抗鋸齒處理具體為機頂盒在矢量字體中獲取字體的字符數(shù)據(jù)中的輪廓數(shù)據(jù),所述輪廓數(shù)據(jù)用于描述來字體的形態(tài),輪廓數(shù)據(jù)由直線和貝塞爾曲線組成;將所述輪廓數(shù)據(jù)進行抗鋸齒處理,所述抗鋸齒是用于精調(diào)字體。
7.根據(jù)權(quán)利要求1所述的一種機頂盒快速顯示矢量字體的方法,其特征在于步驟30 中進行繪制處理是通過機頂盒的2D繪圖函數(shù)進行相應的繪制。
全文摘要
本發(fā)明提供一種機頂盒快速顯示矢量字體的方法,先在機頂盒內(nèi)存中設置一字符循環(huán)緩沖區(qū);將機頂盒所需顯示的字體,通過機頂盒freetype的程序在矢量字庫中進行查找,得到該字體的字符數(shù)據(jù),并在矢量字庫中進行解析,并進行抗鋸齒處理后存儲在所述字符循環(huán)緩區(qū)中,并記下對應字符的字符編碼和字符大??;當機頂盒對所需字體的字符進行繪制文字時,對所述字符循環(huán)緩區(qū)中的字符數(shù)據(jù)進行查找,將找到的數(shù)據(jù)直接從所述字符循環(huán)緩區(qū)中讀取出來進行繪制,顯示在屏幕上。本發(fā)明利用一字符循環(huán)緩存沖區(qū),并通過字符的字符編碼和字符大小數(shù)據(jù)進行快速查找,加速了機頂盒矢量字體的快速顯示。
文檔編號H04N21/431GK102208180SQ20111014675
公開日2011年10月5日 申請日期2011年6月2日 優(yōu)先權(quán)日2011年6月2日
發(fā)明者方立, 陳曉輝 申請人:福建新大陸通信科技股份有限公司