首页 / 专利库 / 图形技术 / 抗锯齿 / 高速缓存使用抗锯齿技术再现文本的覆盖值

高速缓存使用抗锯齿技术再现文本的覆盖

阅读:817发布:2020-05-13

专利汇可以提供高速缓存使用抗锯齿技术再现文本的覆盖专利检索,专利查询,专利分析的服务。并且描述了计算要被显示的文本的子 像素 覆盖 值、从而能够高速缓存该子像素覆盖值的技术。该子像素覆盖值可以使得该文本的 颜色 信息和一个或多个其它重叠显示元素的颜色信息能够线性组合,以计算在控制显示器时使用的复合颜色值。在一些 实施例 中,可以在不进行伽 马 修正处理的情况下计算在控制显示器的子像素时使用的该复合颜色值。还描述了取回高速缓存的子像素覆盖值并且将该值与文本和其它重叠显示元素的颜色信息相组合以计算显示器的子像素的复合颜色值的技术。至少一个 图形处理单元 (GPU)可以被配置为使用该子像素覆盖信息进行操作并且计算子像素的复合颜色值。,下面是高速缓存使用抗锯齿技术再现文本的覆盖专利的具体信息内容。

1.一种处理将被显示在计算装置(200)的图形界面中的文本的方法,所述方法包括:
产生(304)所述文本的映射,所述映射包括表示所述文本的至少一个形状的信息并且所述映射对应于在显示所述文本时使用的显示器的多个子像素
使用子像素抗锯齿技术确定(306)所述多个子像素的初始子像素覆盖值;
处理(308)所述初始子像素覆盖值以产生图像数据的多个像素的处理后的子像素覆盖值;以及
高速缓存(312)所述处理后的子像素覆盖值,以便随后在所述图形界面中再现所述文本时使用;
其中高速缓存所述文本的处理后的子像素覆盖值包括:将所述处理后的子像素覆盖值存储(312)在数据结构中,而不将所述文本在所述图形界面中显示的颜色的信息存储在所述数据结构中。
2.根据权利要求1所述的方法,其中处理所述初始子像素覆盖值以产生处理后的子像素覆盖值包括:调节(606)所述初始子像素覆盖值以补偿显示所述图形界面的显示器的非线性。
3.根据权利要求2所述的方法,其中调节(606)所述初始子像素覆盖值以补偿非线性包括:修正(606)所述初始子像素覆盖值来产生所述处理后的子像素覆盖值,以使得能够通过线性组合所述处理后的子像素覆盖值和所述文本的颜色值以及与所述文本重叠显示的至少一个其它显示元素的颜色值来计算用于控制显示器的复合颜色值。
4.根据权利要求1所述的方法,其中响应于从执行进程(202)接收到至少包含所述文本的内容并且不包括在所述显示器上再现所述文本的位置的指令进行所述产生、确定、处理和高速缓存。
5.一种用于在显示器上再现文本的设备,包括:
第一装置,用于响应于接收到再现该显示器的文本的请求,从高速缓存器(208A)取回(404)所述文本的子像素覆盖值,所述子像素覆盖值是通过处理(308)所述文本的初始子像素覆盖值而产生的且被设置在对应于至少一个图形处理单元(GPU)(206)的硬件组织所设置的数据结构中,所述数据结构包括四个字段并且所述子像素覆盖值被设置在所述数据结构的三个字段中;
第二装置,用于配置(408)所述至少一个GPU以确定显示所述文本的显示器的像素的复合颜色值,所述配置包括配置所述至少一个GPU以从所述数据结构取回所述子像素覆盖值;
第三装置,用于从所述至少一个GPU接收(410)显示所述文本的像素的复合颜色值;以及
第四装置,用于基于所述复合颜色值对所述显示器再现(412)所述文本的抗锯齿后的版本。
6.根据权利要求5所述的设备,其中该第二装置适于配置所述至少一个GPU(206)以至少部分通过线性组合(410)由所述子像素覆盖值修正后的所述文本的颜色值和在所述显示器上与所述文本重叠显示的至少一个其它显示元素的颜色值来确定所述像素的复合颜色值。
7.根据权利要求5所述的设备,其中该第二装置适于配置所述至少一个GPU(206)以至少部分基于来自所述数据结构的像素的子像素覆盖值和基于来自不同于所述数据结构的第二数据结构的像素的子像素颜色值来确定所述显示器的像素的复合颜色值,所述第二数据结构对应于所述设备的至少一个图形处理单元(GPU)(206)的硬件组织设置而成。
8.根据权利要求7所述的设备,其中该第三装置适于接收对所述显示器再现所述文本的请求,所述请求包含所述第二数据结构,所述第二数据结构包含所述子像素颜色值。
9.根据权利要求7所述的设备,其中该第一装置适于响应于接收到所述请求,从所述高速缓存器取回(404)包括所述子像素颜色值的所述第二数据结构。

说明书全文

高速缓存使用抗锯齿技术再现文本的覆盖

背景技术

[0001] 计算装置能够以文本的形式显示信息给人类用户。文本由字符串构成。对于英文文本,字符为字母和标点符号的形式。以其它语言呈现的信息可以使用其它字符。不管具体的字符怎样用于表现文本,计算装置都可以配置有实用工具(utility),该实用工具能够接收用于定义要在计算机的显示器上再现的文本的输入,然后对该显示器产生适当控制信号,从而适当地显示该文本。
[0002] 用于定义要在显示器上再现的文本的输入可以是任何适当的形式,包括使用字形(glyph)的定义。字形是文本的元素,如部分或全部字符。在字符是字母和标点符号的情况下,字形可以是线和点状的全部或部分字母或标点符号。字形的定义描述了字形的形状,并且可以是任何适当的格式以及能够以任何适当的方式使用以对显示器产生适当的控制信号
[0003] 为文本的适当显示而产生控制信号的再现处理可以包括多个步骤。这些步骤中的一些可用于使文本对于人类用户观看来说更加舒适。当观看计算机显示器上的内容时,人类趋向于对文本怎样被呈现比它们是其它图形对象的呈现更敏感。因此,通过计算机显示器以人类将发现观看舒服的方式呈现文本需要与用于呈现图像不同的步骤。这种额外步骤的一个例子是对文本字形边缘的处理。
[0004] 具体来说,当显示器的像素值被设定为使字形具有硬的高对比度边缘时,许多计算机用户不喜欢观看或者发现难以观看显示器上的文本,因为这能够使文本的边缘具有状的和参差的(或“锯齿的”)外观。为了提供更舒适的呈现,使用“抗锯齿”技术。抗锯齿技术选择显示器的哪些像素被用来表示字形和字形周围的区域,并且设置每个这种像素的强度以使字形的边缘平滑并且使字形观看起来更加舒适。
[0005] 当文本要在显示器上显示时,该文本可以与其它显示元素一起显示。例如,文本可以与背景或前景图形重叠显示。为了重叠地显示文本和图形,计算装置确定由将要产生文本覆盖图形效果的显示器的各个像素发出的复合颜色。为了确定该复合颜色,使用文本的颜色信息和图形的颜色信息进行计算。文本和图形的颜色信息可以包含在与显示器的像素相对应的每个文本和图形的颜色值中。例如,在文本的颜色信息表示特定的像素应该是红色,并且图形的颜色信息表示该特定的像素应该是蓝色的情况下,可以通过将该像素的复合颜色值识别为紫色来产生重叠效果。
[0006] 为了便于组合颜色信息,文本和重叠显示元素的每个颜色值可以与由覆盖值(也称为“阿尔法”值)表示的“覆盖”信息相关联。当通过组合重叠显示元素的颜色值来计算复合颜色值时,每个显示元素的覆盖值可被用于基于逐个像素加权颜色值对复合颜色值的各自贡献。具体来说,覆盖值可被用于通过将一个显示元素的颜色值加权为低于另一个显示元素的颜色值而引入透明效果。例如,对于个别像素,当来自覆盖值的加权使复合颜色值更类似于图形的颜色时,在底层的图形上面显示的文本可以在显示器上表现为透明的或者比复合颜色值改为更类似于文本颜色时更加透明。
[0007] 覆盖值还可被用在抗锯齿技术中,用于柔化文本的边缘并且使边缘表现为与重叠显示元素平滑地融合。为了使边缘表现为平滑地融合,当确定像素的复合颜色值时,该像素的文本的覆盖值可被设置成产生透明效果。例如,文本的覆盖值可被设置成对字形中间或者靠近字形边缘的像素产生更加不透明的效果,并且对远离字形边缘的像素产生更加透明的效果,这可以产生融合效果。具体来说,可以基于像素落入文本的任何字符的显示区域内的比例设置显示器的每个像素的文本覆盖值。对于完全落入字符的区域内的像素,该覆盖值可被指定为100%,使得在该像素的文本是不透明的(即,该像素的颜色将更类似于文本颜色)。同样地,对于完全在文本的任何字符的区域之外的像素,该覆盖值可被指定为0%,使得在该像素的文本完全透明,并且该像素将不显示与文本有关的任何信息。部分在文本字符区域内且部分在文本字符区域外的沿着文本边缘的像素基于任意字符与该像素重叠的量,对于该文本具有0%和100%之间的覆盖值。因此,对于该像素,文本颜色对复合颜色值的贡献将根据该像素落入该文本字符的显示区域内的比例而被加权。这允许该文本以平滑的效果显示,这使文本表现为沿着边缘融合到背景中,而不是关于背景具有硬的高对比度的边缘。以这种方式设置的覆盖值可以归一化为0和1之间的数字。
[0008] 已经知道多种抗锯齿技术。用于渲染(shading)字形边缘的一种抗锯齿技术通常称为“灰度”渲染。使用灰度渲染,利用前文描述的技术,整体地针对像素设置文本的单个覆盖值。
[0009] 另一种技术称为子像素抗锯齿,或者可替换地称为子像素覆盖。该方法利用许多计算机显示器能够以彩色呈现信息的特性。许多类型的显示器的像素每个包括多个子像素,这些子像素一起操作以从该像素射出光。像素的每个子像素发射不同颜色的光,例如,红、绿、蓝。通过控制子像素,可以控制从该像素发射的光的强度和颜色。
[0010] 在子像素抗锯齿技术中,代替基于由整个像素发射的光的期望强度和颜色严格控制子像素,设置用于单独控制每个子像素的值,从而当显示字形时产生平滑的效果。具体来说,对于子像素抗锯齿,针对像素的每个子像素分别设置覆盖值,而不是像灰度抗锯齿中那样针对整个像素。尽管在灰度抗锯齿中,与像素落入字符的显示区域内的量成比例地设置针对该像素的文本覆盖值,但是在子像素抗锯齿中,可以与每个子像素的量成比例地设置覆盖值。当设置用于控制每个子像素以某一强度发射光的复合控制值时,可以使用各个子像素的覆盖值。具体来说,如上文讨论的,可以组合文本的颜色信息与文本的子像素覆盖值和重叠显示元素的颜色信息,以确定子像素的复合控制值。由于显示器的子像素具有比整像素更精细的分辨率,所以通过设置每个子像素的覆盖值,可以实现比使用灰度抗锯齿可能实现的更精细粒度的平滑,并且文本的视觉外观可以优于使用灰度抗锯齿所能实现的。可以从华盛顿州雷蒙德市的微软公司获得的MICROSOFT®CLEARTYPE®文本是使用子像素抗锯齿的平滑技术的一个例子。
[0011] 如上所述,由于覆盖值对用于确定要由显示器的像素呈现的复合颜色值的计算的影响,覆盖值可被用于产生这种透明度和平滑效果。当要显示多个显示元素(如文本和图形)以表现为重叠时,当文本的覆盖值被用于修正文本的颜色值时,进行这些关于颜色值的计算。然而,当组合多个显示元素的颜色信息时,复杂性出现。因为大多数显示器不线性响应,所以多个显示元素的修正后的颜色值(通过覆盖值修正)的单纯的线性插值将产生对人类眼睛不表现为文本和图形的叠加的复合颜色。所以,如果通过线性插值组合文本和图形的修正后的颜色值,那么得到的显示对人而言看起来是不正确的。为了避免该结果,已知采用称为“伽修正”的技术来修改修正后的颜色值的组合,使得对于人类观看者来说,复合颜色看起来像预期的叠加。在伽马修正中,通过与将要使用的显示器相关联的“伽马值”修正通过线性插值产生的复合颜色值,使得复合颜色值将看起来正确。发明内容
[0012] 申请人已经意识到并理解,当在显示器上再现文本时,通过适当地排序处理步骤,计算装置可以以良好的显示质量更快地操作。可以将所述步骤排序,以促进随后可在相对于重叠图形的不同位置中再现文本时使用的信息的高速缓存。通过选择要高速缓存的信息和高速缓存该信息的方式,可以进一步促进文本的快速和高质量呈现。
[0013] 因此,本文描述用于以能够高速缓存使用子像素抗锯齿技术确定的子像素覆盖值的方式处理与要显示的文本有关的信息的技术。在一些实施例中,技术可以产生文本的子像素覆盖值,其能够与关于一个或多个重叠显示元素的信息进行线性组合,以确定显示器的像素和/或子像素的复合颜色值。在这些实施例中,由于子像素覆盖值在被从高速缓存器中取回时能够与关于重叠显示元素的信息线性组合,所以可以更快速更高效地进行文本与覆盖显示元素的再现。子像素覆盖值可以与文本颜色值分开进行高速缓存。在一些实施例中,颜色值可以从子像素覆盖值中分割出来并且存储在分开的数据结构中。
[0014] 上述是本发明的非限制性的发明内容,其由所附权利要求限定。附图说明
[0015] 附图不意图按比例绘制。在附图中,在各图中示出的每个相同的或近似相同的组件由类似的附图标记来表示。为了清晰,不是每个组件在每幅图中都被标注。在附图中:
[0016] 图1A是具有子像素颜色信道的示例性显示器的框图
[0017] 图1B是使用子像素抗锯齿技术绘制的字形的例子;
[0018] 图2是可以用来执行一些实施例的计算装置的一些组件的框图;
[0019] 图3是在计算机显示器再现文本中使用的、用于高速缓存抗锯齿处理的覆盖值的示例性处理的流程图
[0020] 图4是在计算机显示器再现文本中使用的、用于从高速缓存器取回抗锯齿处理的覆盖值的示例性处理的流程图;
[0021] 图5是可以作为计算抗锯齿处理的覆盖值的一部分进行的示例性处理的流程图;
[0022] 图6是用于修正覆盖值以避免进行伽马修正处理的示例性处理的流程图;
[0023] 图7是用于存储要以不同颜色显示的文本的覆盖值的示例性处理的流程图;以及[0024] 图8是可以用来执行一些实施例的计算装置的框图。具体实施例
[0025] 申请人已经意识到并理解,在用户界面中显示文本所需的处理步骤减缓该界面,特别是对于包括动画或者允许用户使界面的元素动画化的界面。然而,申请人还进一步意识到并理解,处理步骤的适当排序可以允许高速缓存与文本有关的信息,并且这种信息的高速缓存可以加速文本的再现。另外,申请人意识到并理解,虽然用于存储像素的颜色值和覆盖值的传统技术将相关联的像素的值一起存储在单个数据结构中,但是如果将子像素颜色值和子像素覆盖值分开存储在不同的数据结构中由图形处理单元来处理,则可以加速文本的再现。
[0026] 更具体来说,申请人已经意识到用户界面正变得比以前的界面更加交互式并且更加动画化,并且动画量的上涨给在用户界面中再现文本带来特别的困难。以使观看者舒适的方式再现文本需要许多处理步骤,包括计算文本的覆盖值、将文本的颜色信息和覆盖值与重叠图形的颜色信息相组合以及对得到的复合颜色值进行伽马修正。这些处理步骤可能需要相对长的时间来执行,这可在将动画插入到用户界面中时导致时间延迟问题。例如,用户界面允许交互式动画,如在文本上放大或者相对于背景图形滚动或移动文本。使用传统再现技术,每次在动画之后重新再现文本时,都必须再次执行相同的处理步骤以确定文本和图形的新叠加的复合颜色值。因此,该处理步骤可能使界面以不连贯的或缓慢的方式响应用户。
[0027] 申请人还进一步意识到并理解,使用这些动画化界面的装置的类型正在改变。在诸如移动电话平板电脑等具有触摸屏界面的手持式计算机中动画化界面是普遍的。然而,与桌上或膝上个人计算机相比,这种手持式计算机具有有限的资源和相对低速的处理器。使用这种有限的资源在动画之后对文本进行所述处理步骤可能使这些动画化的界面进一步减慢。
[0028] 申请人还进一步意识到并理解,由于当文本相对于重叠显示元素的位置改变时,复合颜色值可能改变,并且传统的再现处理需要在新的复合颜色值上执行伽马修正,所以必须重复这些处理步骤。然而,申请人已经意识到并理解,如果文本信息和关于其它显示元素的信息可以在不进行伽马修正的情况下相组合,那么可以简化必须在动画之后进行的处理步骤。具体来说,如果可以消除伽马修正,那么可以在动画之后将文本和其它重叠显示元素的颜色信息线性组合。这种线性组合可以被快速地进行。此外,包括子像素覆盖值的文本信息可以被预先高速缓存,并且仅在动画之后取回并且与有关重叠显示元素的信息相组合。只进行该组合可以加速界面的再现,并且使该界面对于用户观看和操作来说更舒适。
[0029] 此外,申请人已经意识到并且理解,一些传统图形处理单元(GPU)被专配置为进行一些再现操作,包括颜色信息的线性组合,并且可以快速进行这些操作。如果GPU可被配置为进行用于组合文本和其它的重叠显示元素的颜色信息的操作,那么动画之后的再现操作可被进一步加速。例如,如果GPU被编程以对高速缓存的子像素覆盖值的数据结构操作,并且将高速缓存的子像素覆盖值与文本和其它的重叠显示元素的子像素颜色信息相组合以确定子像素的复合颜色值,那么再现操作可以被加速并且界面被改进。
[0030] 因此,本文中描述用于计算与要被再现的文本有关的覆盖信息以能够高速缓存该覆盖信息的技术。在一些实施例中, 计算并高速缓存与子像素抗锯齿技术一起使用的处理后的覆盖值。当子像素覆盖值被高速缓存以供处理之后使用时,子像素覆盖值可以被置于计算装置的主存储器中(例如,系统存储器或视频存储器),而不将处理后的值与子像素的颜色信息相组合或相关联。在一些实施例中,处理后的覆盖值可以使文本的颜色信息能够与一个或多个其它的重叠显示元素的颜色信息线性组合,以计算在控制显示器时使用的复合颜色值。在一些实施例中,可以在不进行伽马修正处理的情况下计算在控制显示器的子像素中使用的这种复合颜色值。
[0031] 在本文中还描述用于取回高速缓存的子像素覆盖值并且将该子像素覆盖值与文本和其它的重叠显示元素的颜色信息相组合以计算子像素的复合颜色值的技术。在一些实施例中,至少一个图形处理单元(GPU)可被配置为使用该子像素覆盖信息进行操作并且计算子像素的复合颜色值。在一些情况下,GPU可被配置为基于分开存储的文本的子像素颜色值和文本的子像素覆盖值来计算子像素的复合颜色值。例如,子像素颜色值(其可以是对像素的红、绿、蓝颜色信道的控制值)可以存储在与子像素覆盖值不同的数据结构中。这可以是如下情况:GPU本身适合于处理与单个像素有关的输入信息,该信息设置在单个数据结构中,其具有该像素的四个字段/值:该像素的三个颜色值(红、绿和蓝)和一个覆盖值。在一些实施例中,利用子像素覆盖值,GPU将处理像素的六个值:三个子像素颜色值(红、绿和蓝)和三个子像素覆盖值。当输入信息以四值格式设置时,GPU可以高效且快速地处理该输入信息。为了使数据处于四值格式以便高效处理,在一些实施例中,像素的颜色值与像素的覆盖值分开并且位于不同的数据结构中。在一些情况下,三个颜色值可以位于一个四值数据结构中,并且三个子像素覆盖值可以位于不同的四值数据结构中。然后GPU可以被配置为使用两个数据结构处理单个像素的信息,而传统上GPU使用单个数据结构处理单个像素的所有信息(颜色值和覆盖值)。
[0032] 下面描述这些技术的各种示例性的实施方式。然而,应当理解,实施例不局限于实现所讨论的这些示例技术中的任何一个,因为实施例可以用任何适当的方式来实现。
[0033] 如前文讨论的,本文描述的技术可被用于在显示文本时确定用于控制显示器的像素和子像素的复合颜色值。在一些情况下,可以单独显示文本,并且在计算复合颜色值时,子像素覆盖值可以用于只修正文本的颜色信息。然而,在其它情况下,文本可以与一个或多个其它显示元素重叠显示,并且当基于文本的和其它显示元素的颜色信息计算复合颜色值时,可以使用该子像素覆盖值。实施例不局限于计算与任何具体显示元素或任何具体类型的显示元素重叠的文本的复合颜色值。在各种实施例中,重叠显示元素可以是在该文本的上面或后面显示的一个或多个图形,或者可以是其它文本。为了易于描述,在下面的例子中,子像素覆盖值被描述为用于在文本与另一显示元素重叠的情况下计算复合颜色值,并且其它的重叠显示元素被描述为背景图形。然而,应当理解,除非另外指出,否则这些示例性的技术中的任何一个都可以用于其它类型的重叠显示元素或者文本不与任何其它显示元素重叠的情况。
[0034] 本文描述的技术对于当文本和重叠显示元素之间的关系改变时快速且高效地显示文本可以是有用的。当文本或重叠显示元素相对于彼此移动时,包括当文本在用户界面中移动时,这种关系可能改变。例如,当文本在背景图形上滚动时,本文中使用的技术可以是有用的。这些技术还可以在背景图形相对于文本移动或者在与文本重叠的图像改变的情况下使用。为了易于描述,下面的例子是在文本相对于背景图形移动时再现文本的背景下给出的。然而,应当理解,这些技术对于出于任何原因再现文本都可以是有用的,包括响应于任何相对变化或者响应于请求显示文本(其不与对文本的任何改变关联)。
[0035] 一些实施例可以结合子像素抗锯齿技术操作,如MICROSOFT®CLEARTYPE®子像素抗锯齿技术。子像素抗锯齿技术结合如下显示器操作:该显示器的像素包括多个子像素发光组件。本文描述的文本再现技术可以结合任何子像素抗锯齿技术使用,包括本领域中已知的这样的技术。
[0036] 图1A以框图的形式示出一些子像素抗锯齿技术可以工作的显示器的例子。图1A的显示器100包括5×7像素的阵列,包括像素102。显示器100的每个像素包括三个子像素元素,每个子像素元素被设置为产生某个颜色的光。在图1A中,显示器100的第一行标出了每个子像素被配置以产生的光的颜色:红(R)、绿(G)或蓝(B)。例如,像素102包括红子像素102A、绿子像素102B和蓝子像素102C。
[0037] 显示器的子像素可以被控制成使得该像素作为整体发射出某个颜色或强度的光。例如,通过控制红、绿和蓝子像素分别发射出一定量的光,整体地可以从该像素发射出紫色的光。使用灰度抗锯齿和其它覆盖技术,整体地针对像素设置单个覆盖值,该单个覆盖值被用于调节每个子像素的颜色值。然而,使用子像素抗锯齿技术,改为每个子像素被分配各自的覆盖值,使得每个子像素输出的光可被控制,从而使用每个子像素产生效果。具体来说,每个子像素可以被分配在呈现平滑效果中使用的覆盖值,以产生字形与重叠的背景图形融合的外观。当使用通过使用子像素覆盖值调节的颜色值来整体地控制像素时,这些子像素将产生预期的融合效果。
[0038] 图1B示出通过向各个子像素分配覆盖值而生成融合效果的例子。图1B示出分别对应于图1A的显示器100的子像素的覆盖值的映射110。映射110示出当要显示 “A” 字形时,覆盖值可以怎样被分配。当要显示该字形时,映射110可以与其它信息相结合,以再现用于在显示器100上显示的该字形。
[0039] 在映射110中,显示器的子像素被分配不同的覆盖值。如像素112的例子中所示,一个像素的每个子像素可被分配不同的覆盖值。分配给每个子像素的覆盖值可被用于使用该子像素显示的文本颜色的透明度,从而产生与背景图形的融合效果。如上文讨论的,当在复合颜色的计算中通过加权文本颜色而基于文本颜色和背景图形的颜色确定复合颜色时,可以使用文本的覆盖值。在子像素覆盖值的情况下,其中子像素发射出某个颜色的光(例如,红、绿或蓝光),子像素覆盖值可以与文本颜色和背景图形颜色一起使用,以确定从每个子像素发射出的光的量或光的强度。
[0040] 通过使用子像素覆盖值设置光的量/强度,可以使在显示器中显示的文本呈现出融合效果。如上文讨论的,该融合可以柔化文本的边缘,并且使该文本更适于人类观看。
[0041] 应当理解,图1A和图1B的例子中给出的子像素的数目、颜色和排序仅是示例性的。实施例可适用于其它颜色的子像素(例如,黄色子像素)、每个像素具有更多或更少的子像素(例如,四个子像素)以及/或者可以以任何其它方式设置像素(例如,以蓝-红-绿排序代替红-绿-蓝),因为实施例在这些方面没有限制。
[0042] 此外,实施例也不局限于工作于任何具体类型的图形界面、显示器或计算装置。本文中描述的技术可作为针对在任何适当的显示器中示出的任何图形界面再现文本的一部分使用。此外,可以利用任何适当的计算装置实现该图形界面和显示器。实施例可工作的计算装置的例子包括膝上计算机或者桌上个人计算机、移动电话、包括智能电话和个人数字助理(PDA)的手持式计算机、平板计算机和服务器
[0043] 图2中示出一些实施例可工作的计算装置的例子。图2的框图示出示例性的计算装置200的一些组件。如所示的,计算装置200包括一个或多个执行进程202(在本文中还简称为“进程”202),每个进程可以与图形引擎204交互,以请求在显示器中显示内容。要被显示的内容可以包括可以由图形引擎204使用抗锯齿技术再现的文本。作为再现用于在显示器上显示的包括文本的内容的一部分,图形引擎204可以与至少一个图形处理单元(GPU)206交互,以进行与再现相关的一些操作,并且可以另外将一些信息存储在存储器208中。
[0044] 进程202可以是执行任何类型的处理或功能的任何适当进程,因为实施例在这方面不受限制。进程的例子包括与应用软件系统软件和/或其它类型的软件相关联的那些进程。每个进程的功能可以包括用于控制和/或显示图形用户界面(GUI)的至少一部分的功能,用户可以利用该GUI操作或促进进程202的其它功能。该GUI可以包括文本,在此情况下,显示该GUI可以包括在该GUI中显示文本。实施例不局限于以任何适当格式显示文本的GUI,并且不局限于以任何适当格式存在的文本。在文本是英文文本的情况下,该文本可以包括字母和标点符号的组合。在文本是其它语言的情况下,可以使用其它形式的其它字符。
[0045] 在GUI包括文本的情况下,GUI可以在一些情况下还允许文本的动画化。响应于这种动画化,可以在显示器上调节文本。这种调节可以包括相对于界面的其它显示元素改变文本的位置或尺寸,如相对于背景图形移动文本、相对于文本移动背景图形或者改变背景或者如上文讨论的任何其它适当的调节。因此显示GUI可以包括以例如相对于其它显示元素的新位置中的文本更新GUI的显示。
[0046] 为了显示或更新GUI的显示,进程202可以与图形引擎204交互。图形引擎204可以实现由计算装置200执行的用于再现显示器的图形的功能的至少一部分。在一些实施例中,图形引擎204可以作为抗锯齿设施来操作,以确定与要再现的显示器的文本相关的子像素覆盖值。在一些实施例中,图形引擎204可以另外包括产生文本的光栅图像的功能,以准备用于在图形界面中显示的文本。这种光栅图像可以是任何适当格式的,包括作为位图。此外,在一些实施例中,图形引擎204可以组合与要显示的文本有关的信息和与其它显示元素(如背景图形)有关的信息,并且例如通过确定要在控制显示中使用的复合颜色信息来准备用于在显示器上显示的该组合。在一些实施例中,图形引擎204可以实现MICROSOFT®Direct2dTM和/或DIRECTX®图形库的一部分,它们每个都可以从华盛顿州雷蒙德市的微软公司获得。可以用任何适当的方式执行图形引擎204的功能。在一些实施例中,可以完全通过由计算装置200的至少一个中央处理单元(CPU)执行的指令来进行图形引擎204的功能。在其它实施例中,该功能的至少一部分可以通过由一个或多个GPU 206执行的指令来进行。在至少一些功能通过使用GPU 206来进行的情况下,GPU 206可以由图形引擎204配置以执行该功能并且/或者被配置为执行特殊指令。
[0047] 因此,为了显示和更新用于与用户交互的GUI,进程202可以与图形引擎204交互。通过与图形引擎204交互,进程202可以将进程202希望在显示器中显示的GUI的内容通知给图形引擎204。与GUI的内容有关的信息可以包括该GUI中所包括的显示元素的任何适当属性,包括显示元素的形状、尺寸、位置和颜色。当例如响应于用户输入更新GUI时,任意或全部所述属性可以再次在进程202和图形引擎204之间传送。关于显示元素的信息可以用任何适当的方式在进程202和图形引擎204之间传送。例如,一些实施例可以使用一个或多个应用编程接口(API)函数调用,以在进程202和图形引擎204之间交换数据。
[0048] 如前文指出的,本文中描述的技术可被用于针对显示器上显示的界面再现和显示文本。因此,在一些实施例中,进程202可以与图形引擎204交互以请求在GUI中显示文本并且/或者更新该文本的显示。可以以任何适当的式样在界面中显示任何适当的文本,因为实施例在这方面不受限制。
[0049] 根据本文中描述的技术,当进程202将在显示器上显示文本的请求发送给图形引擎204时,图形引擎204可以确定如何将该文本显示在该界面中。下面结合图3至图7详细讨论可以由图形引擎204执行以确定如何显示该文本的示例性操作。然而,简言之,图形引擎204可以基于字形描述的数据仓库204A识别与要在显示器上显示的文本相对应的形状。如前文讨论的,文本可以包括字符的任何适当组合,并且字形可以是全部或部分字符。计算装置可以包括字形描述的数据仓库204A,其指示如何绘制字形的形状,如在绘制字符时将使用的字形的线或点。可以基于任何适当的描述识别字形的形状,包括字形的图像或者字形形状的数学描述,因为实施例在这方面不受限制。
[0050] 图形引擎204可以根据数据仓库204A的描述确定字形形状到显示器的像素和子像素的映射,该映射将被用于在显示器上显示该文本。上文讨论了并且在图1B中示出了这种映射的例子。然后图形引擎204可以使用子像素抗锯齿技术计算将在显示该文本时使用的子像素覆盖值。
[0051] 在一些实施例中,当图形引擎204计算文本的子像素覆盖值时,可以用如下方式计算该子像素覆盖值:该值可被高速缓存并且随后在GUI中显示或更新该文本时从该高速缓存器中取出该值。例如,在一些实施例中,使用子像素抗锯齿技术针对该文本计算的子像素覆盖值可以在被高速缓存之前被处理以产生处理后的覆盖值。该处理可以包括通过将修正值施加于使用抗锯齿技术计算出的初始覆盖值来修改修正值。该修正值可以用任何适当的方式修正该初始覆盖值,以能够高速缓存该覆盖值并且使用高速缓存的覆盖值。在一些实施例中,该修正值可以修改该初始覆盖值,以模拟随后进行伽马修正处理的效果,可以在界面中显示文本和重叠图形的复合之前对该复合进行该伽马修正处理。通过在高速缓存该覆盖值之前模拟伽马修正处理的效果,可以调节高速缓存的覆盖值,以补偿其上要显示所述文本的显示器的非线性。如前文讨论的,显示器的这种非线性阻碍文本和重叠图形的颜色值的线性组合。通过在高速缓存该覆盖值之前补偿这种非线性,当从高速缓存器取回该子像素覆盖值时,该值可以与关于该文本和背景图形的颜色信息组合而不进行伽马修正处理。因此,图形引擎204可以直接对子像素覆盖值进行覆盖修正处理,而不是对已经与子像素的文本颜色值组合的覆盖值进行,尽管文本的颜色值可被用于通知该修正。作为进行该覆盖修正处理的一部分,图形引擎204可以从覆盖修正值的数据仓库204B中取回修正值。下面结合图5详细讨论图形引擎204可以用来修正覆盖值的技术。
[0052] 当图形引擎204已经通过任何适当的处理计算出处理后的覆盖值时,该处理后的覆盖值可以被图形引擎204写到数据结构210。可以使用任何适当的数据结构。在一些实施例中,数据结构210可以是四值图形结构,其被配置为存储与显示元素有关的颜色信息,并且GPU固有地适合于处理。四值数据结构可以存储三个颜色值,每个子像素用一个颜色值,以及整体地用于像素的覆盖值。这种结构的例子是BGRA数据结构,其以蓝-绿-红-阿尔法格式存储三个颜色值(蓝、绿和红)以及覆盖(“阿尔法”)值。BGRA结构可以对这四个不同值中的每一个使用八位。
[0053] 当与图形有关的信息是这种四通道格式时,其中三个通道用于颜色值,第四通道用于覆盖值,GPU适于高效处理该信息。因为GPU的操作和GPU的硬件寄存器被预配置为以该格式存储值并且以该格式操作值,所以GPU可以高效地处理该格式的信息。因此,如果根据本文中描述的用于高速缓存子像素的覆盖信息的技术使用四值结构,那么与其它格式的数据相比,GPU可以更容易处理四值格式的数据。
[0054] 因此,在一些实施例中,BGRA结构可被用于存储子像素覆盖值。然而,如上文讨论的,为了使用本文中描述的技术确定像素的颜色信息,一个像素可以使用六个值:用于该像素的子像素的三个颜色值(红、绿和蓝)以及用于该像素的子像素的三个覆盖值。在使用该四值结构存储子像素覆盖值的实施例中,这六个值不能存储在一个数据结构中。因此,在一些实施例中,该颜色控制信息可以被分开存储在例如不同的四值结构中,使得每个像素可以与两个不同的四值结构相关联。在此情况下,一个四值结构可以用于存储覆盖值,并且第二个四值结构可以用于存储颜色值。
[0055] 在GPU适于快速且高效地处理四值结构中的值的情况下,该GPU可适于在该四值结构的对应位置中的值相互关联的情况下进行该处理。例如,该GPU可以适于在每个四值结构的第一个值涉及蓝色子像素的情况下快速处理数据。因此,尽管在一些实施例中可以将六个值存储在两个不同的四值数据结构中,但是这些值不可以被分成在一个结构中四个值,在另一个结构中两个值。如果以这种方式分割这些值,那么这些值中的一个将位于该四值结构中不与相关的值的位置相对应的位置中。例如,如果三个颜色值(蓝、绿和红)和一个覆盖值(蓝)设置在四值数据结构中,那么该数据结构中的蓝色值的位置将不对应于蓝色覆盖值的位置。一些GPU将不能够快速且高效地处理以这种方式存储的颜色值和覆盖值,因为该GPU固有地不被配置为处理存储在不同位置处的蓝色值。因此,在像素的三个颜色值和三个覆盖值被分割的情况下,颜色值可以存储在一个结构中,覆盖值可以存储在不同的结构中。在这样的一些情况下,每个四值数据结构中的一个值可以是空的。
[0056] 然而,应当理解,可以使用其它数据结构格式。例如,可以使用以不同格式组织数据的其它四值格式,如RGBA结构。作为另一个例子,可以使用具有不同数目的信道的数据结构。在一些实施例中,可以使用三信道数据结构(例如,BGR结构)来存储覆盖值。在其它实施例中,可以使用六信道数据结构,其可存储三个不同子像素中每一个的子像素覆盖值和颜色值二者(例如,用于红、绿和蓝子像素的两个值)。
[0057] 与结构210的格式无关,当图形引擎204产生处理后的覆盖值时,处理后的覆盖值可被输出到数据结构210。可被输出的该覆盖值包括像素的每个子像素的覆盖值。例如,可以产生并存储蓝覆盖值、绿覆盖值和红覆盖值。在数据结构包括颜色专用信道时,子像素覆盖值可以存储在对应的信道中。例如,利用BGRA结构,传统上存储蓝色信道的颜色控制信息的B信道可以被用于存储蓝色子像素覆盖值。
[0058] 然后可以用任何适当的方式使用数据结构210。为了高速缓存覆盖值,数据结构210可被存储在存储器208中,如存储在文本覆盖值的高速缓存器208A中。存储器208可以是可以高速缓存信息的任何适当的存储器,包括随机访问存储器(RAM)或者存储驱动。RAM的例子包括系统存储器和视频存储器。存储驱动的例子包括硬盘驱动和固态驱动(SSD)。数据结构210还可被传送到GPU 206以在与图形相关的操作中使用。例如,作为再现处理的一部分,数据结构210可被发送到GPU 206。作为再现处理的一部分,GPU 206可以基于使用每个像素显示的显示元素来确定显示器的每个子像素的复合颜色信息。对于将要显示文本的像素,存储在结构210中的子像素覆盖值可被GPU 206用来确定复合颜色值。
[0059] 在一些实施例中,图形引擎204可以配置GPU 206以能够处理存储在结构210中的覆盖值。如上文讨论的,GPU 206可以固有地适于处理四信道数据结构,如BGRA结构,但是GPU 206可以适于处理这种格式的颜色值,而不是覆盖值。因此,在一些实施例中,为了GPU 206处理覆盖值,GPU 206可以被配置为以特定的方式使用结构210。GPU 206可以被配置为在修正后的文本颜色值和背景图形颜色值之间插值之前使用结构210来修正文本颜色值。
例如,GPU 206可被配置为在一些情况下从BGRA结构的蓝、绿和红信道中的每个信道取回子像素覆盖值并且不从阿尔法信道取回数据。GPU 206可被进一步配置为将这些子像素覆盖值乘以分开的BGRA结构中的蓝、绿和红信道的颜色值,以产生修正后的文本颜色值。如前文讨论的,GPU 206还可以被配置为将修正后的颜色值与背景图形的颜色信息相组合以产生用于控制显示器的子像素的复合颜色值。在不使用四信道结构而是使用其它格式(如存储覆盖值和颜色值二者的六信道格式)的其它实施例中,GPU 206可以被配置为以任何适当的方式使用这些格式的数据。
[0060] 图形引擎204可以采用任何适当的动作以响应于来自与显示器中的内容的显示有关的进程202的任何适当的输入。在一些实施例中,图形引擎204可以响应于从进程202接收到要被显示的文本内容和该文本要被显示的颜色,计算并高速缓存文本的覆盖值。在一些情况下,响应于接收到文本和字体颜色,图形引擎204可以不再现或显示文本。图形引擎204可以改为计算子像素覆盖值,然后产生数据结构210并且存储覆盖值,例如通过将数据结构210存储在存储器208的高速缓存器208A中。在一些实施例中,图形引擎204还可以在这时高速缓存字体颜色信息。之后,图形引擎204可以从进程202接收在显示器上的具体位置再现文本的请求,例如当文本在用户界面中相对于背景图形移动时。在图形引擎204不高速缓存字体颜色的情况下,再现文本的请求还可以包括文本的字体颜色。当图形引擎204从进程
202接收到位置信息时,图形引擎204可以取回高速缓存在高速缓存器208A中的数据结构
210中的文本的子像素覆盖值,并且操作GPU 206以使用高速缓存的覆盖值计算显示器的与该位置相对应的像素和子像素的复合颜色值。
[0061] 如前文讨论的,现代的用户界面可以使用户能够进行大量的用户界面元素的动画。通过允许高速缓存子像素覆盖值,本文中描述的技术可以在这种动画之后允许更快速地对显示器再现文本。以前,每次在动画之后重新再现文本时,需要针对文本的新位置确定覆盖值,之后在确定文本和重叠图形的复合颜色值时使用该覆盖值,之后该复合颜色值被伽马修正以补偿显示器的非线性。该处理是集中的并且减慢了界面对动画的响应。相反,在一些实施例中,已经被修正以补偿该非线性的文本的子像素覆盖值被存储并且可以被取回。然后当要重新再现文本时,该子像素覆盖值只是被取回并且与要被重新再现的文本和背景图形的颜色信息相组合。该处理更高效并且可以使用GPU固有适于处理的对数据结构的线性操作来完成,这使得该操作能够在GPU上快速进行。因此,重新再现处理能够更加高效地进行。
[0062] 如前文讨论的,当文本第一次被再现时,图形引擎204可以执行任何适当的操作以计算子像素覆盖值并且高速缓存子像素覆盖值,并且当重新再现该文本时使用高速缓存的子像素覆盖值来确定像素的复合颜色值。在一些实施例中,图形引擎204可以通过至少将高速缓存的覆盖值和指令传送给GPU 206来操作GPU 206,以执行这些操作的至少一部分。
[0063] 图3示出图形引擎可以执行用来计算和高速缓存覆盖值的一个示例性处理(在一些实施例中包括通过配置GPU然后接着进行该计算和高速缓存)。在开始图3的处理300之前,在计算装置的至少一个处理器上执行的执行进程可以已经将与将要在与该计算装置相关联的显示器上显示的文本有关的信息发送到该图形引擎。与该文本有关的信息可以包括要被显示的文本的内容。该内容可以是被表示为字符串或者任何其它适当形式的文本本身。在一些情况下,与该文本有关的信息还可以包括该文本的显示属性,如该文本的颜色、该文本的位置或者与将如何显示该文本有关的任何其它参数。然而,在其它实施例中,该文本的一些参数可以不在处理300之前接收,如该文本将要在显示器上显示的位置。与接收到什么信息无关,一旦图形引擎接收到与该文本有关的信息,处理300就开始。
[0064] 可以使用已知的技术执行图3的流程图的前三个块(即块302、304、306)的操作。因此,在此不需要详细讨论这些操作。然而,为了说明可以实现实施例的方式,提供对这些操作的简单讨论。
[0065] 在块302中,图形引擎识别该文本内容的要被显示的字形的形状。识别要被显示的字形的形状可以包括:从要被用于显示该文本的字体的字体库中取回该形状的描述。
[0066] 当要被用于显示该字形的形状被取回时,在块304中,图形引擎可以产生形状到显示器的像素的映射,该映射将被用于显示该文本。该映射定义每个字形的相对位置,并因此定义了当再现该文本时将会受影响的显示器的一部分像素。该映射将在块306中使用以设置子像素的覆盖值。可以使用包括已知技术的任何适当的技术,利用与每个像素有关的信息以及每个像素是否将被用于绘制每个字形的形状来产生形状的映射。在一些情况下,与每个像素有关的信息可以是表示该像素是否将被用于表示字形形状的双态“是”或“否”。在使用这种双态值的一些情况下,该映射可以是每像素一位的映射,其针对显示器的每个像素使用一位来表示该像素是否被用于绘制该映射(字形?)。在使用双态值的其它情况下,可以在该文本的两个维度中的一维或两维上过采样该映射。例如,可以使用已知的CLEARTYPE®技术,通过从字形形状取得将被用于表示字形形状的至少一部分的每个像素的多个“样本”,来产生过采样的映射。CLEARTYPE®通过考虑将像素分割成与过采样的量相对应的相等区域:6×1区域(即,在平方向上6个区域,在竖直方向上一个行中)或者6×5区域(即,在水平方向上6个区域,在竖直方向上5行中)来取得样本。当将字形的形状与像素和针对每个像素识别的相等区域进行比较时,可以使用双态值来表示该形状是否与具体的区域重叠。
[0067] 图形引擎可以通过产生每个字形的个别映射然后将这些个别映射合并以产生文本的映射、或者通过合并字形并且整体地产生文本的映射,来产生块304的映射,因为实施例在这方面不受限制。
[0068] 在块304中产生该映射后,在块306中使用该映射来设置将被用于再现该文本的显示器的子像素的覆盖值。可以用任何适当的方式使用该映射来设置覆盖值,包括使用已知的用于子像素抗锯齿的技术。例如,可以使用已知的技术基于该映射的双态值(包括基于过采样映射的双态值)设置覆盖值。对于过采样映射,例如,可以与根据采样将被用于表示字体形状的区域的数目成比例地设置覆盖值。可以用任何适当的方式进行基于过采样映射设置覆盖值,包括使用已知的技术,因为实施例在这方面不受限制。例如,对于子像素抗锯齿,可以针对像素的每个子像素使用CLEARTYPE®技术来确定覆盖值。在使用过采样的情况下,像素的一些区域将与该像素的每个子像素相对应。可以与对应于该子像素的对应于字形形状的样本数量成比例地设置该子像素的覆盖值。相比于对应于字形的形状,在子像素对应于较多样本的情况下,该子像素的覆盖值可设置为使用该子像素显示该文本的较暗的阴影/颜色。相反,在子像素对应于较少样本的情况下,覆盖值可被设置为显示较亮的阴影/颜色。
[0069] 因此,在像素包括三个水平排列的子像素的情况下,可以确定三个不同的覆盖值:每个子像素一个。在一些实施例中,可以基于初步覆盖值计算每个子像素的覆盖值。例如,在块304中针对每个像素取得多个竖直行的样本,如在上文讨论的6×5采样例子中,并且像素包括三个水平排列的子像素,可以首先获得每个子像素的多个覆盖值。这可以通过确定每行样本的每个子像素的覆盖值来完成,如在前面的6×1例子中,对于子像素,其将为每个子像素产生五个初步覆盖值;每行样本一个。然后这些初步覆盖值可以用任何适当的方式组合以产生子像素的单个覆盖值,包括通过将该子像素的初步覆盖值平均。
[0070] 通过块302、304、306的操作,图形引擎可以为子像素确定一组子像素覆盖值,该组子像素覆盖值将被用于显示由处理300开始之前的执行进程请求的文本。在块306中计算出的子像素覆盖值可被认为是“初始”覆盖值,因为在一些实施例中,这些覆盖值可以用某些方式进一步处理以产生处理后的子像素覆盖值。例如,可以基于用户喜好来调节通过在块306中应用的子像素抗锯齿处理产生的初始覆盖值以产生处理后的覆盖值。也可以进行任何其它处理,因为实施例在这方面不受限制。因此,在块308中,图形引擎以某些方式处理该初始覆盖值以产生处理后的覆盖值。
[0071] 在一些实施例中,通过块308的处理,覆盖值可以被调节以允许与文本有关的颜色信息(包括子像素覆盖值)直接并且线性地与诸如将要与该文本一起显示的背景图形等其它显示元素的有关颜色信息组合,而不需要进一步修正。而使用传统技术,当覆盖值与有关文本的颜色信息和有关背景图像的颜色信息一起使用以确定用于控制显示器的子像素的复合颜色值以示出该文本时,必须进行额外处理以修正该组合。这种额外处理可能包括伽马修正。这是因为,如前文讨论的,当使用线性插值组合文本和图形的颜色信息时,人类将不会觉得得到的复合颜色值是正确的。因此,在伽马修正处理期间使用传统技术修正插值结果以产生修正的复合颜色值。然而,在块308的处理期间,图形引擎可以处理初始覆盖值以补偿显示器的非线性,并且能够利用有限的后续处理组合有关文本的颜色信息与有关背景图形的颜色信息。例如,初始覆盖值可被修改为使得能够线性组合颜色信息以产生用于将该文本与背景图形一起显示的复合颜色值。作为另一个例子,可以修正初始覆盖值以消除在插值之后伽马修正处理的进行。
[0072] 在块308中,图形引擎可以用任何适当的方式对覆盖值执行任何适当的处理。下面结合图5和图6详细讨论可以执行的处理的例子。
[0073] 在图形引擎已经处理了覆盖值以产生处理后的覆盖值之后,在块310中,图形引擎高速缓存处理后的覆盖值。图形引擎可以用任何适当的方式高速缓存处理后的覆盖值。在一些实施例中,图形引擎可以以如下数据结构高速缓存处理后的覆盖值,该数据结构具有与图像处理单元(GPU)的硬件组织和固有操作匹配的尺寸和组织。例如,图形引擎可以以四值数据结构高速缓存将被用于在显示器中显示文本的每个像素的处理后的子像素覆盖值,该四值数据结构具有用于三个颜色值和一个覆盖值的字段。在被设置在该四值数据结构中之后,该覆盖值可以被存储在计算装置的存储器中。该覆盖值可被存储在该计算装置的存储器中(包括该计算装置的系统存储器、视频存储器或者存储驱动中)以便稍后在再现期间使用。
[0074] 在块310中存储了在块308中处理的子像素覆盖值之后,处理300结束。在处理300之后,图形引擎可以进行与子像素覆盖值有关的任何适当动作。在一些实施例中,图形引擎可以向最初提供该文本的执行进程提供高速缓存的子像素覆盖值的标识符。提供给该执行进程的标识符可以是任何适当的标识符,包括高速缓存的覆盖值在存储器中的地址或者由图形引擎使用的标识符,并且图形引擎以后可以使用该标识符取回高速缓存的覆盖信息。
[0075] 图形引擎可以随后以任何适当的方式并且在任何适当的时间使用高速缓存的覆盖值。图形引擎可以随后从该执行进程接收在显示器上再现和显示该文本的请求。该执行进程可以在任何适当操作之后或者响应于任何适当条件进行该请求,因为实施例在这方面不受限制。在一些实施例中,该执行进程可以响应于用户请求观看界面或者响应于用户与界面交互而请求显示该文本。当用户交互导致文本改变时,例如当用户使文本动画化时,该交互可以促使重新显示或者更新文本的显示。例如,当该文本在界面中相对于背景图形移动或者以另外方式被动画化时,该文本可以被重新显示。不是由与用户的交互导致的用户界面的其它动画化也可以促使该文本的重新再现。例如,在用户界面被配置为示出在显示器上滚动的文本的情况下,可以在该滚动期间重复重新再现该文本。
[0076] 响应于从该执行进程接收到该请求,图形引擎可以执行各种操作以显示其覆盖值已经被高速缓存的文本。图4的处理400是可以由用于显示其覆盖值已经被高速缓存的文本的图形引擎实现的技术的一个例子。
[0077] 在处理400开始之前,可以已经用任何适当方式(包括通过图3的处理300)产生,处理并高速缓存子像素覆盖值。处理400在块402开始,在块402,图形引擎从执行进程接收至少一个指令以再现该文本。来自该执行进程的指令可以包括该文本的任何适当的显示属性。在一些实施例中,与该文本有关的信息可以包括该文本要被显示的字体颜色和该文本要被显示的位置。该指令还可以包括先前确定的并且高速缓存的子像素覆盖值的任何适当标识符。在一些实施例中,该指令可以包括高速缓存的子像素覆盖值在存储器中的地址或者由图形引擎保持的所高速缓存的覆盖值的标识符,该引擎可以使用该标识符取回该覆盖值。
[0078] 为了允许GPU确定用于重新再现该文本的复合颜色值,在块404中,图形引擎使图像处理单元(GPU)可以利用被高速缓存的该文本的子像素覆盖值。在一些情况下,图形引擎可以响应于块402的指令从存储器取回高速缓存的覆盖值,并且将高速缓存的覆盖值存储在可被GPU访问的存储器位置中。在其它情况下,图形引擎可以将高速缓存的覆盖值预先置于GPU可以访问的存储器位置中。在高速缓存的覆盖值可以被GPU利用的情况下,图形引擎可以在某些情况下确保高速缓存的覆盖值仍可以被GPU利用。当该文本的覆盖值已经可以被利用之后,在块406中,图形引擎以类似的方式使将要与该文本重叠显示的该界面的一个或多个其它显示元素的信息可以被GPU利用。所述一个或多个其它显示元素可以包括将要与该文本一起显示并且在显示器的某些位置中与该文本重叠的背景图形。所述其它显示元素的信息可以包括用于显示其它显示元素的显示器的像素或子像素的颜色值。
[0079] 如上文讨论的,当两个以上的显示元素在图形界面中重叠显示时,基于显示元素的颜色计算显示器的每个像素的颜色值,以产生重叠效果。计算装置的GPU被配置为快速进行与再现图形相关的各种操作。在这些操作当中,基于显示元素的颜色确定像素的复合颜色。
[0080] GPU典型地被配置为对四值数据结构,如上文讨论的BGRA数据结构,执行这种操作。这种数据结构具有三个子像素中每一个子像素的颜色值和作为整体的像素的覆盖值。然而,GPU不是传统上那样配置为处理多个子像素中每一个子像素的覆盖值,并且不适于在四值结构的颜色信道(即,BGR信道)存储子像素覆盖值的情况下处理BGRA数据结构。GPU改为如常规被配置为使用存储在这些信道中的颜色值。然而,在一些实施例中,在块404中取回的子像素覆盖值可以由GPU处理,作为基于文本的颜色信息和背景图形的颜色信息确定子像素的复合颜色值的一部分。因此,在块408中,GPU可被配置为处理将子像素覆盖信息存储在至少三个信道中的四值数据结构。可以用任何适当的方式执行块408的配置。在一些情况下,块408的配置可以包括向GPU提供使用存储在四值数据结构中的作为子像素覆盖值的数据来执行的指令。GPU可以用任何适当的方式使用来自该结构的子像素覆盖值,包括通过将文本的子像素覆盖值与颜色信息相组合。
[0081] 在块408中配置GPU之后,在块410中,GPU可以执行配置GPU的指令。具体来说,在块410中,GPU确定将要显示文本和背景图形重叠的显示器的子像素的复合颜色值。GPU可以针对每个子像素组合文本的覆盖值与颜色值和背景图形的颜色值,以产生子像素的复合颜色值。在一些实施例中,GPU可以在文本的颜色值和图形的颜色值之间进行线性插值。为了进行该线性插值,GPU可以将文本的颜色值与图形的颜色值相加,以确定复合颜色值,文本的子像素覆盖值被用于对该相加加权。例如,在与背景图形的颜色值相加之前,像素的每个颜色信道的子像素覆盖值可以乘以该文本的像素和对应颜色信道的颜色值。附加地或者可选地,在与文本颜色值相加之前,子像素覆盖值的补数可以乘以背景颜色值。更具体来说,在一些实施例中,可以通过将文本颜色值(C)乘以子像素覆盖值(α),将背景颜色值(B)乘以子像素覆盖值的补数(1-α),并且将这些乘积相加在一起(C×α+(1-α)×B),来确定子像素的复合颜色值。
[0082] 如上文讨论的,被高速缓存并且在块404中从高速缓存器中取回的子像素覆盖值可以已经被处理,从而允许用这种方式进行文本颜色值和背景颜色值的线性组合。子像素覆盖值可以已经被处理以限制或消除该线性组合之后对复合覆盖值的进一步处理。例如,可以已经处理子像素覆盖值以不必在该线性插值之后进行伽马修正处理。此外,在通过线性插值确定每个子像素的复合颜色值之后,可以在显示文本和背景图形时使用这些复合颜色值。例如,可以直接使用这些复合颜色值以控制显示器或者在进一步的操作中组合该复合颜色值与有关其它显示元素的颜色信息以产生进一步的复合颜色值。
[0083] 因此,在计算出将被用于显示文本和背景图形的显示器的每个子像素的复合颜色值之后,在块412中,该复合颜色值可被用于将该内容显示在显示器中。在该内容被显示之后,处理400结束。
[0084] 在处理400之后,用户可以再次与该界面交互,并且可以在该界面中使文本动画化。当文本被再次动画化时,可以重复处理400,以基于高速缓存的该文本的子像素覆盖值确定显示器的每个子像素的新的复合值。
[0085] 通过高速缓存子像素覆盖值,与重叠的图形一起再现文本可以被更高效地进行并且可以更快速地操作。同样还可以更高效地进行用于执行该再现的硬件操作和再现命令。例如,在一些实施例中,可以进行单个API调用以组合高速缓存的子像素覆盖值与底层的图形。例如,可以进行单个API调用以融合子像素覆盖值与目的地表面,其中事先已经使用有关背景图形的颜色信息定义了该目的地表面。此外,在图形处理单元被配置为识别存储在四信道数据结构中的子像素覆盖值之后,可以由GPU在显示器的子像素上通过单个传递(single pass),而不是通过在每个子像素上的重复操作,来进行由API调用触发的融合。
[0086] 如上文结合图3讨论的,当使用子像素抗锯齿处理确定了文本的初始子像素覆盖值时,可以用某种方式处理这些初始覆盖值,以产生处理后的覆盖值。该处理可以包括与用户喜好相关的处理、与消除或减少稍后进行的伽马修正处理的需要相关的处理或者任何其它处理。实施例在这方面不受限制。
[0087] 图5至图6示出可用于处理在高速缓存子像素覆盖值之前使用子像素抗锯齿技术确定的初始覆盖值的两个示例性处理。
[0088] 在图5的处理500开始之前,图形引擎接收到将被显示的文本的内容和该文本的字体颜色,并且计算该文本的子像素覆盖值。通过处理500,可以修正这些覆盖值。
[0089] 处理500在块502开始,在块502中,图形引擎基于与抗锯齿技术有关的用户喜好调节初始子像素覆盖值。如上文讨论的,抗锯齿技术被用于使文本更适于人类用户观看。不同的用户可能具有与文本有关的不同舒适水平,因此一些计算装置可以允许用户指定抗锯齿应该被感知为子像素抗锯齿而不是灰度抗锯齿的程度。例如,当以某种方式设置用户喜好值(例如,设置为零值)时,图形引擎可以通过将像素的所有子像素覆盖值保持相同来进行灰度抗锯齿处理而不是子像素抗锯齿处理。这种用户喜好和设置它们的方式在本领域中是已知的,并且实施例可以实现任何适当的技术(包括已知的技术)来应用这样的喜好。
[0090] 在块502中,可以基于用户喜好设置来调节最初确定的子像素覆盖值。可以用任何适当的方式执行块502的调节,包括使用已知的技术。MICROSOFT®CLEARTYPE®文本再现软件包括用于基于用户喜好调节覆盖值的已知技术,其可被用在一些实施例中。因此,在此不需要详细讨论调节覆盖值。简言之,在块502中,图形引擎可以基于用户喜好来权衡为每个子像素设置的覆盖值与为像素的相邻子像素设置的覆盖值。例如,在包括以红、绿、蓝的顺序排列的三个子像素的显示器中(如图1A的例子中),可以将红和绿子像素的覆盖值相互权衡,并且可以将绿和蓝子像素的覆盖值相互权衡。图形引擎可以使用线性插值进行该权衡。例如,可以通过将用户喜好值(β)乘以初始红色子像素覆盖值(αr),将用户喜好值的补数(1-β)乘以初始绿色子像素覆盖值(αg),并且将这些乘积相加,来调节红色子像素覆盖值,从而执行等式(1):
[0091] αr’=αr×β+αg×(1-β)          (1)
[0092] 可以通过应用等式(2)对蓝色子像素覆盖值执行类似的计算。
[0093] αb’=αb×β+αg×(1-β)          (2)
[0094] 在基于用户喜好调节初始覆盖值之后,图形引擎可以基于文本颜色的亮度进一步调节覆盖值,从而确保文本以好的对比度显示并且因此可视。作为第一步,在块504中,图形引擎计算作为输入从请求显示文本的执行进程接收到的字体颜色的亮度。通过加权并将三个加性颜色分量红、绿、蓝的字体颜色的颜色值相加获得亮度值L。具体来说,可以通过应用等式(3)设置亮度(L):
[0095] L=0.30×R+.59×G+.11×B       (3)
[0096] 其中R、G和B是字体颜色的颜色值。
[0097] 在块506中,图形引擎可以识别基于亮度进行的对比度调节,从而确保文本相对于背景的良好对比度。这可以用任何适当的方式来执行,包括已知的技术,如MICROSOFT®CLEARTYPE®文本再现软件采用的技术。在一些实施例中,计算装置可以具有基本对比度值,图形引擎可以基于文本的亮度调节该基本对比度值。该基本对比度值可以基于用户喜好来设置,或者可以是固定的,或者可以用任何其它方式来设置,因为实施例在这方面不受限制。基本对比度值的调节量(k)可以取决于在块504中计算出的亮度值。例如,在亮度值被计算为小于或等于0.5的情况下,可以将调节变量(c)设置为1,从而不调节基本对比度值。在亮度值被计算为大于0.5并且小于0.75的情况下,可以基于亮度值(L)设置该调节值,例如通过应用等式(4):
[0098] c=4×(.75-L)            (4)
[0099] 在亮度值被计算为大于或等于0.75的情况下,可以将调节值设置为0,从而禁止基于对比度调节覆盖值。调节值(c)被设置之后,可以通过应用等式(5)将基本对比度值乘以调节值来调节基本对比度值:
[0100] k’=k×c               (5)
[0101] 在块508中,图形引擎可以再次基于在块506中确定的对比度值(k’)修正在块502中修正的子像素覆盖值。具体来说,可以通过应用等式(6)基于对比度值(k’)修正每个修正后的子像素覆盖值(α’)以产生进一步修正的子像素覆盖值(α’’):
[0102]                (6)
[0103] 在使用等式(6)修正了该文本的每个子像素覆盖值之后,处理500结束。
[0104] 处理600示出可用来处理初始覆盖值的另一个示例性处理。在一些实施例中,处理600可以与处理500一起使用,并且可以在处理500之后由图形引擎进行,尽管实施例在这方面不受限制。
[0105] 在图6的处理600开始之前,图形引擎接收将被显示的文本的内容和该文本的字体颜色,并且计算该文本的子像素覆盖值。通过处理600,这些覆盖值可被修正。
[0106] 处理600在块602开始,在块602中,图形引擎识别与将被用于显示该文本的显示器相关联的伽马值(γ)。显示器的伽马值是用已知方式获得的值,其可以由显示器的制造商设置,并且可以被用户调节。在块602中,图形引擎可以用任何适当的方式识别伽马值,包括通过从该计算装置的数据仓库(如与该显示器的驱动器相关联的数据仓库)中取回该伽马值。
[0107] 在块604中,图形引擎可以使用伽马值(γ)来确定每个子像素覆盖值的至少一个阿尔法修正值以在修正子像素覆盖值时使用。该阿尔法修正值可以是修正子像素覆盖值从而模拟伽马修正处理效果的任何值。当以模拟伽马修正处理效果的方式调节子像素覆盖值时,使用该子像素覆盖值的文本的颜色信息可以与背景图形的颜色信息线性组合,而不需要伽马修正处理。结果,可以从再现文本的处理中去除伽马修正处理,并且可以加速再现处理。
[0108] 修正子像素覆盖值从而模拟伽马修正处理效果的处理是已知的,并且可以在块604和606中使用任意这些处理。用于确定阿尔法修正值的一个这种处理被称为阿尔法修正处理,并且在2002年12月3日提交的,标题为“Alpha correction to compensate for lack of gamma correction”的6933947号美国专利(’947专利)中进行了详细描述。’947专利的全部内容通过引用包含在本文中,并且至少用于讨论确定阿尔法修正值。简言之,在’947专利中描述的阿尔法修正处理产生通过伽马值索引的阿尔法修正值表。这些阿尔法修正值是基于伽马修正处理对从字体和背景颜色的组合产生的复合颜色的影响的观测、针对伽马值范围中的每个以及字体和背景颜色范围中的每个来确定。通过对伽马修正的影响的重复观测,可以识别每个伽马值的伽马修正对字体颜色的影响。例如,针对每个伽马值,可以对从重复观察确定的每个影响值进行约束优化。根据该约束优化,可以识别每个伽马值的阿尔法修正值,并且将其存储在伽马索引表中。因此,在块604中,可以基于在块602中识别出的伽马值查询伽马索引表,并且可以取回与该伽马值相对应的阿尔法修正值。
[0109] 在块606中,可以将阿尔法修正值与子像素覆盖值组合以产生修正后的子像素覆盖值。’947专利描述了通过重复观察识别每个伽马值的四个阿尔法修正值,但是在使用中可以确定任意适当数目的阿尔法修正值。’947专利描述了基于四个阿尔法修正值并且基于字体颜色修正子像素覆盖值。具体来说,’947专利描述了首先使用上述亮度等式(3)确定字体颜色的亮度值(F)。然后可以使用伽马值(γ)修正字体颜色的亮度值,以使用等式(7)产生伽马修正后的字体亮度(f):
[0110] f=F(1/γ)               (7)
[0111] 然后可以使用伽马修正后的字体亮度和四个阿尔法修正值(c1、c2、c3和c4)来修正每个子像素覆盖值(α),以使用等式(8)产生修正后的覆盖值(α修正):
[0112] α修正=α+α×(1-α)×(c1×α+c2×α+c3×f+c4)      (8)
[0113] 在一些实施例中,代替在块604和606中图形引擎针对每个子像素覆盖值进行等式(7)和(8)的每一个,图形引擎可以从可以访问阿尔法修正值的伽马索引表的另一个图形设施取回修正后的子像素覆盖值。在这种实施例中,图形引擎可向该其它图形设施提供子像素覆盖值、该显示器的伽马值以及该子像素覆盖值所对应的子像素的颜色值。然后该其它图形设施可以通过检查该伽马索引表并且进行等式(7)和(8)将修正后的子像素覆盖值返回给图形引擎。
[0114] 与如何修正覆盖值无关,在块606中图形引擎通过阿尔法修正值调节了每个子像素覆盖值之后,处理600结束。
[0115] 图5和图6的处理500和600可被用于处理初始覆盖值,从而产生处理后的覆盖值。如上文结合图3讨论的,图形引擎处理覆盖值之后,子像素覆盖值可被例如以四信道数据结构来高速缓存。因此,在处理500、600之一或二者之后,处理后的覆盖值可以以数据结构设置并且被置于高速缓存器中。
[0116] 同样如上文结合图3讨论的,实施例不局限于使用任何具体数据结构或者数据格式来高速缓存子像素覆盖值。相反,实施例可以以任何适当的数据结构设置子像素覆盖值。在一些实施例中,文本的颜色值可以额外地高速缓存在分开的数据结构中。尽管可以使用任何结构,但有些结构可能是有利的,并且可以在一些实施例中使用,如上文描述的GPU固有适于处理的四值结构。
[0117] 在一些实施例中,如上文讨论的,子像素覆盖值可以设置在多个四值数据结构中,并且这多个结构可以一起设置在容器结构(如纹理集)中。在使用多个颜色(如一个颜色用于文本的第一部分,另一个颜色用于文本的第二部分)在显示器上显示文本的一些实施例中可以使用容器结构。通过以上讨论应该意识到,可以至少部分基于该文本将要使用的字体颜色来设置子像素覆盖值。因此,在使用不同字体颜色的情况下,可导致不同的覆盖值。在一些实施例中,这些不同的覆盖值可以一起存储在一个映射中。然而,在其它实施例中,可以产生不同的映射,然后可以将这些不同映射一起设置在纹理集(texture atlas)中。
[0118] 图7示出为了可以将多个映射一起设置在纹理集中而执行的一个示例性处理。处理700从块702开始,在块702中,图形引擎确定将被用于显示文本的每个颜色的处理后的子像素覆盖值。可以用任何适当的方式(包括根据前文描述的技术)确定处理后的子像素覆盖值。
[0119] 在块704中,图形引擎针对每个指定的颜色产生映射,该映射包括将被用于显示该颜色的文本的子像素的覆盖值。因此,每个映射的内容将对应于显示器的子像素和像素,该显示器的子像素和像素与使用和该映射相关联的颜色显示的该文本的部分相对应。每个映射可以设置在任何适当的数据结构(包括BGRA数据结构)中。
[0120] 然后在块706中,图形引擎将来自块704的多个映射一起设置在容器结构中,在一些实施例中其可以是纹理集。数据结构被一起设置之后,可以同任何适当的方式高速缓存该容器结构。该容器结构被高速缓存之后,处理700结束。
[0121] 根据本文中描述的原理操作的技术可以用任何适当的方式来实现。在上文的讨论中包括一系列的流程图,这些流程图示出了用于计算并高速缓存子像素覆盖值并且使用高速缓存的子像素覆盖值再现用于在显示器中显示的文本的各种处理的步骤和动作。以上流程图中的处理块和判断块代表可以包括在用于执行这些不同处理的算法中的步骤和动作。从这些处理得出的算法可以实现为整合并指导一个或多个单目的或多目的处理器的操作的软件,可以实现为诸如数字信号处理(DSP)电路或者专用集成电路(ASIC)等功能等效电路,或者可以用任何其它适当的方式来实现。应当理解,本文中包括的流程图不描述任何具体电路或者任何具体编程语言或者任何类型的编程语言的语法或操作。实际上,这些流程图示出了功能信息,本领域的技术人员可以使用该功能信息来制作电路或者实现计算机软件算法,以进行用于实施本文中描述的技术类型的具体设备的处理。还应当理解,除非本文另外指出,否则每个流程图中描述的步骤和/或动作的具体顺序仅是为了说明可以实现的算法,并且在本文中描述的原则的实施方式和实施例中可以改变这些顺序。
[0122] 因此,在一些实施例中,本文中描述的技术可以体现为作为软件实现的计算机可执行指令,所述软件包括应用软件、系统软件、固件中间件、嵌入的代码或者任何其它适当类型的软件。该计算机可执行指令可以用众多适当的编程语言和/或编程或脚本工具中的任何一个来编写,并且还可以汇编为在框架机或虚拟机上执行的可执行机器语言代码或中间代码。
[0123] 当本文中描述的技术体现为计算机可执行指令时,这些计算机可执行指令可以用任何适当方式来实现,包括众多的功能设施,每个功能设施提供一个或多个操作以完成根据这些技术的算法操作的执行。然而,举例来说,“功能设施”是计算机系统的结构组件,当与一个或多个计算机整合并由该一个或多个计算机执行时,其使该一个或多个计算机执行特定的操作任务。功能设施可以是一部分软件元素或者是整个软件元素。例如,功能设施可以作为进程的功能或者作为离散的进程或者作为任何其它适当的处理单元来实现。如果本文中描述的技术作为多个功能设施来实现,那么每个功能设施可以以其自己的方式实现;不需要所有设施都以相同的方式实现。另外,这些功能设施可以适当地并行和/或串行地执行,并且可以使用消息传送协议或者以任何其它适当的方式、利用执行这些功能设施的计算机上的共享存储器在相互之间传送信息。
[0124] 一般来说,功能设施包括执行特定任务或者实现特定的抽象数据类型的例程、程序、目标码、组件、数据结构等。典型地,功能设施的功能可以根据需要结合或分布在它们运行的系统中。在一些实施例中,执行本文中的技术的一个或多个功能设施可以一起形成完整的软件包。在可选实施例中,这些功能设施可适合于与其它不相关的功能设施和/或进程交互,以实现软件程序应用或者软件系统。例如,在一些实施例中,实现这些技术的功能设施可以包含在软件应用中作为软件应用的一部分图形功能,并且/或者包含在图形再现系统中,例如可从华盛顿州雷蒙德市的微软公司获得的Direct2dTM或DIRECTX®系统。在其它实施方式中,该功能设施可适合于以形成操作系统的方式与其它功能设施交互,所述操作系统包括可从华盛顿州雷蒙德市的微软公司获得的WINDOWS®操作系统。换句话说,在一些实施例中,该功能设施可以可选择地作为操作系统的一部分或者在操作系统之外实现。
[0125] 本文中已经描述了用于执行一个或多个任务的一些示例性功能设施,包括上文描述的图形引擎。然而,应当理解,所描述的功能设施和任务划分仅是为了说明可以实现本文描述的示例性技术的功能设施的类型,并且实施例不局限于以任何具体数目、划分或类型的功能设施来实现。在一些实施例中,所有功能可以用单个功能设施来实现。还应当理解,在一些实施例中,本文描述的一些功能设施可以与其它功能设施一起或者与其它功能设施分开(即,作为单个单元或者作为分开的单元)来实现,或者可以不实现这些功能设施中的一些。
[0126] 在一些实施例中,(当作为一个或多个功能设施或者以任何其它方式实现时)实现本文中描述的技术的计算机可执行指令可以被编码在一个或多个计算机可读介质上,以向该介质提供功能。计算机可读介质包括磁介质(如硬盘驱动)、光学介质(如压缩盘(CD)或者数字多用途盘(DVD))、永久性或非永久性固态存储器(例如,闪速存储器、磁RAM等)或者任何其它适当的存储介质。这种计算机可读介质可以用任何适当的方式来实现,包括作为下文描述的图8的计算机可读存储介质806(即,作为计算装置800的一部分)或者作为单独的分开的存储介质。当在本文中使用时,“计算机可读介质”(也称为“计算机可读存储介质”)是指有形的存储介质。有形的存储介质是非暂时的并且具有至少一个物理的结构组件。在本文中使用的“计算机可读介质”中,至少一个物理的结构组件具有至少一个物理属性,在产生具有嵌入信息的该介质的过程中、在其上记录信息的过程中、或者用信息编码该介质的任何其它过程中,可以通过一些方式改变该物理属性。例如,在记录过程中,计算机可读介质的一部分物理结构的磁化状态可以改变。
[0127] 此外,上文描述的一些技术包括以某些方式存储这些技术使用的信息(例如,数据和/或指令)的动作。在这些技术的一些实施方式中(例如,作为计算机可执行指令实现这些技术的实施方式),可以将该信息编码在计算机可读存储介质上。在本文中将特定的结构描述为用于存储该信息的有利格式的情况下,这些结构可被用于当将该信息编码在存储介质上时告知该信息的物理组织。这些有利的结构随后可以通过影响与该信息交互的一个或多个处理器的操作来向存储介质提供功能;例如,通过提高由处理器进行的计算机操作的效率。
[0128] 在所述技术可以体现为计算机可执行指令的一些但不是全部实施方式中,这些指令可以在任何适当的计算机系统中运行的一个或多个适当的计算装置上执行,所述计算机系统包括图2的示例性计算机系统,或者一个或多个计算装置(或者一个或多个计算装置的一个或多个处理器)可以被编程为执行该计算机可执行指令。当该指令以计算装置/处理器可访问的方式存储时,例如存储在本地存储器中(例如,片上高速缓存器或者指令寄存器、可通过总线访问的计算机可读存储介质、可通过一个或多个网络访问并且可被该装置/处理器访问的计算机可读存储介质等),该计算装置或处理器可以被编程以执行该指令。包括这些计算机可执行指令的功能设施可以与计算装置的操作整合并且指导该计算装置的操作,该计算装置包括单个多用途的可编程数字计算机、共享处理能并且共同执行本文描述的技术的(共处一地或者地理上分散的)两个或多个多用途计算机的协同系统、专用于执行本文中描述的技术的单个计算机或者(共处一地或者地理上分散的)计算机协同系统、 用于执行本文中描述的技术的一个或多个现场可编程门阵列(FPGA)或者任何其它适当的装置。
[0129] 图8示出计算装置800形式的计算装置的一个示例性实施方式,计算装置800可以用在实现本文中描述的技术的系统中,虽然其它也是可能的。应当理解,图8不打算描述根据本文描述的原理操作的计算装置的必要组件,也不打算进行全面描述。
[0130] 计算装置800可以包括至少一个处理器802、网络适配器804和计算机可读存储介质806。计算装置800可以例如是桌上或膝上个人计算机、个人数字助理(PDA)、智能移动电话、平板计算机、服务器或者任何其它适当的计算装置。处理器802可以包括任何适当的处理器,包括中央处理单元(CPU)和/或图形处理单元(GPU)。网络适配器804可以是使计算装置800能够在任何适当的计算网络上与任何其它适当的计算装置有线和/或无线通信的任何适当的硬件和/或软件。该计算网络可以包括无线接入点、交换机、路由器、网关和/或其它网络设备以及用于在两个以上计算机之间交换数据的任何适当的一个或多个有线和/或无线通信介质,包括因特网。计算机可读存储介质806可以是适于存储由处理器802处理的数据和/或由处理器802执行的指令的一个或多个介质。处理器802能处理数据并且能够执行指令。该数据和指令可以存储在计算机可读存储介质806上,并且例如可以在计算装置800的各组件之间传送。
[0131] 存储在计算机可读存储介质806上的数据和指令可以包括用于实现根据本文中描述的原则操作的技术的计算机可执行指令。在图8的例子中,计算机可读存储介质806存储用于实现上文描述的各种设施并且存储各种信息的计算机可执行指令。计算机可读存储介质806可以存储图形引擎808以在与计算装置800相关联的显示器中再现并显示文本。图形引擎800可以包括覆盖设施810,其可以作为图形引擎800的用于确定、处理和高速缓存子像素覆盖值的部分来实现。计算机可读存储介质806还可以包括用于高速缓存在该显示器上显示或将要显示的文本的覆盖值的数据仓库812。计算机可读介质806还可以存储阿尔法修正值表814,其可以由图形引擎808和/或覆盖设施810使用以确定并处理子像素覆盖值。
[0132] 尽管在图8中没有示出,计算装置可另外具有一个或多个组件和外围设备,包括输入和输出装置。这些装置除了别的以外还可以用于呈现用户界面。可被用于提供用户界面的输出装置的例子包括用于视觉呈现输出的打印机或显示器以及用于听觉呈现输出的扬声器或其它发声装置。可被用于用户界面的输入装置的例子包括键盘和指示装置,如鼠标、触摸垫和数字化面板。作为另一个例子,计算装置可以通过语音识别或者其它听得见的格式接收输入信息。
[0133] 已经描述了以电路和/或计算机可执行指令实现所述技术的实施例。应当理解,一些实施例可以是方法的形式,已经提供了这种形式的至少一个例子。可以用任何适当的方式排序作为该方法的一部分进行的动作。因此,尽管在说明性的实施例中被示出为顺序的动作,但是实施例可被构造为以不同于所示出的顺序进行所述动作,其可以包括同时进行某些动作。
[0134] 上文描述的实施例的各方面可以单独使用,可以结合使用,或者以上文描述的实施例中没有具体讨论的各种配置使用,因此其应用不局限于上文中描述的或者附图中示出的组件的细节和配置。例如,在一个实施例中描述的各方面可以用任何方式与其它实施例中描述的方面结合。
[0135] 在权利要求中用于修饰权利要求要素的诸如“第一”、“第二”、“第三”等序数词的使用本身不意味着一个权利要求要素相对于另一个权利要求要素的任何优先级、优越性或者顺序,也不意味着方法的动作进行的时间顺序,而仅是用作标记,以区分具有某一名称的一个权利要求要素与具有相同名称的另一权利要求要素(要不是作为序数词使用),从而区分权利要求要素。
[0136] 此外,在文本中使用的短语和术语是出于说明的目的,并且不应当认为是限制性的。在本文中“包括”、“包含”、“具有”、“含有”、“涉及”及其变体的使用意味着包括随后列出的项目及其等同物以及另外的项目。
[0137] 词语“示例性的”在本文中被用于表示作为实例、例子或例示。因此在本文中作为例子描述的任何实施例、实施方式、处理、特征等应当被理解为示例性的例子,并且除非另外指出,否则不应当被理解为优选的或有利的例子。
[0138] 因此,尽管已经描述了至少一个实施例的几个方面,但是应当理解,对本领域的技术人员来说,很容易想到各种变更、修改和改进。这些变更、修改和改进有意作为本公开的一部分,并且有意落入在本文所描述的原则的精神和范围内。因此,以上描述和附图仅是作为例子。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈