CN103294472B - 基于Linux操作系统的中文字体渲染控制方法及系统 - Google Patents
基于Linux操作系统的中文字体渲染控制方法及系统 Download PDFInfo
- Publication number
- CN103294472B CN103294472B CN201310211929.4A CN201310211929A CN103294472B CN 103294472 B CN103294472 B CN 103294472B CN 201310211929 A CN201310211929 A CN 201310211929A CN 103294472 B CN103294472 B CN 103294472B
- Authority
- CN
- China
- Prior art keywords
- font
- information
- chinese
- rendering
- rendering parameter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Controls And Circuits For Display Device (AREA)
Abstract
本发明公开了一种基于Linux操作系统的中文字体渲染控制方法及系统,该方法包括:发送字体显示请求;根据显示的中文字体的信息,确定相应的字体匹配规则,并按照字体匹配规则查找与待显示的中文字体的信息匹配的字体文件;将字体文件的信息补充到待显示的中文字体的信息中;基于已设定的渲染参数来计算关于补充后的字体信息的渲染信息,渲染参数为Linux操作系统环境的外部变量;基于渲染信息来显示所述待显示的中文字体。本发明因为采用了根据提取出的预定的渲染参数对中文字体进行渲染,所以克服了部分字体在Linux操作系统上显示残缺的现象,提高了灵活性和针对性。
Description
技术领域
本发明涉及渲染技术领域,尤其涉及一种基于Linux操作系统的中文字体渲染控制方法及系统。
背景技术
字体的显示除了与字体本身所包含的点阵字体和矢量字体,以及显示器硬件条件有关,还与渲染引擎所采用的渲染方法有关。在相同条件下,如果提升显示器硬件条件,例如提高分辨率,字体的显示效果会很清晰。如android操作系统中中文字体显示清晰细腻,很大程度上是与其所使用的显示材质有关。其所使用的材质的分辨率能达到260以上,而普通的LCD显示器的分辨率在96左右。
如果一个字体文件中所嵌入的不同字号的点阵字体越多,其显示效果越清晰,像微软雅黑,AR PL UMing,其显示清晰度就比较好。
对于一般字体文件,所嵌入的点阵字体不可能太多,这会导致字体文件太大,消耗更多内存资源,所以很多厂商除了在上述两种情况下做字体优化,通常也会在渲染引擎的渲染方法上进行优化。
目前,微软所使用的是ClearType渲染技术,苹果采用较多的是MacType(GDI++)渲染技术。而Linux操作系统下普遍采用FreeType渲染引擎进行字体渲染。
现有的Linux系统使用FreeType对字体进行渲染,由于其内部用于渲染的变量以有限的幅值范围在FreeType中被使用,对于部分字体可较好地解决字体残缺,模糊不清,字体笔划粗细不一的问题,但并不是所有字体都可以得到这样好的处理。例如,在Linux系统下使用Droid Sans Fallback会出现字体模糊不全、字体笔画残缺的现象。现有技术中的渲染方法不具有灵活性和针对性。
因此,亟需一种解决方案来解决上述问题,使得在Linux操作系统下LCD显示器中显示中文字体时,具有针对性和灵活性,能够灵活地渲染不同字体。
发明内容
本发明所要解决的技术问题之一是需要提供一种具有针对性和灵活性,能够灵活地渲染不同字体的基于Linux操作系统的中文字体渲染控制方法及系统。
为了解决上述技术问题,本发明提供了一种基于Linux操作系统的中文字体渲染控制方法,该方法包括:发送字体显示请求,所述请求包括待显示的中文字体的信息;根据所述待显示的中文字体的信息,确定相应的字体匹配规则,并按照字体匹配规则查找与所述待显示的中文字体的信息匹配的字体文件;将所述字体文件的信息补充到所述待显示的中文字体的信息中;基于已设定的渲染参数来计算关于补充后的字体信息的渲染信息,所述渲染参数为用于从FreeType字体引擎外部设置字体渲染条件的Linux操作系统环境变量;基于所述渲染信息来显示所述待显示的中文字体。
在一个实施例中,所述字体匹配规则包括以下预定的渲染方式中至少之一:预定的rgba模式;预定是否执行hinting渲染;预定是否执行autohint渲染;预定是否执行抗锯齿处理;预定的渲染风格;预定的LCD过滤方式。
在一个实施例中,在利用所述Linux操作系统中的FreeType字体引擎计算关于补充后的字体信息的渲染信息之前,将渲染参数从所述FreeType字体引擎中导出;在所述FreeType字体引擎中打开TT_CONFIG_OPTION_BYTECODE_INTERPRETER选项和FT_CONFIG_OPTION_SUBPIXEL_RENDERING选项。
在一个实施例中,还包括,从多种字体匹配规则中切换出所需要的字体匹配规则;从多个渲染参数中切换出所需要的渲染参数。
根据本发明的另一方面,还提供了一种基于Linux操作系统的中文字体渲染控制系统,该系统包括:发送模块,其发送字体显示请求,所述请求包括待显示的中文字体的信息;查找模块,其根据所述显示的中文字体的信息,确定相应的字体匹配规则,并按照字体匹配规则查找与所述待显示的中文字体的信息匹配的字体文件;补充模块,其将所述字体文件的信息补充到所述待显示的中文字体的信息中;计算模块,其基于已设定的渲染参数来计算关于补充后的字体信息的渲染信息,所述渲染参数为用于从FreeType字体引擎外部设置字体渲染条件的Linux操作系统环境的外部变量;显示模块,其基于所述渲染信息来显示所述待显示的中文字体。
在一个实施例中,所述字体匹配规则包括以下预定的渲染方式中至少之一:预定的rgba模式;预定是否执行hinting渲染;预定是否执行autohint渲染;预定是否执行抗锯齿处理;预定的渲染风格;预定的LCD过滤方式。
在一个实施例中,在利用所述Linux操作系统中的FreeType字体引擎作为所述计算模块来计算关于补充后的字体信息的渲染信息之前,将渲染参数从所述FreeType字体引擎中导出;在所述FreeType字体引擎中打开TT_CONFIG_OPTION_BYTECODE_INTERPRETER选项和FT_CONFIG_OPTION_SUBPIXEL_RENDERING选项。
在一个实施例中,还包括,切换模块,其从多种字体匹配规则中切换出所需要的字体匹配规则,从多个渲染参数中切换出所需要的渲染参数。
与现有技术相比,本发明的一个或多个实施例可以具有如下优点:
本发明因为采用了根据提取出的预定的渲染参数对中文字体进行渲染,所以克服了部分字体在Linux操作系统上显示残缺的现象,并且通过外置的渲染参数,可以方便FreeType渲染参数修改,避免了重新修改FreeType源码、编译和安装FreeType带来的冗繁操作。可以有效减少在Linux操作系统下中文字体的锯齿感,减少中文显示中字体笔画残缺,在相同硬件与软件环境下提升字体显示清晰度,减轻用户视觉负担。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
图1是根据本发明一实施例的基于Linux操作系统的中文字体渲染控制方法的流程示意图;
图2是根据本发明一示例的基于Linux操作系统的中文字体渲染控制方法的流程示意图;
图3是根据本发明另一示例的包括切换器的字体渲染控制方法的流程示意图;
图4(a)和图4(b)分别是未渲染的字体结果和渲染后的字体结果示例图;
图5是根据本发明一实施例的基于Linux操作系统的中文字体渲染控制系统的结构示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
实施例一
图1是根据本发明一实施例的基于Linux操作系统的中文字体渲染控制方法的流程示意图,下面参考图1来详细说明本发明各个步骤。
步骤S110,发送字体显示请求,该请求包括待显示的中文字体的信息。
例如,要显示的字体为“在线账户”这四个字,将关于该文字的信息,例如显示的字形大小和语言为中文发送出去。
步骤S120,根据待显示的中文字体的信息,确定相应的字体匹配规则,并按照字体匹配规则查找与待显示的中文字体的信息匹配的字体文件。
由于在步骤S110中发送的请求中所包含的字体信息是不完整的,该信息仅体现要显示什么字,但是如何显示,用什么字体来显示效果是不确定的,因此通过该步骤可以知道用什么字体来显示。
在本实施例中包括多种字体匹配规则,需要从多种字体匹配规则中切换出所需要的字体匹配规则。
优选地,字体匹配规则可以包括以下预定的渲染方式中至少之一:预定的rgba模式;预定是否执行hinting渲染;预定是否执行autohint渲染;预定是否执行抗锯齿(antialias)处理;预定的渲染风格(Hintstyle);预定的LCD过滤方式(lcdfilter)。也就是说,上述的的渲染方式可以单独使用也可以叠加使用。
需要说明的是,LCD过滤方式指的是lcdfilter,其取值可以是lcddefault、lcdlegacy或lcdlight。Rgba取值可以是rgb或bgr。Autohint取值可以是true或false。Hinting取值可以是true或false。是否使用抗锯齿antialias可以取值为true或false。渲染风格Hintstyle可以是hintfull或hintslight等取值。其中lcddefault、rgba、autohint、antialias、hintstyle、hinting可以叠加使用。
如下以autohint渲染为例,给出单独使用autohint渲染的实施例:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM"fonts.dtd">
<fontconfig>
<match target="font">
<test name="family"compare="eq">
<string>FZZhunYuan-M02</string>
<string>方正准圆_GBK</string>
</test>
<edit name="autohint"mode="assign">
<bool>true</bool>
</edit>
</match>
</fontconfig>
如下以叠加使用上述渲染方式为例,给出叠加使用预定的rgba模式为rgb、预定执行hinting渲染、预定执行autohint渲染、预定执行抗锯齿(antialias)处理、预定的渲染风格(Hintstyle)为hintfull以及预定的LCD(lcdfilter)过滤方式为lcddefault的实施例:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM"fonts.dtd">
<fontconfig>
<match target="font">
<test name="family"compare="eq">
<string>FZZhunYuan-M02</string>
<string>方正准圆_GBK</string>
</test>
<edit name="rgba"mode="assign">
<const>rgb</const>
</edit>
<edit name="hinting"mode="assign">
<bool>true</bool>
</edit>
<edit name="autohint"mode="assign">
<bool>true</bool>
</edit>
<edit name="antialias"mode="assign">
<bool>true</bool>
</edit>
<edit name="hintstyle"mode="assign">
<const>hintfull</const>
</edit>
<edit name="lcdfilter"mode="assign">
<const>lcddefault</const>
</edit>
</match>
</fontconfig>
需要说明的是:单独使用某种渲染方式和叠加使用不同的渲染方式,渲染结果是不一样的,渲染的效果也需要根据实际效果而定,并非叠加的渲染方式越多效果越好。
例如,通过预定的字体匹配规则,确定“在线账户”这四个字需要用“方正准圆_GBK”的字体来显示,则可以在包含“方正准圆_GBK”的字体文件“FZZhunYuan-M02.TTF”中找到关于该字体文件。
步骤S130,将字体文件的信息补充到待显示的中文字体的信息中。
步骤S140,基于已设定的渲染参数来计算关于补充后的字体信息的渲染信息,其中,渲染参数用来表现不同的渲染风格,渲染参数为用于从FreeType字体引擎外部设置字体渲染条件的Linux操作系统环境变量。
本实施例中,包括多个渲染参数,需要从多个渲染参数中切换出所需要的预定的渲染参数。
步骤S150,基于渲染信息来显示待显示的中文字体。
下面通过一示例来进一步说明本发明的特征和优点,下面以Linux操作系统为例,来说明如何进行中文字体的渲染控制。
如图2所示,具体包括以下步骤。
步骤(1),应用程序将要显示的字体请求发送到fontconfig字体管理器。
步骤(2.3),fontconfig字体管理器根据应用程序提出的字体请求与发送过来的字体信息,确定对应的字体匹配规则,然后按照字体匹配规则查找与字体信息匹配的字体文件。
在执行该步骤之前,需要事先在fonts.conf规则配置文件导入新的字体匹配规则(步骤(2.1)),fontconfig字体管理器使用fonts.conf规则配置文件中新的字体匹配规则来查找(步骤(2.2))。
例如,fontconfig字体管理器接收应用程序发送过来的“在线账户”这四个字,按照fonts.conf内容,得到关于这四个字的rgba模式为rgb、需要对这四个字作hinting渲染、需要使用autohint对字体自动渲染、以及需要进行抗锯齿处理、渲染风格为轻度渲染以及lcd过滤方式使用默认lcd过滤方式(次像素渲染)。
最后根据上述内容查找到最佳渲染的字体为“方正准圆_GBK”。
步骤(3),查找完成之后,将显示该字体的字体文件信息补充到应用程序发送过来的不完整的字体信息中。
步骤(4),fontconfig字体管理器将补充后的字体信息发送给FreeType字体引擎。
步骤(5),FreeType字体引擎根据fontconfig字体管理器传递过来的完整字体信息,使用步骤(5.1)中指定的渲染参数(预先设置好的),并计算关于补充后的字体信息的渲染信息,即对如何显示该字体进行计算,然后将画字信息传递给xft字体服务程序(步骤(5.2))。其中,所要说明的是,所传递的补充后的字体信息的渲染信息只是画字信息的一部分,此外画字信息还包括字族信息,字形信息,字符与字体度量信息,字形光栅化信息,字形度量信息等。
具体地,针对该字体设定渲染参数,然后FreeType字体引擎根据渲染参数来调整字体渲染计算方法。
需要说明的是,在进行该步骤之前,需要将原FreeType字体引擎中的固定的渲染参数导出。
具体地,首先,在FreeType字体引擎中重新定义原有供渲染算法使用的渲染参数,将其设定为由Linux系统环境读取的参数。
然后,打开TT_CONFIG_OPTION_BYTECODE_INTERPRETER选项,该选项表明对freetype所渲染的字体打开字节码解释器,同时在FreeType中打开FT_CONFIG_OPTION_SUBPIXEL_RENDERING次像素绘制功能,该选项用来打开myfreetype.sh中所有渲染参数。然后可以在/etc/profile.d/myfreetype.sh文件中设置以下参数:
FILTER_PARAMS(FIR过滤器的过滤参数,一般在0-100之间,用于调整平滑度与浓度之间的关系)
STEM_ALIGNMENT_STRENGTH(对字形进行分析,并调整字形的像素边界)
STEM_FITTING_STRENGTH(对字形横向扩展或加粗时调整像素边界)
GRAYSCALE_FILTER_STRENGTH(显示器次像素渲染时字形走形时的灰度调整)
FRINGE_FILTER_STRENGTH(滤波器使用默认autohint来代替,删除水平边缘上的字形)
AUTOHINT_HORIZONTAL_STEM_DARKEN_STRENGTH(使用autohint水平过滤呈现半暗)
AUTOHINT_VERTICAL_STEM_DARKEN_STRENGTH(使用autohint垂直过滤呈现半暗)
WINDOWS_STYLE_SHARPENING_STRENGTH(以windows的方式进行锐化字形)
CHROMEOS_STYLE_SHARPENING_STRENGTH(以CHROMEOS的方式锐化字形)
GAMMA_CORRECTTION(以伽马函数校正LCD显示器的相位)
BRIGHTNESS(LCD显示器亮度调节)
CONTRAST(LCD显示器对比度调节)
USE_VARIOUS_TWEAKS(使用autohint来减轻字体重度,并维持字型宽度)
AUTOHINT_INCREASE_GLYPH_HEIGHTS(使用autohint增加字形高度)
AUTOHINT_SNAP_STEM_HEIGHT(消除autohint时像E,F,T这样的字母上边横线捕捉不到完整像素的高度的情况)
STEM_SNAPPING_SLIDING_SCALE(以ppem的方式对齐,不使字形变得更剧烈)
USE_KNOWN_SETTINGS_ON_SELECTED_FONTS(比较时候MS字体,适用于已知良好的字体设置)
在FreeType中用上述参数进行渲染控制,并重新编译,将渲染引擎库放入/usr/lib目录下,在/etc/profile.d目录下设置控制参数,当Linux操作系统用来启动图形界面的程序xft字体服务程序(X Server)启动时将其中的参数导出,FreeType进行加载的时候会自动启用这些参数。
步骤(6),xft字体服务程序完成画字,在应用程序端显示出来。
另外,本示例还包含一个风格切换器,如图3所示,其用于从多种供fontconfig使用的字体匹配规则切换出所需要的字体匹配规则(新规则)(步骤(7.1)),以及从多种供FreeType使用的渲染参数切换出所需要的渲染参数(步骤(7.2))。
另外,该风格切换器对myfreetype.sh中的所有渲染参数可以设置不同的控制变量,按照不同的设置,可以将其分组使用,用一个单独的变量来控制使用某一个分组。
例如,在myfreetype.sh文件中,包括以下三种风格(三个分组),可以从下面的分组中选定任一渲染控制变量来进行对字体的渲染。
#!/bin/sh
USE_STYLE="LINUX"
#################LINUX STYLE#################
if["$USE_STYLE"="LINUX"];then
export FILTER_PARAMS="0625442506"
export GRAYSCALE_FILTER_STRENGTH=0
export FRINGE_FILTER_STRENGTH=0
export AUTOHINT_HORIZONTAL_STEM_DARKEN_STRENGTH=10export AUTOHINT_VERTICAL_STEM_DARKEN_STRENGTH=25
export WINDOWS_STYLE_SHARPENING_STRENGTH=0
export CHROMEOS_STYLE_SHARPENING_STRENGTH=0
export STEM_ALIGNMENT_STRENGTH=0
export STEM_FITTING_STRENGTH=0
export GAMMA_CORRECTION="0100"
export BRIGHTNESS="0"
export CONTRAST="0"
export USE_VARIOUS_TWEAKS=true
export AUTOHINT_INCREASE_GLYPH_HEIGHTS=false
export AUTOHINT_SNAP_STEM_HEIGHT=100
export STEM_SNAPPING_SLIDING_SCALE=0
export USE_KNOWN_SETTINGS_ON_SELECTED_FONTS=false
fi
#################WINDOWS XP/7STYLE#################
if["$USE_STYLE"="WINDOWS"];then
export FILTER_PARAMS="0625442506"
export GRAYSCALE_FILTER_STRENGTH=0
export FRINGE_FILTER_STRENGTH=100
export AUTOHINT_HORIZONTAL_STEM_DARKEN_STRENGTH=10
export AUTOHINT_VERTICAL_STEM_DARKEN_STRENGTH=25
export WINDOWS_STYLE_SHARPENING_STRENGTH=65
export CHROMEOS_STYLE_SHARPENING_STRENGTH=0
export STEM_ALIGNMENT_STRENGTH=15
export STEM_FITTING_STRENGTH=15
export GAMMA_CORRECTION="1000120"
export BRIGHTNESS="10"
export CONTRAST="20"
export USE_VARIOUS_TWEAKS=true
export AUTOHINT_INCREASE_GLYPH_HEIGHTS=false
export AUTOHINT_SNAP_STEM_HEIGHT=100
export STEM_SNAPPING_SLIDING_SCALE=30
export USE_KNOWN_SETTINGS_ON_SELECTED_FONTS=true
fi
#################CUSTOM STYLE#################
if["$USE_STYLE"="CUSTOM"];then
export FILTER_PARAMS="1122382211"
export GRAYSCALE_FILTER_STRENGTH=0
export FRINGE_FILTER_STRENGTH=0
export AUTOHINT_HORIZONTAL_STEM_DARKEN_STRENGTH=10
export AUTOHINT_VERTICAL_STEM_DARKEN_STRENGTH=25
export WINDOWS_STYLE_SHARPENING_STRENGTH=0
export CHROMEOS_STYLE_SHARPENING_STRENGTH=0
export STEM_ALIGNMENT_STRENGTH=100
export STEM_FITTING_STRENGTH=100
export GAMMA_CORRECTION="0100"
export BRIGHTNESS="0"
export CONTRAST="0"
export USE_VARIOUS_TWEAKS=true
export AUTOHINT_INCREASE_GLYPH_HEIGHTS=true
export AUTOHINT_SNAP_STEM_HEIGHT=100
export STEM_SNAPPING_SLIDING_SCALE=0
export USE_KNOWN_SETTINGS_ON_SELECTED_FONTS=true
fi
例如,Linux桌面要显示用户菜单下的“在线账户”这四个字,会将这四个字的字体信息(例如显示的字形大小、语言为中文)传递给fontconfig字体管理器。fontconfig字体管理器根据已经配置好的fonts.conf文件(匹配规则),对字体添加是否需要hinting渲染、需要抗锯齿、需要lcd次像素渲染的信息,并根据完整的字体信息找到最接近的一种字体“方正准圆_GBK”来使用。fontconfig字体管理器将已经选择的字体的所有渲染信息提交给FreeType引擎,FreeType引擎根据字体的渲染信息对字体进行字形渲染出来。完成之后,FreeType引擎将渲染好的字体字形信息交由X server,让X xserver指派Xft字体服务程序进行排版、画字等出来,最后文字“在线账户”显示在用户菜单界面上。
图4(b)是渲染后的字体,可以看出通过本实施例渲染后的“在线账户”比渲染前的图4(a)所示的字体清晰。
现有的FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType,OpenType,Type1,CID,CFF,Windows FON/FNT,X11PCF等,支持单色位图、反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想,因此,FreeType的用户可以灵活地对它进行裁剪。相比现有的FreeType引擎,由于在FreeType中渲染参数被写为内部变量,难以修改,FreeType的固定的渲染模式不利于任何字体的调整。而本发明示例是通过将FreeType中的参数提取为变量,在外部环境中对FreeType中的渲染参数进行设置,大大提高了FreeType引擎渲染字体的针对性与灵活性。
本示例通过在FreeType中使用次像素渲染,以及通过渲染参数来控制freetype内部的渲染参数,可以提高FreeType渲染字体的针对性和灵活性。
实施例二
图5是根据本发明一实施例的基于Linux操作系统的中文字体渲染控制系统的结构示意图。
如图5所示,该系统包括发送模块51、查找模块52、补充模块53、计算模块54和显示模块55。
其中,发送模块51,其发送字体显示请求,该请求包括待显示的中文字体的信息。
查找模块52,其根据显示的中文字体的信息,确定相应的字体匹配规则,并按照字体匹配规则查找与所述待显示的中文字体的信息匹配的字体文件。
优选地,字体匹配规则包括以下预定的渲染方式中至少之一:预定的rgba模式;预定是否执行hinting渲染;预定是否执行autohint渲染;预定是否执行抗锯齿(antialias)处理;预定的渲染风格(Hintstyle);预定的LCD过滤方式(lcdfilter)。
补充模块53,其将字体文件的信息补充到待显示的中文字体的信息中。
计算模块54,其基于已设定的渲染参数来计算关于补充后的字体信息的渲染信息,渲染参数为用于从FreeType字体引擎外部设置字体渲染条件的Linux操作系统环境的外部变量。
在利用Linux操作系统中的FreeType字体引擎作为计算模块来计算关于补充后的字体信息的渲染信息之前,将渲染参数从FreeType字体引擎中导出,并在FreeType字体引擎中打开TT_CONFIG_OPTION_BYTECODE_INTERPRETER选项和FT_CONFIG_OPTION_SUBPIXEL_RENDERING选项。
显示模块55,其基于渲染信息来显示待显示的中文字体。
另外,还包括切换模块56,其从多种字体匹配规则中切换出所需要的字体匹配规则,从多个渲染参数中切换出所需要的渲染参数。
本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行。这样,本发明不限制于任何特定的硬件和软件结合。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (6)
1.一种基于Linux操作系统的中文字体渲染控制方法,其特征在于,包括:
发送字体显示请求,所述请求包括待显示的中文字体的信息;
根据所述待显示的中文字体的信息,确定相应的字体匹配规则,并按照字体匹配规则查找与所述待显示的中文字体的信息匹配的字体文件,所述字体匹配规则包括以下预定的渲染方式中至少之一:预定的rgba模式;预定是否执行hinting渲染;预定是否执行autohint渲染;预定是否执行抗锯齿处理;预定的渲染风格;预定的LCD过滤方式;
将所述字体文件的信息补充到所述待显示的中文字体的信息中;
对myfreetype.sh中的所有渲染参数进行分组,设置不同的控制变量来使用不同的分组以实现渲染参数的设定,所述渲染参数为用于从FreeType字体引擎外部设置字体渲染条件的Linux操作系统环境变量;
基于已设定的渲染参数来计算关于补充后的字体信息的渲染信息;
基于所述渲染信息来显示所述待显示的中文字体。
2.根据权利要求1所述的方法,其特征在于,
在利用所述Linux操作系统中的FreeType字体引擎计算关于补充后的字体信息的渲染信息之前,
将渲染参数从所述FreeType字体引擎中导出,并在所述FreeType字体引擎中打开TT_CONFIG_OPTION_BYTECODE_INTERPRETER选项和FT_CONFIG_OPTION_SUBPIXEL_RENDERING选项。
3.根据权利要求1或2所述的方法,其特征在于,还包括,
从多种字体匹配规则中切换出所需要的字体匹配规则;
从多个渲染参数中切换出所需要的渲染参数。
4.一种基于Linux操作系统的中文字体渲染控制系统,其特征在于,包括:
发送模块,其发送字体显示请求,所述请求包括待显示的中文字体的信息;
查找模块,其根据所述显示的中文字体的信息,确定相应的字体匹配规则,并按照字体匹配规则查找与所述待显示的中文字体的信息匹配的字体文件,所述字体匹配规则包括以下预定的渲染方式中至少之一:预定的rgba模式;预定是否执行hinting渲染;预定是否执行autohint渲染;预定是否执行抗锯齿处理;预定的渲染风格;预定的LCD过滤方式;
补充模块,其将所述字体文件的信息补充到所述待显示的中文字体的信息中;
分组模块,其对myfreetype.sh中的所有渲染参数进行分组,设置不同的控制变量来使用不同的分组以实现渲染参数的设定,所述渲染参数为用于从FreeType字体引擎外部设置字体渲染条件的Linux操作系统环境的外部变量;
计算模块,其基于已设定的渲染参数来计算关于补充后的字体信息的渲染信息;
显示模块,其基于所述渲染信息来显示所述待显示的中文字体。
5.根据权利要求4所述的系统,其特征在于,
在利用所述Linux操作系统中的FreeType字体引擎作为所述计算模块来计算关于补充后的字体信息的渲染信息之前,
将渲染参数从所述FreeType字体引擎中导出,并在所述FreeType字体引擎中打开TT_CONFIG_OPTION_BYTECODE_INTERPRETER选项和FT_CONFIG_OPTION_SUBPIXEL_RENDERING选项。
6.根据权利要求4或5所述的系统,其特征在于,还包括,
切换模块,其从多种字体匹配规则中切换出所需要的字体匹配规则,从多个渲染参数中切换出所需要的渲染参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310211929.4A CN103294472B (zh) | 2013-05-30 | 2013-05-30 | 基于Linux操作系统的中文字体渲染控制方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310211929.4A CN103294472B (zh) | 2013-05-30 | 2013-05-30 | 基于Linux操作系统的中文字体渲染控制方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103294472A CN103294472A (zh) | 2013-09-11 |
CN103294472B true CN103294472B (zh) | 2016-12-28 |
Family
ID=49095412
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310211929.4A Active CN103294472B (zh) | 2013-05-30 | 2013-05-30 | 基于Linux操作系统的中文字体渲染控制方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103294472B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678261A (zh) * | 2013-12-26 | 2014-03-26 | 深圳市开立科技有限公司 | 一种快速显示ttf字体的方法、装置及设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9164967B2 (en) * | 2009-11-25 | 2015-10-20 | Red Hat, Inc. | Extracting font metadata from font files into searchable metadata for package distribution |
CN103051711B (zh) * | 2012-12-21 | 2015-09-02 | 广州杰赛科技股份有限公司 | 基于spice协议的嵌入式云终端系统的构建方法 |
-
2013
- 2013-05-30 CN CN201310211929.4A patent/CN103294472B/zh active Active
Non-Patent Citations (2)
Title |
---|
freetype 2.4.9 打上infinality的补丁后的字体效果;lenovox;《http://www.linux-ren.org/thread-64781-1-1.html》;20120517;第1-5页 * |
试析FreeBSD桌面系统中利用Fontconfig进行字体配置的运作原理;loughsky;《http://blog.chinaunix.net/uid-20361370-id-1962963.html》;20090915;第1-11页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103294472A (zh) | 2013-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10181204B2 (en) | Rendering semi-transparent user interface elements | |
US9691169B2 (en) | Compact font hinting | |
US20160246475A1 (en) | Dynamic icon recoloring to improve contrast | |
US20190073350A1 (en) | Non-Transitory Computer-Readable Medium, Data Processing Device and Data Processing Method | |
US9639965B2 (en) | Adjusting color attribute of an image in a non-uniform way | |
CN101458921B (zh) | 显示器亮度调节方法及装置以及计算机 | |
MXPA02009996A (es) | Optimizacion automatica de la posicion de barras de caracteres de texto. | |
CN108965471B (zh) | 一种智能电视上浏览器内存改善方法 | |
EP3254283B1 (en) | User sliders for simplified adjustment of images | |
KR102247662B1 (ko) | 만화의 스케치 이미지를 자동으로 채색하기 위한 장치 및 방법 | |
CN103294472B (zh) | 基于Linux操作系统的中文字体渲染控制方法及系统 | |
US11610046B2 (en) | Automatic generation of responsive font effects based on font elements | |
CN102955765B (zh) | 对应字型大小来微调汉字的方法及汉字微调系统 | |
EP2410487B1 (en) | Method for automatically modifying a graphics feature to comply with a resolution limit | |
JP5490360B2 (ja) | ボールド化されたアンチエイリアシング・ビットマップを生成するための方法および記録媒体 | |
US7969441B2 (en) | Adaptive contextual filtering based on typographical characteristics | |
RU2642409C1 (ru) | Редактирование текста на изображении документа | |
US11526967B2 (en) | System and method for precise image inpainting to remove unwanted content from digital images | |
US11514618B2 (en) | Generation of object hierarchies for logical selection of groups of objects in vector designs | |
CN108287809A (zh) | 一种基于vxWorks系统的矢量字体显示优化方法 | |
US9767376B2 (en) | Drawing apparatus, drawing method, and recording medium for use in displaying a character defined in a predetermined outline font format | |
CN116483359B (zh) | 一种新拟态绘制方法、装置、电子设备及可读存储介质 | |
US12062119B2 (en) | Dynamic differential evolution based control for typeface visual accessibility | |
JP2000231480A (ja) | ソフトウェアの自動生成装置および方法、画面生成装置、記録媒体 | |
CN117892698B (zh) | 一种文字渐变渲染方法、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |