国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于Linux操作系統(tǒng)的中文字體渲染控制方法及系統(tǒng)與流程

      文檔序號:12038997閱讀:346來源:國知局
      基于Linux操作系統(tǒng)的中文字體渲染控制方法及系統(tǒng)與流程
      本發(fā)明涉及渲染技術(shù)領(lǐng)域,尤其涉及一種基于Linux操作系統(tǒng)的中文字體渲染控制方法及系統(tǒng)。

      背景技術(shù):
      字體的顯示除了與字體本身所包含的點(diǎn)陣字體和矢量字體,以及顯示器硬件條件有關(guān),還與渲染引擎所采用的渲染方法有關(guān)。在相同條件下,如果提升顯示器硬件條件,例如提高分辨率,字體的顯示效果會很清晰。如android操作系統(tǒng)中中文字體顯示清晰細(xì)膩,很大程度上是與其所使用的顯示材質(zhì)有關(guān)。其所使用的材質(zhì)的分辨率能達(dá)到260以上,而普通的LCD顯示器的分辨率在96左右。如果一個(gè)字體文件中所嵌入的不同字號的點(diǎn)陣字體越多,其顯示效果越清晰,像微軟雅黑,ARPLUMing,其顯示清晰度就比較好。對于一般字體文件,所嵌入的點(diǎn)陣字體不可能太多,這會導(dǎo)致字體文件太大,消耗更多內(nèi)存資源,所以很多廠商除了在上述兩種情況下做字體優(yōu)化,通常也會在渲染引擎的渲染方法上進(jìn)行優(yōu)化。目前,微軟所使用的是ClearType渲染技術(shù),蘋果采用較多的是MacType(GDI++)渲染技術(shù)。而Linux操作系統(tǒng)下普遍采用FreeType渲染引擎進(jìn)行字體渲染?,F(xiàn)有的Linux系統(tǒng)使用FreeType對字體進(jìn)行渲染,由于其內(nèi)部用于渲染的變量以有限的幅值范圍在FreeType中被使用,對于部分字體可較好地解決字體殘缺,模糊不清,字體筆劃粗細(xì)不一的問題,但并不是所有字體都可以得到這樣好的處理。例如,在Linux系統(tǒng)下使用DroidSansFallback會出現(xiàn)字體模糊不全、字體筆畫殘缺的現(xiàn)象?,F(xiàn)有技術(shù)中的渲染方法不具有靈活性和針對性。因此,亟需一種解決方案來解決上述問題,使得在Linux操作系統(tǒng)下LCD顯示器中顯示中文字體時(shí),具有針對性和靈活性,能夠靈活地渲染不同字體。

      技術(shù)實(shí)現(xiàn)要素:
      本發(fā)明所要解決的技術(shù)問題之一是需要提供一種具有針對性和靈活性,能夠靈活地渲染不同字體的基于Linux操作系統(tǒng)的中文字體渲染控制方法及系統(tǒng)。為了解決上述技術(shù)問題,本發(fā)明提供了一種基于Linux操作系統(tǒng)的中文字體渲染控制方法,該方法包括:發(fā)送字體顯示請求,所述請求包括待顯示的中文字體的信息;根據(jù)所述待顯示的中文字體的信息,確定相應(yīng)的字體匹配規(guī)則,并按照字體匹配規(guī)則查找與所述待顯示的中文字體的信息匹配的字體文件;將所述字體文件的信息補(bǔ)充到所述待顯示的中文字體的信息中;基于已設(shè)定的渲染參數(shù)來計(jì)算關(guān)于補(bǔ)充后的字體信息的渲染信息,所述渲染參數(shù)為用于從FreeType字體引擎外部設(shè)置字體渲染條件的Linux操作系統(tǒng)環(huán)境變量;基于所述渲染信息來顯示所述待顯示的中文字體。在一個(gè)實(shí)施例中,所述字體匹配規(guī)則包括以下預(yù)定的渲染方式中至少之一:預(yù)定的rgba模式;預(yù)定是否執(zhí)行hinting渲染;預(yù)定是否執(zhí)行autohint渲染;預(yù)定是否執(zhí)行抗鋸齒處理;預(yù)定的渲染風(fēng)格;預(yù)定的LCD過濾方式。在一個(gè)實(shí)施例中,在利用所述Linux操作系統(tǒng)中的FreeType字體引擎計(jì)算關(guān)于補(bǔ)充后的字體信息的渲染信息之前,將渲染參數(shù)從所述FreeType字體引擎中導(dǎo)出;在所述FreeType字體引擎中打開TT_CONFIG_OPTION_BYTECODE_INTERPRETER選項(xiàng)和FT_CONFIG_OPTION_SUBPIXEL_RENDERING選項(xiàng)。在一個(gè)實(shí)施例中,還包括,從多種字體匹配規(guī)則中切換出所需要的字體匹配規(guī)則;從多個(gè)渲染參數(shù)中切換出所需要的渲染參數(shù)。根據(jù)本發(fā)明的另一方面,還提供了一種基于Linux操作系統(tǒng)的中文字體渲染控制系統(tǒng),該系統(tǒng)包括:發(fā)送模塊,其發(fā)送字體顯示請求,所述請求包括待顯示的中文字體的信息;查找模塊,其根據(jù)所述顯示的中文字體的信息,確定相應(yīng)的字體匹配規(guī)則,并按照字體匹配規(guī)則查找與所述待顯示的中文字體的信息匹配的字體文件;補(bǔ)充模塊,其將所述字體文件的信息補(bǔ)充到所述待顯示的中文字體的信息中;計(jì)算模塊,其基于已設(shè)定的渲染參數(shù)來計(jì)算關(guān)于補(bǔ)充后的字體信息的渲染信息,所述渲染參數(shù)為用于從FreeType字體引擎外部設(shè)置字體渲染條件的Linux操作系統(tǒng)環(huán)境的外部變量;顯示模塊,其基于所述渲染信息來顯示所述待顯示的中文字體。在一個(gè)實(shí)施例中,所述字體匹配規(guī)則包括以下預(yù)定的渲染方式中至少之一:預(yù)定的rgba模式;預(yù)定是否執(zhí)行hinting渲染;預(yù)定是否執(zhí)行autohint渲染;預(yù)定是否執(zhí)行抗鋸齒處理;預(yù)定的渲染風(fēng)格;預(yù)定的LCD過濾方式。在一個(gè)實(shí)施例中,在利用所述Linux操作系統(tǒng)中的FreeType字體引擎作為所述計(jì)算模塊來計(jì)算關(guān)于補(bǔ)充后的字體信息的渲染信息之前,將渲染參數(shù)從所述FreeType字體引擎中導(dǎo)出;在所述FreeType字體引擎中打開TT_CONFIG_OPTION_BYTECODE_INTERPRETER選項(xiàng)和FT_CONFIG_OPTION_SUBPIXEL_RENDERING選項(xiàng)。在一個(gè)實(shí)施例中,還包括,切換模塊,其從多種字體匹配規(guī)則中切換出所需要的字體匹配規(guī)則,從多個(gè)渲染參數(shù)中切換出所需要的渲染參數(shù)。與現(xiàn)有技術(shù)相比,本發(fā)明的一個(gè)或多個(gè)實(shí)施例可以具有如下優(yōu)點(diǎn):本發(fā)明因?yàn)椴捎昧烁鶕?jù)提取出的預(yù)定的渲染參數(shù)對中文字體進(jìn)行渲染,所以克服了部分字體在Linux操作系統(tǒng)上顯示殘缺的現(xiàn)象,并且通過外置的渲染參數(shù),可以方便FreeType渲染參數(shù)修改,避免了重新修改FreeType源碼、編譯和安裝FreeType帶來的冗繁操作??梢杂行p少在Linux操作系統(tǒng)下中文字體的鋸齒感,減少中文顯示中字體筆畫殘缺,在相同硬件與軟件環(huán)境下提升字體顯示清晰度,減輕用戶視覺負(fù)擔(dān)。本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。附圖說明附圖用來提供對本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實(shí)施例共同用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:圖1是根據(jù)本發(fā)明一實(shí)施例的基于Linux操作系統(tǒng)的中文字體渲染控制方法的流程示意圖;圖2是根據(jù)本發(fā)明一示例的基于Linux操作系統(tǒng)的中文字體渲染控制方法的流程示意圖;圖3是根據(jù)本發(fā)明另一示例的包括切換器的字體渲染控制方法的流程示意圖;圖4(a)和圖4(b)分別是未渲染的字體結(jié)果和渲染后的字體結(jié)果示例圖;圖5是根據(jù)本發(fā)明一實(shí)施例的基于Linux操作系統(tǒng)的中文字體渲染控制系統(tǒng)的結(jié)構(gòu)示意圖。具體實(shí)施方式以下將結(jié)合附圖及實(shí)施例來詳細(xì)說明本發(fā)明的實(shí)施方式,借此對本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過程能充分理解并據(jù)以實(shí)施。需要說明的是,只要不構(gòu)成沖突,本發(fā)明中的各個(gè)實(shí)施例以及各實(shí)施例中的各個(gè)特征可以相互結(jié)合,所形成的技術(shù)方案均在本發(fā)明的保護(hù)范圍之內(nèi)。另外,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。實(shí)施例一圖1是根據(jù)本發(fā)明一實(shí)施例的基于Linux操作系統(tǒng)的中文字體渲染控制方法的流程示意圖,下面參考圖1來詳細(xì)說明本發(fā)明各個(gè)步驟。步驟S110,發(fā)送字體顯示請求,該請求包括待顯示的中文字體的信息。例如,要顯示的字體為“在線賬戶”這四個(gè)字,將關(guān)于該文字的信息,例如顯示的字形大小和語言為中文發(fā)送出去。步驟S120,根據(jù)待顯示的中文字體的信息,確定相應(yīng)的字體匹配規(guī)則,并按照字體匹配規(guī)則查找與待顯示的中文字體的信息匹配的字體文件。由于在步驟S110中發(fā)送的請求中所包含的字體信息是不完整的,該信息僅體現(xiàn)要顯示什么字,但是如何顯示,用什么字體來顯示效果是不確定的,因此通過該步驟可以知道用什么字體來顯示。在本實(shí)施例中包括多種字體匹配規(guī)則,需要從多種字體匹配規(guī)則中切換出所需要的字體匹配規(guī)則。優(yōu)選地,字體匹配規(guī)則可以包括以下預(yù)定的渲染方式中至少之一:預(yù)定的rgba模式;預(yù)定是否執(zhí)行hinting渲染;預(yù)定是否執(zhí)行autohint渲染;預(yù)定是否執(zhí)行抗鋸齒(antialias)處理;預(yù)定的渲染風(fēng)格(Hintstyle);預(yù)定的LCD過濾方式(lcdfilter)。也就是說,上 述的的渲染方式可以單獨(dú)使用也可以疊加使用。需要說明的是,LCD過濾方式指的是lcdfilter,其取值可以是lcddefault、lcdlegacy或lcdlight。Rgba取值可以是rgb或bgr。Autohint取值可以是true或false。Hinting取值可以是true或false。是否使用抗鋸齒antialias可以取值為true或false。渲染風(fēng)格Hintstyle可以是hintfull或hintslight等取值。其中l(wèi)cddefault、rgba、autohint、antialias、hintstyle、hinting可以疊加使用。如下以autohint渲染為例,給出單獨(dú)使用autohint渲染的實(shí)施例:<?xmlversion="1.0"?><!DOCTYPEfontconfigSYSTEM"fonts.dtd"><fontconfig><matchtarget="font"><testname="family"compare="eq"><string>FZZhunYuan-M02</string><string>方正準(zhǔn)圓_GBK</string></test><editname="autohint"mode="assign"><bool>true</bool></edit></match></fontconfig>如下以疊加使用上述渲染方式為例,給出疊加使用預(yù)定的rgba模式為rgb、預(yù)定執(zhí)行hinting渲染、預(yù)定執(zhí)行autohint渲染、預(yù)定執(zhí)行抗鋸齒(antialias)處理、預(yù)定的渲染風(fēng)格(Hintstyle)為hintfull以及預(yù)定的LCD(lcdfilter)過濾方式為lcddefault的實(shí)施例:<?xmlversion="1.0"?><!DOCTYPEfontconfigSYSTEM"fonts.dtd"><fontconfig><matchtarget="font"><testname="family"compare="eq"><string>FZZhunYuan-M02</string><string>方正準(zhǔn)圓_GBK</string></test><editname="rgba"mode="assign"><const>rgb</const></edit><editname="hinting"mode="assign"><bool>true</bool></edit><editname="autohint"mode="assign"><bool>true</bool></edit><editname="antialias"mode="assign"><bool>true</bool></edit><editname="hintstyle"mode="assign"><const>hintfull</const></edit><editname="lcdfilter"mode="assign"><const>lcddefault</const></edit></match></fontconfig>需要說明的是:單獨(dú)使用某種渲染方式和疊加使用不同的渲染方式,渲染結(jié)果是不一樣的,渲染的效果也需要根據(jù)實(shí)際效果而定,并非疊加的渲染方式越多效果越好。例如,通過預(yù)定的字體匹配規(guī)則,確定“在線賬戶”這四個(gè)字需要用“方正準(zhǔn)圓_GBK”的字體來顯示,則可以在包含“方正準(zhǔn)圓_GBK”的字體文件“FZZhunYuan-M02.TTF”中找到關(guān)于該字體文件。步驟S130,將字體文件的信息補(bǔ)充到待顯示的中文字體的信息中。步驟S140,基于已設(shè)定的渲染參數(shù)來計(jì)算關(guān)于補(bǔ)充后的字體信息的渲染信息,其中,渲染參數(shù)用來表現(xiàn)不同的渲染風(fēng)格,渲染參數(shù)為用于從FreeType字體引擎外部設(shè)置字體渲染條件的Linux操作系統(tǒng)環(huán)境變量。本實(shí)施例中,包括多個(gè)渲染參數(shù),需要從多個(gè)渲染參數(shù)中切換出所需要的預(yù)定的渲染參數(shù)。步驟S150,基于渲染信息來顯示待顯示的中文字體。下面通過一示例來進(jìn)一步說明本發(fā)明的特征和優(yōu)點(diǎn),下面以Linux操作系統(tǒng)為例,來說明如何進(jìn)行中文字體的渲染控制。如圖2所示,具體包括以下步驟。步驟(1),應(yīng)用程序?qū)⒁@示的字體請求發(fā)送到fontconfig字體管理器。步驟(2.3),fontconfig字體管理器根據(jù)應(yīng)用程序提出的字體請求與發(fā)送過來的字體信息,確定對應(yīng)的字體匹配規(guī)則,然后按照字體匹配規(guī)則查找與字體信息匹配的字體文件。在執(zhí)行該步驟之前,需要事先在fonts.conf規(guī)則配置文件導(dǎo)入新的字體匹配規(guī)則(步驟(2.1)),fontconfig字體管理器使用fonts.conf規(guī)則配置文件中新的字體匹配規(guī)則來查找(步驟(2.2))。例如,fontconfig字體管理器接收應(yīng)用程序發(fā)送過來的“在線賬戶”這四個(gè)字,按照fonts.conf內(nèi)容,得到關(guān)于這四個(gè)字的rgba模式為rgb、需要對這四個(gè)字作hinting渲染、需要使用autohint對字體自動渲染、以及需要進(jìn)行抗鋸齒處理、渲染風(fēng)格為輕度渲染以及l(fā)cd過濾方式使用默認(rèn)lcd過濾方式(次像素渲染)。最后根據(jù)上述內(nèi)容查找到最佳渲染的字體為“方正準(zhǔn)圓_GBK”。步驟(3),查找完成之后,將顯示該字體的字體文件信息補(bǔ)充到應(yīng)用程序發(fā)送過來 的不完整的字體信息中。步驟(4),fontconfig字體管理器將補(bǔ)充后的字體信息發(fā)送給FreeType字體引擎。步驟(5),F(xiàn)reeType字體引擎根據(jù)fontconfig字體管理器傳遞過來的完整字體信息,使用步驟(5.1)中指定的渲染參數(shù)(預(yù)先設(shè)置好的),并計(jì)算關(guān)于補(bǔ)充后的字體信息的渲染信息,即對如何顯示該字體進(jìn)行計(jì)算,然后將畫字信息傳遞給xft字體服務(wù)程序(步驟(5.2))。其中,所要說明的是,所傳遞的補(bǔ)充后的字體信息的渲染信息只是畫字信息的一部分,此外畫字信息還包括字族信息,字形信息,字符與字體度量信息,字形光柵化信息,字形度量信息等。具體地,針對該字體設(shè)定渲染參數(shù),然后FreeType字體引擎根據(jù)渲染參數(shù)來調(diào)整字體渲染計(jì)算方法。需要說明的是,在進(jìn)行該步驟之前,需要將原FreeType字體引擎中的固定的渲染參數(shù)導(dǎo)出。具體地,首先,在FreeType字體引擎中重新定義原有供渲染算法使用的渲染參數(shù),將其設(shè)定為由Linux系統(tǒng)環(huán)境讀取的參數(shù)。然后,打開TT_CONFIG_OPTION_BYTECODE_INTERPRETER選項(xiàng),該選項(xiàng)表明對freetype所渲染的字體打開字節(jié)碼解釋器,同時(shí)在FreeType中打開FT_CONFIG_OPTION_SUBPIXEL_RENDERING次像素繪制功能,該選項(xiàng)用來打開myfreetype.sh中所有渲染參數(shù)。然后可以在/etc/profile.d/myfreetype.sh文件中設(shè)置以下參數(shù):FILTER_PARAMS(FIR過濾器的過濾參數(shù),一般在0-100之間,用于調(diào)整平滑度與濃度之間的關(guān)系)STEM_ALIGNMENT_STRENGTH(對字形進(jìn)行分析,并調(diào)整字形的像素邊界)STEM_FITTING_STRENGTH(對字形橫向擴(kuò)展或加粗時(shí)調(diào)整像素邊界)GRAYSCALE_FILTER_STRENGTH(顯示器次像素渲染時(shí)字形走形時(shí)的灰度調(diào)整)FRINGE_FILTER_STRENGTH(濾波器使用默認(rèn)autohint來代替,刪除水平邊緣上的字形)AUTOHINT_HORIZONTAL_STEM_DARKEN_STRENGTH(使用autohint水平過濾呈現(xiàn)半暗)AUTOHINT_VERTICAL_STEM_DARKEN_STRENGTH(使用autohint垂直過濾呈現(xiàn)半暗)WINDOWS_STYLE_SHARPENING_STRENGTH(以windows的方式進(jìn)行銳化字形)CHROMEOS_STYLE_SHARPENING_STRENGTH(以CHROMEOS的方式銳化字形)GAMMA_CORRECTTION(以伽馬函數(shù)校正LCD顯示器的相位)BRIGHTNESS(LCD顯示器亮度調(diào)節(jié))CONTRAST(LCD顯示器對比度調(diào)節(jié))USE_VARIOUS_TWEAKS(使用autohint來減輕字體重度,并維持字型寬度)AUTOHINT_INCREASE_GLYPH_HEIGHTS(使用autohint增加字形高度)AUTOHINT_SNAP_STEM_HEIGHT(消除autohint時(shí)像E,F(xiàn),T這樣的字母上邊橫線捕捉不到完整像素的高度的情況)STEM_SNAPPING_SLIDING_SCALE(以ppem的方式對齊,不使字形變得更劇烈)USE_KNOWN_SETTINGS_ON_SELECTED_FONTS(比較時(shí)候MS字體,適用于已知良好的字體設(shè)置)在FreeType中用上述參數(shù)進(jìn)行渲染控制,并重新編譯,將渲染引擎庫放入/usr/lib目錄下,在/etc/profile.d目錄下設(shè)置控制參數(shù),當(dāng)Linux操作系統(tǒng)用來啟動圖形界面的程序xft字體服務(wù)程序(XServer)啟動時(shí)將其中的參數(shù)導(dǎo)出,F(xiàn)reeType進(jìn)行加載的時(shí)候會自動啟用這些參數(shù)。步驟(6),xft字體服務(wù)程序完成畫字,在應(yīng)用程序端顯示出來。另外,本示例還包含一個(gè)風(fēng)格切換器,如圖3所示,其用于從多種供fontconfig使用的字體匹配規(guī)則切換出所需要的字體匹配規(guī)則(新規(guī)則)(步驟(7.1)),以及從多種供FreeType使用的渲染參數(shù)切換出所需要的渲染參數(shù)(步驟(7.2))。另外,該風(fēng)格切換器對myfreetype.sh中的所有渲染參數(shù)可以設(shè)置不同的控制變量,按照不同的設(shè)置,可以將其分組使用,用一個(gè)單獨(dú)的變量來控制使用某一個(gè)分組。例如,在myfreetype.sh文件中,包括以下三種風(fēng)格(三個(gè)分組),可以從下面的分組中選定任一渲染控制變量來進(jìn)行對字體的渲染。#!/bin/shUSE_STYLE="LINUX"#################LINUXSTYLE#################if["$USE_STYLE"="LINUX"];thenexportFILTER_PARAMS="0625442506"exportGRAYSCALE_FILTER_STRENGTH=0exportFRINGE_FILTER_STRENGTH=0exportAUTOHINT_HORIZONTAL_STEM_DARKEN_STRENGTH=10exportAUTOHINT_VERTICAL_STEM_DARKEN_STRENGTH=25exportWINDOWS_STYLE_SHARPENING_STRENGTH=0exportCHROMEOS_STYLE_SHARPENING_STRENGTH=0exportSTEM_ALIGNMENT_STRENGTH=0exportSTEM_FITTING_STRENGTH=0exportGAMMA_CORRECTION="0100"exportBRIGHTNESS="0"exportCONTRAST="0"exportUSE_VARIOUS_TWEAKS=trueexportAUTOHINT_INCREASE_GLYPH_HEIGHTS=falseexportAUTOHINT_SNAP_STEM_HEIGHT=100exportSTEM_SNAPPING_SLIDING_SCALE=0exportUSE_KNOWN_SETTINGS_ON_SELECTED_FONTS=falsefi#################WINDOWSXP/7STYLE#################if["$USE_STYLE"="WINDOWS"];thenexportFILTER_PARAMS="0625442506"exportGRAYSCALE_FILTER_STRENGTH=0exportFRINGE_FILTER_STRENGTH=100exportAUTOHINT_HORIZONTAL_STEM_DARKEN_STRENGTH=10exportAUTOHINT_VERTICAL_STEM_DARKEN_STRENGTH=25exportWINDOWS_STYLE_SHARPENING_STRENGTH=65exportCHROMEOS_STYLE_SHARPENING_STRENGTH=0exportSTEM_ALIGNMENT_STRENGTH=15exportSTEM_FITTING_STRENGTH=15exportGAMMA_CORRECTION="1000120"exportBRIGHTNESS="10"exportCONTRAST="20"exportUSE_VARIOUS_TWEAKS=trueexportAUTOHINT_INCREASE_GLYPH_HEIGHTS=falseexportAUTOHINT_SNAP_STEM_HEIGHT=100exportSTEM_SNAPPING_SLIDING_SCALE=30exportUSE_KNOWN_SETTINGS_ON_SELECTED_FONTS=truefi#################CUSTOMSTYLE#################if["$USE_STYLE"="CUSTOM"];thenexportFILTER_PARAMS="1122382211"exportGRAYSCALE_FILTER_STRENGTH=0exportFRINGE_FILTER_STRENGTH=0exportAUTOHINT_HORIZONTAL_STEM_DARKEN_STRENGTH=10exportAUTOHINT_VERTICAL_STEM_DARKEN_STRENGTH=25exportWINDOWS_STYLE_SHARPENING_STRENGTH=0exportCHROMEOS_STYLE_SHARPENING_STRENGTH=0exportSTEM_ALIGNMENT_STRENGTH=100exportSTEM_FITTING_STRENGTH=100exportGAMMA_CORRECTION="0100"exportBRIGHTNESS="0"exportCONTRAST="0"exportUSE_VARIOUS_TWEAKS=trueexportAUTOHINT_INCREASE_GLYPH_HEIGHTS=trueexportAUTOHINT_SNAP_STEM_HEIGHT=100exportSTEM_SNAPPING_SLIDING_SCALE=0exportUSE_KNOWN_SETTINGS_ON_SELECTED_FONTS=truefi例如,Linux桌面要顯示用戶菜單下的“在線賬戶”這四個(gè)字,會將這四個(gè)字的字體信息(例如顯示的字形大小、語言為中文)傳遞給fontconfig字體管理器。fontconfig字體管理器根據(jù)已經(jīng)配置好的fonts.conf文件(匹配規(guī)則),對字體添加是否需要hinting渲染、需要抗鋸齒、需要lcd次像素渲染的信息,并根據(jù)完整的字體信息找到最接近的一種字體“方正準(zhǔn)圓_GBK”來使用。fontconfig字體管理器將已經(jīng)選擇的字體的所有渲染信息提交給FreeType引擎,F(xiàn)reeType引擎根據(jù)字體的渲染信息對字體進(jìn)行字形渲染出來。完成之后,F(xiàn)reeType引擎將渲染好的字體字形信息交由Xserver,讓Xxserver指派Xft字體服務(wù)程序進(jìn)行排版、畫字等出來,最后文字“在線賬戶”顯示在用戶菜單界面上。圖4(b)是渲染后的字體,可以看出通過本實(shí)施例渲染后的“在線賬戶”比渲染前的圖4(a)所示的字體清晰。現(xiàn)有的FreeType庫是一個(gè)完全免費(fèi)(開源)的、高質(zhì)量的且可移植的字體引擎,它提供統(tǒng)一的接口來訪問多種字體格式文件,包括TrueType,OpenType,Type1,CID,CFF,WindowsFON/FNT,X11PCF等,支持單色位圖、反走樣位圖的渲染。FreeType庫是高度 模塊化的程序庫,雖然它是使用ANSIC開發(fā),但是采用面向?qū)ο蟮乃枷?,因此,F(xiàn)reeType的用戶可以靈活地對它進(jìn)行裁剪。相比現(xiàn)有的FreeType引擎,由于在FreeType中渲染參數(shù)被寫為內(nèi)部變量,難以修改,F(xiàn)reeType的固定的渲染模式不利于任何字體的調(diào)整。而本發(fā)明示例是通過將FreeType中的參數(shù)提取為變量,在外部環(huán)境中對FreeType中的渲染參數(shù)進(jìn)行設(shè)置,大大提高了FreeType引擎渲染字體的針對性與靈活性。本示例通過在FreeType中使用次像素渲染,以及通過渲染參數(shù)來控制freetype內(nèi)部的渲染參數(shù),可以提高FreeType渲染字體的針對性和靈活性。實(shí)施例二圖5是根據(jù)本發(fā)明一實(shí)施例的基于Linux操作系統(tǒng)的中文字體渲染控制系統(tǒng)的結(jié)構(gòu)示意圖。如圖5所示,該系統(tǒng)包括發(fā)送模塊51、查找模塊52、補(bǔ)充模塊53、計(jì)算模塊54和顯示模塊55。其中,發(fā)送模塊51,其發(fā)送字體顯示請求,該請求包括待顯示的中文字體的信息。查找模塊52,其根據(jù)顯示的中文字體的信息,確定相應(yīng)的字體匹配規(guī)則,并按照字體匹配規(guī)則查找與所述待顯示的中文字體的信息匹配的字體文件。優(yōu)選地,字體匹配規(guī)則包括以下預(yù)定的渲染方式中至少之一:預(yù)定的rgba模式;預(yù)定是否執(zhí)行hinting渲染;預(yù)定是否執(zhí)行autohint渲染;預(yù)定是否執(zhí)行抗鋸齒(antialias)處理;預(yù)定的渲染風(fēng)格(Hintstyle);預(yù)定的LCD過濾方式(lcdfilter)。補(bǔ)充模塊53,其將字體文件的信息補(bǔ)充到待顯示的中文字體的信息中。計(jì)算模塊54,其基于已設(shè)定的渲染參數(shù)來計(jì)算關(guān)于補(bǔ)充后的字體信息的渲染信息,渲染參數(shù)為用于從FreeType字體引擎外部設(shè)置字體渲染條件的Linux操作系統(tǒng)環(huán)境的外部變量。在利用Linux操作系統(tǒng)中的FreeType字體引擎作為計(jì)算模塊來計(jì)算關(guān)于補(bǔ)充后的字體信息的渲染信息之前,將渲染參數(shù)從FreeType字體引擎中導(dǎo)出,并在FreeType字體引擎中打開TT_CONFIG_OPTION_BYTECODE_INTERPRETER選項(xiàng)和FT_CONFIG_OPTION_SUBPIXEL_RENDERING選項(xiàng)。顯示模塊55,其基于渲染信息來顯示待顯示的中文字體。另外,還包括切換模塊56,其從多種字體匹配規(guī)則中切換出所需要的字體匹配規(guī)則,從多個(gè)渲染參數(shù)中切換出所需要的渲染參數(shù)。本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲在存儲裝置中由計(jì)算裝置來執(zhí)行。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。雖然本發(fā)明所揭露的實(shí)施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采用的實(shí)施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實(shí)施的形式上及細(xì)節(jié)上作任何的修改與變化,但本發(fā)明的專利保護(hù)范圍,仍須以所附的權(quán)利要求書所界定的范圍為準(zhǔn)。
      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1