字符显示方法和装置的制作方法

xiaoxiao2020-6-26  25

专利名称:字符显示方法和装置的制作方法
技术领域
本发明涉及计算机信息处理领域,尤其涉及一种字符显示方法和装置。
背景技术
随着数字出版技术的快速发展,越来越多的出版机构开始以数字形式发行图书和报纸等出版物,这些出版物以电子文档的形式发行,在计算机、手持移动设备、电子阅读器等设备的屏幕上显示。在目前阶段,出版机构仍然需要兼顾纸质出版物和数字出版物,因此在发行的电子文档中存在某些情况,使得文档内容适合纸质出版物,但不适合屏幕显示。例如传统报纸排版经常使用报宋等笔划较细的TrueType字体,由于报纸印刷精度较高,这类笔划较细的字体能给读者以良好的视觉效果。但是当这种电子文档直接用于数字出版,在计算机等屏幕上显示时,现有的字体反走样显示技术会因为笔划过细,而造成显示颜色变浅,笔划模糊等效果,可读性变差。现有技术中,为了解决上述问题,申请号为US5929866的美国专利披露了一种方法,该方法中,根据字体度量信息判断是否需要对字形进行加粗显示,例如根据字体的主干宽度(stem width)属性判断其笔划宽度,再根据笔划宽度判断是否需要对字形进行加粗显示。该方法的不足之处在于:主干宽度等字体度量信息必须正确地写入字体文件中,实际应用中在制作字体文件时往往不会在字体文件中设置这些字体度量信息。再如申请号为US7602390的美国专利所批露的方法中,根据字符的光栅化结果,检测字形的主干边缘,并计算主干宽度,根据主干宽度判断是否需要对字形进行加粗显示。该方法的不足之处在于:计算方法复杂,而且只对笔划呈水平和竖直的字体有效,对字形不规则的字体无效。

发明内容
本发明实施例提供一种字符显示方法和装置,用于提高字符的显示效果。一种字符显示方法,该方法包括:从字体文件中获取至少一个字符对应的字形轮廓;使用反锯齿光栅化技术,将获取到的各字形轮廓光栅化为灰度位图,并计算得到的各灰度位图的像素平均灰度值;根据所述像素平均灰度值确定是否需要对待显示字符对应的字形轮廓进行加粗处理,在确定为是时,根据所述像素平均灰度值确定加粗量,根据该加粗量对待显示字符对应的字形轮廓进行加粗处理; 对加粗处理后得到的字形轮廓进行输出显示。一种字符显示装置,该装置包括:字形轮廓获取单元,用于从字体文件中获取至少一个字符对应的字形轮廓;灰度值计算单元,用于使用反锯齿光栅化技术,将获取到的各字形轮廓光栅化为灰度位图,并计算得到的各灰度位图的像素平均灰度值;加粗处理单元,用于根据所述像素平均灰度值确定是否需要对待显示字符对应的字形轮廓进行加粗处理,在确定为是时,根据所述像素平均灰度值确定加粗量,根据该加粗量对待显示字符对应的字形轮廓进行加粗处理;输出显示单元,用于对加粗处理后得到的字形轮廓进行输出显示。本方案中,通过计算字体文件中字形轮廓的灰度位图的像素平均灰度值,确定是否需要对待显示字符对应的字形轮廓进行加粗处理,在需要加粗处理时,根据该像素平均灰度值确定加粗量,并根据该加粗量对待显示字符对应的字形轮廓进行加粗处理后进行输出显示,从而尽量避免了由于笔划过细造成的显示颜色变浅、笔划模糊等问题,从而提高了字符的显示效果。


图1为本发明实施例提供的方法流程示意图;图2A为本发明实施例的字符显示流程示意图;图2B为本发明实施例的字形轮廓及字形轮廓光栅化效果示意图;图2C为本发明实施例的字形轮廓加粗效果示意图;图3为本发明实施例提供的装置结构示意图。
具体实施例方式为了提高字符的显示效果,本发明实施例提供一种字符显示方法,本方法中,通过计算字体文件中字形轮廓的灰度位图的像素平均灰度值,确定是否需要对待显示字符对应的字形轮廓进行加粗处理,在需要加粗处理时,根据该像素平均灰度值确定加粗量,并根据该加粗量对待显示字符对应的字形轮廓进行加粗处理后进行输出显示。参见图1,本发明实施例提供一种字符显示方法,包括以下步骤:步骤10:从字体文件中获取至少一个字符对应的字形轮廓;这里,具体是从显示待显示字符所使用字体的字体文件中,获取至少一个字符对应的字形轮廓。该至少一个字符可以是预先设定的常用字符等。显示待显示字符所使用字体可以是矢量字体等。步骤11:使用反锯齿光栅化技术,将获取到的各字形轮廓光栅化为灰度位图,并计算得到的各灰度位图的像素平均灰度值;步骤12:根据计算得到的像素平均灰度值确定是否需要对待显示字符对应的字形轮廓进行加粗处理,在确定为是时,根据该像素平均灰度值确定加粗量,根据该加粗量对待显示字符对应的字形轮廓进行加粗处理;步骤13:对加粗处理后得到的字形轮廓进行输出显示。步骤10中,可以从字体文件中获取至少一个字符在扩大显示字号下的字形轮廓;该扩大显示字号为当前显示字号的N倍,N为大于I的数值。较佳的,N的取值可以为2。较佳的,若当前显示字号不以像素个数为单位,则在从字体文件中获取至少一个字符在扩大显示字号下的字形轮廓之前,可以根据当前显示设备的每英寸的像素数(Pixels Per Inch, PPI)参数,将当前显示字号转换为以像素个数为单位的显示字号。具体转换方法为:转换后的以像素个数为单位的显示字号=(转换前的当前显示字号/I磅对应的英寸值)*当前显示设备的PPI,1磅对应的英寸值可以为72。步骤11中,计算得到的各灰度位图的像素平均灰度值,具体实现可以采用如下两种方法:第一,在光栅化后得到一个灰度位图时,计算该灰度位图中灰度值不为O的像素的灰度值的平均值,将计算结果作为像素平均灰度值;第二,在光栅化后得到得到多个灰度位图时,对于每个灰度位图,分别计算该灰度位图中灰度值不为O的像素的灰度值的平均值;计算得到的各平均值的平均值,将计算结果作为像素平均灰度值。步骤12中,根据像素平均灰度值确定是否需要对待显示字符对应的字形轮廓进行加粗处理,具体实现可以如下:确定步骤11中计算得到的像素平均灰度值是否大于预先设定的灰度门限值,若是,则确定需要对待显示字符对应的字形轮廓进行加粗处理,否则,确定不需要对待显示字符对应的字形轮廓进行加粗处理。灰度门限值为大于O的数值。较佳的,灰度门限值可以为 2/3。或者,确定步骤11中计算得到的像素平均灰度值是否在预先设定的灰度值范围内,若是,则确定不需要对待显示字符对应的字形轮廓进行加粗处理,否则,确定需要对待显示字符对应的字形轮廓进行加粗处理。较佳的,灰度值范围可以为2/3到I。步骤12中,根据像素平均灰度值确定加粗量,具体实现可以采用如下两种方式:第一,计算I与像素平均灰度值的差值,将计算结果确定为加粗量;第二,根据预先设定的像素平均灰度值与加粗量的对应关系,确定步骤11中计算得到的像素平均灰度值对应的加粗量。当然根据像素平均灰度值确定加粗量的方法并不局限于上述两种方法,其他任何能够有效的根据像素平均灰度值确定加粗量的方法均在本发明的保护范围内。本方法中,字形轮廓在矢量字体中是以一系列的直线和贝塞尔曲线表示的路径。加粗量表示对字形轮廓向外扩展的距离,可以以像素个数为单位。下面对本发明进行具体说明:本发明所采用的字符显示方法如图2A所示,具体流程如下:步骤201,加载待显示字体的字体文件,待显示字体的类型包括TrueType字体、OpenType字体等矢量字体;待显示字体为显示待显示字符所使用的字体;步骤202,从加载的字体文件中获取一个或多个基准字形轮廓,具体方法是:获取一个或多个具有代表性的英文和/或中文字符在字体文件中的字形轮廓作为基准字形轮廓,例如获取英文字符“R”和中文字符“的”在字体文件中的字形轮廓作为基准字形轮廓;这里,字形轮廓在矢量字体中是以一系列的直线和贝塞尔曲线表示的路径;其中,基准字形轮廓所使用的字号是当前显示字号的2倍;当前显示字号需要以像素个数为单位,若当前显示字号以“磅”为单位,则需要根据当前显示设备的PPI参数将当前显示字号转换为以像素个数为单位的显示字号;步骤203,使用现有的反锯齿光栅化技术,将所获取的基准字形轮廓光栅化为灰度位图,并计算各灰度位图对应的像素平均灰度值;像素平均灰度值的计算方法是:在得到一个灰度位图时,计算该灰度位图中灰度值不为O的像素的灰度值的平均值,将计算结果作为各灰度位图对应的像素平均灰度值;在得到多个灰度位图时,对于每个灰度位图,分别计算该灰度位图中灰度值不为O的像素的灰度值的平均值;计算得到的各平均值的平均值,将计算结果作为各灰度位图对应的像素平均灰度值。像素平均灰度值为O到I之间的数值;步骤204,如果平均灰度值大于等于2/3,则不需要对待显示字符对应的字形轮廓进行加粗处理,执行步骤209,否则执行步骤205 ;步骤205,根据像素平均灰度值,计算所需的加粗量;例如,令像素平均灰度值为G,则加粗量等于1-G,加粗量以像素个数为单位,表示对字形轮廓向外扩展的距离;步骤206,从字体文件中获取待显示字符在当前显示字号下的字形轮廓;步骤207,根据步骤205所计算的加粗量,使用现有方法对待显示字符在当前显示字号下的字形轮廓进行加粗处理;步骤208,使用现有方法将加粗处理后得到的字形轮廓输出到显示设备进行显示,本流程结束;步骤209:从字体文件中获取待显示字符在当前显示字号下的字形轮廓;步骤210,使用现有方法将待显示字符在当前显示字号下的字形轮廓输出到显示设备进行显示,本流程结束。通过本实施例所披露的字符显示方法,在显示电子文档中的字符时,通过计算字体文件中字形轮廓的灰度位图的像素平均灰度值,判断是否需要加粗显示并计算加粗量,对笔划过细的字形轮廓进行加粗,再使用现有技术进行显示,以解决某些笔划过细的字形轮廓在屏幕上显示时颜色变浅、笔划模糊而造成的可读性变差的问题。从本实施例的具体步骤可以看出,本实施例不需要在字体文件中预先记录度量信息,适用于所有矢量字体,而且对字体的笔划是否水平和竖直没有要求,适用性广。以下以一个具体的实施例,来说明本发明所采用的字符显示方法的使用步骤。在此实施例中,所采用的字体是Arial,当前显示字号是4.5,当前显示设备的PPI是96,计算以像素个数为单位的当前显示字号是4.5 + 72X96 = 6。步骤一:加载Arial字体的字体文件;步骤二:从字体文件中获取字符“R”在字号12下的字形轮廓作为基准字形轮廓,如图2B左边所示;步骤一:对获取到的基准字形轮廓进行光栅化,得到8位的灰度位图,光栅化结果的部分放大效果如图2B右边所示,其中每个像素的灰度值的取值范围为O到I ;步骤二:计算灰度位图的像素平均灰度值为0.6,小于2/3,需要对待显示字符对应的字形轮廓进行加粗处理,计算加粗量为1-0.6 = 0.4 ;步骤三:获取待显示字符在当前显示字号下的字形轮廓,此处待显示字符仍为“R”,获取其在字号6下的字形轮廓,并加粗0.4像素,结果如图2C所示;步骤四:根据现有技术显示加粗后的待显示字符对应的字形轮廓。
参见图3,本发明实施例提供一种字符显示装置,该装置包括:字形轮廓获取单元30,用于从字体文件中获取至少一个字符对应的字形轮廓;灰度值计算单元31,用于使用反锯齿光栅化技术,将获取到的各字形轮廓光栅化为灰度位图,并计算得到的各灰度位图的像素平均灰度值;加粗处理单元32,用于根据所述像素平均灰度值确定是否需要对待显示字符对应的字形轮廓进行加粗处理,在确定为是时,根据所述像素平均灰度值确定加粗量,根据该加粗量对待显示字符对应的字形轮廓进行加粗处理;输出显示单元33,用于对加粗处理后得到的字形轮廓进行输出显示。进一步的,所述字形轮廓获取单元30用于:从字体文件中获取至少一个字符在扩大显示字号下的字形轮廓;该扩大显示字号为当前显示字号的N倍,N为大于I的数值。进一步的,N为2。进一步的,该装置还包括:字号转换单元34,用于在当前显示字号不以像素个数为单位时,在从字体文件中获取至少一个字符在扩大显示字号下的字形轮廓之前,根据当前显示设备的每英寸的像素数PPI参数,将当前显示字号转换为以像素个数为单位的显示字号。 进一步的,所述灰度值计算单元31用于:在得到一个灰度位图时,计算该灰度位图中灰度值不为O的像素的灰度值的平均值,将计算结果作为所述像素平均灰度值;或者,在得到多个灰度位图时,对于每个灰度位图,分别计算该灰度位图中灰度值不为O的像素的灰度值的平均值;计算得到的各平均值的平均值,将计算结果作为所述像素平均灰度值。进一步的,所述加粗处理单元32用于:确定所述像素平均灰度值是否大于预先设定的灰度门限值,若是,则确定需要对待显示字符对应的字形轮廓进行加粗处理,否则,确定不需要对待显示字符对应的字形轮廓进行加粗处理。进一步的,所述灰度门限值为2/3。进一步的,所述输出显示单元33用于:计算I与所述像素平均灰度值的差值,将计算结果确定为加粗量;或者,根据预先设定的像素平均灰度值与加粗量的对应关系,确定所述像素平均灰度值对应的加粗量。综上,本发明的有益效果包括:本发明实施例提供的方案中,从字体文件中获取至少一个字符对应的字形轮廓,使用反锯齿光栅化技术,将获取到的各字形轮廓光栅化为灰度位图,并计算得到的各灰度位图的像素平均灰度值;根据所述像素平均灰度值确定是否需要对待显示字符对应的字形轮廓进行加粗处理,在确定为是时,根据所述像素平均灰度值确定加粗量,根据该加粗量对待显示字符对应的字形轮廓进行加粗处理;对加粗处理后得到的字形轮廓进行输出显示。可见,本发明中,通过计算字体文件中字形轮廓的灰度位图的像素平均灰度值,确定是否需要对待显示字符对应的字形轮廓进行加粗处理,在需要加粗处理时,根据该像素平均灰度值确定加粗量,并根据该加粗量对待显示字符对应的字形轮廓进行加粗处理后进行输出显示,从而尽量避免了由于笔划过细造成的显示颜色变浅、笔划模糊等问题,从而提高了字符的显示效果。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种字符显示方法,其特征在于,该方法包括: 从字体文件中获取至少一个字符对应的字形轮廓; 使用反锯齿光栅化技术,将获取到的各字形轮廓光栅化为灰度位图,并计算得到的各灰度位图的像素平均灰度值; 根据所述像素平均灰度值确定是否需要对待显示字符对应的字形轮廓进行加粗处理,在确定为是时,根据所述像素平均灰度值确定加粗量,根据该加粗量对待显示字符对应的字形轮廓进行加粗处理; 对加粗处理后得到的字形轮廓进行输出显示。
2.如权利要求1所述的方法,其特征在于,所述从字体文件中获取至少一个字符对应的字形轮廓,具体包括: 从字体文件中获取至少一个字符在扩大显示字号下的字形轮廓;该扩大显示字号为当前显示字号的N倍,N为大于I的数值。
3.如权利要求2所述的方法,其特征在于,N为2。
4.如权利要求1所述的方法,其特征在于,若当前显示字号不以像素个数为单位,则在从字体文件中获取至少一个字符在扩大显示字号下的字形轮廓之前,进一步包括: 根据当前显示设备的每英寸的像素数PPI参数,将当前显示字号转换为以像素个数为单位的显示字号。
5.如权利要求1 所述的方法,其特征在于,所述计算得到的各灰度位图的像素平均灰度值,具体包括: 在得到一个灰度位图时,计算该灰度位图中灰度值不为O的像素的灰度值的平均值,将计算结果作为所述像素平均灰度值;或者, 在得到多个灰度位图时,对于每个灰度位图,分别计算该灰度位图中灰度值不为O的像素的灰度值的平均值;计算得到的各平均值的平均值,将计算结果作为所述像素平均灰度值。
6.如权利要求1所述的方法,其特征在于,所述根据所述像素平均灰度值确定是否需要对待显示字符对应的字形轮廓进行加粗处理,具体包括: 确定所述像素平均灰度值是否大于预先设定的灰度门限值,若是,则确定需要对待显示字符对应的字形轮廓进行加粗处理,否则,确定不需要对待显示字符对应的字形轮廓进行加粗处理。
7.如权利要求6所述的方法,其特征在于,所述灰度门限值为2/3。
8.如权利要求1-7中任一所述的方法,其特征在于,所述根据所述像素平均灰度值确定加粗量,具体包括: 计算I与所述像素平均灰度值的差值,将计算结果确定为加粗量;或者, 根据预先设定的像素平均灰度值与加粗量的对应关系,确定所述像素平均灰度值对应的加粗量。
9.一种字符显示装置,其特征在于,该装置包括: 字形轮廓获取单元,用于从字体文件中获取至少一个字符对应的字形轮廓; 灰度值计算单元,用于使用反锯齿光栅化技术,将获取到的各字形轮廓光栅化为灰度位图,并计算得到的各灰度位图的像素平均灰度值;加粗处理单元,用于根据所述像素平均灰度值确定是否需要对待显示字符对应的字形轮廓进行加粗处理,在确定为是时,根据所述像素平均灰度值确定加粗量,根据该加粗量对待显示字符对应的字形轮廓进行加粗处理; 输出显示单元,用于对加粗处理后得到的字形轮廓进行输出显示。
10.如权利要求9所述的装置,其特征在于,所述字形轮廓获取单元用于: 从字体文件中获取至少一个字符在扩大显示字号下的字形轮廓;该扩大显示字号为当前显示字号的N倍,N为 大于I的数值。
全文摘要
本发明实施例公开了一种字符显示方法和装置,涉及计算机信息处理领域,用于提高字符的显示效果。本发明中,通过计算字体文件中字形轮廓的灰度位图的像素平均灰度值,确定是否需要对待显示字符对应的字形轮廓进行加粗处理,在需要加粗处理时,根据该像素平均灰度值确定加粗量,并根据该加粗量对待显示字符对应的字形轮廓进行加粗处理后进行输出显示,从而尽量避免了由于笔划过细造成的显示颜色变浅、笔划模糊等问题,从而提高了字符的显示效果。
文档编号G09G5/22GK103177709SQ201110430849
公开日2013年6月26日 申请日期2011年12月20日 优先权日2011年12月20日
发明者王晓磊, 张磊, 丁力 申请人:北大方正集团有限公司, 北京方正阿帕比技术有限公司, 方正信息产业控股有限公司

最新回复(0)