CN105474267A - 硬件字形缓存 - Google Patents
硬件字形缓存 Download PDFInfo
- Publication number
- CN105474267A CN105474267A CN201380076185.8A CN201380076185A CN105474267A CN 105474267 A CN105474267 A CN 105474267A CN 201380076185 A CN201380076185 A CN 201380076185A CN 105474267 A CN105474267 A CN 105474267A
- Authority
- CN
- China
- Prior art keywords
- font
- pixel
- buffer memory
- data
- sub
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
提供了用于执行促进在硬件中缓存字形数据的方法、系统和计算机存储介质。在实施例中,方法包括引用第一字形和第二字形。此后,做出关于是否将第一字形和第二字形合并以用于一起作为经合并的字形集再现的确定。如果确定合并第一字形和第二字形,再现包括第一字形和第二字形的经合并的字形集。另一方面,如果确定分离地再现第一字形和第二字形,使用处于硬件字形缓存中的与第一字形相关联的字形数据和处于硬件字形缓存中的与第二字形相关联的字形数据来分离地再现第一字形和第二字形。
Description
背景技术
传统上,高质量文本再现解决方案在中央处理单元(CPU)处理的软件存储器中缓存字形数据。在这样的实现中,CPU执行许多处理以再现每一个字形串。例如,CPU可以标识字体缓存中的字形数据,计算字形定位,清除地图集中的用于字形串的空间,将每一个字形位图合并到地图集中,并且向图形处理单元(GPU)传送字形位图。在合并步骤期间,字形可以以子像素偏移量定位以允许字形之间的精确间隔。在每次再现字形时招致这样的过程,即使是重复地再现相同的字形。另外,向硬件存储器传送字形数据可以导致延迟,特别是在较高的每英寸点数(DPI)处,其中字形具有较多的像素。
发明内容
提供本发明内容来以简化的形式引入以下在具体实施方式中进一步描述的概念的选择。本发明内容不意图标识所要求保护的主题的关键特征或本质特征,也不意图孤立地用于帮助确定所要求保护的主题的范围。
本发明的实施例一般涉及促进在硬件中缓存字形。在这方面,经缓存的字形可以由图形处理单元(GPU)处理从而使得能够实现更高效的字形再现。本发明的实施例生成和利用与字形关联的覆盖索引来单独再现字形。覆盖索引允许经缓存的字形在以不同的子像素偏移量再现字形时被再用。
附图说明
以下参照附图详细描述本发明的实施例,其中:
图1是适合用于实现本发明的实施例的示例性计算环境的框图;
图2是适合于在实现本发明的实施例中使用的示例性计算系统架构的框图;
图3是示出依照本发明的实施例的促进在硬件中缓存字形的方法的流程图;
图4是示出依照本发明的实施例的在硬件中缓存字形的第一方法的流程图;
图5是示出依照本发明的实施例的在硬件中缓存字形的第二方法的流程图;以及
图6是示出依照本发明的实施例的使用字形硬件缓存独立再现字形的方法的流程图。
具体实施方式
在本文中用细节来描述本发明的实施例的主题以满足法定要求。然而,该描述本身并不意图限制本专利的范围。相反,发明人设想所要求保护的主题还可能结合其他当前或未来技术以其它方式体现,以包括不同的步骤或类似于本文档中所描述的那些的步骤组合。而且,尽管术语“步骤”和/或“块”可以在本文中用于指示所采用的方法的不同元素,但是除非而且除了在明确描述各个步骤的顺序时之外,该术语不应被解释为意味着本文所公开的各个步骤之中或之间的任何特定顺序。
本发明的实施例一般地涉及促进在硬件中缓存字形。在这方面,字形可以缓存在硬件字形缓存中并且由计算机处理单元(CPU)和/或图形处理单元(GPU)处理从而使得能够实现更高效的字形再现(例如减少每个像素的处理)。本发明的实施例生成和利用与字形相关联的覆盖索引以单独再现字形。覆盖索引允许经缓存的字形在以不同的子像素偏移量再现字形时被再用。以此方式,当再次再现经缓存的字形时,可以使用已经在缓存中的字形数据而不是再次添加这样的数据,从而消除针对已经存在于硬件缓存中的字形的每个像素CPU成本。尽管在本文中一般地描述为至少部分地使用GPU来再现硬件缓存中缓存的字形,但是其它实施例意图包括在本文中,诸如例如,使用CPU和/或GPU所使用的系统存储器在CPU上再现字形等。
在一方面中,一个或多个计算机存储介质具有体现在其上的计算机可执行指令,其用于执行促进在硬件中缓存字形数据的方法,该方法包括:引用第一字形和第二字形;确定是否将第一字形和第二字形合并以用于一起作为经合并的字形集再现,其中当确定合并第一字形和第二字形时,包括第一字形和第二字形的经合并的字形集被再现,并且当确定分离地再现第一字形和第二字形时,使用处于硬件字形缓存中的与第一字形相关联的字形数据和处于硬件字形缓存中的与第二字形相关联的字形数据来分离地再现第一字形和第二字形。
在另一方面,提供了一种促进缓存字形数据的方法。该方法包括依照与要再现的字形相关联的字形数据不在字形缓存中的确定,获取针对字形的每像素一位位图。方法还包括确定针对与字形相关联的每一个像素的覆盖索引,其中每一个覆盖索引包括用于标识针对一系列子像素偏移量中的任何一个的对应像素覆盖的值。方法还包括在字形缓存中缓存与字形相关联的覆盖索引。
在另一方面中,提供一种实现在图形处理单元(GPU)上的方法。该方法包括识别与硬件字形缓存中的字形相关联的期望字形实例。方法还包括参照与期望字形实例相关联的覆盖索引集,覆盖索引集缓存在硬件字形缓存中。方法还包括使用覆盖索引集和为了再现字形所期望的子像素偏移量来经由计算设备确定针对与字形相关联的像素的覆盖值。
已经简要描述了本发明的实施例的概述,下面描述适合用于在实现本发明的实施例中使用的示例性操作环境。
一般地参照附图,并且首先具体参照图1,示出了用于实现本发明的实施例的示例性操作环境,并且将其一般地指定为计算设备100。计算设备100只是合适的计算环境的一个示例,并且不意图暗示关于本发明的使用范围或功能性的任何限制。也不应将计算设备100解释为具有涉及所图示的任何一个组件或其组合的任何依赖性或要求。
本发明可以在由计算机或诸如个人数据助理或其他手持式设备之类的其他机器执行的计算机代码或机器可使用指令(包括诸如程序组件之类的计算机可执行指令)的一般上下文中描述。一般而言,包括例程、程序、对象、组件、数据结构等的程序组件指的是执行特定任务或实现特定抽象数据类型的代码。本发明的实施例可以在各种系统配置中实践,这些系统配置包括手持式设备、消费电子产品、通用计算机、专用计算设备等等。本发明的实施例也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
继续参照图1,计算设备100包括直接或间接耦合以下设备的总线110:存储器112、一个或多个处理器114、一个或多个呈现组件116、输入/输出(I/O)端口118、I/O组件120、说明性电源122和图形处理单元(GPU)124。总线110表示可以是一条或多条总线(诸如地址总线、数据总线或其组合)的事物。尽管为了清楚起见利用线条示出了图1的各种块,但是实际上,描绘各种组件并不是那样清楚,并且比喻性地来说,线条更精确地将是灰色的和模糊的。例如,人们可以将诸如显示设备之类的呈现组件认为是I/O组件120。而且,CPU和GPU具有存储器(例如独立存储器或共享存储器)。图1的图仅仅说明可以结合本发明的一个或多个实施例使用的示例性计算设备。诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”等之类的分类之间没有区别,因为它们全部都被认为是在图1的范围之内并且被称为“计算机”或“计算设备”。
计算设备100典型地包括各种计算机存储介质。计算机可读介质可以是由计算设备100可访问并且包括易失性和非易失性介质、可移除和不可移除介质二者的任何可用介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括在用于存储诸如计算机可读指令、数据结构、程序模块或其它数据之类的信息的任何方法或技术中实现的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储装置、磁带盒、磁带、磁盘存储装置或其它磁存储设备,或可以用于存储所期望的信息并且可以由计算设备100访问的任何其它介质。另一方面,通信介质体现计算机可读指令、数据结构、程序模块或诸如载波或其它输运机制之类的经调制数据信号中的其它数据并且包括任何信息递送介质。术语“经调制数据信号”意指使其特性中的一个或多个以这样的方式设置或改变以便将信息编码在信号中的信号。作为示例而非限制,通信介质包括诸如有线网络或直接连线连接之类的有线介质和诸如超声、RF、红外和其它无线介质之类的无线介质。如本文所限定的,计算机存储介质不包括通信介质。以上中的任一个的组合也应当包括在计算机可读介质的范围内。
存储器112包括易失性和/或非易失性存储器形式的计算机存储介质。存储器112可以是可移除的、不可移除的或其组合。示例性存储器包括固态存储器、硬盘驱动器、光盘驱动器等。尽管将存储器112图示为单个组件,但是如可以领会到的,可以采用CPU所使用的系统存储器和GPU所使用的分离视频存储器。在其它实现中,(多个)存储器单元可以由CPU和GPU二者使用。
计算设备100包括从诸如总线110、存储器112或I/O组件120之类的各种实体读取数据的一个或多个处理器114。如可以领会的,一个或多个处理器114可以包括中央处理单元(CPU)。(多个)呈现组件116向用户或其他设备呈现数据指示。示例性呈现组件116包括显示设备、扬声器、打印组件、振动组件等。I/O端口118允许计算设备100在逻辑上耦合至包括I/O组件120在内的其他设备,其中的一些可以是内置的。说明性I/O组件120包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪、打印机、无线设备等等。
计算设备100的组件可以使用在字形再现中。例如,计算设备100可以用于实现处理和应用对字形的各种效果和调节的字形再现过程。字形再现过程包括所执行的一系列操作。这些过程一般被设计成允许字形的高效处理,同时利用可用硬件。
图形处理单元(GPU)124是促进图形再现的处理单元。GPU124可以用于再现图像、字形、动画和视频以供在计算设备的显示屏上显示。GPU可以例如定位在插卡上、母板上的芯片组中或与CPU相同的芯片中。在实施例中,GPU(例如在视频卡上)可以包括硬件存储器或访问硬件存储器。在一些实现中,可以采用起着系统存储器(例如由CPU使用)和视频存储器(例如由GPU使用)两个作用的(多个)存储器单元。在其它实现中,起着系统存储器(例如由CPU使用)作用的存储器单元与起着视频存储器(例如由GPU使用)作用的存储器单元分离。如可以领会到的,在一些实施例中,GPU的功能性可以由CPU仿真。
如之前所阐述的,本发明的实施例涉及用于促进在硬件中缓存字形数据的计算系统。参照图2,图示了示出适合用于与促进在硬件中缓存字形数据一起使用的示例性计算系统架构200的框图。图2中所示的计算系统架构200仅仅是一个合适计算系统的示例并且不限制本发明的使用范围或功能性。也不应当将计算系统架构200解释为具有涉及任何单个模块/组件或模块/组件的组合的任何依赖性或要求。
计算系统架构200包括计算设备202和显示器204。计算设备202可以是任何类型的计算设备,诸如例如以上参照图1描述的计算设备100。仅作为示例而非限制,计算设备202可以是个人计算机、台式计算机、膝上型计算机、手持式设备、移动手机、消费电子设备等等。
计算设备202包括字形再现服务206。字形再现服务206是针对再现字形的服务。在实施例中,字形再现服务206包括字形定位器208、经合并的字形检测器210、经合并的字形再现器212和单独字形再现器214。字形再现服务206可以与任何数目的组件相关联并且不意图限于图2中所图示的那些。另外,这样的组件和/或本文所描述的功能可以由CPU、GPU或其组合执行。
字形再现服务206或其(多个)部分可以与计算设备的操作系统相关联,使得服务可以用于执行用于计算设备的多个应用和过程的字形再现。可替换地或此外,字形再现服务206或其(多个)部分可以与运行在计算设备上的应用相关联,使得服务可以用于执行用于计算设备的该特定应用或过程的字形再现。字形再现服务206可以用于分析要再现的任何字形,诸如例如与用户查看文档、电子表格、网页等相关联地呈现在屏幕上的文本或与用户打字或以其它方式指示要输入或呈现的文本相关联地呈现在屏幕上的文本。
依照标识要再现的字形,字形定位器208被配置成标识字形定位。在这方面,字形定位器208可以确定再现目标上的每一个字形的定位。字形是指字符的特定形状、设计或表示。以此方式,字形可以是书面语言的元素的图形表示(例如以特定字样或字体)。字符或元素可以是文本、符号等。
经合并的字形检测器210被配置成检测是否应当将字形合并在一起。在这方面,经合并的字形检测器210评价字形应当单独再现还是再现为两个或更多字形的字形集。为了在硬件中高效缓存字形数据,独立或分离地再现字形是合期望的(例如没有提前合并每像素一位位图)。然而,由于分离地再现字形可以产生不同的视觉结果,因此合并检测用于确定可以分离地再现哪些字形(使用字形缓存)和应当合并哪些字形。
仅作为示例,假定表示“T”的第一字形和表示“H”的第二字形与相同的像素部分重叠。另外假定针对第一字形的像素覆盖被确定为50%覆盖所述像素的左半部,并且针对第二字形的像素覆盖也被确定为50%覆盖相同像素的右半部。如果“T”和“H”一次一个地再现,则两个部分覆盖在彼此顶部上的再现提供深灰,但不是黑色覆盖值(即100%),这可能影响可读性。
最初,经合并的字形检测器210引用或获取(多个)字形串或字形集。字形串是指一系列字形。字形串可以是全部以相同的字体、颜色、大小和/或样式的字符集。在一些实施例中,字形串可能包括与应用、文档、网页等相关联地再现的所有字形或者字形的部分。
当引用或获取要分析的字形后,经合并的字形检测器210可以确定或标识将哪些字形合并在一起作为字形集以供再现(如果有的话)。任何方式或数个方式可以用于执行这样的检测。另外,任何数目的字形可合并在一起作为字形集。例如,在一些情况中,两个字形可能合并在一起作为字形集,并且在其它情况中,三个字形可能合并在一起作为字形集。在一些情况中,默认情况可能存在使得字形从未合并。在这样的情况中,合并检测可以省略并且字形将自动单独再现。
在一个实施例中,经合并的字形检测器210可以使用边界检测来标识可以分离地再现的字形和/或应当合并在一起以供再现的字形。在这样的实现中,诸如边界框(例如矩形)之类的边界可以在字形周围定位。例如,边界框可以是毗邻字形的水平和竖直部分的矩形。当在字形周围放置或定位边界时,可以确定或检测边界是否在距离彼此的阈值距离内。如果边界落在距离彼此的阈值距离内,对应字形被视为或指定为经合并的并且再现为经合并的字形集。相比之下,如果边界不在距离彼此的阈值距离内,字形独立或分离地再现。这样的阈值距离可以是任何距离。例如,在一些实施例中,阈值距离可以是与彼此接触或交叉的边界。以此方式,当字形重叠或接触彼此时,字形合并。在另一实施例中,阈值距离可能是一个像素或一个子像素。在该情况中,如果字形在距离彼此的一个像素或一个子像素内,则字形合并以供再现。
仅作为示例,假定存在一个子像素的阈值距离,并且第一边界框可以定位或放置在字母T附近,并且第二边界框可以定位或放置在随后的字母H附近。现在假定检测到T和H以两个子像素分离开。在这方面,字母T和H可以确定或标识成分离地再现。
在可替换或附加的实施例中,经合并的字形检测器210可以使用一个或多个字体规则来确定是否合并字形以供再现。字体规则可以是指示两个或更多字形是否应当合并在一起以供再现的特定于字体的任何类型的规则。以此方式,字体设计者可以例如设置或建立字形组合应当合并和/或可以单独再现的规则。利用用于对应字体的字体规则可以使得再现代码能够使用针对字体设计的最佳再现。在一些情况中,字体可能以这样的方式设计使得字体设计者可以指示例如不需要合并字形,即使存在基于是否合并字形的再现差异。其它字体可以具有要求合并的一些字形组合和不要求合并的一些字形组合。
字体规则可以是基于任何准则。在一些实施例中,(多个)字体规则可基于所分析的特定字形。例如,在字体A中,靠近彼此的字母T和R可以标识为要求字形合并。在其他实施例中,字体规则可基于与字形相关联的一个或多个分类。字形分类可以是例如如下内容的指示:字形为大写字形还是小写字形;与字形相关联的语言(例如英语、阿拉伯语、西班牙语、德语、中文等);字形是否为数字字符、字母字符、符号等的指示;等。例如,对于特定字体B,所有英语字形可标识为落到其内不需要合并字形的类0中。对于相同的字体B,阿拉伯语字形可标识为落到类1中,并且对应的字体规则可以指示靠近彼此的两个类1字形应当合并在一起。如可以领会到的,字体规则、准则和/或字形分类可以具体到特定字体样式并且从而提供针对特定字体的更加精确的字形再现。
在一些情况中,可以在合并表或索引中指示字体规则、字体准则和/或字体分类。经合并的表或索引可由字体设计者、操作系统开发者、程序开发者等创建。经合并的字形检测器210可以访问与特定字体样式相关联的合并表以作出将字形一起再现还是彼此分离地再现的确定。这样的合并表可以存储在任何位置中,诸如例如在计算设备本地或者远离计算设备的位置处,或者在处于经合并的字形检测器210和/或字形再现服务204本地或与其远离的位置中的计算设备处。在一些情况中,如果字体不具有合并表或字体规则、字体准则和/或字体分类的其它指示,可以利用默认动作。例如,可以采用合并字形的默认情况或者在适用的字体规则不适用的情况下可能采用利用边界检测实现的默认情况。
仅作为示例而没有限制,与特定字体样式相关联的合并表可能具有两个组成部分,字体分类表和字体规则表。分类表可包括每一个字形或其指示,以及合并类的指示。如之前所描述的,合并类可以与任何字形属性相关联,诸如小写、大写、语言类型、其组合等等。在一些情况中,未明确映射到特定合并类的任何字形可被指派默认类,诸如类0。规则表可包括将每一对合并类映射到合并规则或行为(例如合并对应字形以供再现,分离地再现字形等)的二维阵列。
在实现中,为了确定合并为字形集的特定字形串中的字形,经合并的字形检测器210可按逻辑顺序从开始到结束扫描字形串。在每一次迭代中,可查找或标识下一字形的合并类。(多个)当前字形类和下一字形类然后可以与适当的合并规则结合使用以确定是否发生字形合并。
当确定字形合并或分离地再现后,可以相应地应用适当的再现过程。例如,可以向经合并的字形再现器212提供要再现的经合并的字形集或其指示以供再现,并且可以向单独字形再现器214提供要单独再现的字形或其指示以供再现。尽管经合并的字形再现器212和单独字形再现器214被图示为两个分离的组件,但是其中提供的功能性可以组合到单个组件中或者由任何数目的组件执行。
经合并的字形再现器212被配置成促进再现经合并的字形集。如之前所描述的,经合并的字形集是指合并在一起以作为单个单元再现的字形集。对于经合并的字形集(即经合并的字形),可以在合并位图内分配空间。在这方面,合并位图的不同部分可用于不同的字形。合并位图是包含经合并的字形集内的字形的光栅表示的每像素一位(bpp)位图。合并位图中的每一个像素要么是指示被字形覆盖的1要么是指示没有被字形覆盖的0。合并位图中的字形光栅化相比于最终目标上的大小可以过大从而允许抗混叠和/或子像素定位。子像素是指像素的部分。子像素定位或偏移是指经由子像素位置将字形定位在像素内或者使用子像素位置来使字形从像素的开始偏移的能力。如可以领会到的,在一些实现中,为了增加效率,可以创建诸如纹理地图集之类的大位图并且可以将其中的空间分配给各个合并位图。
对于经合并的字形集中的每一个字形,经合并的字形再现器212可以获取经光栅化的字形。经光栅化的字形是指表示字形的每像素一位(bpp)位图。如可以领会到的,经光栅化的字形可以通过光栅化过程创建。在一些实现中,这样的经光栅化的字形可能来自字体缓存。因此,这样的字形数据可能从字体缓存查找或引用。这样的字体缓存可以驻留在CPU存储器中并且与本文所描述的硬件字形缓存区分。当获取到字形的每像素一位光栅化后,例如使用按位操作(例如按位“或”操作)将经光栅化的字形再现到其在经合并的位图内的位置。字形可以使用子像素定位,例如当一个bpp光栅化相比于最终目标上的大小而言过大时。例如,假定采用过大尺度因子八。在这样的情况中,字形可以通过位移过大尺度而定位到最接近的1/8像素。
对于经合并的字形集,可以对经合并的位图进行滤波从而产生针对最终再现目标上的每一个像素的覆盖值。可以例如通过对针对每一个像素的所覆盖的过大尺度位的数目进行计数或标识并且用其除以总体可能覆盖来获得针对每一个像素的覆盖值。例如,如果过大尺度因子为4x4,每一个像素将对应于经合并的位图内的16个每像素一位。为了计算覆盖,将确定与“1”相关联的每像素一位的数目并且用其除以16以产生0与1之间的覆盖值。
经合并的字形再现器212还可以被配置成执行覆盖调节,诸如增强的对比度或alpha校正,以产生经调节的每像素覆盖。这样的经调节的覆盖值可以用作将字形混合到目标的覆盖掩模。例如,如果利用简单的源上混合(source-over-blending)再现字形并且前景颜色是不透明的,则经调节的覆盖可以用于将字形混合到目标。以此方式,如果经调节的覆盖为0,则背景颜色用于该像素。如果经调节的覆盖在0与1之间,则使用经调节的覆盖来混合前景颜色与背景颜色以在两个颜色之间进行内插。
如可以领会到的,在一些实施例中,可以缓存经合并的字形使得随后可以引用经合并的字形集以供稍后使用。在这方面,可以缓存字形集数据并且此后当字形集随后用于再现经合并的字形集时对其进行引用。在这样的情况中,当缓存所期望的经合并的字形集数据时,这样的数据可以用于再现字形集。
由经合并的字形再现器212产生或再现的字形可以例如经由与计算设备202相关联的显示器204提供以供显示。在这方面,最终的着色像素可以显示在计算机监视器上或者以其它方式呈现或提供。例如,再现结果可以存储为位图文件、打印在页面上、显示在显示屏上等。
转向单独字形再现器214,单独字形再现器214被配置成促进独立地再现字形。照此,当确定要独立地再现(多个)特定字形时(例如在经合并的字形检测器210处),可以依照本文与单独字形再现器214相关联地描述的功能性再现字形。在一些实现中,可能集中处置经合并的字形序列,如同其为单个复合字形那样,并且再现使用单独字形再现器214。在这样的情况中,序列的身份可合并组成字形的身份和这样的字形之间的间隔。
最初,单独字形再现器214可以确定与要再现的特定字形相关联的字形数据是否存在于字形缓存(例如硬件字形缓存)中。以此方式,可以访问字形缓存以标识所期望的字形数据是否在字形缓存中。如本文所使用的,字形数据可以是指描述、指示或表示字形的任何数据。在实施例中,字形数据可以是字形(或其表示)、覆盖索引、多个覆盖索引等等。
在一些实现中,为了确定与所期望的或特定字形相关联的字形数据是否在字形缓存(例如硬件字形缓存)中,字形标识符可用于标识这样的字形或与其对应的数据是否缓存在硬件存储器中。在一些情况中,可以做出关于字形数据是否与特定字形实例相关联地缓存的确定。在这方面,做出关于字形的特定实例是否存在于缓存中的确定。如以下所描述的,在一些情况中,与特定字形相关联的字形数据(诸如覆盖索引)可以变化。照此,特定字形可与不同的字形数据集相关联并且从而利用不同的字形实例来提供不同的字形数据集。字形实例可例如使用对应的字体、大小、子像素偏移量和/或字体内的字形的标识符来唯一地标识。对于经合并的字形集,字形实例的身份可包括与字形集中的每一个字形相关联的标识符。字形实例可以是指包括字体、字体样式、磅值、缩放因子、旋转、再现模式(例如包括过大尺度因子)、字形标识符、子像素定位分类(例如,对于8x1,子像素分类可以分类为0-3或4-7)中的一个或多个的关键码(key)。
仅作为示例而没有限制,与特定字形相关联的第一字形数据集(例如覆盖索引)可以由第一字形实例或版本表示,并且与相同字形相关联的第二字形数据集(例如覆盖索引)可以由第二字形实例或版本表示。不同缓存的版本或实例中的每一个可以与不同的覆盖索引相关联。以此方式,第一字形数据集可包括用于子像素偏移量定位0-3的覆盖索引,而第二字形数据集可包括用于子像素偏移量定位4-7的覆盖索引,例如在8x1文本中。现在假定字形要再现为具有子像素偏移量2,也就是说,在两个子像素之上位移。由于第一字形实例与子像素偏移量定位0-3相关联,因此可以引用缓存以标识其是否包含第一字形实例。相比之下,如果字形要再现于子像素定位7处,作出关于是否缓存第二字形实例的确定。
如所描述的,为了确定哪个具体字形实例是所期望的,可以使用以其再现字形的子像素偏移量。所意图的子像素偏移量可以基于字形布局来标识或计算。作为示例,在字形布局过程期间,字形的定位可确定为在10.4个单位处。定位的分数部分(即水平方向上的.4)可以用于确定子像素偏移量。例如,假定采用8x1文本模式,并且分数部分为.4。可以通过将.4乘以8并且四舍五入到最接近的整数(即子像素定位3)来确定子像素偏移量。照此,字形可以以子像素偏移量3再现于像素10处。由于已经标识了子像素定位3,因此可以做出关于与子像素定位0-3对应的第一字形实例是否存在于缓存中的确定。如果是这样,可以引用与第一字形实例相关联的字形数据并且将其用于再现字形,如以下更加全面地描述的那样。
在实现中,为了确定字形或字形实例是否被缓存,字形缓存可以使用诸如哈希表查找之类的过程来标识对应于给定性质集的字形实例。一旦标识,字形实例可以指定对应字形数据的位置(例如位图或位图的部分,诸如地图集纹理的部分)。仅作为示例,多级哈希表可用于选择缓存内的正确字形实例。第一级哈希可包括字体/缩放因子和旋转。第二级哈希可以是字形标识符,并且第三级哈希可以是子像素定位分类。
如果确定与期望的字形和/或字形实例相关联的字形数据在字形缓存(例如硬件字形缓存)中,单独字形再现器214可以促进再现字形。在这方面,可以标识针对与具有子像素偏移量(例如包括子像素偏移量零)的特定字形相关联的像素的覆盖值。在一些情况中,这样的处理可由GPU执行。
为了标识或确定针对与字形相关联的像素的覆盖值,引用与像素相关联的覆盖索引。例如,可以经由与所期望的字形或字形实例(例如如期望的子像素偏移量所标识的那样)相关联的缓存中的字形数据标识覆盖索引。与适当的子像素偏移量值相关联的覆盖索引可以用于确定针对像素的覆盖值。仅作为示例,表的列中的覆盖索引和表的行中的子像素偏移量的查找可以用于标识对应的覆盖值。也就是说,与子像素偏移量组合的覆盖索引使得能够标识针对特定像素的对应覆盖值。
当获取到与字形的像素相关联的覆盖值时,可以调节和/或混合覆盖以适当再现字形。例如,可调节覆盖以使文本看起来更加醒目,使得例如边缘看起来更加锐利或者补偿伽玛校正。在一些实施例中,覆盖调节可通过生成表的过程执行使得所获取的覆盖值已经被调节并且不要求另外的表查找。混合促进与前景和/或背景的混合。在这方面,文本的前景颜色(例如黑色)和背景。如果像素与75%的覆盖相关联,该像素的最终颜色可为背景颜色的25%加上前景颜色的75%。
由单独字形再现器214产生或再现的字形可以例如经由与计算设备202相关联的显示器204提供以供显示。在这方面,最终着色的像素可以显示在计算机监视器上或者以其它方式呈现或提供。例如,再现结果可以存储为位图文件、打印在页面上、显示在显示屏上等。
如果确定与所期望的字形和/或字形实例相关联的字形数据不在字形缓存(例如硬件字形缓存)中,单独字形再现器214可以促进缓存字形数据以及再现字形。最初,为了缓存字形数据,获取经光栅化的字形,也就是说,获取针对字形的每像素一位光栅图像或位图。由于一位被指示用于字形的每一个像素,因此每一个位值可以是例如1以指示不透明的再现(例如黑色,也就是说,像素或子像素完全被字形覆盖)或者0以指示透明的再现(例如白色,也就是说,像素或子像素没有被字形覆盖)。照此,如果再现在显示器上,这样的位图可以是黑色和/或白色字形而没有光滑边缘。如可以领会到的,任何数目的像素和对应位可与字形相关联,但是每一个像素仅具有一位。经光栅化的字形可以过大,例如以促进抗混叠。以此方式,字形可以以相比于其实际上将再现在显示器上的更高的分辨率光栅化。在这样的情况中,经光栅化的字形的每一个像素实际上为子像素,其中多个子像素用于经缓存的字形的每一个像素。在一些情况中,每像素一位位图是没有任何子像素偏移量的初始字形。经光栅化的字形可以以任何数目的方式或方法获取。在一些实现中,经光栅化的字形从字体光栅化过程获取,例如该过程从字形的形状的向量表示计算每像素一位位图。
当获取到经光栅化的字形或针对字形的每像素一位位图时,可以计算针对字形中的每一个像素的覆盖索引。覆盖索引是与像素相关联的值,其可以用于标识针对用于一系列多个子像素偏移量中的任一个的给定像素的覆盖。换句话说,覆盖索引是与针对不同的子像素偏移量或位移的覆盖值集相关联的值。例如,覆盖索引是可以使得能够标识针对用于子像素偏移量或定位0-7中任一个的给定像素的覆盖的计算值。作为另一示例,覆盖索引是可以使得能够标识针对用于子像素偏移量或定位0-3中任一个的给定像素的覆盖的计算值,并且计算另一覆盖索引以标识针对用于子像素偏移量或定位4-7中任一个的给定像素的覆盖。在一些情况中,可以不计算覆盖索引。例如,如果不要求或使用抗混叠,经缓存的字形数据可以与经光栅化的字形相同,其中每一个像素一位。作为另一示例,如果要求或使用抗混叠但是没有子像素定位,经缓存的字形数据可以仅仅是覆盖值而不是覆盖索引。
覆盖索引能够基于相邻子像素偏移量的覆盖值之间的冗余数据同时存储或编码针对多个子像素位移的覆盖。例如,对于8x1文本,如果针对子像素位移零的覆盖为五,则针对子像素位移一的覆盖必须为四、五或六,因为子像素一共享所有位,除了具有子像素位移零的一位之外。照此,为了存储针对子像素位移一和子像素位移二二者的覆盖值,九乘以三个值(而不是九乘以九个值)足以表示该信息。照此,与四个不同子像素定位对应的四个覆盖值可以存储在一个字节中(9x3x3x3=243,其小于255)。类似地,对于4x4文本,两个覆盖值可以存储在相同的字节中。由于针对像素的四个覆盖值可以存储到用于8x1文本的一个覆盖索引中,因此仅需要将字形的两个实例存储在缓存中(即一个用于子像素位移0-3并且一个用于位移4-7)。
可以以任何数目的方式计算针对特定像素的覆盖索引。例如,在一个实施例中,为了标识针对特定像素的覆盖索引,可以访问查找表以从过大尺度数据转换到覆盖索引。这样的转换或计算可以由CPU和/或GPU执行。针对与字形相关联的每一个像素的覆盖索引或与其相关联的边界可以组合到覆盖索引集或覆盖索引位图中。
仅作为示例,可以通过最初清空哈希表并且将largestCoverageIndex值初始化到0来计算覆盖索引。对于可以具有对针对感兴趣的子像素定位集(例如当应对8x1文本时,0与2^(8+3)-1之间的数字)的覆盖的影响的过大尺度数据的每一个可能值。八是需要用于一个覆盖值的位数,并且输入数据的额外三位用于三个相邻值使得覆盖索引可以用于四个子像素定位。可以计算针对所有感兴趣的子像素定位的覆盖(例如在8x1的情况中为4),并且四个覆盖值可以组合在一起以形成覆盖组合,其可以用作哈希表中的关键码值。哈希表可以用于标识关键码是否已经存在。如果关键码不存在,largestCoverageIndex递增并且使用关键码存储在哈希表中。然而,如果关键码存在,关键码被用于获取表示针对给定过大尺度值的coverageIndex的索引,因此其可以添加到overscaleToCoverageIndex表。在已经处理了所有过大尺度值之后,哈希表中的数据可以被循环通过、由coverageIndex分类。对于每一个coverageIndex,关键码值用于获取coverageCombo。coverageCombo可以用于标识针对给定子像素值的覆盖。通过使用该过程,针对每一个子像素值的一个表可以被维持并且用于从coverageIndex值到达覆盖值。
当计算与字形和/或字形实例相关联的覆盖索引后,诸如字形和/或对应的覆盖索引之类的字形数据可以缓存在字形缓存(例如硬件字形缓存)中。在一些实施例中,即使可能需要特定子像素偏移量来再现之前未被缓存的字形或字形实例,也可以针对用于特定字形或字形示例的每一个子像素偏移量(例如4,8,16)计算覆盖索引和/或覆盖值使得可以缓存字形数据以供随后利用。以此方式,当缓存字形实例以将字形再现于给定子像素定位处时,相同的字形实例可以用于稍后将字形再现于不同的子像素定位处。
当标识要存储在字形缓存中的字形数据(例如字形、与字形或字形实例相关联的覆盖索引、覆盖值等)后,单独字形再现器214可以促进缓存字形数据。由于字形缓存(例如硬件字形缓存)的大小是有限的,因此单独字形再现器214可以访问和确定哪个字形数据要保持、维持或添加到缓存并且哪个字形数据要除去。例如,当字体大小和/或字体样式改变时,字形被添加到缓存。作为另一示例,在一些语言中,针对语言中的许多词语存在不同的字形,这导致更多的字形缓存在字形缓存(例如硬件字形缓存)中。
在一个实现中,缓存的短期存活分区和缓存的长期存活分区用于管理字形数据。缓存的短期存活分区包括包含被缓存相比于缓存在长期存活分区中的数据更短时间周期的字形数据的缓存的部分。短期存活分区中的数据可能在一段时间流逝后、当利用短期存活分区内的所有空间后等(例如全部或部分地)被丢弃。缓存的长期存活分区包括包含被缓存相比于缓存在短期存活分区中的数据更长时间周期的字形数据的缓存的部分。长期存活分区可包含与识别为当存储在短期存活分区中时(例如在从短期存活分区被驱逐之前)具有高再现频率的字形或字形实例相关联的字形数据。长期存活分区中的数据可能在一段时间流逝后、在利用长期存活分区内的所有空间后等(例如全部或部分地)被丢弃。
一般而言,基于再现字形或字形实例的频率将字形数据放置在短期存活分区或长期存活分区中。也就是说,频繁使用的字形或字形实例被放置在长期存活分区中,而不常使用的字形或字形实例被放置在短期存活分区中。当缓存被分区时,分区可以彼此独立地溢出。照此,当短期存活分区溢出时,长期存活分区可以保持完整(并且反之亦然)。尽管描述为具有两个分区,但是任何数目的缓存分区可以用于在缓存内存储字形数据。
在实施例中,与要添加到缓存的特定字形或字形实例相关联的新字形数据最初被添加到短期存活分区。缓存的短期存活分区继续收集和保持字形数据。当达到缓存的短期存活分区的容量或充满时,其中的字形数据被丢弃(例如全部字形数据)。与更频繁再现的字形或字形实例相关联的字形数据可以缓存在缓存的长期存活分区中。这样的确定可以基于任何频率数据。例如,字形可以被指定为当频率超过阈值时以高频率再现,诸如例如预确定的数字、平均频率、中值频率等。仅作为示例,如果在基于溢出而丢弃数据之前,使用计数(例如所再现的次数)大于短期存活分区的寿命期间的平均值,字形可能被视为具有高频率。在另一情况中,字形可以被指定为当预确定的字符频率在阈值量以上时以高频率再现。例如,英语字母表中的字母的相对频率是公知的。
在一些情况中,依照从短期存活分区丢弃字形数据,可以将与被视为具有相对高频率的(多个)字形或(多个)字形实例相关联的字形数据传输或提供给长期存活分区。在其它情况中,可以将被视为具有相对高频率的字形或字形实例指示或标识为如此并且此后,当初始再现跟随在溢出丢弃时,与其相关联的字形数据可以缓存在长期存活分区中。在这样的情况中,字形必须在从短期存活分区驱逐之后在被放置于长期存活分区中之前再次再现。类似地,字形数据可以从长期存活分区丢弃。在一些情况中,一旦字形从长期存活分区被驱逐(例如当填满长期存活分区时),这样的字形在下一次它们被再现时不可以放置回长期存活分区中。而是,可以分析频率数据以确定字形稍后将被放置到哪个分区中。
为了指示或标识字形被标识为高频率,可以为这样的字形存储频率位或其它指示符。例如,频率位可以存储在表内以供随后引用。这样的频率位可能指示再现频率或者简单地指示特定字形/字形实例被频繁再现。除了追踪再现字形或字形实例的次数之外,可以追踪再现例如短期存活分区中的所有字形或字形实例的总次数。照此,可以通过比较再现字形的次数与再现所有字形的平均次数(例如在特定时间段内)来标识高频字形。在该示例中,如果字形没有比平均次数更多地再现,则字形数据在下一次再现时将被放置在短期存活缓存中。相比之下,如果字形比平均次数更多地再现,生成位指示符使得下一次再现字形时,将字形数据放置在长期存活分区中。
为了促进再现字形,单独字形再现器214可以在缓存硬件字形数据之前或之后标识覆盖值。在一些情况中,这样的分析可在缓存硬件字形之前执行。在其它情况中,这样的分析可在缓存硬件字形数据之后执行。在这样的情况中,经缓存的数据可以用于标识覆盖值。例如,在所期望的字形或字形数据在缓存中未被识别的情况下,生成字形数据并且将其适当存储在缓存中。此后,字形数据可以用于再现字形。
在实施例中,可以标识针对与具有子像素偏移量(例如包括子像素偏移量零)的特定字形相关联的像素的覆盖值。在一些情况中,这样的处理可由GPU执行。
为了标识或确定与字形相关联的像素的覆盖值,引用与像素相关联的覆盖索引。例如,覆盖索引可以经由与所期望的字形或字形实例(例如如所期望的子像素偏移量所标识的那样)相关联的缓存中的字形数据来标识。与适当子像素偏移量值相关联的覆盖索引可以用于确定针对像素的覆盖值。仅作为示例,表的列中的覆盖索引和表的行中的子像素偏移量的查找可以用于标识对应的覆盖值。也就是说,与子像素偏移量组合的覆盖索引使得能够标识针对特定像素的对应覆盖值。
当获取到与字形的像素相关联的覆盖值后,可以调节和/或混合覆盖以适当再现字形。例如,可以调节覆盖以使文本看起来更加醒目,使得例如边缘看起来更加锐利或者补偿伽玛校正。混合促进与前景和/或背景的混合。在这方面,文本的前景着色(例如黑色)和背景。如果像素与75%覆盖相关联,该像素的最终颜色可能为25%的背景颜色加上75%的前景颜色。
由单独字形再现器214产生或再现的字形可以经由与计算设备202相关联的显示器204提供以供显示。在这方面,最终着色的像素可以显示在计算机监视器或其它显示器上。
现在转向图3,描述依照本发明的实施例的促进在硬件中缓存字形的方法300。这样的方法可以在计算设备处执行。
最初,如块302处所指示的,标识要再现的字形的字形定位。随后,在块304处,对于两个或更多字形的集合,做出关于是否合并字形以用于作为经合并的字形集再现的确定。这样的确定可基于任何数目和方式的分析而做出,诸如例如,边界框分析或字体分析。在这方面,在一个实现中,可在字形周围绘制边界框以确定字形是否在彼此的阈值内。在另一实现中,可访问字体规则集以标识指示是否应当合并字形的针对字形的任何适用准则。
如果确定合并字形,在块306处,再现经合并的字形集。另一方面,如果确定不合并字形,在块308处,对于每一个字形,确定字形或对应字形实例的合适表示是否在硬件缓存中。在一些实施例中,由于字形可以与多个字形实例相关联,因此可以标识适当的字形实例。如果字形或字形实例在硬件缓存中,在块310处,硬件中的对应字形数据用于独立再现字形。如果字形或字形实例不在硬件缓存中,在块312处,确定和缓存适当的字形数据。以此方式,可以缓存对于给定像素定位而言适合的字形表示。在块314处,硬件中的对应字形数据用于独立再现字形。
现在转向图4,描述依照本发明的实施例的在硬件中缓存字形的第一方法400。方法400可以由单独字形再现器组件执行。最初,如块402处所指示的,标识与要再现的特定字形相关联的字形数据不存在于硬件字形缓存中。在块404处,获取针对字形的每像素一位位图。这样的位图可例如从光栅化过程获取。在块406处,可以计算针对字形中的每一个像素的覆盖索引。与像素相关联的每一个覆盖索引可以用于标识针对用于一系列多个子像素偏移量中任一个的给定像素的像素覆盖。此后,在块408处,在硬件字形缓存中缓存与字形对应的覆盖索引。照此,覆盖索引随后可以被引用和用于多个子像素偏移量中任一个处的相同字形的随后再现。
参照图5,描述依照本发明的实施例的在硬件中缓存字形数据的第二方法500。方法500可以由单独字形再现器组件执行。最初,如在块502处所指示的,引用字形。此后,在块504处,确定字形或与其相关联的数据当前是否被缓存。这样的确定可基于字形或字形数据当前是否在短期存活分区和/或长期存活分区中。如果确定字形或对应数据当前被缓存,与字形相关联地提供再现实例的指示,如块506处所指示的那样。这样的再现指示使得能够追踪或使用字形以促进标识是否/何时字形可被提供到长期存活分区。
另一方面,如果确定字形或对应数据当前未被缓存,在块508处,确定字形的再现频率是否超过阈值。如果字形的再现频率超过阈值,将字形数据缓存到缓存的长期存活分区,如块510处所指示的那样。然而,如果字形的再现频率未超过阈值,将字形数据缓存到缓存的短期存活的分区,如块512处所指示的那样。另外,如514处所指示的,与字形相关联地提供再现实例的指示例如以用于追踪字形的使用。
在块516处,确定缓存溢出是否与缓存的短期存活分区相关联地发生。这样的缓存溢出确定可例如基于当前再现或下一再现是否将填满缓存而做出。如果确定缓存溢出不发生,方法502-516继续,直到这样的缓存溢出事件发生。另一方面,如果缓存溢出事件发生,针对每一个字形做出关于字形是否为高频字形的确定,这意味着其已经被再现了足够次数。这在块518处指示。例如,超过高频阈值再现的字形(即高频再现)被指示或指定为高频字形。如果字形未被指定为高频字形,从短期存活的分区驱逐字形数据,如块520处所指示的那样,并且方法返回到块502。在一些情况中,字形可以被指定为低频字形。然而,如果字形被指定为高频字形,如块522处所指示的那样字形被指定为高频字形,并且然后可以从短期存活分区驱逐字形。方法然后回到块502。尽管在本文中与缓存溢出是否与缓存的短期存活分区相关联地发生有关地描述图5,但是类似的实现可以与发生在长期存活分区中的缓存溢出有关地发生。
现在转向图6,使用字形硬件缓存独立再现字形的方法600。方法600可以例如由单独字形再现器组件执行。最初,如块602处所指示的,在硬件字形缓存中标识期望的字形或字形实例或与其相关联的数据。如可以领会到的,在一些实施例中,字形可以在缓存的短期存活分区或缓存的长期存活分区中。如先前描述的,特定字形实例可标识为基于用于定位字形的期望的子像素定位和与字形实例相关联的一系列子像素定位而可用。在块604处,引用与所期望的字形相关联的缓存中的覆盖索引。还引用用于再现字形的所期望的子像素偏移量,如块606处所指示的那样。在块608处,覆盖索引和所期望的子像素偏移量被用于确定针对与字形相关联的像素的覆盖值。在实施例中,使用覆盖索引和所期望的子像素偏移量的查找表可以用于查找适当的覆盖值。这样的查找表可存储在例如视频存储器中使得其可以直接由GPU访问(例如在与覆盖索引相同或分离的资源中)。在块610处,调节覆盖值,并且在块612处,混合覆盖值。
将示例性方法图示为表示可以实现在硬件、软件、固件或其组合中的操作序列的逻辑流程图中的块的集合。描述方法的顺序不意图理解为限制,并且任何数目的所描述的方法块可以以任何顺序组合以实现方法或可替换的方法。此外,可以从方法省略各个操作而不脱离于本文所描述的主题的精神和范围。在软件的上下文中,块表示当由一个或多个处理器运行时执行所记载的操作的计算机指令。
已经与特定实施例有关地描述了本发明的实施例,特定实施例在全部方面意图是说明性而非限制性的。可替换的实施例对本发明所关于的领域中的普通技术人员而言将是明显的而不脱离于其范围。
从前文将看到,本发明是良好适配于保持本文以上所阐述的所有目的和目标连同显而易见并且结构固有的其它优点一起的一个。将理解到,某些特征和子组合具有实用性并且可以在不参考其它特征和子组合的情况下采用。这被设想到并且在权利要求的范围内。
Claims (10)
1.具有体现在其上的用于执行促进在硬件中缓存字形数据的方法的计算机可执行指令的一个或多个计算机存储介质,所述方法包括:
引用第一字形和第二字形;
确定是否将第一字形和第二字形合并以用于一起作为经合并的字形集再现,其中
当确定合并第一字形和第二字形时,再现包括第一字形和第二字形的经合并的字形集,并且
当确定分离地再现第一字形和第二字形时,使用处于硬件字形缓存中的与第一字形相关联的字形数据和处于硬件字形缓存中的与第二字形相关联的字形数据来分离地再现第一字形和第二字形。
2.权利要求1的介质,其中硬件字形缓存包括视频卡存储器。
3.权利要求1的介质,其中确定是否合并第一字形和第二字形包括利用定位在第一字形周围的第一边界框和定位在第二字形周围的第二边界框。
4.权利要求3的介质,其中确定基于第一边界框和第二边界框是否在距离彼此的阈值距离内而做出。
5.权利要求1的介质,其中确定是否合并第一字形和第二字形包括确定与第一字形相关联的第一分类和与第二字形相关联的第二分类是否被指定为要合并的分类的组合。
6.权利要求5的介质,其中第一分类和第二分类包括对应字形的大写的指示;对应字形的类型的指示,对应字形的语言的指示,针对对应字形的起始点的指示,针对对应字形的结束点的指示,或其组合。
7.权利要求1的介质,其中与第一字形相关联的字形数据包括第一覆盖索引集并且与第二字形相关联的字形数据包括第二覆盖索引集。
8.一种促进缓存字形数据的方法,所述方法包括:
依照与要再现的字形相关联的字形数据不在字形缓存中的确定,获取针对字形的每像素一位位图;
确定针对与字形相关联的每一个像素的覆盖索引,其中每一个覆盖索引包括用于标识针对一系列子像素偏移量中的任何一个的对应像素覆盖的值;以及
在字形缓存中缓存与字形相关联的覆盖索引。
9.权利要求8的方法,其中字形缓存包括视频卡存储器。
10.权利要求8的方法,其中与字形相关联的经缓存的覆盖索引用于以第一子像素偏移量在第一实例处再现字形并且以第二子像素偏移量在第二实例处再现字形,其中第一子像素偏移量和第二子像素偏移量不同于彼此。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/873802 | 2013-04-30 | ||
US13/873,802 US20140320527A1 (en) | 2013-04-30 | 2013-04-30 | Hardware glyph cache |
PCT/US2013/060778 WO2014178903A1 (en) | 2013-04-30 | 2013-09-20 | Hardware glyph cache |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105474267A true CN105474267A (zh) | 2016-04-06 |
Family
ID=49293898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380076185.8A Pending CN105474267A (zh) | 2013-04-30 | 2013-09-20 | 硬件字形缓存 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20140320527A1 (zh) |
EP (1) | EP2992509A1 (zh) |
CN (1) | CN105474267A (zh) |
WO (1) | WO2014178903A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10482577B2 (en) * | 2016-07-27 | 2019-11-19 | Adobe Inc. | Dynamic spread anti-aliasing |
US10497158B2 (en) * | 2017-03-03 | 2019-12-03 | Adobe Inc. | Aligning objects with text |
US10311060B2 (en) * | 2017-06-06 | 2019-06-04 | Espial Group Inc. | Glyph management in texture atlases |
US11120774B1 (en) * | 2020-08-13 | 2021-09-14 | Electronic Arts Inc. | Subpixel text rendering |
EP4390750A1 (en) * | 2022-12-22 | 2024-06-26 | Continental Automotive Technologies GmbH | Computer implemented method for handling truetype font files in an embedded system |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4939670A (en) * | 1988-11-18 | 1990-07-03 | Unisys Corporation | PC driven print file utilities for mainframe computer printing |
US5416898A (en) * | 1992-05-12 | 1995-05-16 | Apple Computer, Inc. | Apparatus and method for generating textual lines layouts |
US5802482A (en) * | 1996-04-26 | 1998-09-01 | Silicon Graphics, Inc. | System and method for processing graphic language characters |
US6426751B1 (en) * | 1999-04-01 | 2002-07-30 | Adobe Systems Incorporated | Font feature file processing |
US20030235303A1 (en) * | 2002-06-24 | 2003-12-25 | Evans Glenn F. | Systems and methods for securing video card output |
US20040146216A1 (en) * | 2003-01-29 | 2004-07-29 | Lockheed Martin Corporation | Fine segmentation refinement for an optical character recognition system |
US20040151398A1 (en) * | 1999-07-30 | 2004-08-05 | Claude Betrisey | Methods and apparatus for filtering and caching data representing images |
US6897870B1 (en) * | 2003-08-15 | 2005-05-24 | Apple Computer Inc. | Glyph rendering quantization for subpixel positioning |
US20080100623A1 (en) * | 2006-10-26 | 2008-05-01 | Microsoft Corporation | Determination of Unicode Points from Glyph Elements |
US20100315431A1 (en) * | 2009-06-15 | 2010-12-16 | Canon Kabushiki Kaisha | Combining overlapping objects |
US20120014601A1 (en) * | 2009-06-24 | 2012-01-19 | Jtekt Corporation | Handwriting recognition method and device |
CN102971765A (zh) * | 2010-06-21 | 2013-03-13 | 微软公司 | 用于文本渲染的查找表 |
US20130162652A1 (en) * | 2008-10-23 | 2013-06-27 | Adobe Systems Incorporated | Method and System for Improved Glyph Cache Efficiency |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5526477A (en) * | 1994-01-04 | 1996-06-11 | Digital Equipment Corporation | System and method for generating glyphs of unknown characters |
US5892842A (en) * | 1995-12-14 | 1999-04-06 | Xerox Corporation | Automatic method of identifying sentence boundaries in a document image |
US6226017B1 (en) * | 1999-07-30 | 2001-05-01 | Microsoft Corporation | Methods and apparatus for improving read/modify/write operations |
US6987875B1 (en) * | 2001-05-22 | 2006-01-17 | Cognex Technology And Investment Corporation | Probe mark inspection method and apparatus |
US8689101B2 (en) * | 2004-02-27 | 2014-04-01 | Blackberry Limited | Font data processing system and method |
US20080068383A1 (en) * | 2006-09-20 | 2008-03-20 | Adobe Systems Incorporated | Rendering and encoding glyphs |
US20130027406A1 (en) * | 2011-07-29 | 2013-01-31 | International Business Machines Corporation | System And Method For Improved Font Substitution With Character Variant Replacement |
US9513851B2 (en) * | 2011-09-09 | 2016-12-06 | Xerox Corporation | System and method for user-selectable font substitution to facilitate printing |
US9171386B2 (en) * | 2011-10-11 | 2015-10-27 | Microsoft Technology Licensing, Llc | Caching coverage values for rendering text using anti-aliasing techniques |
US8956000B2 (en) * | 2012-07-20 | 2015-02-17 | Stephane Martinez | System and method for illumination of a rain gutter |
US9437019B2 (en) * | 2012-10-01 | 2016-09-06 | Facebook, Inc. | Processing combining-character sequences |
US9141211B2 (en) * | 2013-01-09 | 2015-09-22 | Lenovo (Singapore) Pte. Ltd. | Touchpad operational mode |
-
2013
- 2013-04-30 US US13/873,802 patent/US20140320527A1/en not_active Abandoned
- 2013-09-20 WO PCT/US2013/060778 patent/WO2014178903A1/en active Application Filing
- 2013-09-20 CN CN201380076185.8A patent/CN105474267A/zh active Pending
- 2013-09-20 EP EP13771319.4A patent/EP2992509A1/en not_active Withdrawn
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4939670A (en) * | 1988-11-18 | 1990-07-03 | Unisys Corporation | PC driven print file utilities for mainframe computer printing |
US5416898A (en) * | 1992-05-12 | 1995-05-16 | Apple Computer, Inc. | Apparatus and method for generating textual lines layouts |
US5802482A (en) * | 1996-04-26 | 1998-09-01 | Silicon Graphics, Inc. | System and method for processing graphic language characters |
US6426751B1 (en) * | 1999-04-01 | 2002-07-30 | Adobe Systems Incorporated | Font feature file processing |
US20040151398A1 (en) * | 1999-07-30 | 2004-08-05 | Claude Betrisey | Methods and apparatus for filtering and caching data representing images |
US20030235303A1 (en) * | 2002-06-24 | 2003-12-25 | Evans Glenn F. | Systems and methods for securing video card output |
US20040146216A1 (en) * | 2003-01-29 | 2004-07-29 | Lockheed Martin Corporation | Fine segmentation refinement for an optical character recognition system |
US6897870B1 (en) * | 2003-08-15 | 2005-05-24 | Apple Computer Inc. | Glyph rendering quantization for subpixel positioning |
US20080100623A1 (en) * | 2006-10-26 | 2008-05-01 | Microsoft Corporation | Determination of Unicode Points from Glyph Elements |
US20130162652A1 (en) * | 2008-10-23 | 2013-06-27 | Adobe Systems Incorporated | Method and System for Improved Glyph Cache Efficiency |
US20100315431A1 (en) * | 2009-06-15 | 2010-12-16 | Canon Kabushiki Kaisha | Combining overlapping objects |
US20120014601A1 (en) * | 2009-06-24 | 2012-01-19 | Jtekt Corporation | Handwriting recognition method and device |
CN102971765A (zh) * | 2010-06-21 | 2013-03-13 | 微软公司 | 用于文本渲染的查找表 |
Also Published As
Publication number | Publication date |
---|---|
WO2014178903A1 (en) | 2014-11-06 |
EP2992509A1 (en) | 2016-03-09 |
US20140320527A1 (en) | 2014-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2699687C1 (ru) | Обнаружение текстовых полей с использованием нейронных сетей | |
CN111373740B (zh) | 使用选择界面将横向视频转换成纵向移动布局的方法 | |
CN102567300B (zh) | 图片文档的处理方法及装置 | |
US8873887B2 (en) | Systems and methods for resizing an image | |
JP5854802B2 (ja) | 画像処理装置、画像処理方法、及びコンピュータプログラム | |
CN105474267A (zh) | 硬件字形缓存 | |
US20190361907A1 (en) | Method for providing e-book service and computer program therefor | |
US11275935B2 (en) | Patent analysis applications and corresponding user interface features | |
CN109598185A (zh) | 图像识别翻译方法、装置、设备及可读存储介质 | |
US9245361B2 (en) | Consolidating glyphs of a font | |
CN103688291B (zh) | 屏幕检查设备、屏幕检查方法 | |
CN104240273A (zh) | 栅格图片的处理方法及装置 | |
US9619126B2 (en) | Computer-readable non-transitory storage medium with image processing program stored thereon, element layout changed material generating device, image processing device, and image processing system | |
US10424084B2 (en) | Digital content rendering that supports alpha is shape (AIS) as part of knockout groups | |
US8488183B2 (en) | Moving labels in graphical output to avoid overprinting | |
Absetan et al. | Integration of deep learned and handcrafted features for image retargeting quality assessment | |
KR20110021714A (ko) | 전자 문서를 페이지별로 컴퓨터 그래픽스로서 공급하는 방법 및 장치 | |
US20190005038A1 (en) | Method and apparatus for grouping documents based on high-level features clustering | |
CN104657733B (zh) | 一种海量医学影像数据存储装置及方法 | |
CN113591845A (zh) | 一种多题型识别方法、装置和计算机设备 | |
She et al. | A building label placement method for 3D visualizations based on candidate label evaluation and selection | |
CN111476090A (zh) | 水印识别方法和装置 | |
WO2019099043A1 (en) | Blending pixel cells | |
US20160350954A1 (en) | Automated decomposition of graphic designs | |
CN105574553A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160406 |
|
WD01 | Invention patent application deemed withdrawn after publication |