專利名稱:以字體提示語言交互地解出約束條件的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于操縱用于生成圖形對象輪廓的控制數(shù)據(jù)的系統(tǒng)和方法,尤其 涉及以字體提示語言反復地解出約束條^^的系統(tǒng)和方法。背景和相關(guān)領(lǐng)域計算技術(shù)改變了我們工作和娛樂的方式。如今,計算系統(tǒng)具有各種各樣的形式,包括臺式計算機、膝上型計算機、輸入板計算機、個人數(shù)字助理(PDA)等等。 甚至連家用設備(諸如冰箱、烤箱、縫紉機、安全系統(tǒng)等等)也具有不同程度的處理 能力,因此可以被認為是計算系統(tǒng)。隨著時間的前進,處理能力會被結(jié)合到許多傳 統(tǒng)上不具有處理能力的設備中。相應地,計算系統(tǒng)的多樣性很可能會增加。幾乎所有與人類交互的計算系統(tǒng)開始使用顯示器來傳遞信息。在許多情況下, 顯示器的感染力被認為是計算系統(tǒng)的一個重大屬性。歷史上,文本信息(例如基于 拉丁的字符)顯示在陰極射線管("CRT")顯示設備的單元中。每個單元被分成相等 大小的格網(wǎng)位置網(wǎng)格,其中每個格網(wǎng)位置可以被打開或關(guān)閉。例如,CRT的每個單 元可以是8X8的網(wǎng)格,導致每個單元有64個可能的網(wǎng)格位置。字符組的每個字符做為一存儲圖像(位圖)存儲在CRT顯示設備的硬件中(例如 在視頻適配卡中)。存儲圖像包含多個二進制值(例如,為了將一字符顯示在8X8 的網(wǎng)格上有64個二進制值),其中每個二進制值對應于一特定的網(wǎng)格位置。 一個值 (例如,二進制"1")表明顯示當該字符時,相應的網(wǎng)格位置為"打開",而另一 個值(例如,二進制"0")表明當顯示當該字符時,相應的網(wǎng)格位置為"關(guān)閉"。 在接收表示一字符的二進制數(shù)據(jù)(例如,位圖)時,CRT將"打開"對應于二進制l 的網(wǎng)格位置,而"關(guān)閉"對應于二進制O的網(wǎng)格位置以顯示該字符。更近一些, 一些計算系統(tǒng)使用比例位圖(例如,存儲在磁盤上),所述位圖根 據(jù)要顯示的字符在單元尺寸方面不同。例如,在比例位圖字符集中,用于字母"i" 的單元(例如,3個網(wǎng)格位置的寬度)要比用于字母"h"的單元(例如,6個網(wǎng)格位置的寬度)更狹窄。然而,作為位圖的存儲字符(無論是固定或比例)會消耗很多計算系統(tǒng)資源。因為計算系統(tǒng)會需要以多種不同尺寸顯示和打印字體的字符(一般為256或更多不 同的字符),會需要存儲大量不同尺寸的位圖。例如,會希望有一文字處理器顯示 和打印大小范圍從4pt到72pt的字體字符。因此,運行文字處理器的計算系統(tǒng)可 能必須存儲68種(72減4)不同大小的位圖用于以不同的大小顯示字體。而且,由于打印機一般相對顯示器具有不同的(對于多數(shù)來說是較高的)分辨 率,計算系統(tǒng)可能也必須存儲相應的68(72減4)種不同大小的位圖用于以不同大 小打印字體。例如,8X5網(wǎng)格的位圖(需要40比特的存儲)會被用于以特定尺寸顯 示字符,而50X30網(wǎng)格的位圖(需要1500比特的存儲)被用于以特定尺寸打印字符。當計算設備要從不同的字體顯示和打印字符時,與位圖字體相關(guān)聯(lián)的存儲要 求問題進一步復雜化。即,計算設備會需要存儲位圖用于以多種不同大小表示多種 不同字體。因此,在上述例子中,配置文字處理器以使用50種不同字體會導致超 過5000中不同的位圖集(例如,(68 + 68) X50)。由于許多字符集包含256或更多 字符,這會容易導致超過一百萬個單獨的位圖(例如,5000X256)。為每種字體的 下劃線的、黑體的和/或斜體版本存儲位圖會進一步增加存儲需求。此外,手動產(chǎn) 生大量位圖非常耗時。相應地,更近地,圖形基元被用于描述字體的字符。例如, 一組控制點和用 于連接這些點的指令(例如,用直線、弧線、貝塞爾曲線等連接)可以被用于在任意 網(wǎng)格空間(例如,超過象素設備最高分辨率的任意網(wǎng)格空間)定義字符的輪廓。通常, 會以較大的尺寸描述字符,接著當字符要以較小的尺寸被再現(xiàn)(或黑體、斜體等等) 時在數(shù)學術(shù)上縮小之(或不同地處理)。因此,只需要存儲減少數(shù)量的描述,可能為 一個字符(每種字體)只要一個描述。為了縮小字符,控制點的位置可除以比例因數(shù)。例如,要用比例因數(shù)10縮小 字符,定義該字符(以較高分辨率)的每個控制點的坐標可除以10。定義在100X100 網(wǎng)格上顯示的字符會被縮小成在10X10的網(wǎng)格上顯示。因此在網(wǎng)格位置(50, 30) 處的控制點會被縮小成在網(wǎng)格位置(5, 3)處的控制點,在網(wǎng)格位置(70, 70)處的控 制點會被縮小成在網(wǎng)格位置(7, 7)處的控制點等等。相應地,可計算表示字符的較 小的輪廓,為字符存儲多種不同尺寸的位圖的需要降低了。接著可以分析較小的輪廓以識別要打開的網(wǎng)格位置和識別要關(guān)閉的網(wǎng)格位置 (通常被稱為"掃描轉(zhuǎn)換"的過程)。 一個掃描轉(zhuǎn)換算法確定網(wǎng)格位置的中心是在較 小的輪廓之內(nèi)還是之外的。當網(wǎng)格位置的中心是在較小輪廓之內(nèi),就打開網(wǎng)格位置。 另一方面,如果網(wǎng)格位置的中心在較小輪廓之外,就關(guān)閉網(wǎng)格位置。同樣地,當再現(xiàn)字符時,會要求部分字符符合一個或多個約束條件。約束條 件可以表達為根據(jù)一個或多個獨立參數(shù)定義一個或多個依賴參數(shù)的算法。對一個控 制點的約束條件可以用其它控制點的位置或網(wǎng)格上的位置(例如,大寫線)來表示。例如,控制點"P"的位置可以用控制點"Q"的位置來表示,使得P相距Q—固定 距離"c"。 S卩,P=Q+c。因此,當Q移動時,會需要對P的相應移動使得P符合 固定距離c。部分由于不同字體中不同的藝術(shù)和技術(shù)特征的多樣化,約束條件可以適用于 個別的字體。通常,約束條件用具有有限的和非常特定的符號集的字體提示語言(例 如,TrueTyp^語言)表達。所述有限和非常特定的符號集簡化了從數(shù)學概念到字體 提示語言的翻譯。例如,它一般直接翻譯上述約束條件(P二Q+c),因為字體提示 語言一般包含賦值運算符(例如"=")和加法算符(例如"+ ")。然而,有限和非常特定的符號集也會限止可以表達的約束條件類型。例如, 基于如超越函數(shù)的更復雜的函數(shù),來表達約束條件會是困難的,因為這些較為復雜 的數(shù)學函數(shù)不包含在字體提示語言符號集中,并且會難以加上。缺少較為復雜的數(shù) 學函數(shù)(例如平方根函數(shù))轉(zhuǎn)而使得確定適當?shù)目刂泣c位置以符合約束條件變得困 難。因此,即使是在字體提示語言缺少較為復雜的符號集的情況下使用字體提示語 言的現(xiàn)有符號集來解出約束條件的機制將是有優(yōu)勢的。發(fā)明內(nèi)容本發(fā)明的原理克服了對本領(lǐng)域的原先技術(shù)中的上述問題,它主要針對以字體 提示語言迭代地地解出約束條件。計算系統(tǒng)訪問較為復雜的約束條件,所述條件不 能基于字體提示語言的符號集直接表達,較為復雜的約束條件約束了至少一部分的 輪廓。計算系統(tǒng)將較為復雜的約束條件分解為多個較為簡單的可以基于提示字體提 示語言直接表達的約束條件。計算系統(tǒng)以相應的字體提示語言指令表示了每種較為 簡化的約束條件,所述指令可以被迭代地處理以至少逼近對較為復雜的約束條件的 解決方案。字體提示語言指令在該計算系統(tǒng)或另一個計算系統(tǒng)被迭代處理,以使得 圖形對象符合(在指定容限內(nèi))較為復雜的約束條件。以下將描述本發(fā)明的其它特征和優(yōu)勢,部分會從描述中變得明顯,或通過本 發(fā)明的實踐而獲得。通過尤其在所附權(quán)利要求書中的所提出的裝置和組合,會實現(xiàn) 和獲取本發(fā)明的特征和優(yōu)勢。本發(fā)明的這些和其它特征會從以下描述和所附權(quán)利要 求書變得完全地顯而易見,或者可以通過下文所提出的本發(fā)明的實踐中獲得。
為了描述本發(fā)明可以獲得的上述和其它優(yōu)勢和特征的方式,將參考其特定實 施例提供對以上簡述的本發(fā)明的較為詳細的描述,所述特定實施例在附圖中說明。 應該理解這些附圖只描述了本發(fā)明的典型實施例,因此不應該被認為限制其范圍, 將通過使用附圖描述和解釋本發(fā)明的附加特征和細節(jié),其中圖1示出了用于以字體提示語言迭代地解出約束條件的示例的計算機構(gòu)架。 圖2A示出了使用字體提示語言表示對約束條件的迭代地解決方案的示例方法 的流程圖。圖2B示出了用于迭代地解出約束條件使得圖形對象可以被適當?shù)卦佻F(xiàn)的示例 方法的流程圖。圖3示出了用于實現(xiàn)本發(fā)明的原理的適當?shù)牟僮鳝h(huán)境。
具體實施方式
本發(fā)明的原理涉及用于以字體提示語言迭代地解出約束條件的系統(tǒng)、方法和 計算機程序產(chǎn)品。計算系統(tǒng)接收一組設計控制點,所述控制點以較大的尺寸(例如, 72點)描述圖形對象(例如,文本字符)的輪廓。該組設計控制點可以是非提示的, 或者可以包含用于以較小的尺寸顯示圖形對象的基本提示。該組設計控制點可以與 不能基于字體提示語言的符號集直接表達的較為復雜的約束條件相關(guān)聯(lián)。例如,該 組設計控制點可以與循環(huán)依賴約束條件相關(guān)聯(lián),諸如,舉例而言指示"Z"的對角 線筆畫的邊緣是平行的約束條件。計算系統(tǒng)訪問不能基于字體提示語言的符號集直接表達的較為復雜的約束, 所述較為復雜的約束條件約束至少部分的輪廓。計算系統(tǒng)將較為復雜的約束條件分 解為多個較為簡單的可以基于提示字體提示語言直接表達的約束條件。計算系統(tǒng)以 相應的字體提示語言指令表示了每種較為簡化的約束條件,所述指令可以被迭代地 處理以至少逼近較為復雜的約束條件的解決方案。字體提示語言指令在該計算系統(tǒng) 另一個計算系統(tǒng)被迭代地處理,以使得圖形對象符合(在指定容限內(nèi))較為復雜的約束條件。在本發(fā)明范圍內(nèi)的實施例包含用于攜帶或具有其上存在計算機可執(zhí)行指令或 數(shù)據(jù)結(jié)構(gòu)的計算機可讀介質(zhì)。這樣的計算機可讀介質(zhì)可以是任何通用或?qū)S糜嬎阆?統(tǒng)可訪問的可用介質(zhì)。通過舉例而非限制,這樣的計算機可讀介質(zhì)可以包含物理存儲介質(zhì)諸如RAM、 R0M、 EPR0M、 CD-ROM或其它光盤存儲、磁盤存儲或其它磁性存儲 設備,或者任何其它可以被用于以計算機可執(zhí)行指令、計算機可讀指令、數(shù)據(jù)結(jié)構(gòu) 的形式傳送或存儲所期望的程序編碼裝置的介質(zhì),且它們可以由通用或?qū)S糜嬎阆?統(tǒng)訪問。在這個描述和隨后的權(quán)利要求中,"網(wǎng)絡"被定義為一個或多個數(shù)據(jù)鏈路, 使得計算設備和/或模塊之間能夠傳輸電子數(shù)據(jù)。當信息在網(wǎng)絡或另一個通信連接 (有線的、無線的或有線和無線的組合)上被傳遞到或提供給計算系統(tǒng)時,該連接被 適當?shù)匾暈橛嬎銠C可讀介質(zhì)。因此,任何這樣的連接被適當?shù)囟x為計算機可讀介 質(zhì)。上述的組合也包含在計算機可讀介質(zhì)的范圍內(nèi)。計算機可執(zhí)行指令包含,例如 使得通用或特殊用途計算系統(tǒng)執(zhí)行某些功能或功能組的指令和數(shù)據(jù)。計算機可執(zhí)行 指令可以是,例如二進制、中間形式指令,諸如匯編語言,或者甚至是源代碼。在這個描述和隨后的權(quán)利要求中,"計算系統(tǒng)"被定義為一個或多個軟件模 塊、 一個或多個硬件模塊或其組合,它們一起工作對電子數(shù)據(jù)執(zhí)行操作。例如,對 計算系統(tǒng)的定義包含個人計算機的硬件組件以及軟件模塊,諸如個人計算機的操作 系統(tǒng)。模塊的實際配置不重要。計算系統(tǒng)會包含一個或多個經(jīng)由網(wǎng)絡耦合的計算機。 同樣地,計算系統(tǒng)可包含單個的物理設備(諸如移動電話或個人數(shù)據(jù)助理"PDA"), 其中內(nèi)部模塊(諸如存儲器和處理器)一起工作以執(zhí)行在電子數(shù)據(jù)上的操作。如這里所使用的,術(shù)語"模塊"或"組件"可以指軟件對象或在計算系統(tǒng)上 執(zhí)行的例行程序。這里所描述的不同的組件、模塊、引擎和服務被實現(xiàn)為在計算系 統(tǒng)上執(zhí)行的對象或過程(例如,作為單獨的線程)。雖然這里所描述的系統(tǒng)最好用軟 件實現(xiàn),但是用軟件和硬件或硬件的實現(xiàn)也是可能的和預期的。本領(lǐng)域的技術(shù)人員會理解,本發(fā)明可以在具有多種類型的計算系統(tǒng)配置的網(wǎng) 絡計算環(huán)境中實現(xiàn),所述計算系統(tǒng)配置包含個人計算機、膝上計算機、手掌設備、 多處理器系統(tǒng)、基于微處理器或可編程消費電子產(chǎn)品、網(wǎng)絡PC、小型機、大型機、 移動電話、PDA、尋呼機等等。本發(fā)明也可以在分布式系統(tǒng)環(huán)境中實現(xiàn),其中通過 網(wǎng)絡連接(通過有線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路或有線和無線數(shù)據(jù)鏈路的結(jié)合)的本地 和遠程計算系統(tǒng)都執(zhí)行任務。在分布式系統(tǒng)環(huán)境中,編程模塊可以同時位于本地和 遠程存儲器存儲設備中。圖1示出了用于以字體提示語言迭代地解出約束條件的計算機構(gòu)架100的例 子。在計算機構(gòu)架100中,計算系統(tǒng)118包含提示模塊119。 一般地,提示模塊119 接收一組表示圖形對象(圖形對象131)的控制點(例如,設計控制點122)。適當時,提示模塊119將字體提示語言(例如TrueType )的計算機可執(zhí)行指令(此后稱為"提 示")分配給控制點組內(nèi)的所含的控制點(例如控制點101 — 108)。隨后,可以處理 提示以更適當?shù)卦佻F(xiàn)圖形對象(例如,以較小的尺寸)。提示模塊119可以包含多個模塊,所述多個模塊自動標識由控制點組表示的 特征,諸如筆劃、襯線等等,并自動標識控制點組內(nèi)控制點的約束條件。 一些約束 條件,諸如,舉例而言將第一控制點限制為離開第二控制點一水平距離,可以使用 字體提示語言的現(xiàn)有符號集較為簡單地實現(xiàn)。然而,諸如那些要求較為復雜的數(shù)學 函數(shù)其它約束條件不能使用字體提示語言的現(xiàn)有符號集簡單^fe實現(xiàn)(如果它們是完 全可以實現(xiàn)的)。例如,當字體提示語言的現(xiàn)有符號集缺少平方根函數(shù),直接計算 關(guān)于對角邊的距離約束條件會是困難的(或甚至是不可能的)。約束條件識別模塊121可以基于控制點的位置或包含在設計控制點122中的 基本提示識別約束條件,包含否則難以解出的約束條件。基本提示可以是用于以較 大的尺寸(例如,在目標設備處72點)再現(xiàn)圖形對象的提示,但是當以其它的尺寸 (例如,在目標設備處12點)再現(xiàn)圖形對象時不是一般適用的。例如,當在特定目 標設備處再現(xiàn)為72點時,基本提示可以將"T"的豎劃的寬度限制為六個象素。然 而,以較小的尺寸實現(xiàn)相同的六個象素約束條件降低了其意義,因為當在特定目標 設備處以較小的尺寸再現(xiàn)時,圖形對象在寬度上甚至不是六個象素。相應地,提示 模塊119可以生成約束條件等式,基本限制圖像對象要被顯示的尺寸和分辨率。例 如,提示模塊119可以將對"T"的豎劃的約束條件配置為"T"被再現(xiàn)的點尺寸的 十二分之一。根據(jù)目標設備的分辨率,對應于點尺寸的十二分之一的象素的數(shù)目可以變化。 在較高分辨率的設備上,諸如,舉例而言300點每英寸("dpi")打印機、點尺寸 的十二分之一可以對應于較多數(shù)目的象素。另一方面,在較低分辨率的設備上,諸 如,舉例而言96dpi監(jiān)視器,點尺寸的十二分之一可以對應于較少數(shù)目的象素。提示應用模塊129可以為設計控制點122增加提示(例如TrueType②指令)以在圖形對象隨后被再現(xiàn)時實現(xiàn)這樣的約束條件。例如,除法操作符可以被用于實現(xiàn)對 "T"的豎劃的寬度約束條件(筆劃的寬度=點尺寸/12)。提示應用模塊129可以包含用于迭代地解出其它更為復雜的約束條件的提示,諸如要求更為復雜的數(shù)學函數(shù) 的那些約束條件。當隨后再現(xiàn)圖形對象時,計算系統(tǒng)能夠處理所述提示以基于,如 圖形對象要顯示的尺寸迭代地解出約束條件。計算系統(tǒng)123包含縮放模塊124、提示處理器134和掃描轉(zhuǎn)換模塊126??s放模塊124能夠接收一組以較大的尺寸表示圖形對象的輪廓的提示控制點(例如控制 點132)。提示控制點可以經(jīng)由網(wǎng)絡連接接收或從計算機可讀介質(zhì)載入,諸如,磁 盤或光盤??s放模塊124可以縮放控制點的位置,使得可以以較小或較大的尺寸再 現(xiàn)圖形對象。
提示處理器134可以處理與所提示的控制點組相關(guān)聯(lián)的提示(可能進一步改變 縮小的控制點的位置)使得圖形對象更適合以較小的尺寸再現(xiàn)。例如,提示處理器 134能夠處理字體提示語言的計算機可執(zhí)行指令,以迭代地解出更為復雜的約束條 件。掃描轉(zhuǎn)換模塊126將相應象素網(wǎng)格的象素(或子象素)打開或關(guān)閉以生成圖形對 象的象素表示。
因此,用于實現(xiàn)較為復雜的約束條件的提示能夠與一組控制點相關(guān)聯(lián),而無 需改變字體提示語言或相應的提示處理器以包含較為復雜的數(shù)學函數(shù)。相應地,計 算系統(tǒng)可以使用現(xiàn)有組件以符合較為復雜的約束條件的方式來再現(xiàn)圖形對象。這是 有優(yōu)勢的,因為改變字體提示語言的符號集和/或提示處理器的功能會比使用現(xiàn)有 字體提示消息符號集來提示圖像對象要困難和耗時得多。
圖2A示出了用于以字體提示語言迭代地解出約束條件的示例方法200的流程 圖。將關(guān)于計算機構(gòu)架100中的計算系統(tǒng)、模塊和控制點來描述方法200。方法200 包含訪問較為復雜的約束條件的動作,所述約束條件不能基于字體提示語言的符號 集(動作201)簡單地表達。例如,提示模塊119能夠(識別和)方位用設計控制點122 表示的較為復雜的約束條件。提示模塊119和/或提示處理器134所使用的字體提 示語言可能不具有從控制點122訪問的用于表達較為復雜的約束條件的符號集。
較為復雜的約束條件可以是,如由冪函數(shù)或指數(shù)函數(shù)(XY)表達的約束條件、多 個循環(huán)依賴約束條件或要求多個控制點同時移動的約束條件。然而,這個較為復雜 的約束條件列表并非意在是全面的。對于本領(lǐng)域的技術(shù)人員應該顯而易見的是在看 過這個描述之后,除了那些可以被清除描述的約束條件之外,其它較為復雜的約束 條件可以被訪問。
關(guān)于循環(huán)依賴約束條件,符合第一約束條件的能夠依賴于第一控制點的位置。 例如,約束條件識別模塊121可以識別控制點107被約束為距邊緣117對角線距離 114。符合對角線距離114依賴于控制點103的位置,因為關(guān)于控制點102改變控 制點103的位置會改變對角線距離114的方向。
符合第二約束條件能夠依賴于第二控制點的位置。例如,約束條件識別模塊 121可以識別控制點103被約束為距邊緣116對角線距離144。符合對角線距離144依賴于控制點107的位置,因為關(guān)于控制點106改變控制點107的位置會改變對角 線距離144的方向。
因此,第一和第二約束條件導致循環(huán)依賴性,其中控制點107的符合對角線 距離1M依賴于控制點103,而控制點103的符合對角線距離144依賴于控制點107。 約束條件識別模塊121可以識別循環(huán)依賴性。
方法200包含將較為復雜的約束條件分解成多個較為簡單的約束條件的動作, 所述較為簡單的約束條件可以基于字體提示語言的字符集直接地表達(動作202)。 例如,提示模塊119可以將從設計控制點122訪問的較為復雜的約束條件分解為被 提示模塊119和/或提示處理器134使用的可以用字體提示語言表達的多個較為簡 單的約束條件。
分解較為復雜的約束條件可以包含任何數(shù)目的用于降低較為復雜的約束條件 的復雜性的機制。例如,循環(huán)依賴約束條件可以被分解成多個非循環(huán)依賴約束條件。 基于指數(shù)函數(shù)或冪函數(shù)的約束條件可以被分解成冪級數(shù)。要求多個控制點同時移動 的約束條件可以被分解成多個約束條件,每個對應于單個控制點。其它較為復雜的 約束條件也可以被分解成多個相應的較為簡單的約束條件。
方法200包含以相應的字體提示語言指令表達每個較為簡單的約束條件的動 作,所述指令可以被迭代地處理以至少逼近對較為復雜的約束條件的解決方案(動 作203)。例如,提示模塊119可以以字體提示語言指令TrueType⑧指令,表達較為 簡單的約束條件,這些指令可以在提示處理器134處被迭代地處理。
關(guān)于循環(huán)依賴約束條件,表示較為簡單的約束條件可以包含制定字體提示語 言指令,用于基于第一控制點的當前位置應用第一約束條件,以便為第二控制點計 算目標位置。例如,提示處理器134可以基于控制點103的當前位置(在縮小以后) 為計算對角線距離114制定指令,用于為控制點107計算目標位置。同樣地,表示
較為簡單的約束條件可以包含制定字體提示語言指令,用于基于第二控制點的當前 位置應用第二約束條件,以便為第一控制點計算目標位置。例如,提示處理器134 可以基于控制點107的當前位置(在縮小以后)為計算對角線距離144制定指令,用 于為控制點103計算目標位置。
可以交替應用為表示第一和第二約束條件制定的指令。例如,可以應用第一 約束條件,可以應用第二約束條件,可以再一次應用第一約束條件,可以應用第二 約束條件等等。交替應用第一和第二約束條件可以繼續(xù)直至控制點位置適當為止。
相應地,以字體提示語言指令表達的較為簡單的約束條件也可以包含制定字體提示語言指令以確定第二控制點的目標位置位于第二控制點當前位置的指定容
限之內(nèi)。例如,提示模塊134制定字體提示語言指令用于確定控制點107的目標位 置是在控制點107的當前位置的指定容限之內(nèi)。指定容限可以是以象素或象素的分 數(shù)(例如l/64的象素)為單位的一距離。同樣地,以字體提示語言指令表達較為簡 單的約束條件可以包含制定字體提示語言指令以確定第一控制點的目標位置是位 于第一控制點當前位置的指定容限之內(nèi)的。例如,提示模塊134可以制定字體提示 語言指令,以確定控制點103的目標位置是位于控制點103當前位置的指定容限之 內(nèi)的。
對于基于冪函數(shù)的較為復雜的限制條件,表示較為簡單的限制條件可以包含 制定字體提示語言指令以解冪級數(shù)。對于要求多個控制點同時移動的約束條件,表 示較為簡單的約束條件可以包含制定字體提示語言指令以分別地移動控制點。表示 對應于其它類型的較為復雜的約束條件的較為簡單的約束條件也可以包含制定適 當?shù)淖煮w提示語言指令。
在一些實施例中,表示多個較為簡單約束條件的字體提示語言指令在制定字 體提示語言指令的計算系統(tǒng)處處理。例如,提示模塊119可以處理先前在提示模塊 119處制定的字體提示語言指令(例如與控制點132相關(guān)聯(lián)的)。在其它實施例中, 表示多個較為簡單約束條件的字體提示語言指令被發(fā)送到另一個計算系統(tǒng)用于處 理。例如,計算系統(tǒng)118可以將字體提示語言指令(例如與控制點132相關(guān)聯(lián)的) 發(fā)送到計算系統(tǒng)123用于處理。
圖2B說明了以字體提示語言迭代地解出約束條件的示例方法250的流程圖。 將關(guān)于計算機構(gòu)架100中的計算系統(tǒng)、模塊和控制點來描述方法250。可以在制定 表示多個較為簡單的約束條件的字體提示指令的計算系統(tǒng)(例如,計算系統(tǒng)118)處 或在接收表示多個較為簡單的約束條件的制定的字體提示指令的計算系統(tǒng)(例如, 計算系統(tǒng)123)處執(zhí)行方法250。
方法250包含訪問表示多個較為簡單的約束條件的字體提示語言指令的動作,
所述多個較為簡單的約束條件對應于不能基于字體提示語言的符號集直接表達的 較為復雜的約束條件(動作251)。例如,提示模塊119可以訪問表示多個較為簡單 的約束條件的字體提示語言指令(例如,TrueTyp^指令),所述多個較為簡單的約 束條件對應于一與控制點132相關(guān)聯(lián)的較為復雜的約束條件。相似地,提示處理器 134可以訪問表示多個較為簡單的約束條件的字體提示語言指令(例如,TrueType 指令),所述多個較為簡單的約束條件對應于一與控制點132相關(guān)聯(lián)的較為復雜的約束條件。
方法250包含有限次數(shù)迭代處理字體提示語言指令以至少逼近對較為復雜的 約束條件的解決方案,使得圖形對象可以被改變以符合較為復雜的約束條件(動作 252)。例如,適當時,提示模塊119或提示處理器132可以迭代地處理字體提示語
言指令以至少逼近對較為復雜的約束條件的解決方案。
對于要求多個控制點同時移動的較為復雜的約束條件,提示模塊119或提示 處理器132處理多個字體提示語言指令以移動各個的控制點(對單獨控制點的移動 被視為一次迭代)直至所有的控制點都被移動。對于包含指數(shù)函數(shù)或冪函數(shù)的約束 條件,提示模塊119或提示處理器132處理多個表示部分冪級數(shù)的字體提示語言指 令(對每個部分的處理被視為一次迭代)直至每個部分都被處理。部分基于較為復雜 的約束條件的類型和如何分解復雜的約束條件,指定部分表示較為簡單的約束條件 的字體提示語言指令的處理可以被示為一次迭代。
對于循環(huán)依賴約束條件,迭代可以繼續(xù)直至控制點的位置位于符合約束條件 的閾值容限之內(nèi)或執(zhí)行了指定數(shù)目的迭代。例如,當控制點103和107的目標位置 分別位于相對應的控制點103和107的當前位置的指定容限之內(nèi),控制點103和 107的當前位置被視為足夠精確。另一方面,當控制點103和107的任一目標位置 不是分別位于相對應的控制點103和107的當前位置的指定容限之內(nèi),控制點103 和107的當前位置不被視為足夠精確。
若當前位置不足夠精確,控制點103和107的當前位置被分別設置為等于對 控制點103和107計算的目標位置。再一次應用第一和第二約束條件(使用計算目 標位置作為當前位置)以便為控制點103和107計算第二目標位置。即,計算目標 位置被用于迭代第二目標位置??梢岳^續(xù)迭代地將從先前計算所得的計算目標位置 用作新的計算的當前位置(例如,將第二目標位置用作迭代第三目標位置的當前位 置等等)直至某次迭代的計算目標位置位于當前位置的指定容限之內(nèi)。或者,迭代 計算可以繼續(xù)直至發(fā)生閾值次數(shù)的迭代。例如,循環(huán)指令可以指明在十次迭代后停 止迭代。
以下偽碼表示可以制定和/或執(zhí)行以便于迭代地解出約束條件的算法的例子。 在該偽碼的例子中,在控制點132被縮小和提示后,P,可以指控制點107的位置, P2可以指控制點106的位置。類似地在偽碼例子中,在控制點132被縮小和提示后, Qi可以指控制點102的位置,Q2可以指控制點103的位置??梢杂枚喾N字體提示語 言制定偽碼算法,并用相應的提示處理器處理它(例如提示處理器134)。在偽碼例子中,分號(";")后面的文本表示注釋,用于描繪偽碼所執(zhí)行的功能。第一行11 =迭代的次數(shù)初始化計時器
第二行P!, 二P,記錄P:的當前位置
第三行Q2, =Q2記錄Q2的當前位置
第四行如同Q2位于其目標位置那樣執(zhí)行約束條件
第五行如同p,位于其目標位置那樣執(zhí)行約束條件
第六行n—n—1計數(shù)器減1
第七行:n=0 發(fā)生了閾值次數(shù)的迭代?
是,跳轉(zhuǎn)到第io行
否,繼續(xù)
第八行IP,-I 〈1/64 ; P,和P!,之間的距離在容限之內(nèi)?
否,跳轉(zhuǎn)到第2行 是,繼續(xù)
第九行|Q2- Q2, I 〈1/64 ; Q2和Q2'之間的距離在容限之內(nèi)? 否,跳轉(zhuǎn)到第2行 是,繼續(xù)
第十行結(jié)束
在偽碼的例子中,執(zhí)行第4行以應用第一約束條件,諸如,對角線距離114, 并執(zhí)行第5行以應用第二約束條件,諸如對角線距離144。在一些實施例中,所示 的功能和第4和第5行被進一步改進。
例如,在第4行中,P,被從邊QA垂直測量的距離c限制。在這些改進的實施 例中,這種約束條件被分為兩個部分。在距離部分,P,被移動到符合距離c。隨后, 在單獨的角度部分,將Q2移動一足以重建邊P,P2和QA之間角度的量。g卩,如果這 些邊被設計成平行的,那么在執(zhí)行角度部分后它們將再次平行。移動Q2以符合角 度部分會導致額外的不符合距離部分。然而,隨著執(zhí)行更多的迭代,由移動Q2以 符合角度部分而引入的額外的不符合距離的量將變得更小且越來越不重要(在一些 次數(shù)的迭代后將變得實質(zhì)上不相關(guān))。
在第5行中,可以執(zhí)行類似的"再平行"。第一,Qj皮移動到符合約束條件的 距離部分,接著移動P,以符合約束條件的角度部分。這些改進的實施例便利了對 可用控制點的限制,以此模仿限制筆劃,這可以包含限制筆劃的邊之間的角度。相 應地,當可用的控制數(shù)據(jù)包含控制點以及如何連接這些控制點的指令(直線,Bezier曲線等等),但不明顯地表示這些筆劃時,這些改進的實施例有利于限制筆劃。
第7行執(zhí)行檢査以確定是否發(fā)生了指定閾值數(shù)目的迭代。當發(fā)生了指定閾值
數(shù)目的迭代,算法終止(即使沒有計算出對于約束條件足夠精確的解決方案)。另一
方面,如果未發(fā)生指定閾值數(shù)目的迭代,算法繼續(xù)到第8行。
第8行執(zhí)行檢查以確定P,(第一控制點的目標位置)是否在(第一控制點的 當前位置)的指定容限(象素的1/64)之內(nèi)。當P,和P,'之間的距離不在指定容限之 內(nèi),算法繼續(xù)到第2行(并開始另一個迭代)。另一方面,當P,和P1'之間的距離 在指定容限之內(nèi),算法繼續(xù)到第9行。
第9行執(zhí)行檢查以確定Q2(第二控制點的目標位置)是否在(第二控制點的 當前位置)的指定容限(象素的1/64)之內(nèi)。當Q2和Q2'之間的距離不在指定容限之 內(nèi),算法繼續(xù)到第2行(并開始另一個迭代)。另一方面,當Q2和Q/之間的距離 在指定容限之內(nèi),算法終止。當P,和PZ之間的距離在容限之內(nèi)且Q2和Q2'之間 的距離在指定容限之內(nèi)時,P,和Q2被視為有足夠精確以再現(xiàn)相應的圖形對象。
在一些實施例中,迭代地解出約束條件被用于補償由于符合多個依賴約束條 件而發(fā)生的不適當?shù)脑佻F(xiàn)。例如,當控制點具有多個與它們相關(guān)聯(lián)的約束條件,且 這些約束條件中的一些依賴于其它約束條件,其它約束條件反過來依賴于其它約束 條件等等,適當?shù)卦佻F(xiàn)相應的圖形對象將變得更為困難。例如,對于圖形對象131, —組限制條件C,會將邊151帶入到最近全象素(例如,接近"大寫線")。另一組 約束條件C2會將邊152保持在離開邊151指定的距離。相似的約束條件組(V和 (V會與控制點106、 105、 103和104相關(guān)聯(lián)。又另一組約束條件C3會將邊116保 持在離開邊117指定的距離。符合C,和d'的約束條件會分別影響C2和C2'的約 束條件,它們轉(zhuǎn)而又會影響C3的約束條件。因此,符合C,、 C/ 、 C2和G'的約束 條件會導致控制點103和/或107不再符合C3的約束條件(例如,對角線距離114 和144)。然而,本發(fā)明的實施例可以被用于迭代地解出C3的約束條件,使得圖形 對象仍然符合C,、 (V 、 C2和C/的約束條件。
在按照接收到的提示改變控制點位置之后,掃描轉(zhuǎn)換模塊126會在象素網(wǎng)格 上打開適當?shù)南笏?或子象素),使得圖形對象131能夠以較小的尺寸被再現(xiàn)。掃描 轉(zhuǎn)換模塊126可以生成象素表示127,接著所生成的象素表示被提供給顯示設備 128。顯示設備128可以是彩色或單色的監(jiān)視器。適當時,例如,當顯示設備128 是彩色監(jiān)視器時,掃描轉(zhuǎn)換模塊僅打開一些象素的部分(例如象素的紅、綠或藍子 組成部分)以更好地再現(xiàn)圖形對象131。圖3和以下的討論意在提供本發(fā)明可以在其中實現(xiàn)的、合適的計算環(huán)境的簡 要、 一般描述。雖然不是要求的,本發(fā)明會在計算機可執(zhí)行指令的背景中描述,諸 如計算機執(zhí)行的程序模塊。 一般地,程序模塊包含例行程序、程序、對象、組件、 數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定任務或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型。與數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián)的 計算機可執(zhí)行指令和程序模塊表示了這里所揭示的方法的執(zhí)行動作的程序代碼裝 置的例子。
參見圖3,用于實現(xiàn)本發(fā)明的示例系統(tǒng)包含以計算機系統(tǒng)320形式示出的通用 計算設備,包含處理單元321、系統(tǒng)存儲器322以及把包括系統(tǒng)存儲器322在內(nèi)的 各種系統(tǒng)組件耦合至處理單元321的系統(tǒng)總線323。處理單元321可以執(zhí)行設計以 實現(xiàn)計算機系統(tǒng)320的特征(包含本發(fā)明的特征)的計算機可執(zhí)行指令。系統(tǒng)總線 323可以是若干總線結(jié)構(gòu)類型中的任一種,包括存儲器總線或存儲器控制器、外圍
總線以及使用多種總線構(gòu)架的局部總線的任一種。系統(tǒng)存儲器包含只讀存儲器 ("ROM" )324以及隨機存取存儲器("RAM" )325?;据斎?輸出系統(tǒng)("BIOS") 存儲在ROM 324內(nèi),它包括如啟動時幫助在計算機320內(nèi)的元件間傳輸信息的基本 例程。
計算機系統(tǒng)系統(tǒng)320還包含讀寫磁硬盤339的磁硬盤驅(qū)動器327、從可移動磁 盤329的磁盤驅(qū)動器328、讀寫CD-ROM或其它光學介質(zhì)這樣的可移動光盤331的 光盤驅(qū)動器330。磁硬盤驅(qū)動器327、磁盤驅(qū)動器328和光盤驅(qū)動器330分別通過 硬盤驅(qū)動器接口 332、磁盤驅(qū)動器接口 333和光盤驅(qū)動器接口 334連接到系統(tǒng)總線 323。這些驅(qū)動器和它們相關(guān)聯(lián)的計算機可讀介質(zhì)提供了對計算機可執(zhí)行指令、數(shù) 據(jù)結(jié)構(gòu)、程序模塊和計算機系統(tǒng)320的其它數(shù)據(jù)的非易失性存儲。雖然這里所描述 的示例環(huán)境采用了磁性硬盤339、可移動光盤331,可以使用用于存儲數(shù)據(jù)的其它 類型的計算機可讀介質(zhì),包含盒式磁帶、閃存卡、數(shù)字多用途盤、Bernoulli盒式 磁帶、RAM、 R0M等等。
包含一個或多個程序模塊的程序代碼裝置可以被存儲在硬盤339、磁盤329、 光盤331、 ROM 324或RAM 325上,包含操作系統(tǒng)335、 一個或多個應用程序336、 其它程序模塊337和程序數(shù)據(jù)338。用戶可以通過鍵盤340、定位設備342或其它 輸入設備(未示出)將命令和信息輸入計算機系統(tǒng)320,所述其它輸入設備諸如麥克 風、操縱桿、游戲墊、掃描儀等等。這些和其它的輸入設備通過與系統(tǒng)總線323 耦合的輸入/輸出接口 346連接到處理單元321上。輸入/輸出接口 346邏輯上表示 多種類型不同接口種的任意一種,諸如串行接口、 PS/2接口、并行接口、通用行總線("USB")接口、或電氣和電子工程師協(xié)會("IEEE" ) 1394接口(g卩,高速 率行連接總線(Fire Wire)接口)或者甚至是邏輯上表示不同接口的組合。
監(jiān)視器347或其它類型的顯示設備也通過視頻接口 348連接到系統(tǒng)總線323。 監(jiān)視器347可以顯示圖形對象,包含由計算機系統(tǒng)320產(chǎn)生的文本。其它外圍設備 (未示出)諸如揚聲器、打印機和掃描儀也可以連接到計算機系統(tǒng)320。連接到計算 機系統(tǒng)347的打印機可以打印圖形對象,包含由計算機系統(tǒng)320產(chǎn)生的文本。
計算機系統(tǒng)320可以連接到網(wǎng)絡,諸如辦公室范圍或公司范圍的計算機網(wǎng)絡、 家庭網(wǎng)絡、內(nèi)聯(lián)網(wǎng)和/或因特網(wǎng)。計算機系統(tǒng)320可以在這樣的網(wǎng)絡上與外部信源 交換數(shù)據(jù),諸如遠程計算機系統(tǒng)、遠程應用程序和/或遠程數(shù)據(jù)庫。
計算系統(tǒng)320包括網(wǎng)絡接口 353,計算機系統(tǒng)320通過所述網(wǎng)絡接口 353從外 部信源接收數(shù)據(jù)和/或發(fā)送數(shù)據(jù)至外部信源。如圖3所示,網(wǎng)絡接口 353便利了通 過鏈路351與遠程計算機系統(tǒng)383交換數(shù)據(jù)。網(wǎng)絡接口 353可以邏輯上表示一個或 多個軟件和/和硬件模塊,諸如網(wǎng)絡接口卡和相應的網(wǎng)絡驅(qū)動程序接口規(guī)范("NDIS") 棧。鏈路351表示網(wǎng)絡的一部分(例如,以太網(wǎng)網(wǎng)段),遠程計算機系統(tǒng)383表示網(wǎng) 絡的節(jié)點。例如,鏈路351能夠表示計算系統(tǒng)118和123之間的網(wǎng)絡連接。
同樣地,計算機系統(tǒng)320包含輸入/輸出接口 346,計算機系統(tǒng)320通過所述 輸入/輸出接口 346從外部信源接收數(shù)據(jù)和/或發(fā)送數(shù)據(jù)至外部信源。輸入/輸出接 口 346耦合到調(diào)制解調(diào)器354(例如,標準調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器或數(shù)字用 戶線路("DSL")調(diào)制解調(diào)器)上,計算機系統(tǒng)320通過所述調(diào)制解調(diào)器354從外部 信源接收數(shù)據(jù)和/或發(fā)送數(shù)據(jù)至外部信源。如圖3所示,輸入/輸出接口 346和調(diào)制 解調(diào)器354便利了通過鏈路352與遠程計算機系統(tǒng)393交換數(shù)據(jù)。鏈路352表示網(wǎng) 絡的一部分,遠程計算機系統(tǒng)393表示網(wǎng)絡的節(jié)點。
雖然圖3示出了本發(fā)明使用的操作環(huán)境,但是可以在能夠?qū)崿F(xiàn)本發(fā)明的原理 的任何系統(tǒng)(如有必要作適當?shù)男薷?中釆用本發(fā)明的原理。圖3所示的環(huán)境只是說 明性的,決不是表示即使只是多種可以實現(xiàn)本發(fā)明的原理的環(huán)境中的一小部分。
依照本發(fā)明模塊,諸如提示模塊119和提示處理器134以及相關(guān)聯(lián)的程序數(shù) 據(jù),諸如設計控制點122、控制點132和象素表示127可以被存儲在與計算機系統(tǒng) 320相關(guān)聯(lián)的任一計算機可讀介質(zhì)上并可從中讀取。例如,部分這樣的模塊和部分 相關(guān)聯(lián)的程序數(shù)據(jù)可以包含在操作系統(tǒng)335、應用程序336、程序模塊337和/或程 序數(shù)據(jù)338中,用于存儲在系統(tǒng)存儲器中。
當大容量的存儲設備(例如,磁性硬盤339)耦合到計算機系統(tǒng)320上,這樣的模塊和相關(guān)聯(lián)的程序數(shù)據(jù)也可以被存儲在所述大容量存儲設備中。在網(wǎng)絡環(huán)境中,
關(guān)于計算機系統(tǒng)320描述的程序模塊或其部分可以被存儲在遠程存儲器存儲設備 中,諸如,與遠程計算機系統(tǒng)383和/或遠程計算機系統(tǒng)393相關(guān)聯(lián)的系統(tǒng)存儲器 和/或大容量存儲設備。這樣模塊的執(zhí)行可以在分布式環(huán)境中進行。
本發(fā)明可以以其它特定的形式實施而不背離其精神和主要的特征。無論從那 方面來看,所述的實施例應該被認為是說明性的而非限制性的。因此,本發(fā)明的范 圍是由所附的權(quán)利要求書而非上述描述所指出的。所有在權(quán)利要求書的等價的含義 和等價范圍之內(nèi)的變化是在它們的范圍之內(nèi)的。
權(quán)利要求
1.在訪問一組控制點的計算系統(tǒng)中,所述控制點組用于生成圖形對象的輪廓,所述輪廓被用于確定如何再現(xiàn)所述圖形對象,輪廓的一些部分的位置可能被約束到預定的位置,一種使用字體提示語言表示對約束條件的迭代解決方案的方法,所述方法包含訪問不能基于字體提示語言的符號集直接表達的、較為復雜的約束條件,所述較為復雜的約束條件約束輪廓的至少一部分;將較為復雜的約束條件分解為多個可以基于字體提示語言的符號集直接表達的、較為簡單的約束條件;以相應的字體提示語言指令表示每個較為簡單的約束條件,所述指令可以被迭代地處理以至少逼近對較為復雜的約束條件的解決方案。
2. 如權(quán)利要求l所述的方法,其特征在于,訪問不能基于字體提示語言的符 號集直接表達的、較為復雜的約束條件包含訪問基于冪函數(shù)或指數(shù)函數(shù)的約束條 件。
3. 如權(quán)利要求l所述的方法,其特征在于,訪問不能基于字體提示語言的符 號集直接表達的、較為復雜的約束條件包含訪問要求同時移動多個控制點的約束條 件。
4. 如權(quán)利要求l所述的方法,其特征在于,訪問不能基于字體提示語言的符 號集直接表達的、較為復雜的約束條件包含訪問循環(huán)依賴的約束條件。
5. 如權(quán)利要求l所述的方法,其特征在于,將較為復雜的約束條件分解為多 個較為簡單的約束條件包含基于冪函數(shù)或指數(shù)函數(shù)將約束條件分解為冪級數(shù)的多 個部分。
6. 如權(quán)利要求1所述的方法,其特征在于,將較為復雜的約束條件分解為多 個較為簡單的約束條件包含將要求同時移動多個控制點的約束條件分解為多個約 束條件,每個約束條件用于移動單獨的控制點。
7. 如權(quán)利要求1所述的方法,其特征在于,將較為復雜的約束條件分解為多 個較為簡單的約束條件包含將循環(huán)依賴約束條件至少分解為第一約束條件,它約束第一控制點的位置,符合依賴第二控制點的位置的第 一約束條件;第二約束條件,包含第二控制點的位置,符合依賴第一控制點的位置的第二 約束條件;
8. 如權(quán)利要求l所述的方法,其特征在于,以相應的字體提示語言指令表示 每個較為簡單的約束條件包含以TrueType⑧指令表示每個較為簡單的約束條件,所 述指令可以被迭代地處理以至少逼近對較為復雜的約束條件的解決方案。
9. 如權(quán)利要求l所述的方法,其特征在于還包含迭代地處理字體提示語言指令有限次數(shù)以至少逼近對較為復雜的約束條件的 解決方案,使得至少輪廓的一部分可以被改變以符合較為復雜的約束條件;生成圖形對象的輪廓,使其至少在指定容限內(nèi)符合較為復雜的約束條件;以及基于所述輪廓生成圖形對象的象素表示,所述象素表示用于在輸出設備上再現(xiàn)。
10. 在被配置成處理字體提示語言指令的計算系統(tǒng)中, 一種用于迭代地解出 約束條件使得圖形對象可以被適當?shù)卦佻F(xiàn)的計算機化的方法,所述方法包含接收表示多個較為簡單的約束條件的字體提示語言指令,所述多個較為簡單 的約束條件對應于不能基于字體提示語言的符號集直接表達的、較為復雜的約束條 件;以及迭代地處理字體提示語言指令有限次數(shù)以至少逼近對較為復雜的約束條件的 解決方案,使得圖形對象可以被改變以符合較為復雜的約束條件。
11. 如權(quán)利要求10所述的方法,其特征在于,迭代地處理字體提示語言指 令有限次數(shù)以至少逼近對較為復雜的約束條件的解決方案包含迭代地地處理表示 冪級數(shù)的部分的字體提示語言指令。
12. 如權(quán)利要求10所述的方法,其特征在于,迭代地處理字體提示語言指令 有限次數(shù)以至少逼近對較為復雜的約束條件的解決方案包含迭代地處理移動各個 的控制點的字體提示語言指令。
13. 如權(quán)利要求10所述的方法,其特征在于,迭代地處理字體提示語言指 令有限次數(shù)以至少逼近對較為復雜的約束條件的解決方案包含基于第一控制點的當前位置,應用第一較為簡單的約束條件以便為所述第二控制點計算目標位置;基于第二控制點的當前位置,應用第二較為簡單的約束條件以便為所述第一控制點計算目標位置;確定第一控制點的目標位置是位于第一控制點的當前位置的指定容限之內(nèi);以及確定第二控制點的目標位置是位于第二控制點的當前位置的指定容限之內(nèi)。
14. 如權(quán)利要求13所述的方法,其特征在于還包含 使得所述第一控制點的目標位置成為第一控制點的當前位置;以及 使得所述第二控制點的目標位置成為第二控制點的當前位置。
15. 如權(quán)利要求10所述的方法,其特征在于,迭代地處理字體提示語言指令 有限次數(shù)以至少逼近對較為復雜的約束條件的解決方案包含迭代地處理字體提示 語言指令直至執(zhí)行了指定數(shù)目的迭代。
16. 如權(quán)利要求10所述的方法,其特征在于,迭代地處理字體提示語言指令 有限次數(shù)以至少逼近對較為復雜的約束條件的解決方案包含迭代地處理字體提示 語言指令直至控制點的位置位于符合較為復雜的約束條件的閾值容限之內(nèi)。
17. 如權(quán)利要求10所述的方法,其特征在于,迭代地處理字體提示語言指令 有限次數(shù)以至少逼近對較為復雜的約束條件的解決方案包含迭代地處理 TrueType⑧指令。
18. 如權(quán)利要求10所述的方法,其特征在于還包含 生成所述圖形對象的輪廓,使其符合較為復雜的約束條件;以及 基于所述輪廓生成圖形對象的象素表示,所述象素表示用于在輸出設備處再現(xiàn)。
19. 一種計算機程序產(chǎn)品,用于在訪問一組控制點的計算系統(tǒng)中,所述控制 點組用于生成圖形對象的輪廓,所述輪廓被用于確定如何再現(xiàn)所述圖形對象,輪廓 的一些部分的位置可能被約束到預定的位置,所述計算機程序產(chǎn)品用于實現(xiàn)使用字 體提示語言表示對約束條件的反復解決方案的方法,所述計算機程序產(chǎn)品包含計算 機可執(zhí)行指令,當處理器執(zhí)行所述指令時使得所述計算系統(tǒng)執(zhí)行以下訪問不能基于字體提示語言的符號集直接表達的、較為復雜的約束條件,所 述較為復雜的約束條件至少約束輪廓的一部分;將較為復雜的約束條件分解為多個可以基于字體提示語言的符號集直接表達 的、較為簡單的約束條件;以相應的字體提示語言指令表示每個較為簡單的約束條件,所述指令可以被 迭代地處理以至少逼近較為復雜的約束條件的解決方案。
全文摘要
本發(fā)明的原理涉及以字體提示語言迭代地解出約束條件。計算系統(tǒng)訪問不能基于字體提示語言的符號集直接表達的、較為復雜的約束條件,所述較為復雜的約束條件至少約束了輪廓的一部分(201)。所述計算系統(tǒng)將較為復雜的約束條件分解為多個可以基于字體提示語言的符號集直接表達的、較為簡單的約束條件(202)。所述計算系統(tǒng)以相應的字體提示語言指令表示每個較為簡單的約束條件,所述指令可以被迭代地處理以至少逼近對較為復雜的約束條件的解決方案(207)。在所述計算系統(tǒng)或另一個計算系統(tǒng)處迭代地處理字體提示語言指令,使得圖形對象符合(在指定容限內(nèi))較為復雜的約束條件。
文檔編號G06T11/00GK101410885SQ200480001394
公開日2009年4月15日 申請日期2004年7月30日 優(yōu)先權(quán)日2004年1月26日
發(fā)明者B·斯坦姆, G·C·希契考克, M·J·達根 申請人:微軟公司