專利名稱:派送字體字形的制作方法
技術(shù)領(lǐng)域:
本文檔涉及信息處理。
背景技術(shù):
計(jì)算機(jī)系統(tǒng)用于分發(fā)各種類型的內(nèi)容。內(nèi)容的一個(gè)示例是廣告,其中廣告可以在計(jì)算機(jī)屏、電視屏或廣告牌上展示,僅列出一些示例。例如,諸如廣告的內(nèi)容可以被創(chuàng)建來(lái)向一般目標(biāo)受眾的所有成員顯示,或內(nèi)容展示可以在逐個(gè)用戶的基礎(chǔ)上來(lái)確定。包括在內(nèi)容中的文本可以使用一個(gè)或多個(gè)字體來(lái)生成。字體可以包括構(gòu)成完整字樣的字符,其的常見示例是Times、C0urier和Helvetica。以英語(yǔ)外的語(yǔ)言的內(nèi)容可以使用非拉丁文字(script)來(lái)呈現(xiàn)消息。字體有時(shí)與諸如廣告的特定電子文檔打包在一起。當(dāng)聚集在文件中時(shí),一些非拉丁文字可能占據(jù)巨大數(shù)量的存儲(chǔ)空間,諸如大約20MB。
發(fā)明內(nèi)容
在第一方面中,一種用于獲取文檔的字體的計(jì)算機(jī)實(shí)現(xiàn)的方法包括確定在電子文檔的內(nèi)容中指定的字體的每一個(gè)字形(glyph),該確定識(shí)別包括在該字體中的多個(gè)字形的子集,該子集在其上未存儲(chǔ)有該字體的第一設(shè)備上被確定。該方法包括在第一設(shè)備上基于所述確定來(lái)向第二設(shè)備生成請(qǐng)求,該請(qǐng)求向第二設(shè)備識(shí)別該子集。該方法包括在第一設(shè)備處接收從第二設(shè)備響應(yīng)于該請(qǐng)求發(fā)送的、并且定義該多個(gè)字形的該子集的信息,該信息沒有定義除該子集外的該多個(gè)字形中的剩余部分。該方法包括在第一設(shè)備上使用所接收到的信息來(lái)生成電子文檔的展示,該展示包括該多個(gè)字形的該子集。實(shí)施方式可以包括任何或全部以下特征。該計(jì)算機(jī)實(shí)現(xiàn)的方法進(jìn)一步包括在展示期間從用戶接收電子文檔的修訂;確定該修訂包括該字體的沒有被該信息指定的至少另一個(gè)字形;向第二設(shè)備生成關(guān)于另一個(gè)字形的新的請(qǐng)求;從第二設(shè)備接收定義該另一個(gè)字形的另外信息;以及更新展示以在電子文檔中還顯示該另一個(gè)字形。確定修訂包括至少另一個(gè)字形響應(yīng)于在接收該修訂之后檢測(cè)到預(yù)確定的時(shí)間流逝來(lái)執(zhí)行。該計(jì)算機(jī)實(shí)現(xiàn)的方法進(jìn)一步包括在第一設(shè)備上在接收修訂之前從第三設(shè)備接收電子文檔。修訂在第一設(shè)備上的應(yīng)用程序的實(shí)例中接收,電子文檔已在第三設(shè)備上使用應(yīng)用程序的另一個(gè)實(shí)例創(chuàng)建。應(yīng)用程序在其中存儲(chǔ)有用于請(qǐng)求信息的第二設(shè)備的地址,該方法進(jìn)一步包括訪問應(yīng)用程序中的地址以生成請(qǐng)求。電子文檔在其中存儲(chǔ)有用于請(qǐng)求信息的第二設(shè)備的地址,該方法進(jìn)一步包括訪問電子文檔中的地址以生成請(qǐng)求。電子文檔包括定向到操作第一設(shè)備的用戶的廣告,以及其中展示包括向該用戶顯示該廣告。字體由電子文檔中的字體標(biāo)識(shí)符來(lái)識(shí)別, 以及多個(gè)字形的子集中的每一個(gè)是使用電子文檔中的代碼點(diǎn)(cod印oint)來(lái)指定的。
4
在第二方面中,一種用于為文檔提供自定義字體的計(jì)算機(jī)實(shí)現(xiàn)的方法包括在第一設(shè)備中接收第一輸入,該第一輸入指定自定義字體的多個(gè)字形的子集以形成電子文檔的內(nèi)容。該方法包括在第一設(shè)備中接收第二輸入,該第二輸入包括定義該自定義字體的該多個(gè)字形的信息。該方法包括將該信息轉(zhuǎn)發(fā)給第二設(shè)備,其被配置成基于來(lái)自電子文檔的接受者的請(qǐng)求來(lái)提供該信息。該方法包括將電子文檔轉(zhuǎn)發(fā)給其上未存儲(chǔ)有該自定義字體的第三設(shè)備,其中第三設(shè)備向第二設(shè)備請(qǐng)求該信息。實(shí)施方式可以包括任何或全部以下特征。電子文檔包括定向到操作第三設(shè)備的用戶的廣告,以及其中第三設(shè)備向該用戶顯示包括該多個(gè)字形的子集的廣告。字體由電子文檔中的字體標(biāo)識(shí)符來(lái)識(shí)別,以及該多個(gè)字形的子集中的每一個(gè)是使用電子文檔中的代碼點(diǎn)來(lái)指定的。字體包括非拉丁文字,以及其中該多個(gè)字形中的每一個(gè)是非拉丁字形。在第三方面中,一種系統(tǒng)包括字體數(shù)據(jù)庫(kù),其包括定義包括多個(gè)字形的至少一個(gè)字體的信息。該系統(tǒng)包括字體打包組件,其被配置成接收來(lái)自設(shè)備的請(qǐng)求,并且作為響應(yīng), 轉(zhuǎn)發(fā)從字體數(shù)據(jù)庫(kù)獲取的信息,該信息定義在請(qǐng)求中識(shí)別的該多個(gè)字形的子集,并且沒有定義除該子集外的該多個(gè)字形中的剩余部分。實(shí)施方式可以包括任何或全部以下特征。該系統(tǒng)進(jìn)一步包括在該系統(tǒng)中執(zhí)行并且由用戶操作來(lái)創(chuàng)建電子文檔的應(yīng)用程序。電子文檔在其中存儲(chǔ)有用于請(qǐng)求信息的字體數(shù)據(jù)庫(kù)的地址,以及其中請(qǐng)求使用該地址來(lái)生成。應(yīng)用程序還在設(shè)備上執(zhí)行并且在其中存儲(chǔ)有用于請(qǐng)求信息的字體數(shù)據(jù)庫(kù)的地址,以及其中請(qǐng)求使用該地址來(lái)生成。應(yīng)用程序?yàn)樵O(shè)備的用戶提供輸入電子文檔的修訂,以及其中設(shè)備基于確定該修訂包括字體的沒有被該信息指定的至少另一個(gè)字形來(lái)向字體服務(wù)器生成新的請(qǐng)求。該系統(tǒng)進(jìn)一步包括字體服務(wù)器,其包括字體數(shù)據(jù)庫(kù)和字體打包組件,其中應(yīng)用程序在創(chuàng)建電子文檔時(shí)與字體服務(wù)器交互。字體服務(wù)器向應(yīng)用程序通信字體可用性。實(shí)施方式可以提供任何或全部以下優(yōu)勢(shì)。電子文檔的展示可以通過(guò)動(dòng)態(tài)派送字體來(lái)改進(jìn)。電子文檔所需的字體的字形的子集可以被打包,并且派送給待顯示該文檔的設(shè)備。 文檔創(chuàng)建者可以為文檔定義自定義字體,并且將該自定義字體上載到服務(wù)器,接收該文檔的系統(tǒng)將向該服務(wù)器請(qǐng)求字體以展示。在附圖和下面的描述中闡述了一個(gè)或多個(gè)實(shí)施方式的細(xì)節(jié)。其他特征和優(yōu)勢(shì)從描述和附圖以及從權(quán)利要求將是顯而易見的。
圖1示出了可以用于創(chuàng)建電子文檔的示例圖形用戶界面。圖2示出了可以派送字體的部分或全部的示例系統(tǒng)。圖3示出了包括字體服務(wù)器的示例系統(tǒng)。圖4示出了具有示例編譯時(shí)間和文件大小的表。圖5示出了用于獲取文檔的字體的示例方法的流程圖。圖6示出了用于為文檔提供自定義字體的示例方法的流程圖。圖7是可以結(jié)合在本文檔中描述的計(jì)算機(jī)實(shí)現(xiàn)的方法使用的計(jì)算系統(tǒng)的框圖。
各附圖中相同的參考標(biāo)記指示相同的元素。
具體實(shí)施例方式圖1示出了可 以用于創(chuàng)建電子文檔的示例圖形用戶界面100。在一些實(shí)施方式中, 諸如廣告設(shè)計(jì)者的文檔創(chuàng)建者使用界面100來(lái)創(chuàng)建文檔(例如,廣告)以由一個(gè)或多個(gè)其他人(例如,廣告編輯或廣告接受者)查閱和/或向一個(gè)或多個(gè)其他人顯示。例如,界面 100可以允許創(chuàng)建者在文檔中使用一個(gè)或多個(gè)字體(諸如現(xiàn)有字體或創(chuàng)建者定義的自定義字體);接收所創(chuàng)建的文檔的系統(tǒng)或應(yīng)用可以從指定的字體服務(wù)器檢索字體的對(duì)顯示文檔所必需的內(nèi)容。界面100可以包括預(yù)覽區(qū)102。預(yù)覽區(qū)102可以包括一個(gè)或多個(gè)內(nèi)容部分,諸如圖像、圖形、文本、鏈接或創(chuàng)建者選擇包括在文檔中的任何其他內(nèi)容。在此,除別的外,預(yù)覽區(qū)102當(dāng)前包括文本部分104A-C。界面100可以包括專用于使文檔的內(nèi)容格式化的一個(gè)或多個(gè)區(qū)域106。在一些實(shí)施方式中,格式化可以在逐部分的基礎(chǔ)上被應(yīng)用于所包括的內(nèi)容。 例如,區(qū)域106A可以用于為部分104A選擇一個(gè)或多個(gè)格式化方面,以及區(qū)域106B類似地可以用于為部分104B選擇一個(gè)或多個(gè)格式化方面等等。在一些實(shí)施方式中,創(chuàng)建者可以使用區(qū)域106來(lái)輸入部分的文本內(nèi)容、為部分選擇字體和/或?yàn)椴糠诌x擇顏色。例如,文本部分104A在此包括使用字體Felt Tip Roman Bold以被識(shí)別為“#000000”的顏色來(lái)寫的內(nèi)容 “Headline,,。如此,諸如廣告的所創(chuàng)建的文檔將包含可能需要使用一個(gè)或多個(gè)字體來(lái)顯示的內(nèi)容部分。即,當(dāng)文檔被轉(zhuǎn)發(fā)給另一個(gè)用戶,諸如轉(zhuǎn)發(fā)給編輯或最終接受者時(shí),接收系統(tǒng)將使用字體的部分或全部。所需要的字體可以被嵌入在電子文檔中或另外存儲(chǔ)在接收系統(tǒng)中。 如果這樣的話,接收系統(tǒng)可以從該位置檢索字體并且顯示文檔。作為另一個(gè)示例,字體可以是從動(dòng)態(tài)字體服務(wù)器可獲得的,以及接收系統(tǒng)可以向字體服務(wù)器請(qǐng)求字體以與特定文檔一起使用。在一些實(shí)施方式中,只有字體的對(duì)于顯示所必需的部分才被請(qǐng)求和/或轉(zhuǎn)發(fā)。例如,如果接收系統(tǒng)僅僅需要,比如說(shuō),字體的字形中的大約10%,則系統(tǒng)可以在請(qǐng)求中指示這一點(diǎn),以及字體服務(wù)器可以響應(yīng)于請(qǐng)求而打包并且返回該子集。圖2示出了可以派送字體的部分或全部的示例系統(tǒng)200。系統(tǒng)200可以包括計(jì)算機(jī)系統(tǒng)202,其可以將預(yù)定義和/或自定義字體包括在字體數(shù)據(jù)庫(kù)204中。計(jì)算機(jī)系統(tǒng)202 可以包括任何類型的計(jì)算機(jī)設(shè)備,包括但不限于服務(wù)器設(shè)備。字體數(shù)據(jù)庫(kù)204包括定義包括多個(gè)字形的至少一個(gè)字體的信息,諸如在上面的示例中提及的字體Felt Tip RomanBold 的任何或全部字形。計(jì)算機(jī)系統(tǒng)202可以連接到任何類型的網(wǎng)絡(luò)206,諸如連接到本地網(wǎng)絡(luò)和/或因特網(wǎng)。通過(guò)網(wǎng)絡(luò)206,計(jì)算機(jī)系統(tǒng)202可以與一個(gè)或多個(gè)其他系統(tǒng)通信,諸如與編輯系統(tǒng)208和/或終端用戶系統(tǒng)210通信。例如,計(jì)算機(jī)系統(tǒng)202可以派送一個(gè)或多個(gè)字形以由系統(tǒng)208和/或210在展示諸如廣告的電子文檔時(shí)使用。在一些實(shí)施方式中,字體數(shù)據(jù)庫(kù)204可以包含以下字體信息項(xiàng)中的任何一個(gè)或全部字體標(biāo)識(shí)符、字體名稱、字體語(yǔ)言、字體文字、字體可用的Unicode字符、字體的圖像預(yù)覽、用戶標(biāo)識(shí)符(例如,用于自定義定義的字體)、基本字體文件字節(jié)和/或基本字體文件哈希。在一些實(shí)施方式中,諸如通過(guò)使一個(gè)字體名稱用于英語(yǔ),另一個(gè)字體名稱用于中文等等,可以使字體名稱本地化。在向不同地點(diǎn)的用戶展示可用的字體時(shí),可以使用本地字體名稱。當(dāng)字體被上載到字體數(shù)據(jù)庫(kù)204(諸如自定義字體)時(shí),可以執(zhí)行對(duì)該字體的基本注冊(cè) (在一些實(shí)施方式中,包括語(yǔ)言和/或文字確定)。字體數(shù)據(jù)庫(kù)204可以與一個(gè)或多個(gè)組件交互,例如以為以下用例提供功能。文檔創(chuàng)建者在編輯時(shí),可以被示出相關(guān)字體的列表。例如,每一個(gè)字體的語(yǔ)言信息可以諸如被使用來(lái)允許用戶選擇。例如,當(dāng)指定的字符不能被呈現(xiàn)時(shí),關(guān)于每一個(gè)字體的可用字形的信息可以諸如被用于用戶反饋。例如,可以維護(hù)關(guān)于字體所有權(quán)的信息,諸如用于示出特定帳戶的自定義字體。可以上載自定義字體。例如,可以注冊(cè)自定義字體的所有者。例如,可以注冊(cè)關(guān)于字體的信息,諸如可用字符。例如,可以生成唯一字體標(biāo)識(shí)符。例如,可以建立并且跟蹤每帳戶限額??梢詼?zhǔn)予對(duì)原始字體文件字節(jié)的訪問,諸如以復(fù)制到本地文件緩存。計(jì)算機(jī)系統(tǒng)202可以包括字體打包器212。字體打包器212可以包括用于以下的必要基礎(chǔ)結(jié)構(gòu)將任何字體分成包含特定文檔所必需的字形的子集,以及將字形編譯成諸 如.swf文件的文件。在一些實(shí)施方式中,字體打包器212可以從諸如系統(tǒng)208和/或210 的設(shè)備接收請(qǐng)求。該請(qǐng)求可以被生成,因?yàn)橄到y(tǒng)需要某一字體來(lái)顯示或展示電子文檔。例如,該請(qǐng)求可以識(shí)別系統(tǒng)208和/或210需要的特定字體的字形。作為對(duì)該請(qǐng)求的響應(yīng),系統(tǒng)202可以轉(zhuǎn)發(fā)從字體數(shù)據(jù)庫(kù)204獲取的信息。在一些實(shí)施方式中,這樣的信息可以定義在請(qǐng)求中識(shí)別的多個(gè)字形的子集,并且不定義除該子集外的該多個(gè)字形中的剩余部分。例如,在響應(yīng)中的信息可以僅僅包括特定字體的指定的字形。字體和/或字形可以使用任何適當(dāng)結(jié)構(gòu)的信息來(lái)定義。例如,字體可以由電子文檔中的字體標(biāo)識(shí)符來(lái)識(shí)別,以及一個(gè)或多個(gè)字形可以使用電子文檔中的代碼點(diǎn)來(lái)指定。在一些實(shí)施方式中,字體打包器212可以使用加標(biāo)簽的字體子集來(lái)創(chuàng)建所請(qǐng)求的包,所述加標(biāo)簽的字體子集包括在字體數(shù)據(jù)庫(kù)204中的用于字體的字體標(biāo)識(shí)符和附隨的基本文件、包括通過(guò)其子集可以被引用的字體名稱的標(biāo)簽、以及待被打包的代碼點(diǎn)集(例如, Unicode 集)。文檔創(chuàng)建者在管理電子文檔的一個(gè)或多個(gè)方面中可以使用前端應(yīng)用214。在一些實(shí)施方式中,前端應(yīng)用214可以生成界面100 (圖1)和/或可以用于創(chuàng)建諸如廣告的文檔。 字體數(shù)據(jù)庫(kù)204可以向前端應(yīng)用216提供字體可用性信息216,例如使得一個(gè)或多個(gè)可用字體可以在區(qū)域106(圖1)中被識(shí)別。前端應(yīng)用214可以向字體數(shù)據(jù)庫(kù)204提供一個(gè)或多個(gè)上載的字體218,例如文檔創(chuàng)建者向數(shù)據(jù)庫(kù)提供的自定義字體??梢砸匀魏芜m當(dāng)?shù)姆绞絹?lái)定義自定義字體,諸如通過(guò)創(chuàng)建矢量圖形的定義,使得字體字形可以以多于一個(gè)字體大小和/或樣式(例如,以黑體)生成。例如,字體可以使用任何適當(dāng)?shù)淖煮w格式來(lái)定義,諸如以TrueType字體、OpenType字體或Type 1字體的形式,僅列出了一些示例。字體數(shù)據(jù)庫(kù)204可以向字體打包器212提供一個(gè)或多個(gè)基本字體文件220。例如, 字體數(shù)據(jù)庫(kù)204可以提供諸如系統(tǒng)208和/或210的另一個(gè)系統(tǒng)所尋求的字形。字體打包器212可以使用所獲取的字體,例如以.swf文件形式或任何其他適當(dāng)?shù)母袷絹?lái)生成打包的字體222。在一些實(shí)施方式中,使來(lái)自字體數(shù)據(jù)庫(kù)的整個(gè)字體對(duì)字體打包器可用,字體打包器選擇必需的字形并且將其打包。在一些實(shí)施方式中,字體打包器僅向字體數(shù)據(jù)庫(kù)要求所需的字形,并且在接收之后將其打包。前端應(yīng)用214可以關(guān)于打包的字體222采取一個(gè)或多個(gè)行動(dòng)。例如,前端應(yīng)用可以將打包的字體222轉(zhuǎn)發(fā)給系統(tǒng)208和/或210以在顯示或展示電子文檔時(shí)使用。作為另一個(gè)示例,前端應(yīng)用可以在創(chuàng)建電子文檔的版本時(shí)使用打包的字體222 (例如,通過(guò)以創(chuàng)建者選擇的實(shí)際字形來(lái)替代文檔中的代碼點(diǎn)和/或其他字形占位符)。這樣的創(chuàng)建的電子文檔的版本可以被存儲(chǔ) 在靜態(tài)內(nèi)容服務(wù)器224中。在一些實(shí)施方式中,所創(chuàng)建的文檔的圖像可以被存儲(chǔ)在服務(wù)器224中,以及此后被提供給一個(gè)或多個(gè)查看者。例如,使用特定字體的所創(chuàng)建的廣告可以被存儲(chǔ)在服務(wù)器224中,并且基于諸如用戶輸入特定搜索查詢或訪問某一頁(yè)面或站點(diǎn)的預(yù)定義事件被派送給任何或全部終端用戶系統(tǒng)210。在上面提到了電子文檔可以被存儲(chǔ)在諸如服務(wù)器224中。作為另一個(gè)示例,打包的字體可以被存儲(chǔ)。在一些實(shí)施方式中,這可以允許多個(gè)文檔引用以及使用打包的字體。例如,廣告文檔可以以均包括相同文本的不同尺寸變體存在,或一些變體可以使用另一個(gè)變體的支持文本的僅僅子集。已存儲(chǔ)的字體包,諸如字體.swf文件,可以允許多個(gè)變體使用共同的文件。編輯系統(tǒng)208可以用于對(duì)電子文檔226進(jìn)行編輯。例如,文檔226可能已由廣告創(chuàng)建者使用前端應(yīng)用214在系統(tǒng)202上創(chuàng)建。然后,廣告編輯可以使用相同應(yīng)用214或另一個(gè)應(yīng)用來(lái)在文檔226中作出經(jīng)選擇的改變。因此,一個(gè)用戶可以在一個(gè)設(shè)備上創(chuàng)建電子文檔226,并且另一個(gè)用戶可以在另一個(gè)設(shè)備上修改電子文檔226。另一個(gè)設(shè)備(例如,系統(tǒng)208和/或210)可以例如通過(guò)讀取在文檔中定義的每一個(gè)代碼點(diǎn)來(lái)確定電子文檔226 需要哪些字形。另一個(gè)設(shè)備然后可以基于這樣的確定來(lái)向系統(tǒng)202生成請(qǐng)求。例如,請(qǐng)求可以識(shí)別所需要的字形的子集。在一些實(shí)施方式中,字體包括非拉丁文字(諸如但不限于在中文、日語(yǔ)和韓語(yǔ)中使用的那些)。例如,為電子文檔226請(qǐng)求的多個(gè)字形中的每一個(gè)可以是非拉丁字形。因此,電子文檔226可以使用系統(tǒng)208和/或210來(lái)展示,使得文檔包括向字體數(shù)據(jù)庫(kù)204請(qǐng)求并且從其接收的字形??梢詧?zhí)行對(duì)電子文檔226的進(jìn)一步編輯。在一些實(shí)施方式中,系統(tǒng)208和/或210 可以檢測(cè)編輯是否輸入尚未在文檔中使用的一個(gè)或多個(gè)字形,以及如果有必要,向字體數(shù)據(jù)庫(kù)204請(qǐng)求并且接收任何這樣的字形。當(dāng)接收了所請(qǐng)求的字形時(shí),可以對(duì)文檔226進(jìn)行更新。在一些實(shí)施方式中,可以基于諸如來(lái)自用戶的明確刷新命令或用戶不活動(dòng)時(shí)期的預(yù)確定事件,來(lái)執(zhí)行修訂的文檔包括尚未被存儲(chǔ)在本地設(shè)備上的至少另一個(gè)字形的確定。例如,假設(shè)編輯正致力于對(duì)電子文檔226的修訂。在用戶在文檔中作出改變并且某一時(shí)間流逝而沒有來(lái)自用戶的進(jìn)一步輸入之后,系統(tǒng)可以自動(dòng)確定所修訂的文檔是否需要尚未存在的任何另外的字形。如果這樣的話,可以請(qǐng)求所需要的字形。在發(fā)出請(qǐng)求的設(shè)備上的這個(gè)和/或其他功能可以通過(guò)執(zhí)行以任何腳本形式的指令,諸如經(jīng)由Javascript代碼來(lái)提供??梢哉?qǐng)求比當(dāng)前所需要的更多的字形。例如,向字體打包器212請(qǐng)求并且作為響應(yīng)而接收的字形不僅需要包含至那點(diǎn)在文檔中輸入的字形。在一些實(shí)施方式中,應(yīng)用214 和/或它在其中實(shí)現(xiàn)的系統(tǒng)可以被配置來(lái)基于可能的使用來(lái)作出一個(gè)或多個(gè)假設(shè)和/或推斷,并且基于其來(lái)請(qǐng)求對(duì)應(yīng)的字形。例如,如果用戶輸入來(lái)自拉丁字母表的字符“abc”,則預(yù)期對(duì)拉丁文本的進(jìn)一步用戶輸入,可以請(qǐng)求字符a-z的整個(gè)范圍。在一些實(shí)施方式中,當(dāng)符合條件時(shí),諸如如果所請(qǐng)求的字體不存在于字體數(shù)據(jù)庫(kù) 214中,可以生成例外。相比之下,可以明確忽略一個(gè)或多個(gè)問題。在一些實(shí)施方式中,可以不為無(wú)效字體范圍生成例外。例如,如果發(fā)出對(duì)包括在基本字體中不存在的一個(gè)或多個(gè)字符的字體子集的請(qǐng)求,則響應(yīng)于該請(qǐng)求所述字符將被省略/忽略??梢允褂米煮w數(shù)據(jù)庫(kù)204的地址來(lái)請(qǐng)求字形。例如,字體可用性信息所覆蓋的每一個(gè)字體可以通過(guò)字體標(biāo)識(shí)符識(shí)別。然后可以通過(guò)將字體打包器212與字體和具體字形的標(biāo)識(shí)相聯(lián)系來(lái)請(qǐng)求所尋求的字形。在一些實(shí)施方式中,何處獲取未嵌入在電子文檔中并且另外對(duì)接收系統(tǒng)不可用的字體的必要信息可以被包括在文檔226中。例如,文檔226可以包括將計(jì)算機(jī)系統(tǒng)202和/或字體打包器212識(shí)別為用于請(qǐng)求文檔的字體的資源的信息。 在一些實(shí)施方式中,用于獲取字體的必要信息可以被包括在處理文檔的適用程序中,諸如瀏覽器和/或前端應(yīng)用214中。例如,前端應(yīng)用214可以被安裝在文檔在其上被創(chuàng)建的設(shè)備(例如,在系統(tǒng)202上)和文檔待在其上被編輯的設(shè)備(例如,在系統(tǒng)208上)兩者上。 程序214然后可以使用其對(duì)計(jì)算機(jī)系統(tǒng)202和/或字體打包器212的內(nèi)部識(shí)別來(lái)尋求并且獲取必要字體。終端用 戶系統(tǒng)210可以用于訪問或編輯一個(gè)或多個(gè)電子文檔。在一些實(shí)施方式中,終端用戶系統(tǒng)可以包括任何類型的計(jì)算機(jī)設(shè)備,諸如個(gè)人計(jì)算機(jī)、移動(dòng)設(shè)備或電話。例如,使用預(yù)定義的字體(諸如自定義字體)的廣告可以在消費(fèi)者所操作的設(shè)備上顯示。圖3示出了包括字體服務(wù)器302的示例系統(tǒng)300。在一些實(shí)施方式中能夠與系統(tǒng) 200(圖2)中的那些相對(duì)應(yīng)的組件使用對(duì)應(yīng)的參考數(shù)字來(lái)識(shí)別。在一些實(shí)施方式中,服務(wù)器302實(shí)現(xiàn)與字體打包器212相同的接口,并且充當(dāng)包裝器(wrapper)以阻擋對(duì)服務(wù)器的調(diào)用。例如,使用標(biāo)準(zhǔn)客戶端-服務(wù)器構(gòu)架的實(shí)施方式可以允許減少或最小化在前端程序 214中的代碼依賴。靜態(tài)字體數(shù)據(jù)庫(kù)304可以被包括在系統(tǒng)300中。在一些實(shí)施方式中,數(shù)據(jù)庫(kù)304 可以僅僅允許對(duì)可用字體的查詢。例如,數(shù)據(jù)庫(kù)304可以被封裝在服務(wù)器302中,諸如以避免直接對(duì)前端數(shù)據(jù)的應(yīng)用依賴(例如,經(jīng)由應(yīng)用214)。 例如,打包的字體可以由服務(wù)器302提供以由前端應(yīng)用214接收,諸如以由終端用戶系統(tǒng)或編輯器直接接收、或以放置在服務(wù)器224中。圖4示出了具有示例編譯時(shí)間和文件大小的表400。在此,字體列402指示哪個(gè)字體被特定字符或多個(gè)字符所涉及。反混淆(antialiasing)列404指示是否為在列402中識(shí)別的字體提供高級(jí)反混淆。字符列406指示在每一個(gè)示例中哪些字符使用所識(shí)別的字體來(lái)定義。編譯時(shí)間列408指示以毫秒為單位的中間編譯時(shí)間。文件大小列410指示為在列 406中識(shí)別的字符生成的.swf文件的字節(jié)表示的大小。圖5示出了用于獲取文檔的字體的示例方法500的流程圖。在一些實(shí)施方式中, 方法500可以例如在系統(tǒng)200和/或300中由執(zhí)行計(jì)算機(jī)可讀介質(zhì)中的指令的處理器來(lái)執(zhí)行。在一些實(shí)施方式中,可以執(zhí)行更多或更少的步驟;作為另一個(gè)示例,可以按照另一個(gè)順序執(zhí)行一個(gè)或多個(gè)步驟。在步驟510,確定在電子文檔的內(nèi)容中指定的字體的每一個(gè)字形。該確定識(shí)別包括在該字體中的多個(gè)字形的子集。該子集在其上未存儲(chǔ)有該字體的第一設(shè)備上被確定。例如,系統(tǒng)208和/或210可以確定電子文檔226的字形,對(duì)于其所述系統(tǒng)沒有對(duì)應(yīng)的字體。在步驟520,基于該確定向第二設(shè)備生成請(qǐng)求。該請(qǐng)求向第二設(shè)備識(shí)別該子集。例如,系統(tǒng)208和/或210可以向系統(tǒng)202和/或字體打包器212生成請(qǐng)求。在步驟530,在第一設(shè)備處接收信息。該信息從第二設(shè)備響應(yīng)于該請(qǐng)求而發(fā)送,并且定義該多個(gè)字形的該子集。該信息沒有定義除該子集外的該多個(gè)字形中的剩余部分。例如,系統(tǒng)208和/或210可以從字體打包器212接收僅僅具有字體的系統(tǒng)208/210對(duì)展示該文檔所需要的那些字形的.swf文件。如果文檔隨后被修訂,則可以生成對(duì)第一請(qǐng)求未覆蓋的任何另外字形的另一個(gè)請(qǐng)求。 在步驟540,使用所接收到的信息來(lái)生成電子文檔的展示。該展示包括該多個(gè)字形的該子集。例如,系統(tǒng)208/210可以諸如在用戶在其中能夠作出文檔改變的編輯程序中顯示、打印或另外可視化電子文檔226。圖6示出了用于為文檔提供自定義字體的示例方法的流程圖。在一些實(shí)施方式中,方法600可以例如在系統(tǒng)200和/或300中由執(zhí)行計(jì)算機(jī)可讀介質(zhì)中的指令的處理器來(lái)執(zhí)行。在一些實(shí)施方式中,可以執(zhí)行更多或更少的步驟;作為另一個(gè)示例,可以按照另一個(gè)順序執(zhí)行一個(gè)或多個(gè)步驟。在步驟610,在第一設(shè)備中接收第一輸入。該第一輸入指定自定義字體的多個(gè)字形的子集以形成電子文檔的內(nèi)容。例如,文檔創(chuàng)建者可以使用前端應(yīng)用214來(lái)定義諸如廣告的電子文檔226,以包括字體FeltTip Roman Bold的字符。在步驟620,在第一設(shè)備中接收第二輸入。該第二輸入包括定義該自定義字體的該多個(gè)字形的信息。例如,創(chuàng)建者可以使用前端應(yīng)用214來(lái)定義Felt Tip Roman Bold字體。在步驟630,將該信息轉(zhuǎn)發(fā)給第二設(shè)備,所述第二設(shè)備被配置成基于來(lái)自電子文檔的接受者的請(qǐng)求來(lái)提供該信息。例如,自定義字體可以被上載到字體數(shù)據(jù)庫(kù)204和/或字體打包器212。在步驟640,將電子文檔轉(zhuǎn)發(fā)給其上未存儲(chǔ)有該自定義字體的第三設(shè)備。第三設(shè)備可以向第二設(shè)備請(qǐng)求該信息。例如,系統(tǒng)202可以將電子文檔226轉(zhuǎn)發(fā)給系統(tǒng)208/210,其可以向字體數(shù)據(jù)庫(kù)204和/或向字體打包器212請(qǐng)求必要的字形。圖7是通用計(jì)算機(jī)系統(tǒng)700的示意圖。根據(jù)一個(gè)實(shí)施方式,系統(tǒng)700可以用于與前述計(jì)算機(jī)實(shí)現(xiàn)的方法中的任何一個(gè)聯(lián)合描述的操作。系統(tǒng)700包括處理器710、存儲(chǔ)器 720、存儲(chǔ)設(shè)備730以及輸入/輸出設(shè)備740。組件710、720、730和740中的每一個(gè)使用系統(tǒng)總線750互連。處理器710能夠處理用于在系統(tǒng)700內(nèi)執(zhí)行的指令。在一個(gè)實(shí)施方式中, 處理器710是單線程處理器。在另一個(gè)實(shí)施方式中,處理器710是多線程處理器。處理器 710能夠處理存儲(chǔ)在存儲(chǔ)器720中或存儲(chǔ)設(shè)備730上的指令以在輸入/輸出設(shè)備740上顯示用戶界面的圖形信息。存儲(chǔ)器720存儲(chǔ)在系統(tǒng)700內(nèi)的信息。在一些實(shí)施方式中,存儲(chǔ)器720是計(jì)算機(jī)可讀介質(zhì)。在一些實(shí)施方式中,存儲(chǔ)器720是易失性存儲(chǔ)器單元,以及在其他實(shí)施方式中, 存儲(chǔ)器720是非易失性存儲(chǔ)器單元。存儲(chǔ)設(shè)備730能夠?yàn)橄到y(tǒng)700提供海量存儲(chǔ)。在一個(gè)實(shí)施方式中,存儲(chǔ)設(shè)備730 是計(jì)算機(jī)可讀介質(zhì)。在各種不同的實(shí)施方式中,存儲(chǔ)設(shè)備730可以是軟盤設(shè)備、硬盤設(shè)備、 光盤設(shè)備或帶設(shè)備。輸入/輸出設(shè)備740為系統(tǒng)700提供輸入/輸出操作。在一個(gè)實(shí)施方式中,輸入/ 輸出設(shè)備740包括鍵盤和/或指示設(shè)備。在另一個(gè)實(shí)施方式中,輸入/輸出設(shè)備740包括用于顯示圖形用戶界面的顯示單元。所描述的特征可以以數(shù)字電子電路、或以計(jì)算機(jī)硬件、固件、軟件或以它們的組合來(lái)實(shí)現(xiàn)。裝置可以以有形地包含在信息載體中、用于可編程處理器執(zhí)行的計(jì)算機(jī)程序產(chǎn)品來(lái)實(shí)現(xiàn),所述信息載體例如機(jī)器可讀存儲(chǔ)設(shè)備;以及方法步驟可以由執(zhí)行指令程序的可編程處理器執(zhí)行來(lái)通過(guò)操作輸入數(shù)據(jù)并且生成輸出來(lái)執(zhí)行所描述的實(shí)施方式的功能。所描述的特征可以以在可編程系統(tǒng)上可執(zhí)行的一個(gè)或多個(gè)計(jì)算機(jī)程序來(lái)有利地實(shí)現(xiàn),所述可編程系統(tǒng)包括至少一個(gè)可編程處理器,所述至少一個(gè)可編程處理器被耦接以從數(shù)據(jù)存儲(chǔ)系統(tǒng)、 至少一個(gè)輸入設(shè)備和至少一個(gè)輸出設(shè)備接收數(shù)據(jù)和指令以及向數(shù)據(jù)存儲(chǔ)系統(tǒng)、至少一個(gè)輸入設(shè)備和至少一個(gè)輸出設(shè)備傳送數(shù)據(jù)和指令。計(jì)算機(jī)程序是可以在計(jì)算機(jī)中直接或間接使用來(lái)執(zhí)行某一活動(dòng)或產(chǎn)生某一結(jié)果的指令集。計(jì)算機(jī)程序可以以任何形式的編程語(yǔ)言編寫,包括編譯或解釋語(yǔ)言,并且其可以以任何形式部署,包括作為獨(dú)立程序或作為模塊、組件、子程序或適于在計(jì)算環(huán)境中使用的其他單元。用于執(zhí)行指令程序的適當(dāng)處理器包括例如通用和專用微處理器兩者,以及任何類型的計(jì)算機(jī)中的唯一處理器或多個(gè)處理器中的一個(gè)。通常,處理器從只讀存儲(chǔ)器或隨機(jī)存取存儲(chǔ)器或兩者接收指令和數(shù)據(jù)。計(jì)算機(jī)的必要元件是用于執(zhí)行指令的處理器和用于存儲(chǔ)指令和數(shù)據(jù)的一個(gè)或多個(gè)存儲(chǔ)器。通常,計(jì)算機(jī)還包括用于存儲(chǔ)數(shù)據(jù)文件的一個(gè)或多個(gè)海量存儲(chǔ)設(shè)備或可操作地耦接以與該一個(gè)或多個(gè)海量存儲(chǔ)設(shè)備通信;這樣的設(shè)備包括磁盤,諸如內(nèi)部硬盤和可移動(dòng)盤;磁光盤;以及光盤。適于有形地包含計(jì)算機(jī)程序指令和數(shù)據(jù)的存儲(chǔ)設(shè)備包括所有形式的非易失性存儲(chǔ)器,包括例如半導(dǎo)體存儲(chǔ)器設(shè)備,例如EPR0M、 EEPROM和閃存設(shè)備;磁盤,諸如內(nèi)部硬盤和可移動(dòng)盤;磁 光盤;以及CD-ROM和DVD-ROM盤。 處理器和存儲(chǔ)器可以由ASIC (專用集成電路)補(bǔ)充,或合并入ASIC。為了提供與用戶的交互,特征可以在具有下述的計(jì)算機(jī)上實(shí)現(xiàn)用于向用戶顯示信息的顯示設(shè)備,諸如CRT(陰極射線管)或LCD(液晶顯示)監(jiān)視器;以及用戶通過(guò)其可以向計(jì)算機(jī)提供輸入的鍵盤和指示設(shè)備,諸如鼠標(biāo)或跟蹤球。特征可以在包括下述的計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)后端組件,諸如數(shù)據(jù)服務(wù)器;或中間件組件,諸如應(yīng)用服務(wù)器或因特網(wǎng)服務(wù)器;或前端組件,諸如具有圖形用戶界面或因特網(wǎng)瀏覽器的客戶端計(jì)算機(jī);或它們的任何組合。系統(tǒng)的組件可以通過(guò)諸如通信網(wǎng)絡(luò)的任何形式或介質(zhì)的數(shù)字?jǐn)?shù)據(jù)通信連接。通信網(wǎng)絡(luò)的示例例如包括LAN、WAN以及形成因特網(wǎng)的計(jì)算機(jī)禾口網(wǎng)絡(luò)。計(jì)算機(jī)系統(tǒng)可以包括客戶端和服務(wù)器??蛻舳撕头?wù)器通常彼此遠(yuǎn)離并且典型地通過(guò)諸如所描述的一個(gè)網(wǎng)絡(luò)的網(wǎng)絡(luò)交互??蛻舳撕头?wù)器的關(guān)系依靠在各個(gè)計(jì)算機(jī)上運(yùn)行并且彼此具有客戶端_服務(wù)器關(guān)系的計(jì)算機(jī)程序產(chǎn)生。已經(jīng)描述了多個(gè)實(shí)施方式。然而,將理解的是,在不背離本公開的精神和范圍的情況下,可以進(jìn)行各種修改。因此,其他實(shí)施方式在權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種用于獲取文檔的字體的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括確定在電子文檔的內(nèi)容中指定的字體的每一個(gè)字形,所述確定識(shí)別包括在所述字體中的多個(gè)字形的子集,所述子集在其上未存儲(chǔ)有所述字體的第一設(shè)備上被確定;在所述第一設(shè)備上基于所述確定來(lái)向第二設(shè)備生成請(qǐng)求,所述請(qǐng)求向所述第二設(shè)備識(shí)別所述子集;在所述第一設(shè)備處接收從所述第二設(shè)備響應(yīng)于所述請(qǐng)求發(fā)送的、并且定義所述多個(gè)字形的所述子集的信息,所述信息沒有定義除所述子集外的所述多個(gè)字形中的剩余部分;以及在所述第一設(shè)備上使用所接收到的信息來(lái)生成所述電子文檔的展示,所述展示包括所述多個(gè)字形的所述子集。
2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,進(jìn)一步包括在所述展示期間從用戶接收所述電子文檔的修訂;確定所述修訂包括所述字體的沒有被所述信息指定的至少另一個(gè)字形;向所述第二設(shè)備生成關(guān)于所述另一個(gè)字形的新的請(qǐng)求;從所述第二設(shè)備接收定義所述另一個(gè)字形的另外信息;以及更新所述展示以在所述電子文檔中還顯示所述另一個(gè)字形。
3.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中對(duì)所述修訂包括至少所述另一個(gè)字形的所述確定是響應(yīng)于在接收所述修訂之后檢測(cè)到預(yù)確定的時(shí)間流逝而執(zhí)行的。
4.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,進(jìn)一步包括在所述第一設(shè)備上在接收所述修訂之前從第三設(shè)備接收所述電子文檔。
5.根據(jù)權(quán)利要求4所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中所述修訂在所述第一設(shè)備上的應(yīng)用程序的實(shí)例中接收,所述電子文檔已在所述第三設(shè)備上使用所述應(yīng)用程序的另一個(gè)實(shí)例創(chuàng)建。
6.根據(jù)權(quán)利要求5所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中,所述應(yīng)用程序在其中存儲(chǔ)有用于請(qǐng)求所述信息的所述第二設(shè)備的地址,所述方法進(jìn)一步包括訪問所述應(yīng)用程序中的所述地址以生成所述請(qǐng)求。
7.根據(jù)權(quán)利要求5所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中,所述電子文檔在其中存儲(chǔ)有用于請(qǐng)求所述信息的所述第二設(shè)備的地址,所述方法進(jìn)一步包括訪問所述電子文檔中的所述地址以生成所述請(qǐng)求。
8.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中所述電子文檔包括定向到操作所述第一設(shè)備的用戶的廣告,以及其中所述展示包括向所述用戶顯示所述廣告。
9.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中所述字體通過(guò)所述電子文檔中的字體標(biāo)識(shí)符來(lái)識(shí)別,以及所述多個(gè)字形的所述子集中的每一個(gè)是使用所述電子文檔中的代碼點(diǎn)來(lái)指定的。
10.一種用于為文檔提供自定義字體的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括在第一設(shè)備中接收第一輸入,所述第一輸入指定自定義字體的多個(gè)字形的子集以形成電子文檔的內(nèi)容;在所述第一設(shè)備中接收第二輸入,所述第二輸入包括定義所述自定義字體的所述多個(gè)字形的信息;將所述信息轉(zhuǎn)發(fā)給第二設(shè)備,所述第二設(shè)備被配置成基于來(lái)自所述電子文檔的接受者的請(qǐng)求來(lái)提供所述信息;以及將所述電子文檔轉(zhuǎn)發(fā)給其上未存儲(chǔ)有所述自定義字體的第三設(shè)備,其中所述第三設(shè)備向所述第二設(shè)備請(qǐng)求所述信息。
11.根據(jù)權(quán)利要求10所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中所述電子文檔包括定向到操作所述第三設(shè)備的用戶的廣告,以及其中所述第三設(shè)備向所述用戶顯示包括所述多個(gè)字形的所述子集的所述廣告。
12.根據(jù)權(quán)利要求10所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中所述字體通過(guò)所述電子文檔中的字體標(biāo)識(shí)符來(lái)識(shí)別,以及所述多個(gè)字形的所述子集中的每一個(gè)是使用所述電子文檔中的代碼點(diǎn)來(lái)指定的。
13.根據(jù)權(quán)利要求10所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中所述字體包括非拉丁文字,以及其中所述多個(gè)字形中的每一個(gè)是非拉丁字形。
14.一種系統(tǒng),包括字體數(shù)據(jù)庫(kù),其包括定義包括多個(gè)字形的至少一個(gè)字體的信息;以及字體打包組件,其被配置成接收來(lái)自設(shè)備的請(qǐng)求,并且作為響應(yīng),轉(zhuǎn)發(fā)從所述字體數(shù)據(jù)庫(kù)獲取的信息,所述信息定義在所述請(qǐng)求中識(shí)別的所述多個(gè)字形的子集,并且沒有定義除所述子集外的所述多個(gè)字形中的剩余部分。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),進(jìn)一步包括在所述系統(tǒng)中執(zhí)行并且由用戶操作來(lái)創(chuàng)建所述電子文檔的應(yīng)用程序。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),其中,所述電子文檔在其中存儲(chǔ)有用于請(qǐng)求所述信息的所述字體數(shù)據(jù)庫(kù)的地址,以及其中所述請(qǐng)求是使用所述地址來(lái)生成的。
17.根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述應(yīng)用程序還在所述設(shè)備上執(zhí)行并且在其中存儲(chǔ)有用于請(qǐng)求所述信息的所述字體數(shù)據(jù)庫(kù)的地址,以及其中所述請(qǐng)求是使用所述地址來(lái)生成的。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其中所述應(yīng)用程序?yàn)樗鲈O(shè)備的用戶提供輸入所述電子文檔的修訂,以及其中所述設(shè)備基于確定所述修訂包括所述字體的沒有被所述信息指定的至少另一個(gè)字形來(lái)向所述字體服務(wù)器生成新的請(qǐng)求。
19.根據(jù)權(quán)利要求15所述的系統(tǒng),進(jìn)一步包括字體服務(wù)器,其包括所述字體數(shù)據(jù)庫(kù)和所述字體打包組件,其中所述應(yīng)用程序在創(chuàng)建所述電子文檔時(shí)與所述字體服務(wù)器交互。
20.根據(jù)權(quán)利要求19所述的系統(tǒng),其中所述字體服務(wù)器向所述應(yīng)用程序通信字體可用性。
全文摘要
一種用于獲取文檔的字體的計(jì)算機(jī)實(shí)現(xiàn)的方法包括確定在電子文檔的內(nèi)容中指定的字體的每一個(gè)字形,該確定識(shí)別包括在該字體中的多個(gè)字形的子集,該子集在其上未存儲(chǔ)有該字體的第一設(shè)備上被確定。該方法包括在第一設(shè)備上基于所述確定來(lái)向第二設(shè)備生成請(qǐng)求,該請(qǐng)求向第二設(shè)備識(shí)別該子集。該方法包括在第一設(shè)備處接收從第二設(shè)備響應(yīng)于該請(qǐng)求發(fā)送的、并且定義該多個(gè)字形的該子集的信息,該信息沒有定義除該子集外的該多個(gè)字形中的剩余部分。該方法包括在第一設(shè)備上使用所接收到的信息來(lái)生成電子文檔的展示,該展示包括該多個(gè)字形的該子集。
文檔編號(hào)G06F17/27GK102439588SQ201080019168
公開日2012年5月2日 申請(qǐng)日期2010年3月10日 優(yōu)先權(quán)日2009年3月10日
發(fā)明者內(nèi)斯特·赫南德斯, 德米特里·波爾特諾夫, 道格拉斯·R·本特森, 阿列克謝·Y·巴爾斯基, 馬尼什·古普塔 申請(qǐng)人:谷歌公司