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

一種字體渲染的方法、裝置、渲染平臺(tái)客戶端和服務(wù)器的制造方法

文檔序號(hào):6511848閱讀:298來源:國(guó)知局
一種字體渲染的方法、裝置、渲染平臺(tái)客戶端和服務(wù)器的制造方法
【專利摘要】本發(fā)明提供了一種字體渲染的方法、裝置、渲染平臺(tái)客戶端和服務(wù)器,其中,所述方法包括:獲取需要渲染的由至少一個(gè)中文字符組成的字符串的文字信息;將所述文字信息發(fā)送到渲染服務(wù)器,使得所述服務(wù)器根據(jù)所述文字信息分別確定所述字符串中每個(gè)中文字符的矢量坐標(biāo)后,根據(jù)所述文字信息和所述字符串中每個(gè)中文字符的矢量坐標(biāo)對(duì)所述字符串進(jìn)行排版,其中所述矢量坐標(biāo)為能夠在當(dāng)前空間唯一標(biāo)識(shí)所述中文字符的輪廓的坐標(biāo);接收所述服務(wù)器返回的對(duì)所述字符串排版后的數(shù)據(jù);解析所述對(duì)所述字符串排版后的數(shù)據(jù),獲得解析結(jié)果;根據(jù)所述解析結(jié)果對(duì)所述字符串進(jìn)行渲染。本發(fā)明能夠在實(shí)現(xiàn)中文字體渲染的同時(shí),避免渲染平臺(tái)的程序體積變大。
【專利說明】一種字體渲染的方法、裝置、渲染平臺(tái)客戶端和服務(wù)器

【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及文字處理領(lǐng)域,尤其涉及一種字體渲染的方法、裝置、渲染平臺(tái)客戶端 和服務(wù)器。

【背景技術(shù)】
[0002] 目前出現(xiàn)了許多能夠進(jìn)行字體渲染組建的平臺(tái),例如:Flex、html5的canvas標(biāo)簽 等。以Flex為例,F(xiàn)lex通常指adobe flex,是最初由Macromedia公司在2004年3月發(fā)布 的,基于其專有的Macromedia Flash平臺(tái),它是涵蓋了支持富互聯(lián)網(wǎng)應(yīng)用(Rich Internet Applications, RIA)的開發(fā)和部署的一系列技術(shù)組合。
[0003] 作為新一代的富客戶端互聯(lián)網(wǎng)技術(shù)的佼佼者,F(xiàn)lex這種技術(shù)已經(jīng)被越來越多的公 司所采用,被越來越多的用戶和程序員所接受。然而Flex產(chǎn)品目前只有英文版和日文版, 對(duì)于除英文以外的其他語(yǔ)言字體支持的不是很好。對(duì)于中文,可選的字體只有Windows操 作系統(tǒng)自帶的常見的兩三種,如果要在Flex程序中使用其他中文字體,方法只有一個(gè),就 是把該字體嵌入并編譯到Flex程序中。另外,F(xiàn)lex中還有很多特效,比如文字的旋轉(zhuǎn)。這 些特效只對(duì)編譯到Flex程序內(nèi)部的字體有效果。如果字體沒有被編譯到Flex程序內(nèi)部, 則特效不起作用。
[0004] 但是把中文字體嵌入并編譯到Flex程序中不但會(huì)增加程序員的工作量,還會(huì)使 得Flex程序的體積變得很大。


【發(fā)明內(nèi)容】

[0005] 本發(fā)明的目的是提供一種字體渲染的方法、裝置、渲染平臺(tái)客戶端和服務(wù)器,實(shí)現(xiàn) 中文字體渲染的同時(shí),避免渲染平臺(tái)的程序體積變大。
[0006] 為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供了一種字體渲染的方法,用于渲染平臺(tái)的 客戶端,所述方法包括:
[0007] 獲取需要渲染的由至少一個(gè)中文字符組成的字符串的文字信息;
[0008] 將所述文字信息發(fā)送到渲染服務(wù)器,使得所述服務(wù)器根據(jù)所述文字信息分別確定 所述字符串中每個(gè)中文字符的矢量坐標(biāo)后,根據(jù)所述文字信息和所述字符串中每個(gè)中文字 符的矢量坐標(biāo)對(duì)所述字符串進(jìn)行排版,其中所述矢量坐標(biāo)為能夠在當(dāng)前空間唯一標(biāo)識(shí)所述 中文字符的輪廓的坐標(biāo);
[0009] 接收所述服務(wù)器返回的對(duì)所述字符串排版后的數(shù)據(jù);
[0010] 解析所述對(duì)所述字符串排版后的數(shù)據(jù),獲得解析結(jié)果;
[0011] 根據(jù)所述解析結(jié)果對(duì)所述字符串進(jìn)行渲染。
[0012] 上述的字體渲染的方法,其中,所述方法還包括:
[0013] 對(duì)所述文字信息按照所述字符串中的中文字符順序進(jìn)行重新封裝;
[0014] 所述將所述文字信息發(fā)送到渲染服務(wù)器具體為將重新封裝后的文字信息發(fā)送到 渲染服務(wù)器。
[0015] 上述的字體渲染的方法,其中,所述解析結(jié)果具體包括對(duì)所述字符串中每個(gè)中文 字符排版后的矢量坐標(biāo)和用于繪制每個(gè)中文字符輪廓的曲線類型;
[0016] 所述根據(jù)所述解析結(jié)果對(duì)所述文字進(jìn)行渲染具體為:
[0017] 根據(jù)所述排版后的矢量坐標(biāo)和所述曲線類型繪制與每個(gè)中文字符對(duì)應(yīng)的三次貝 塞爾曲線和線段封閉曲線;
[0018] 填充所述線段封閉曲線。
[0019] 上述的字體渲染的方法,其中,根據(jù)所述解析結(jié)果對(duì)所述字符串進(jìn)行渲染后,所述 方法還包括:
[0020] 對(duì)渲染后的字符串進(jìn)行縮放、對(duì)齊或旋轉(zhuǎn)操作。
[0021] 上述的字體渲染的方法,其中,所述對(duì)渲染后的字符串進(jìn)行縮放、對(duì)齊或旋轉(zhuǎn)操作 具體為:
[0022] 對(duì)渲染后的字符串中需要進(jìn)行縮放、對(duì)齊或旋轉(zhuǎn)操作的中文字符的矢量坐標(biāo)進(jìn)行 調(diào)整。
[0023] 為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例還提供了一種字體渲染的方法,用于渲染服務(wù) 器,所述方法包括:
[0024] 接收渲染平臺(tái)的客戶端發(fā)送的需要渲染的由至少一個(gè)中文字符組成的字符串的 文字信息;
[0025] 根據(jù)所述文字信息分別獲取所述字符串中每個(gè)中文字符的矢量坐標(biāo),其中所述矢 量坐標(biāo)為能夠在當(dāng)前空間唯一標(biāo)識(shí)所述中文字符的輪廓的坐標(biāo);
[0026] 根據(jù)所述文字信息和所述字符串中每個(gè)中文字符的矢量坐標(biāo)對(duì)所述字符串進(jìn)行 排版;
[0027] 將對(duì)所述字符串排版后的數(shù)據(jù)返回所述渲染平臺(tái)的客戶端,使得所述渲染平臺(tái)的 客戶端對(duì)所述字符串排版后的數(shù)據(jù)進(jìn)行解析,獲得解析結(jié)果后,根據(jù)所述解析結(jié)果對(duì)所述 字符串進(jìn)行渲染。
[0028] 上述的字體渲染的方法,其中,所述根據(jù)所述文字信息分別獲取所述字符串中每 個(gè)中文字符的矢量坐標(biāo)具體為:
[0029] 將所述文字信息轉(zhuǎn)換為封裝文字信息的可編程語(yǔ)言的對(duì)象;
[0030] 根據(jù)所述對(duì)象依次分別確定所述字符串中每個(gè)中文字符的矢量坐標(biāo)。
[0031] 上述的字體渲染的方法,其中,所述文字信息包括字間距和行間距;
[0032] 所述根據(jù)所述文字信息和所述字符串中每個(gè)中文字符的矢量坐標(biāo)對(duì)所述字符串 進(jìn)行排版具體包括:
[0033] 根據(jù)所述字間距、行間距和所述字符串中每個(gè)中文字符的矢量坐標(biāo)對(duì)所述字符串 進(jìn)行排版,獲得與所述字符串中每個(gè)中文字符對(duì)應(yīng)的排版后的矢量坐標(biāo);
[0034] 確定用于繪制所述字符串中每個(gè)中文字符的輪廓的曲線類型。
[0035] 為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例還提供了一種字體渲染的裝置,用于渲染平臺(tái) 的客戶端,所述裝置包括:
[0036] 第一獲取模塊,用于獲取需要渲染的由至少一個(gè)中文字符組成的字符串的文字信 息;
[0037] 第一發(fā)送模塊,用于將所述文字信息發(fā)送到渲染服務(wù)器,使得所述服務(wù)器根據(jù)所 述文字信息分別確定所述字符串中每個(gè)中文字符的矢量坐標(biāo)后,根據(jù)所述文字信息和所述 字符串中每個(gè)中文字符的矢量坐標(biāo)對(duì)所述字符串進(jìn)行排版,其中所述矢量坐標(biāo)為能夠在當(dāng) 前空間唯一標(biāo)識(shí)所述中文字符的輪廓的坐標(biāo);
[0038] 第一接收模塊,用于接收所述服務(wù)器返回的對(duì)所述字符串排版后的數(shù)據(jù);
[0039] 解析模塊,用于解析所述對(duì)所述字符串排版后的數(shù)據(jù),獲得解析結(jié)果;
[0040] 渲染模塊,用于根據(jù)所述解析結(jié)果對(duì)所述字符串進(jìn)行渲染。
[0041] 上述的字體渲染的裝置,其中,所述裝置還包括:
[0042] 第一處理模塊,用于對(duì)所述文字信息按照所述字符串中的中文字符順序進(jìn)行重新 封裝;
[0043] 所述第一發(fā)送模塊具體為將重新封裝后的文字信息發(fā)送到渲染服務(wù)器。
[0044] 上述的字體渲染的裝置,其中,所述解析結(jié)果具體包括對(duì)所述字符串中每個(gè)中文 字符排版后的矢量坐標(biāo)和用于繪制每個(gè)中文字符輪廓的曲線類型;
[0045] 所述渲染模塊具體包括:
[0046] 繪制子模塊,用于根據(jù)所述排版后的矢量坐標(biāo)和所述曲線類型繪制與每個(gè)中文字 符對(duì)應(yīng)的三次貝塞爾曲線和線段封閉曲線;
[0047] 填充子模塊,用于填充所述線段封閉曲線。
[0048] 上述的字體渲染的裝置,其中,所述裝置還包括:
[0049] 第二處理模塊,用于對(duì)渲染后的字符串進(jìn)行縮放、對(duì)齊或旋轉(zhuǎn)操作。
[0050] 上述的字體渲染的裝置,其中,所述第二處理模塊具體為:
[0051] 對(duì)渲染后的字符串中需要進(jìn)行縮放、對(duì)齊或旋轉(zhuǎn)操作的中文字符的矢量坐標(biāo)進(jìn)行 調(diào)整。
[0052] 為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例還提供了一種字體渲染的裝置,用于渲染服務(wù) 器,所述裝置包括:
[0053] 第二接收模塊,用于接收渲染平臺(tái)的客戶端發(fā)送的需要渲染的由至少一個(gè)中文字 符組成的字符串的文字信息;
[0054] 第二獲取模塊,用于根據(jù)所述文字信息分別獲取所述字符串中每個(gè)中文字符的矢 量坐標(biāo),其中所述矢量坐標(biāo)為能夠在當(dāng)前空間唯一標(biāo)識(shí)所述中文字符的輪廓的坐標(biāo);
[0055] 排版模塊,用于根據(jù)所述文字信息和所述字符串中每個(gè)中文字符的矢量坐標(biāo)對(duì)所 述字符串進(jìn)行排版;
[0056] 第二發(fā)送模塊,用于將對(duì)所述字符串排版后的數(shù)據(jù)返回所述渲染平臺(tái)的客戶端, 使得所述渲染平臺(tái)的客戶端對(duì)所述字符串排版后的數(shù)據(jù)進(jìn)行解析,獲得解析結(jié)果后,根據(jù) 所述解析結(jié)果對(duì)所述字符串進(jìn)行渲染。
[0057] 上述的字體渲染的裝置,其中,所述第二獲取模塊具體包括:
[0058] 轉(zhuǎn)換子模塊,用于將所述文字信息轉(zhuǎn)換為封裝文字信息的可編程語(yǔ)言的對(duì)象;
[0059] 第一確定子模塊,用于根據(jù)所述對(duì)象依次分別確定所述字符串中每個(gè)中文字符的 矢量坐標(biāo)。
[0060] 上述的字體渲染的裝置,其中,所述文字信息包括字間距和行間距;
[0061] 所述排版模塊具體包括:
[0062] 獲取子模塊,用于根據(jù)所述字間距、行間距和所述字符串中每個(gè)中文字符的矢量 坐標(biāo)對(duì)所述字符串進(jìn)行排版,獲得與所述字符串中每個(gè)中文字符對(duì)應(yīng)的排版后的矢量坐 標(biāo);
[0063] 第二確定子模塊,用于確定用于繪制所述字符串中每個(gè)中文字符的輪廓的曲線類 型。
[0064] 為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例還提供了一種渲染平臺(tái)的客戶端,包括上述任 一項(xiàng)所述用于渲染平臺(tái)客戶端的字體渲染的裝置。
[0065] 為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例還提供了一種渲染服務(wù)器,包括上述任一項(xiàng)所 述用于渲染服務(wù)器的字體渲染的裝置。
[0066] 在本發(fā)明實(shí)施例中,當(dāng)客戶端獲取到需要渲染的中文字符串后,獲取渲染服務(wù)器 上安裝的字體的輪廓,通過服務(wù)器對(duì)該字符串的排版輸出到客戶端,客戶端對(duì)排版后的數(shù) 據(jù)進(jìn)行解析后,完成對(duì)中文字符串的渲染,即中文字體的渲染,上述過程不需要事先將需要 使用的字體嵌入并編譯到渲染平臺(tái)的程序中,避免了渲染平臺(tái)程序因嵌入并編譯某種字體 而變大,同時(shí),還能夠解決渲染平臺(tái)中的中文特效、如何對(duì)多種中文字體渲染、中文字號(hào)縮 小會(huì)導(dǎo)致鋸齒等問題。

【專利附圖】

【附圖說明】
[0067] 圖1為本發(fā)明實(shí)施例提供的用于渲染平臺(tái)客戶端的字體渲染方法的流程示意圖;
[0068] 圖2為本發(fā)明實(shí)施例提供的用于渲染平服務(wù)器的字體渲染方法的流程示意圖;
[0069] 圖3為本發(fā)明實(shí)施例提供的字體渲染方法的整體流程示意圖;
[0070] 圖4為本發(fā)明實(shí)施例提供的用于渲染平臺(tái)客戶端的字體渲染裝置的結(jié)構(gòu)示意圖;
[0071] 圖5為本發(fā)明實(shí)施例提供的用于渲染平服務(wù)器的字體渲染裝置的結(jié)構(gòu)示意圖。

【具體實(shí)施方式】
[0072] 為使本發(fā)明實(shí)施例要解決的技術(shù)問題、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附 圖及具體實(shí)施例進(jìn)行詳細(xì)描述。
[0073] 本發(fā)明實(shí)施例提供了一種字體渲染的方法,用于渲染平臺(tái)的客戶端,所述方法如 圖1所示,包括:
[0074] 步驟11,獲取需要渲染的由至少一個(gè)中文字符組成的字符串的文字信息;
[0075] 步驟12,將所述文字信息發(fā)送到渲染服務(wù)器,使得所述服務(wù)器根據(jù)所述文字信息 分別確定所述字符串中每個(gè)中文字符的矢量坐標(biāo)后,根據(jù)所述文字信息和所述字符串中每 個(gè)中文字符的矢量坐標(biāo)對(duì)所述字符串進(jìn)行排版,其中所述矢量坐標(biāo)為能夠在當(dāng)前空間唯一 標(biāo)識(shí)所述中文字符的輪廓的坐標(biāo);
[0076] 步驟13,接收所述服務(wù)器返回的對(duì)所述字符串排版后的數(shù)據(jù);
[0077] 步驟14,解析所述對(duì)所述字符串排版后的數(shù)據(jù),獲得解析結(jié)果;
[0078] 步驟15,根據(jù)所述解析結(jié)果對(duì)所述字符串進(jìn)行渲染。
[0079] 在本發(fā)明實(shí)施例中,當(dāng)渲染平臺(tái)的客戶端獲取到需要渲染的中文字符串后,將所 述字符串的文字信息發(fā)送到渲染服務(wù)器,以便獲取渲染服務(wù)器上安裝的字體的輪廓,通過 服務(wù)器對(duì)該字符串的排版返回到客戶端,客戶端對(duì)排版后的數(shù)據(jù)進(jìn)行解析后,完成對(duì)中文 字符串的渲染,即中文字體的渲染,上述過程不需要事先將需要使用的字體嵌入并編譯到 渲染平臺(tái)的程序中,避免了渲染平臺(tái)程序因嵌入并編譯某種字體而變大。
[0080] 下面分步驟詳細(xì)介紹所述字體渲染的方法。
[0081] 首先,通過步驟11,渲染平臺(tái)的客戶端獲取到需要渲染的字符串的文字信息,該字 符串是由至少一個(gè)中文字符組成的。
[0082] 其中,所述的文字信息至少包括文字內(nèi)容、字體和字號(hào),當(dāng)然,所述的文字信息還 可以包括字形(例如所述字符串是否為粗體和/或斜體)、文字顏色等其他信息,在此不一一 列舉。所述客戶端可以通過與用戶進(jìn)行交互,獲得需要渲染的中文字符串的文字信息,如 果用戶未對(duì)需要渲染的字符串的文字信息中的任一項(xiàng)進(jìn)行設(shè)定,則該項(xiàng)可以使用默認(rèn)設(shè)定 值。舉例說明如下。
[0083] 渲染平臺(tái)的客戶端通過客戶端頁(yè)面與用戶進(jìn)行交互,由用戶對(duì)需要渲染的中文字 符串的文字內(nèi)容、字體和字號(hào)進(jìn)行設(shè)定,客戶端獲取到需要進(jìn)行渲染的中文字符串的文字 信息如下:
[0084] 文字內(nèi)容是"你好",字體是"華文行楷"且字號(hào)大小為" 12"。
[0085] 假定客戶端的默認(rèn)設(shè)置如下:
[0086] 文字內(nèi)容是"雙擊輸入文字",字體是"宋體"且字號(hào)大小為"14"。
[0087] 如果用戶未對(duì)上述文字信息中的字體和字號(hào)進(jìn)行設(shè)置,僅設(shè)置了文字內(nèi)容為"你 好",則客戶端獲取到需要進(jìn)行渲染的中文字符串的文字信息如下:
[0088] 文字內(nèi)容是"你好",字體是"宋體"且字號(hào)大小為"14"。
[0089] 客戶端獲取中文字符串的文字信息后,執(zhí)行步驟12,將所述文字信息發(fā)送到渲染 服務(wù)器。
[0090] 在本發(fā)明實(shí)施例中,優(yōu)選地,所述客戶端可以通過網(wǎng)絡(luò)web方式將所述文字信息 發(fā)送到渲染服務(wù)器,進(jìn)一步地,可以通過web方式中的超文本傳輸協(xié)議http請(qǐng)求發(fā)送到渲 染服務(wù)器。
[0091] 渲染服務(wù)器在接收到所述文字信息后,首先根據(jù)所述文字信息分別確定所述字符 串中每個(gè)中文字符的矢量坐標(biāo),再根據(jù)所述文字信息和所述字符串中每個(gè)中文字符的矢量 坐標(biāo)對(duì)所述字符串進(jìn)行排版,即將所述字符串的文字信息發(fā)送到渲染服務(wù)器,以便獲取渲 染服務(wù)器上安裝的字體的輪廓。
[0092] 其中所述矢量坐標(biāo)為能夠在當(dāng)前空間唯一標(biāo)識(shí)所述中文字符的輪廓的坐標(biāo),在本 發(fā)明實(shí)施例中可以用該中文字符相對(duì)于水平面的坐標(biāo)和垂直水平面的坐標(biāo)表示,由于中文 字符需要占用一定空間,則可以用水平坐標(biāo)的最大值和最小值標(biāo)明該中文字符在相對(duì)于水 平面所占的空間,并用垂直坐標(biāo)的最大值和最小值標(biāo)明該中文字符在垂直于水平面所占的 空間,當(dāng)然其他可以在當(dāng)前空間唯一標(biāo)識(shí)所述中文字符的輪廓的坐標(biāo)都可以作為本發(fā)明實(shí) 施例中的矢量坐標(biāo)。
[0093] 應(yīng)當(dāng)注意地是,通過http請(qǐng)求將所述文字信息發(fā)送到渲染服務(wù)器時(shí),為了減少 http請(qǐng)求中的其他不必要信息,優(yōu)選地,在完成步驟11后,所述方法還包括:
[0094] 對(duì)所述文字信息按照所述字符串中的中文字符順序進(jìn)行重新封裝;
[0095] 步驟12可以具體為將重新封裝后的文字信息發(fā)送到渲染服務(wù)器。
[0096] 重新封裝后的文字信息通過http請(qǐng)求發(fā)送到渲染服務(wù)器時(shí),http請(qǐng)求由于過濾 掉了其他不必要的信息,使得http請(qǐng)求消息很小,不會(huì)過多占用網(wǎng)絡(luò)資源。
[0097] 在渲染服務(wù)器對(duì)所述字符串完成排版后,執(zhí)行步驟13,渲染平臺(tái)的客戶端接收所 述服務(wù)器返回的對(duì)所述字符串排版后的數(shù)據(jù)。
[0098] 在本發(fā)明實(shí)施例中,優(yōu)選地,所述對(duì)所述字符串排版后的數(shù)據(jù)為xml數(shù)據(jù)。
[0099] 在接收到xml數(shù)據(jù)后,執(zhí)行步驟14,解析所述對(duì)所述字符串排版后的數(shù)據(jù),獲得解 析結(jié)果。
[0100] 其中,所述解析結(jié)果優(yōu)選地,具體包括對(duì)所述字符串中每個(gè)中文字符排版后的矢 量坐標(biāo)和用于繪制每個(gè)中文字符輪廓的曲線類型。
[0101] 通過上述的步驟12-14,實(shí)現(xiàn)了渲染客戶端獲取渲染服務(wù)器上安裝的字體的輪廓 的過程。
[0102] 在獲取了字符串的字體輪廓后,執(zhí)行步驟15,根據(jù)所述解析結(jié)果對(duì)所述文字進(jìn)行 渲染。
[0103] 步驟15可以具體為:
[0104] 根據(jù)所述排版后的矢量坐標(biāo)和所述曲線類型繪制與每個(gè)中文字符對(duì)應(yīng)的三次貝 塞爾曲線和線段封閉曲線;
[0105] 填充所述線段封閉曲線。
[0106] 三次貝塞爾曲線和線段封閉曲線主要是為了確定每個(gè)中文字符的輪廓,并用中文 字符串的文字信息中的字體顏色填充線段封閉曲線。
[0107] 通過上述五個(gè)步驟過程就實(shí)現(xiàn)了對(duì)中文字符串的渲染過程,舉例說明如下。
[0108] 渲染平臺(tái)的客戶端通過客戶端頁(yè)面與用戶進(jìn)行交互,由用戶對(duì)需要渲染的中文字 符串的文字內(nèi)容、字體和字號(hào)進(jìn)行設(shè)定,客戶端獲取到需要進(jìn)行渲染的中文字符串的文字 信息如下:
[0109] 文字內(nèi)容是"你好",字體是"華文行楷",字號(hào)大小為"12",字形為"斜體"且字體 顏色為"紅色"。
[0110] 中文字符的順序依次是"你"和"好",客戶端按照該順序?qū)ψ址?你好"中的每 個(gè)中文字符的文字信息進(jìn)行重新封裝,過濾掉不必要的信息后,用http請(qǐng)求的方式發(fā)送到 渲染服務(wù)器,來獲取渲染服務(wù)器上安裝的字體的輪廓。
[0111] 渲染服務(wù)器會(huì)將對(duì)字符串"你好"排版后的xml數(shù)據(jù)返回到客戶端,所述客戶端對(duì) xml數(shù)據(jù)進(jìn)行解析,獲取其中對(duì)所述字符串"你好"中每個(gè)中文字符排版后的矢量坐標(biāo)(即 "你,,和"好,,的矢量坐標(biāo)),以及用于繪制每個(gè)中文字符輪廓的曲線類型(即"你,,和"好,,輪 廓的曲線類型),其中矢量坐標(biāo)為能夠在當(dāng)前空間唯一標(biāo)識(shí)所述中文字符的輪廓的坐標(biāo)。
[0112] 進(jìn)一步地,根據(jù)上述的矢量坐標(biāo)和曲線類型,就能夠繪制與每個(gè)中文字符("你"和 "好")對(duì)應(yīng)的三次貝塞爾曲線和線段封閉曲線,即按照華文行楷12號(hào)字體的大小且字形為 斜體的格式繪制得到"你"和"好"的輪廓,并用紅色填充其中的封閉曲線,完成字體渲染的 過程。
[0113] 上述過程在實(shí)現(xiàn)了字體渲染的同時(shí),不需要事先將需要使用的字體嵌入并編譯到 渲染平臺(tái)的程序中,避免了渲染平臺(tái)程序因嵌入并編譯某種字體而變大。
[0114] 上述的字體渲染的方法,其中優(yōu)選地,執(zhí)行完步驟15后,所述方法還包括:
[0115] 步驟16,對(duì)渲染后的字符串進(jìn)行縮放、對(duì)齊或旋轉(zhuǎn)操作。
[0116] 其中,步驟16可以具體為:
[0117] 對(duì)渲染后的字符串中需要進(jìn)行縮放、對(duì)齊或旋轉(zhuǎn)操作的中文字符的矢量坐標(biāo)進(jìn)行 調(diào)整。
[0118] 在本發(fā)明實(shí)施例中,應(yīng)當(dāng)注意地是,對(duì)渲染后的字符串進(jìn)行縮放或?qū)R操作即可 以在客戶端進(jìn)行,也可以在服務(wù)器上實(shí)現(xiàn),一般情況下,旋轉(zhuǎn)操作需要在客戶端進(jìn)行。
[0119] 如果需要對(duì)渲染后的字符串進(jìn)行其他特效處理,例如縮放、對(duì)齊旋轉(zhuǎn)等操作,只要 對(duì)字符串中需要進(jìn)行縮放、對(duì)齊或旋轉(zhuǎn)操作的中文字符的矢量坐標(biāo)進(jìn)行調(diào)整就可以實(shí)現(xiàn)。 舉例說明如下。
[0120] 假定渲染后的字符串"你好"中"你"的矢量坐標(biāo)為:
[0121] 水平坐標(biāo)最小值為X1,水平坐標(biāo)最大值為X2;
[0122] 垂直坐標(biāo)最小值為Y1,垂直坐標(biāo)最大值為Y2 ;
[0123] "好"的矢量坐標(biāo)為:
[0124] 水平坐標(biāo)最小值為X3,水平坐標(biāo)最大值為X4 ;
[0125] 垂直坐標(biāo)最小值為Y3,垂直坐標(biāo)最大值為Y4 ;
[0126] 如果需要對(duì)字符串"你好"中的"你"進(jìn)行與水平坐標(biāo)最小值為X5的中文字符"他" 進(jìn)行上下行對(duì)齊的操作,可以通過將X 1調(diào)整為X5, X2調(diào)整為X2-XJX5, Y1和Y2保持不變,以 此實(shí)現(xiàn)了對(duì)齊操作;
[0127] 如果需要對(duì)字符串"你好"中的"好"進(jìn)行放大操作,可以通過增加X2到X 1的間距 以及Y2到Y(jié)1的間距,直到滿足需要放大的倍數(shù)。
[0128] 旋轉(zhuǎn)操作同上,同樣是通過調(diào)整需要進(jìn)行旋轉(zhuǎn)操作的中文字符的矢量坐標(biāo)來實(shí) 現(xiàn)。
[0129] 通過上述過程可以看出,本發(fā)明實(shí)施例還同時(shí)解決了渲染平臺(tái)中的中文特效、如 何對(duì)多種中文字體渲染、中文字號(hào)縮小會(huì)導(dǎo)致鋸齒等問題。
[0130] 本發(fā)明實(shí)施例還提供了 一種字體渲染的方法,用于渲染服務(wù)器,所述方法如圖2 所示,包括:
[0131] 步驟21,接收渲染平臺(tái)的客戶端發(fā)送的需要渲染的由至少一個(gè)中文字符組成的字 符串的文字信息;
[0132] 步驟22,根據(jù)所述文字信息分別獲取所述字符串中每個(gè)中文字符的矢量坐標(biāo),其 中所述矢量坐標(biāo)為能夠在當(dāng)前空間唯一標(biāo)識(shí)所述中文字符的輪廓的坐標(biāo);
[0133] 步驟23,根據(jù)所述文字信息和所述字符串中每個(gè)中文字符的矢量坐標(biāo)對(duì)所述字符 串進(jìn)行排版;
[0134] 步驟24,將對(duì)所述字符串排版后的數(shù)據(jù)返回所述渲染平臺(tái)的客戶端,使得所述渲 染平臺(tái)的客戶端對(duì)所述字符串排版后的數(shù)據(jù)進(jìn)行解析,獲得解析結(jié)果后,根據(jù)所述解析結(jié) 果對(duì)所述字符串進(jìn)行渲染。
[0135] 這里渲染服務(wù)器可以是java的servlet容器等,主要是在接收到需要渲染的由 至少一個(gè)中文字符組成的字符串的文字信息后,確定所述字符串中每個(gè)中文字符的矢量坐 標(biāo),并對(duì)字符串進(jìn)行排版,將排版后的數(shù)據(jù)返回客戶端,以便客戶端對(duì)所述字符串排版后的 數(shù)據(jù)進(jìn)行解析,獲得解析結(jié)果后,根據(jù)所述解析結(jié)果對(duì)所述字符串進(jìn)行渲染。
[0136] 下面分步驟詳細(xì)介紹所述字體渲染的方法。
[0137] 首先執(zhí)行步驟21,接收渲染平臺(tái)的客戶端發(fā)送的需要渲染的由至少一個(gè)中文字符 組成的字符串的文字信息。
[0138] 其中,所述的文字信息至少包括文字內(nèi)容、字體和字號(hào),當(dāng)然,所述的文字信息還 可以包括字形(例如所述字符串是否為粗體和/或斜體)、文字顏色等其他信息。
[0139] 然后,執(zhí)行步驟22,根據(jù)所述文字信息分別獲取所述字符串中每個(gè)中文字符的矢 量坐標(biāo)。
[0140] 步驟22可以進(jìn)一步具體為:
[0141] 將所述文字信息轉(zhuǎn)換為封裝文字信息的可編程語(yǔ)言的對(duì)象;
[0142] 根據(jù)所述對(duì)象依次分別確定所述字符串中每個(gè)中文字符的矢量坐標(biāo)。
[0143] 為了確定所述字符串中每個(gè)中文字符的矢量坐標(biāo),服務(wù)器首先將接收到的文字 信息轉(zhuǎn)換成封裝文字信息的可編程語(yǔ)言的對(duì)象,在本發(fā)明實(shí)施例中,采用的可編程語(yǔ)言 為java,對(duì)應(yīng)的可編程語(yǔ)目的對(duì)象為java語(yǔ)目中的ClnFont對(duì)象,封裝了文字彳目息的 CInFont. java的部分代碼如下:

【權(quán)利要求】
1. 一種字體撞染的方法,用于撞染平臺(tái)的客戶端,其特征在于,所述方法包括: 獲取需要撞染的由至少一個(gè)中文字符組成的字符串的文字信息; 將所述文字信息發(fā)送到撞染服務(wù)器,使得所述服務(wù)器根據(jù)所述文字信息分別確定所述 字符串中每個(gè)中文字符的矢量坐標(biāo)后,根據(jù)所述文字信息和所述字符串中每個(gè)中文字符的 矢量坐標(biāo)對(duì)所述字符串進(jìn)行排版,其中所述矢量坐標(biāo)為能夠在當(dāng)前空間唯一標(biāo)識(shí)所述中文 字符的輪廓的坐標(biāo); 接收所述服務(wù)器返回的對(duì)所述字符串排版后的數(shù)據(jù); 解析所述對(duì)所述字符串排版后的數(shù)據(jù),獲得解析結(jié)果; 根據(jù)所述解析結(jié)果對(duì)所述字符串進(jìn)行撞染。
2. 如權(quán)利要求1所述的字體撞染的方法,其特征在于,所述方法還包括: 對(duì)所述文字信息按照所述字符串中的中文字符順序進(jìn)行重新封裝; 所述將所述文字信息發(fā)送到撞染服務(wù)器具體為將重新封裝后的文字信息發(fā)送到撞染 服務(wù)器。
3. 如權(quán)利要求1或2所述的字體撞染的方法,其特征在于,所述解析結(jié)果具體包括對(duì)所 述字符串中每個(gè)中文字符排版后的矢量坐標(biāo)和用于繪制每個(gè)中文字符輪廓的曲線類型; 所述根據(jù)所述解析結(jié)果對(duì)所述文字進(jìn)行撞染具體為: 根據(jù)所述排版后的矢量坐標(biāo)和所述曲線類型繪制與每個(gè)中文字符對(duì)應(yīng)的H次貝塞爾 曲線和線段封閉曲線; 填充所述線段封閉曲線。
4. 如權(quán)利要求1或2所述的字體撞染的方法,其特征在于,根據(jù)所述解析結(jié)果對(duì)所述字 符串進(jìn)行撞染后,所述方法還包括: 對(duì)撞染后的字符串進(jìn)行縮放、對(duì)齊或旋轉(zhuǎn)操作。
5. 如權(quán)利要求4所述字體撞染的方法,其特征在于,所述對(duì)撞染后的字符串進(jìn)行縮放、 對(duì)齊或旋轉(zhuǎn)操作具體為: 對(duì)撞染后的字符串中需要進(jìn)行縮放、對(duì)齊或旋轉(zhuǎn)操作的中文字符的矢量坐標(biāo)進(jìn)行調(diào) 整。
6. -種字體撞染的方法,用于撞染服務(wù)器,其特征在于,所述方法包括: 接收撞染平臺(tái)的客戶端發(fā)送的需要撞染的由至少一個(gè)中文字符組成的字符串的文字 信息; 根據(jù)所述文字信息分別獲取所述字符串中每個(gè)中文字符的矢量坐標(biāo),其中所述矢量坐 標(biāo)為能夠在當(dāng)前空間唯一標(biāo)識(shí)所述中文字符的輪廓的坐標(biāo); 根據(jù)所述文字信息和所述字符串中每個(gè)中文字符的矢量坐標(biāo)對(duì)所述字符串進(jìn)行排 版; 將對(duì)所述字符串排版后的數(shù)據(jù)返回所述撞染平臺(tái)的客戶端,使得所述撞染平臺(tái)的客戶 端對(duì)所述字符串排版后的數(shù)據(jù)進(jìn)行解析,獲得解析結(jié)果后,根據(jù)所述解析結(jié)果對(duì)所述字符 串進(jìn)行撞染。
7. 如權(quán)利要求6所述的字體撞染的方法,其特征在于,所述根據(jù)所述文字信息分別獲 取所述字符串中每個(gè)中文字符的矢量坐標(biāo)具體為: 將所述文字信息轉(zhuǎn)換為封裝文字信息的可編程語(yǔ)言的對(duì)象; 根據(jù)所述對(duì)象依次分別確定所述字符串中每個(gè)中文字符的矢量坐標(biāo)。
8. 如權(quán)利要求6或7所述的字體撞染的方法,其特征在于,所述文字信息包括字間距和 行間距; 所述根據(jù)所述文字信息和所述字符串中每個(gè)中文字符的矢量坐標(biāo)對(duì)所述字符串進(jìn)行 排版具體包括: 根據(jù)所述字間距、行間距和所述字符串中每個(gè)中文字符的矢量坐標(biāo)對(duì)所述字符串進(jìn)行 排版,獲得與所述字符串中每個(gè)中文字符對(duì)應(yīng)的排版后的矢量坐標(biāo); 確定用于繪制所述字符串中每個(gè)中文字符的輪廓的曲線類型。
9. 一種字體撞染的裝置,用于撞染平臺(tái)的客戶端,其特征在于,所述裝置包括: 第一獲取模塊,用于獲取需要撞染的由至少一個(gè)中文字符組成的字符串的文字信息; 第一發(fā)送模塊,用于將所述文字信息發(fā)送到撞染服務(wù)器,使得所述服務(wù)器根據(jù)所述文 字信息分別確定所述字符串中每個(gè)中文字符的矢量坐標(biāo)后,根據(jù)所述文字信息和所述字符 串中每個(gè)中文字符的矢量坐標(biāo)對(duì)所述字符串進(jìn)行排版,其中所述矢量坐標(biāo)為能夠在當(dāng)前空 間唯一標(biāo)識(shí)所述中文字符的輪廓的坐標(biāo); 第一接收模塊,用于接收所述服務(wù)器返回的對(duì)所述字符串排版后的數(shù)據(jù); 解析模塊,用于解析所述對(duì)所述字符串排版后的數(shù)據(jù),獲得解析結(jié)果; 撞染模塊,用于根據(jù)所述解析結(jié)果對(duì)所述字符串進(jìn)行撞染。
10. 如權(quán)利要求9所述的字體撞染的裝置,其特征在于,所述裝置還包括: 第一處理模塊,用于對(duì)所述文字信息按照所述字符串中的中文字符順序進(jìn)行重新封 裝; 所述第一發(fā)送模塊具體為將重新封裝后的文字信息發(fā)送到撞染服務(wù)器。
11. 如權(quán)利要求9或10所述的字體撞染的裝置,其特征在于,所述解析結(jié)果具體包括 對(duì)所述字符串中每個(gè)中文字符排版后的矢量坐標(biāo)和用于繪制每個(gè)中文字符輪廓的曲線類 型; 所述撞染模塊具體包括: 繪制子模塊,用于根據(jù)所述排版后的矢量坐標(biāo)和所述曲線類型繪制與每個(gè)中文字符對(duì) 應(yīng)的H次貝塞爾曲線和線段封閉曲線; 填充子模塊,用于填充所述線段封閉曲線。
12. 如權(quán)利要求9或10所述的字體撞染的裝置,其特征在于,所述裝置還包括: 第二處理模塊,用于對(duì)撞染后的字符串進(jìn)行縮放、對(duì)齊或旋轉(zhuǎn)操作。
13. 如權(quán)利要求12所述字體撞染的裝置,其特征在于,所述第二處理模塊具體為: 對(duì)撞染后的字符串中需要進(jìn)行縮放、對(duì)齊或旋轉(zhuǎn)操作的中文字符的矢量坐標(biāo)進(jìn)行調(diào) 整。
14. 一種字體撞染的裝置,用于撞染服務(wù)器,其特征在于,所述裝置包括: 第二接收模塊,用于接收撞染平臺(tái)的客戶端發(fā)送的需要撞染的由至少一個(gè)中文字符組 成的字符串的文字信息; 第二獲取模塊,用于根據(jù)所述文字信息分別獲取所述字符串中每個(gè)中文字符的矢量坐 標(biāo),其中所述矢量坐標(biāo)為能夠在當(dāng)前空間唯一標(biāo)識(shí)所述中文字符的輪廓的坐標(biāo); 排版模塊,用于根據(jù)所述文字信息和所述字符串中每個(gè)中文字符的矢量坐標(biāo)對(duì)所述字 符串進(jìn)行排版; 第二發(fā)送模塊,用于將對(duì)所述字符串排版后的數(shù)據(jù)返回所述撞染平臺(tái)的客戶端,使得 所述撞染平臺(tái)的客戶端對(duì)所述字符串排版后的數(shù)據(jù)進(jìn)行解析,獲得解析結(jié)果后,根據(jù)所述 解析結(jié)果對(duì)所述字符串進(jìn)行撞染。
15. 如權(quán)利要求14所述的字體撞染的裝置,其特征在于,所述第二獲取模塊具體包括: 轉(zhuǎn)換子模塊,用于將所述文字信息轉(zhuǎn)換為封裝文字信息的可編程語(yǔ)言的對(duì)象; 第一確定子模塊,用于根據(jù)所述對(duì)象依次分別確定所述字符串中每個(gè)中文字符的矢量 坐標(biāo)。
16. 如權(quán)利要求14或15所述的字體撞染的裝置,其特征在于,所述文字信息包括字間 距和行間距; 所述排版模塊具體包括: 獲取子模塊,用于根據(jù)所述字間距、行間距和所述字符串中每個(gè)中文字符的矢量坐標(biāo) 對(duì)所述字符串進(jìn)行排版,獲得與所述字符串中每個(gè)中文字符對(duì)應(yīng)的排版后的矢量坐標(biāo); 第二確定子模塊,用于確定用于繪制所述字符串中每個(gè)中文字符的輪廓的曲線類型。
17. -種撞染平臺(tái)的客戶端,其特征在于,包括權(quán)利要求9-13任一項(xiàng)所述的字體撞染 的裝置。
18. -種撞染服務(wù)器,其特征在于,包括權(quán)利要求14-16任一項(xiàng)所述的字體撞染的裝 置。
【文檔編號(hào)】G06F17/21GK104461483SQ201310422009
【公開日】2015年3月25日 申請(qǐng)日期:2013年9月16日 優(yōu)先權(quán)日:2013年9月16日
【發(fā)明者】薛彪, 王棟瑋, 程志鋒 申請(qǐng)人:北大方正集團(tuán)有限公司, 方正信息產(chǎn)業(yè)控股有限公司, 上海方正數(shù)字出版技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
古蔺县| 黄龙县| 清苑县| 绥棱县| 新乡县| 桦南县| 九龙县| 星座| 大安市| 榕江县| 西平县| 常熟市| 柳林县| 盐亭县| 津南区| 北碚区| 江安县| 石阡县| 长治市| 都匀市| 达尔| 麦盖提县| 民勤县| 长岭县| 九江市| 云阳县| 临夏县| 柳江县| 隆化县| 三原县| 福海县| 广安市| 宁乡县| 铜陵市| 介休市| 胶南市| 水城县| 淅川县| 天全县| 阳新县| 中江县|