欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

字體高速緩存和元字體的制作方法

文檔序號:6511666閱讀:248來源:國知局
專利名稱:字體高速緩存和元字體的制作方法
背景技術(shù)
計算機圖形的進步允許在二維空間(例如,計算機屏幕或監(jiān)視器)中顯示三維圖形對象(例如,視頻游戲中的人物)。視頻游戲和其它使用三維圖形的應(yīng)用程序?qū)τ脩舯憩F(xiàn)得非常逼真,并且增加了用戶對該體驗的樂趣。一種用于生成三維圖形的技術(shù)包括對紋理的使用。紋理是當(dāng)在場景的三維呈現(xiàn)中繪制平面幾何結(jié)構(gòu)時通常用來模擬真實世界的紋理細(xì)節(jié)(例如,木質(zhì)、大理石紋、織物等等)的二維位圖。在一些情形中,紋理是由多個二維像素所組成的。每個像素都具有位置、顏色、亮度和濃度這些屬性。一經(jīng)創(chuàng)建,紋理即可被用于呈現(xiàn)許多類型的圖像,包括表示文本或符號的圖像。使用紋理來呈現(xiàn)二維文本一般是要比其它文本呈現(xiàn)技術(shù)更合乎需要的,因為紋理允許文本能在適當(dāng)時容易地被投影、縮放和旋轉(zhuǎn)。
字體呈現(xiàn)中所使用的紋理常常會很大。例如,因為視頻游戲只有在視覺上給人留下深刻印象時銷路才會好,所以在一個場景中使用多種有吸引力的字體常常是合乎需要的。由此,三維視頻游戲的文本呈現(xiàn)中所使用的單個紋理可包括很大的字符集(例如,文本字符、符號、和/或某種字體或文本樣式隨附的圖像)。針對國際市場的視頻游戲中字體呈現(xiàn)所使用的紋理也可能非常大。例如,包括中文文本的游戲可能需要大約5000-8000個字符。如果每個字符被預(yù)呈現(xiàn)到紋理位圖的20×20像素的部分中,則整個紋理位圖將會是1800×1800像素,或3.25兆像素。
從紋理呈現(xiàn)文本通常涉及選擇匹配所需字形在紋理中所駐留的位置的一組紋理坐標(biāo)(例如,組成字母“G”的坐標(biāo))。例如,一種用于從紋理呈現(xiàn)文本的方法涉及將字體存儲為位圖化的紋理(例如,字體位圖),并將個別字符呈現(xiàn)為屏幕空間對齊的四方塊。此技術(shù)使用圖形處理單元(GPU)或類似的硬件的本機功能,以用與GPU相關(guān)聯(lián)的硬件的全填充速率(按像素每秒計)呈現(xiàn)基于位圖的字體。此技術(shù)的一個局限在于,當(dāng)用于很大的字符集(例如,Unicode字符集)時,它可能需要超過當(dāng)前硬件能力的紋理大小,并且使用大量存儲器。此外,很難在文本的翻譯發(fā)生以前預(yù)測游戲應(yīng)為字體位圖留出多少存儲器。此外,當(dāng)有可下載內(nèi)容形式的新字體可用時,字體位圖可被更新,這導(dǎo)致進一步的存儲器分配問題以及其它問題。

發(fā)明內(nèi)容
本文中描述了用于呈現(xiàn)包括文本字符、符號以及其它字符的文本的方法和系統(tǒng)。在一些實施例中,可至少部分地經(jīng)由軟件應(yīng)用程序(例如,視頻游戲)的字體管理例程來實現(xiàn)這些方法和系統(tǒng)。字體管理例程可以從至少可被臨時地存儲在硬盤驅(qū)動器、DVD或字體管理例程可按需訪問的其它介質(zhì)上的一個或多個字體文件讀取個別字符。
在一些實施例中,字體管理例程可將所讀字符復(fù)制或加載到字體高速緩存系統(tǒng)中(例如,該系統(tǒng)可在應(yīng)用程序初始化時被創(chuàng)建為實例)。字體管理例程還可將與所讀字符相關(guān)聯(lián)的元數(shù)據(jù)和/或其它信息(例如,字符寬度、偏移量、放置信息等等)放到字符高速緩存系統(tǒng)中。由此,字體高速緩存系統(tǒng)可包括高速緩存(例如,用于存儲字符本身)和存儲與這些字符相關(guān)聯(lián)的元數(shù)據(jù)和/或其它信息的表或其它數(shù)據(jù)結(jié)構(gòu)。
在一些情形中,字體高速緩存系統(tǒng)的高速緩存是小于字體文件中的可用字符的總數(shù)的預(yù)定大小。由此,表可存儲涉及狀態(tài)的信息(例如,關(guān)于字符目前是否在高速緩存中等信息)。表(或在一些情形中是單獨的優(yōu)先級隊列)可存儲涉及存儲在高速緩存中的字符最近一次被使用的時間的信息。以此方式,當(dāng)高速緩存變滿時,字體高速緩存系統(tǒng)可根據(jù)表和/或優(yōu)先級隊列中的狀態(tài)信息來將最近最少使用的字符從字體高速緩存中清除掉。
在一些實施例中,用于呈現(xiàn)包括文本在內(nèi)的三維圖形的方法和系統(tǒng)還可包括對將一種以上字體類型結(jié)合成單個呈現(xiàn)方案的元字體的使用。例如,任何給定的元字體可將兩個或多個字體集包括在單個方案中(例如,同時包含西歐字符和東亞字符兩者的單個字體文件)。如同上述的字體文件,元字體可被存儲在硬盤驅(qū)動器、DVD或其它持久存儲介質(zhì)上,然后可由字體管理例程訪問。
在一些實施例中,字體管理例程(或另一個例程)檢查要呈現(xiàn)的輸入串的每個字符,以確定應(yīng)使用元字體的哪些字符(例如,東亞字體與西歐字體對比)。在使用字體高速緩存系統(tǒng)來實現(xiàn)元字體的情況下,如果元字體的適當(dāng)字符當(dāng)前未被存儲在高速緩存中,則字體管理例程可按需從持久存儲中將它們?nèi)〕觯允乖摯杀伙@示。


圖1所示是在一個實施例中,可在其中實現(xiàn)本發(fā)明的環(huán)境的示例的框圖。
圖2所示是在一個實施例中,數(shù)據(jù)流通過圖1的代表性環(huán)境的各組件的框圖。
圖3所示是在一個實施例中,在事件的過程中存儲在高速緩存中的字符的示例的數(shù)據(jù)圖。
圖4所示是在游戲應(yīng)用程序處所執(zhí)行的字體管理例程的示例的流程圖。
圖5所示是元字體的示例的框圖,其中每個元字體都包括兩種或多種字體。
圖6所示是在一個實施例中,從字體管理例程的觀點來看的單實體元字體的示例的數(shù)據(jù)圖。
圖7所示是在一個實施例中,元字體初始化文件的內(nèi)容的示例的數(shù)據(jù)圖。
在附圖中,相同的標(biāo)號標(biāo)識完全相同或?qū)嵸|(zhì)上相似的元素或動作。為便于討論任何特定元素或動作,標(biāo)號中的最高位數(shù)字是指首次引入該元素的圖號(例如,元素204是在圖2中首次引入和討論的)。
此揭示的一部分包含要求版權(quán)保護的素材。版權(quán)所有者不反對任何人如出現(xiàn)在專利商標(biāo)部專利文件或記錄中那樣拓制此專利文檔或?qū)@沂?包括附圖),但無論如何都保留所有版權(quán)。
具體實施例方式
現(xiàn)在將參考各實施例描述本發(fā)明。以下描述提供具體細(xì)節(jié),以供對本發(fā)明的這些實施例的全面理解并實現(xiàn)對它們的描述。但是,本領(lǐng)域技術(shù)人員將會理解,無需這些細(xì)節(jié)也可實施本發(fā)明。在其它實例中,未詳細(xì)示出或描述公知的結(jié)構(gòu)和功能,以免不必要地混淆對本發(fā)明的實施例的描述。
即使是結(jié)合對本發(fā)明的某些特定實施例的詳細(xì)描述來使用,所給出的描述中所使用的術(shù)語仍然旨在以其最寬泛的合理方式來解釋。以下某些術(shù)語甚至被強調(diào);但是旨在以任何受限方式來解釋的任何術(shù)語將如同在此具體實施方式
一節(jié)中那樣來公開和具體地定義。
I.代表性系統(tǒng)圖1和以下討論提供對可在其中實現(xiàn)本發(fā)明的代表性環(huán)境的簡要概括描述。盡管并非必需,但是本發(fā)明的各個方面是在諸如例程等通用計算機(例如,服務(wù)器計算機、無線設(shè)備、或個人/膝上計算機)所執(zhí)行的計算機可執(zhí)行指令的上下文中描述的。相關(guān)領(lǐng)域技術(shù)人員將會認(rèn)識到,本發(fā)明可用其它通信、數(shù)據(jù)處理、或計算機系統(tǒng)配置來實施,包括游戲控制臺、因特網(wǎng)裝置、手持式設(shè)備(包括個人數(shù)字助理(PDA))、可佩帶式計算機、各種各樣的蜂窩或移動電話、嵌入式計算機(包括耦合到車輛的那些)、多處理器系統(tǒng)、基于微處理器的或可編程的消費者電子設(shè)備、機頂盒、網(wǎng)絡(luò)PC、小型計算機、大型計算機等等。實際上,術(shù)語“計算機”一般指以上任何設(shè)備和系統(tǒng),以及任何數(shù)據(jù)處理器。
本發(fā)明的各個方面可在被專門編程、配置或構(gòu)造成執(zhí)行本文中詳細(xì)解釋的計算機可執(zhí)行指令中的一個或多個的專用計算機或數(shù)據(jù)處理器中具體化。本發(fā)明的各個方面還可在分布式計算環(huán)境中實施,其中任務(wù)或模塊是由通過通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備執(zhí)行的。在分布式計算環(huán)境中,各程序模塊既可位于本地記憶存儲設(shè)備中,也可位于遠(yuǎn)程記憶存儲設(shè)備中。
本發(fā)明的各個方面可被存儲或分布在包括磁或光可讀計算機盤在內(nèi)的計算機可讀介質(zhì)上,如半導(dǎo)體存儲器、納米技術(shù)存儲器、有機或光學(xué)存儲器、或其它便攜式數(shù)據(jù)存儲介質(zhì)上的微代碼。實際上,本發(fā)明的各個方面中的計算機實現(xiàn)的指令、數(shù)據(jù)結(jié)構(gòu)、屏幕顯示、以及其它數(shù)據(jù)可在一段時間里在傳播介質(zhì)(例如,電磁波、聲波等)上傳播的信號上通過因特網(wǎng)或通過其它網(wǎng)絡(luò)(包括無線網(wǎng)絡(luò))分布,或可在任何模擬或數(shù)字網(wǎng)絡(luò)(分組交換、電路交換、或其它方案)上提供。相關(guān)領(lǐng)域技術(shù)人員將會認(rèn)識到,本發(fā)明的一些部分駐留在服務(wù)器計算機上,而其它部分駐留在諸如移動設(shè)備等客戶機計算機上。
參考圖1,可在其中實施用于呈現(xiàn)包括文本在內(nèi)的三維圖形的方法和系統(tǒng)的代表性環(huán)境包括游戲控制臺100。游戲控制臺100可包括CPU 102、數(shù)據(jù)存儲104(例如,硬盤或DVD)、存儲器106、音頻/視頻端口108、以太網(wǎng)端口110、電源端口112、以及一個或多個控制器端口114。此外,游戲控制臺100可包括圖形處理單元(GPU)組件116,而該組件116可包括像素著色器120。
在一些實施例中,GPU組件116處理在游戲控制臺100上運行的游戲應(yīng)用程序118所提供的圖形。當(dāng)在游戲控制臺100上運行時,游戲應(yīng)用程序的部件(例如,字體高速緩存系統(tǒng)124)可被存儲在存儲器106中,而游戲應(yīng)用程序的其它部件(例如,字體紋理122或字體文件)可被存儲(至少暫時地)在數(shù)據(jù)存儲104中。
II.系統(tǒng)流程圖2所示是數(shù)據(jù)流通過圖1的代表性環(huán)境的各組件的框圖。在一些實施例中,數(shù)據(jù)流可由字體管理例程202管理。盡管在本文中為清楚起見,它被描述成單個例程,但是實際上字體管理例程202可包括與計算機系統(tǒng)中的硬件和軟件的各個方面交互的一個或多個功能、例程或子例程。此類子例程的例子有資源加載器例程204,它處理字體管理例程所作的加載請求。例如,資源加載器例程204可將信息從數(shù)據(jù)存儲104加載到字體高速緩存系統(tǒng)124中(這兩者先前已參考圖1進行說明)。在圖2中更詳細(xì)地示出字體高速緩存系統(tǒng)124,它可包括持有字符位圖信息(例如,以統(tǒng)一網(wǎng)格的方式)的高速緩存組件206。在使用網(wǎng)格樣式高速緩存的一些實施例中,高速緩存的大小可確定如下高速緩存大?。?高速緩存寬度/單元格大小)*(高速緩存高度/單元格大小)。字體高速緩存系統(tǒng)還可包括持有關(guān)于字符的元數(shù)據(jù)(例如,紋理坐標(biāo)、位圖中字符的ABC寬度等等)的字體信息組件208、以及控制在高速緩存溢出時從高速緩存中移除字符的順序的優(yōu)先級隊列組件。
在所示實施例中,字體管理例程202接收包含“GAME OVER”串200的輸入?yún)?shù)。在框1,字體管理例程202檢查“GAME OVER”串200中的每個字符,以確定它當(dāng)前是否被存儲在高速緩存206中。如果“GAME OVER”串的字符當(dāng)前被存儲在高速緩存206中,則在框2,字體管理例程202幫助更新優(yōu)先級隊列210,以使該字符被標(biāo)記為最近最常使用的。如果“GAME OVER”串的字符當(dāng)前未被存儲在高速緩存206中,則在框3,字體管理例程202向資源加載器例程204發(fā)出加載請求。在框4,資源加載器例程204處理加載請求,并可調(diào)用一個或多個相關(guān)聯(lián)的功能來幫助執(zhí)行此處理。例如,在游戲應(yīng)用程序的情形中,實際的加載可由游戲應(yīng)用程序本身異步地實現(xiàn)。在框5,資源加載器例程204(或相關(guān)聯(lián)的功能)為所需字符將位圖信息加載到高速緩存206中,并將關(guān)于該字符的元數(shù)據(jù)加載到字體信息表208中。加載位圖信息和元數(shù)據(jù)信息的順序在各實施例之間可有所不同(例如,先加載元數(shù)據(jù)、先加載位圖、同時加載、隨機加載等等)。
圖3示出在與確保來自“GAME”串的字符全部被加載到高速緩存中相關(guān)聯(lián)的活動序列期間,在各個點(310、312、314、316、318和320)存儲在高速緩存(諸如圖2的高速緩存206)中的字符示例。在點310,字符“A”、“R”、“C”、“X”、“L”和“+”當(dāng)前被加載到高速緩存中。盡管將它們示為按從最近最長使用到最近最少使用的順序排列,但是高速緩存中字符的排列順序可使用數(shù)種技術(shù)中的任何一種來管理,包括使用如參考圖2所描述的單獨的優(yōu)先權(quán)隊列。在確定來自“GAME”串的字符“G”302當(dāng)前不在高速緩存中以后,如在點312所示,字符“G”被加載到高速緩存中,而字符“+”被移除。
在點314,字符“G”、“A”、“R”、“C”、“X”和“L”當(dāng)前被加載到高速緩存中,且字符“G”被示為最近最常使用的字符。在確定來自“GAME”串的字符“A”304當(dāng)前在高速緩存中以后,如在點316所示,高速緩存保持不變。
在點318,字符“G”、“A”、“R”、“C”、“X”和“L”當(dāng)前被加載到高速緩存中,且字符“G”被示為最近最常使用的字符。在確定來自“GAME”串的字符“M”306當(dāng)前不在高速緩存中時,如在點320所示,字符“M”被加載到高速緩存中,而字符“L”被移除,結(jié)果“M”成為最近最常使用的字符,而“X”成為最近最少使用的字符。此過程可繼續(xù),直至所有適當(dāng)?shù)淖址家驯患虞d到高速緩存中。在一些實施例中,呈現(xiàn)例程在字符被加載到高速緩存中時即呈現(xiàn)字符。在其它實施例中,呈現(xiàn)例程等到來自串的所有字符都被加載到高速緩存中以后才執(zhí)行呈現(xiàn)。在一些實施例中,盡管一個字符接一個字符地呈現(xiàn)可能不如一個串接一個串地呈現(xiàn)那么快,但是一個字符接一個字符的呈現(xiàn)可允許字符專用的操縱,諸如將一字符沿x、y和t軸旋轉(zhuǎn)等。
圖4所示是在游戲應(yīng)用程序處執(zhí)行的字體管理例程400的示例的流程圖。在執(zhí)行此例程400以前,游戲應(yīng)用程序?qū)嵗ǜ咚倬彺婧妥煮w信息表的字體高速緩存系統(tǒng)。此外,字體高速緩存系統(tǒng)接收包括要在視頻游戲顯示器中呈現(xiàn)的字符串(例如,“Select Players”串)的輸入。在框401,例程400標(biāo)識串中的下一個字符。在判定框402,例程400確定字體信息表中是否有所標(biāo)識的字符的條目。如果在判定框402,例程400確定該字符在字體信息表中沒有條目,則很清楚,該字符的位圖信息當(dāng)前未被存儲在高速緩存中。據(jù)此,例程400前進至框406,在此,例程400從紋理取出該字符以將其加載到高速緩存中,并且在框407,例程400將與所取字符相關(guān)聯(lián)的元數(shù)據(jù)加載到字體信息表中。
但是,如果在判定框402,例程400確定該字符在字體信息表中已有條目,則例程400前進至判定框403,在此,例程400檢查字體信息表中所指示的該字符的狀態(tài)。如果字體信息表中指示該字符的狀態(tài)是就緒,則該字符當(dāng)前在高速緩存中,而例程400可前進至框404以呈現(xiàn)該字形。但是,如果在判定框403,字體信息表中指示該字符的狀態(tài)是未就緒,則其中有錯誤,而例程400結(jié)束。
在判定框405,例程400確定輸入串中是否有其它字符要被取出和/或呈現(xiàn)。若有,則例程400返回至框401以標(biāo)識串中的下一個字符。如果輸入串中沒有其它字符要被取出和/或呈現(xiàn),則例程400結(jié)束。
在一些實施例中,諸如圖4的字體管理例程400等字體管理例程可使用各種技術(shù)來提高呈現(xiàn)的速度和/或減少存儲器的使用。例如,為提高呈現(xiàn)速度,字體管理例程可使用減少應(yīng)用程序在運行時創(chuàng)建的新的頂點緩沖區(qū)的個數(shù)的功能。在一種實現(xiàn)中,字體管理例程可使用這樣一種功能,該功能被配置成從應(yīng)用程序復(fù)制每一個串并在一個類中維護它,以使頂點緩沖區(qū)僅在游戲經(jīng)由類來摧毀此串的實例時,或在該串經(jīng)由類被更新時(而不是每當(dāng)所呈現(xiàn)的文本因滾動或其它動態(tài)動作而在屏幕上被移動時)才會被刪除和重新創(chuàng)建。相反,減少存儲器的使用可涉及實現(xiàn)在每一幀將文本的頂點數(shù)據(jù)直接寫到新的頂點緩沖區(qū)中的技術(shù)。以此方式,應(yīng)用程序無需每一幀都跟蹤串存儲器或頂點緩沖存儲器。
III.元字體在一些實施例中,用于呈現(xiàn)包括文本在內(nèi)的三維圖形的方法和系統(tǒng)包括使用將一個以上字體類型結(jié)合到單個實體(例如,單個虛擬字體位圖)中的元字體。例如,如圖5中所示,任何給定的元字體(502、504、506或508)可將兩個或多個字體集包括在單個方案中(例如,同時包含西歐字符和東亞字符兩者的單個字體文件)。
盡管元字體實際上可包括多種不同的字體,但是在一些實施例中,對字體管理例程而言,它表現(xiàn)為單個實體600,如圖6中所示。以此方式,元字體可和其它任何字體一樣被使用。例如,和由上述文件管理例程所訪問的字體文件一樣,定義元字體的文件可被存儲在硬盤驅(qū)動器、DVD或其它持久存儲介質(zhì)上,然后可由字體管理例程訪問。例如,為呈現(xiàn)字體輸出,字體管理例程(或另一例程)檢查輸入串的每個字符以確定元字體的哪些字符應(yīng)被使用(例如,東亞字體還是歐洲字體)。在使用字體高速緩存系統(tǒng)來實現(xiàn)元字體的情況下,如果元字體的適當(dāng)字符當(dāng)前未被存儲在高速緩存中,則字體管理例程可按需將它們從硬盤或其它持久存儲中取出,以使該串的所有字符都可被顯示并呈現(xiàn)。例如,為確定給定字符是否在高速緩存中,字體管理例程可考慮該字符的Unicode以及適當(dāng)?shù)脑煮wID。
在一些實施例中,可使用某些技術(shù)來消除包括元字體的一種或多種字體之間的差異。例如,歐洲字體常被設(shè)計成帶有“內(nèi)部行距”,即每個字符之上有一空位(即,可顯示重音符號的地方),而來自不帶重音符號的語言的字體不含有此空位。類似的不一致性可能存在,并隨各種語言而所有不同(例如,不同的字符高度、寬度、以及間距)。為彌補不同語言中的字符之間這些類型的不一致,元字體可為元字體中的每種語言的字符使用不同大小和樣式的字體。例如,同時包括歐洲和東亞字符的元字體的位圖可使用用Arial-24繪制的歐洲字符以及用MS Gothic-20繪制的東亞字符。補償此類差異的另一個示例是添加可定位的偏移值以強制東亞字符顯示得低一些。
在一些實施例中,元字體是使用可基于如圖7中所示的元字體初始化文件700中的信息來操作的初始化例程來實現(xiàn)的。例如,初始化文件可包括元字體的名稱702(或另一標(biāo)識符),以及涉及包含關(guān)于每種不同的字體語言的元數(shù)據(jù)的一個或多個文件的第一組位置信息704(例如,用于歐洲字體信息文件的第一文件路徑,和用于東亞字體信息文件的第二文件路徑)。初始化文件還可包括涉及包含關(guān)于每一種不同的字體語言的位圖信息的一個或多個文件的第二組位置信息706(例如,用于歐洲字體位圖的第一文件路徑和用于東亞字體位圖文件的第二文件路徑)。初始化文件還可包括要應(yīng)用于元字體的一種或多種字體的偏移量信息708(例如,從字體頂部到顯示東亞字符的位置之間的像素個數(shù))。此配置的效果是游戲應(yīng)用程序可將其視為單個實體的一類虛擬字體位圖和字體信息文件,如圖6中所示。
因為初始化文件可被修改成引用不同的字體,所以應(yīng)用程序設(shè)計者可通過僅僅改變初始化文件來為所需字體標(biāo)識新的字體信息文件和字體位圖,從而更容易地修改應(yīng)用程序中所使用的字體。以此方式,設(shè)計者可修改或添加來自多種語言的字體,而無需改變應(yīng)用程序中所使用的其它字體。
IV.結(jié)論除非上下文明確要求,否則貫穿此描述和所附權(quán)利要求書,應(yīng)以與排除或窮舉意義相反的包括意義,即以“包括,但不限于”的意義來解釋詞語“由……組成”和“包括”等。此外,當(dāng)在此申請中使用詞語“本文中”、“以上”、“以下”以及類似含義的詞語時,它們應(yīng)指此申請整體,而非此申請的任何特定部分。當(dāng)所附權(quán)利要求書使用詞語“或”以引用兩個或多個項的列表時,該詞語覆蓋以下所有對詞語的詮釋列表中的任何一項、列表中的所有項、以及列表中各項的任意組合。
對本發(fā)明的實施例的以上詳細(xì)描述并不試圖窮舉或?qū)⒈景l(fā)明局限于以上所揭示的精確形式。盡管以上為說明目的描述了本發(fā)明的特定實施例和示例,但是如相關(guān)領(lǐng)域技術(shù)人員將會認(rèn)識到,在本發(fā)明的范圍內(nèi),各種等效的修改都可能的。例如,盡管是以給定順序給出各處理或框,但是替換實施例可執(zhí)行具有不同順序的步驟的例程,或使用具有不同順序的框的系統(tǒng),且一些處理或框可被刪除、移動、添加、細(xì)分、組合、和/或修改。這些處理或框中的每一個都可用各種不同方式來實現(xiàn)。同樣,盡管有時示出各處理或框是被連續(xù)地執(zhí)行的,但是這些處理或框可改為并行地執(zhí)行,或可在不同的時間執(zhí)行。在上下文允許處,以上具體實施方式
中使用單數(shù)或復(fù)數(shù)的詞語也可分別包括復(fù)數(shù)或單數(shù)。
本文中所提供的本發(fā)明的教導(dǎo)可被應(yīng)用于不一定是本文中所描述的系統(tǒng)的其它系統(tǒng)。以上所描述的各個實施例的元素和動作可被組合以提供其它實施例。例如,以上所描述的技術(shù)可與用于改進存儲器使用的問題的其它技術(shù)結(jié)合,諸如在以下共同擁有的美國專利申請中所描述的字體壓縮技術(shù)于2004年11月2日提交的題為“Texture-based Packing,such as for Packing 16-bit Pixels into Four Bits”(諸如用于將16位像素壓縮成4位等的基于紋理的壓縮)的美國專利申請第10/979,962號(代理卷號418268090US00);于2004年11月2日提交的題為“Texture-based Packing,such as for Packing 8-bit Pixels into Two Bits”(諸如用于將8位像素壓縮成2位等的基于紋理的壓縮)的美國專利申請第10/979,963號(代理卷號418268090US01);以及于2004年11月2日提交的題為“Texture-based Packing,such as for Packing 8-bitPixels into One Bits”(諸如用于將8位像素壓縮成1位等的基于紋理的壓縮)的美國專利申請第10/980,404號(代理卷號418268090US02),以上所有專利申請通過引用包含與此。如果需要,本發(fā)明的各個方面可被修改成使用以上所描述的各個參考申請中的系統(tǒng)、功能和概念,以提供本發(fā)明的其它實施例。
可根據(jù)以上具體實施方式
來對本發(fā)明進行這些及其它改變。盡管以上描述詳述了本發(fā)明的某些實施例并描述了所構(gòu)想的最佳模式,但是無論以上描述在文本上表現(xiàn)得多么詳細(xì),本發(fā)明仍能以許多方式來實施。如以上所提及,當(dāng)描述本發(fā)明的某些特征或方面時所使用的特定數(shù)據(jù)不應(yīng)被視為暗示這些術(shù)語在本文中被重新定義以被限于這些術(shù)語所相關(guān)聯(lián)的本發(fā)明的任何特定屬性、特征或方面。一般而言,所附權(quán)利要求書中所使用的術(shù)語不應(yīng)被解釋為將本發(fā)明限于本說明書中所解釋的特定實施例,除非以上具體實施方式
部分明確地定義這些術(shù)語。由此,本發(fā)明的實際范圍不僅包括所揭示的實施例,還包括實施或?qū)崿F(xiàn)所附權(quán)利要求書下的本發(fā)明的所有等效技術(shù)方案。
盡管以某種權(quán)項的形式給出本發(fā)明的某些方面,但是發(fā)明人以任意多種權(quán)項形式構(gòu)想本發(fā)明的各個方面。例如,盡管僅陳述了本發(fā)明的一個方面包含在計算機可讀介質(zhì)中,但是其它方面也可類似地包含在計算機可讀介質(zhì)中。由此,發(fā)明人保留在提交此申請以后添加其它權(quán)項的權(quán)利,以為本發(fā)明的其它方面貫徹此類其它權(quán)項形式。
權(quán)利要求
1.一種在計算機中用于管理與引起字符的顯示的應(yīng)用程序相關(guān)聯(lián)的字符的訪問和顯示的方法,其中,所述字符被排列成至少一個字體組,所述方法包括在所述計算機的存儲器中初始化第一存儲空間,其中,所述第一存儲空間包括用于所述至少一個字體組中所包括的預(yù)定個數(shù)的字符的信息的存儲;在與所述計算機相關(guān)聯(lián)的第二存儲空間中存儲與所述至少一個字體組相關(guān)聯(lián)的信息,其中,所述第二存儲空間與所述計算機的存儲器不同,且其中,所述第二存儲空間存儲所述至少一個字體組中所包括的所有字符的信息;從所述至少一個字體組接收要被呈現(xiàn)的字符的指示;確定要被呈現(xiàn)的字符當(dāng)前是否被存儲在所述第一存儲空間中;以及如果要被呈現(xiàn)的字符當(dāng)前未被存儲在所述第一存儲空間中,則將所述要被呈現(xiàn)的字符加載到所述第一存儲空間中。
2.如權(quán)利要求1所述的方法,其特征在于所述應(yīng)用程序是游戲應(yīng)用程序,所述要被呈現(xiàn)的字符由所述應(yīng)用程序在二維空間中顯示為三維字符,存儲在所述第二存儲空間中的與所述至少一個字體組相關(guān)聯(lián)的信息包括至少一個字體位圖文件以及存儲涉及所述至少一個字體組的字符的元數(shù)據(jù)的至少一個字體信息文件,所述第一存儲空間包括字體高速緩存和字體信息表,所述字體高速緩存存儲至少一個字符的位圖信息,其中,所述至少一個字符的位圖信息是從所述至少一個字體位圖文件中獲得的,所述字體信息表存儲涉及所述至少一個字符的元數(shù)據(jù),所述至少一個字符的元數(shù)據(jù)是從所述至少一個字體信息文件中獲得的,以及在呈現(xiàn)所述至少一個字符時使用存儲在所述第一存儲器中的所述至少一個字符的位圖信息和元數(shù)據(jù)。
3.如權(quán)利要求1所述的方法,其特征在于存儲在所述第二存儲空間中的與所述至少一個字體組相關(guān)聯(lián)的信息包括涉及第一字體的第一字體位圖文件,涉及第二字體的第二字體位圖文件,涉及所述第一字體的第一字體信息文件,涉及所述第二字體的第二字體信息文件;所述第一存儲空間包括字體高速緩存和字體信息表;所述字體高速緩存存儲至少一個字符的位圖信息;以及所述字體信息表存儲涉及所述至少一個字符的元數(shù)據(jù)。
4.如權(quán)利要求1所述的方法,其特征在于,所述至少一個字體組包括元字體,所述元字體由作為單個字體實體由所述應(yīng)用程序從所述第一存儲空間訪問的兩種或多種字體組成。
5.如權(quán)利要求1所述的方法,其特征在于,所述第一存儲空間包括字體高速緩存和字體信息表,其中,所述字體高速緩存為所述至少一個字體組中的一些字符存儲位圖信息,其中,所述字體信息表存儲涉及所述至少一個字體組中的一些字符的元數(shù)據(jù),且其中,確定要被呈現(xiàn)的字符當(dāng)前是否被存儲在所述第一存儲空間中包括確定要被呈現(xiàn)的字符當(dāng)前在所述字體信息表中是否有對應(yīng)的條目;以及如果要被呈現(xiàn)的字符當(dāng)前在所述字體信息表中有對應(yīng)的條目,則確定所述對應(yīng)條目的狀態(tài)。
6.如權(quán)利要求1所述的方法,其特征在于,所述第一存儲空間包括字體高速緩存和字體信息表,其中,所述字體高速緩存為所述至少一個字體組中的一些字符存儲位圖信息,其中,所述字體信息表存儲涉及所述至少一個字體組中的一些字符的元數(shù)據(jù),且其中,確定要被呈現(xiàn)的字符當(dāng)前是否被存儲在所述第一存儲空間中包括將與所述字符相關(guān)聯(lián)的位圖信息加載到所述字體高速緩存中;以及將與所述字符相關(guān)聯(lián)的元數(shù)據(jù)加載到所述字體信息表中。
7.如權(quán)利要求1所述的方法,其特征在于,還包括在加載所述至少一個字符以前從所述第一存儲區(qū)移除先前所呈現(xiàn)的字符的信息,以使所述預(yù)定個數(shù)的字符不被超過。
8.如權(quán)利要求1所述的方法,其特征在于存儲在所述第二存儲空間中的、所述字體中所包括的所有字符的信息包括至少一個字體位圖文件和存儲涉及所述至少一個字體組中的字符的元數(shù)據(jù)的至少一個字體信息文件,以及所述第一存儲空間包括字體高速緩存、字體信息表、以及優(yōu)先級隊列。
9.如權(quán)利要求1所述的方法,其特征在于,所述至少一個字體組包括元字體,所述元字體由作為單個字體實體由所述應(yīng)用程序從所述第一存儲空間訪問的兩種或多種字體組成,其中,所述兩種或多種字體中的第一種包括在呈現(xiàn)期間被偏移以在外觀上與所述兩種或多種字體中的第二種的字符保持一致的字符。
10.一種用于管理應(yīng)用程序?qū)υ诒硎疚谋局兴褂玫淖址畔⒌脑L問的系統(tǒng),所述字符信息定義被組織成一種或多種字體的字符,所述系統(tǒng)包括至少可由所述應(yīng)用程序間接訪問的存儲介質(zhì),其中,所述存儲介質(zhì)存儲一種或多種字體的所有字符的信息;用于存儲所述一種或多種字體的預(yù)定個數(shù)的字符的信息的字體高速緩存系統(tǒng),其中,所述字體高速緩存系統(tǒng)被配置成使所述應(yīng)用程序能夠比從所述存儲介質(zhì)訪問信息更快地從所述字體高速緩存系統(tǒng)訪問信息;以及被配置成用于管理所述字體高速緩存系統(tǒng)的內(nèi)容的字體管理組件,所述管理包括在要被呈現(xiàn)的字符的字符信息當(dāng)前未被存儲在所述字體高速緩存系統(tǒng)中時,將字符信息從所述第一存儲介質(zhì)加載到所述字體高速緩存系統(tǒng)中。
11.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述存儲介質(zhì)包括與所述應(yīng)用程序正在其上運行的計算機相關(guān)聯(lián)的硬盤上的空間。
12.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述第一存儲介質(zhì)包括與所述應(yīng)用程序正在其上運行的計算機相關(guān)聯(lián)的可移動盤上的空間。
13.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述字體高速緩存系統(tǒng)是在所述應(yīng)用程序被初始化時被創(chuàng)建為實例的。
14.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述字體高速緩存系統(tǒng)包括為來自所述一種或多種字體的預(yù)定個數(shù)的字符存儲位圖信息。
15.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述字體高速緩存系統(tǒng)包括存儲與選擇所述一種或多種字體的字符有關(guān)的元數(shù)據(jù)的字體信息實體。
16.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述字體高速緩存系統(tǒng)包括存儲與選擇所述一種或多種字體的字符有關(guān)的偏移量數(shù)據(jù)的字體信息實體。
17.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述字體高速緩存系統(tǒng)包括被配置成存儲涉及選擇所述一種或多種字體的字符的位圖數(shù)據(jù)的高速緩存;存儲涉及選擇所述一種或多種字體的字符的偏移量數(shù)據(jù)的字體信息實體;以及管理從所述字體高速緩存系統(tǒng)添加和移除字符信息的順序的優(yōu)先級隊列。
18.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述字體高速緩存系統(tǒng)包括存儲涉及所選字符是否可從所述字體高速緩存訪問的狀態(tài)信息的字體信息實體。
19.一種包含用于執(zhí)行一種方法的指令的計算機可讀介質(zhì),所述方法包括在計算機的存儲器中初始化高速緩存實體,其中,所述高速緩存實體存儲一種或多種字體中所包括的預(yù)定個數(shù)的字符的信息;在與所述計算機相關(guān)聯(lián)的存儲空間中存儲與所述一種或多種字體相關(guān)聯(lián)的信息,其中,所述存儲空間是與所述計算機的存儲器分離的,且其中,所述存儲空間存儲所述一種或多種字體中所包括的所有字符的信息;從所述一種或多種字體接收要被呈現(xiàn)的字符的指示;確定要被呈現(xiàn)的字符當(dāng)前是否被存儲在所述高速緩存實體中;以及如果要被呈現(xiàn)的字符當(dāng)前未被存儲在所述高速緩存實體中,則將所述要被呈現(xiàn)的字符加載到所述高速緩存實體中。
20.如權(quán)利要求19所述的方法,其特征在于,所述計算機可讀介質(zhì)是游戲應(yīng)用程序的部件,所述游戲應(yīng)用程序包括可在二維空間中顯示的三維圖形。
全文摘要
用于管理來自一種或多種字體的字符的訪問和顯示的方法和系統(tǒng)可包括在計算機存儲器中初始化存儲空間(例如,字體高速緩存)。該存儲空間可存儲用于從一種或多種字體選擇字符、以允許字體管理例程能容易地對其進行訪問的信息。同時,第二存儲空間(例如,硬盤或DVD)存儲涉及來自一種或多種字體的所有字符的信息,這些信息可被包含在一個或多個文件中。字體管理例程接收要被呈現(xiàn)的所需字符的指示,并確定所需字符當(dāng)前是否被存儲在第一存儲空間中,字體管理例程(或有關(guān)例程)可將所需字符從第二存儲空間中加載到第一存儲空間中。
文檔編號G06F12/08GK1811751SQ200510003510
公開日2006年8月2日 申請日期2005年12月28日 優(yōu)先權(quán)日2005年1月28日
發(fā)明者H·科巴亞施, K·施布亞 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
韩城市| 扬中市| 防城港市| 上犹县| 南溪县| 台南县| 东至县| 德惠市| 西盟| 贵州省| 霞浦县| 筠连县| 江津市| 金昌市| 清流县| 德安县| 无棣县| 花莲县| 天祝| 建平县| 宝清县| 岳普湖县| 界首市| 易门县| 千阳县| 杭州市| 岳阳市| 偃师市| 广德县| 台南市| 凌云县| 神木县| 临夏县| 盘锦市| 盐边县| 汤阴县| 锦州市| 荃湾区| 永平县| 仁布县| 威信县|