CN103765413A - 渲染跟随线条的文本图像 - Google Patents
渲染跟随线条的文本图像 Download PDFInfo
- Publication number
- CN103765413A CN103765413A CN201280041541.8A CN201280041541A CN103765413A CN 103765413 A CN103765413 A CN 103765413A CN 201280041541 A CN201280041541 A CN 201280041541A CN 103765413 A CN103765413 A CN 103765413A
- Authority
- CN
- China
- Prior art keywords
- text
- character
- text character
- coded data
- image
- 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.)
- Granted
Links
Images
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/206—Drawing of charts or graphs
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01C—MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
- G01C21/00—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
- G01C21/26—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
- G01C21/34—Route searching; Route guidance
- G01C21/36—Input/output arrangements for on-board computers
- G01C21/3667—Display of a road map
- G01C21/3673—Labelling using text of road map data items, e.g. road names, POI names
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Remote Sensing (AREA)
- Radar, Positioning & Navigation (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Automation & Control Theory (AREA)
- Controls And Circuits For Display Device (AREA)
- Processing Or Creating Images (AREA)
- Instructional Devices (AREA)
- Image Generation (AREA)
Abstract
一种图形或者图像渲染系统、比如地图图像渲染系统以矢量数据和纹理的形式从图像数据库接收图像数据,该矢量数据定义各种图像对象、比如道路、地理边界等,这些纹理定义将在图像上显示的文本串以例如提供用于图像对象的标签。图像渲染系统渲染图像,从而文本串的个别字符跟随多分段或者弯曲的线条放置于图像上。这一渲染系统使文本串能够放置于地图图像上,从而文本跟随弯曲或者成角度的道路或者其它图像特征的中心线条而未知如下线条的曲率的细节,将在创建存储文本串信息的纹理时沿着该线条放置文本。这一特征在地图图像内提供增强的可视性质,因为它例如允许道路名称跟随道路的曲率放置于道路以内任何处、因此在地图图像内提供怡人的可视效果。
Description
技术领域
本公开内容涉及图像渲染(rendering)系统、比如电子地图显示系统并且更具体地涉及一种渲染跟随线条、比如多分段线条的文本图像的图像渲染引擎。
背景技术
数字地图在包括移动电话、汽车导航系统、手持GPS单元、计算机和许多网站的各种各样的设备中发现并且可以由这些设备显示。虽然数字地图从终端用户的角度来看易于查看和使用,但是创建数字地图是困难的任务并且可能是耗时的过程。具体而言,每个数字地图始于在地图数据库中存储与将作为地图的部分而显示的数以百万计的街道和路口以及其它特征对应的原始数据的集合开始。在地图数据库中存储的并且用来生成数字地图图像的原始地图数据从多个来源取得,而每个来源通常提供不同数量和类型的信息。这一地图数据因此必须在被地图显示或者地图渲染应用和硬件访问之前被编译并且存储在地图数据库中。
当然有基于在地图数据库中存储的地图数据数字地渲染地图图像(称为数字地图图像)的不同方式。一种渲染地图图像的方法是在地图数据库内存储地图图像作为由许多像素数据点组成的光栅(raster)或者像素化图像的集合,其中每个像素数据点包括如下性质,这些性质定义图像中的特定的像素将如何显示于电子显示设备上。尽管这一类型的地图数据相对易于创建和存储,但是使用这一数据的地图渲染技术通常需要用于全面数字地图图像的大量存储空间,并且难以用很多有用方式操纵作为在显示设备上显示的数字地图图像。
另一种更灵活的渲染图像的方法使用传统上被称为矢量图像数据的图像数据。矢量图像数据通常使用于高分辨率和快速移动成像系统、比如与游戏系统并且尤其是三维游戏系统关联的移动成像系统。一般而言,矢量图像数据(或者矢量数据)包括如下数据,该数据定义将经由图像显示设备作为图像的部分而显示的特定的图像对象或者元素(也称为体元)。在地图图像的情境中,这样的图像元素或者体元可以例如是个别的道路或者路段、文本标签、区域、文本文本框、建筑物、兴趣点标志、地形特征、自行车路径、地图或者街道标签等。每个图像元素一般由(不同大小、形状、颜色、填充图案等的)一个或者多个三角形的集合组成或者被绘制为该一个或者多个三角形的集合,其中每个三角形包括由线条互连的三个顶点。因此对于任何特定的图像元素,图像数据库存储顶点数据点的集合,其中每个顶点数据点定义组成图像元素的三角形之一的特定的顶点。一般而言,每个顶点数据点包括与顶点(例如在X、Y或者X、Y、Z坐标系中)的二维或者三维位置和定义顶点的性质、比如颜色性质、填充性质、用于发散自顶点的线条的线条宽度性质等的各种顶点属性有关的数据。
在图像渲染过程期间,向与诸如图形卡或者光栅化器之类的图形处理单元(GUP)结合操作的一个或者多个图像着色器(shader)提供、并且在该一个或者多个图像着色器中处理为要被渲染的图像的各种图像元素定义的顶点以在显示屏上产生二维图像。一般而言,图像着色器是主要用来在图形硬件上以高度的灵活性计算渲染效果的软件指令的集合。图像着色器在本领域中是公知的,并且各种类型的图像着色器在例如由OpenGL和Direct3D提供的用于定义特殊着色功能的各种应用编程接口(API)中可用。基本上,图像着色器是在高级编程语言中的简单程序,该高级编程语言描述或者确定顶点或者像素的特点。顶点着色器例如定义顶点的特点(例如位置、纹理坐标、颜色等),而像素或者片段着色器定义像素的特点(颜色、z深度和α值)。针对在图像元素或者体元中的每个顶点调用顶点着色器,从而对于向顶点着色器中输入的每个顶点,顶点着色器产生一个(更新的)顶点输出。然后将由着色器输出的每个顶点渲染为一系列像素到逻辑块上,其将最终向显示屏幕发送。作为另一示例,片段着色器使用由顶点着色器输出的顶点以将图像像素化、即确定被创建的图像的像素颜色值。片段着色器可以基于由顶点着色器产生的顶点的顶点属性值、通过在图像对象的不同顶点的顶点属性值之间插值来填充或者渲染像素。在其它情况下,片段着色器可以用像素颜色地图的形式使用预定义的纹理以填充或者像素化图像对象的顶点所定义的特定的区域。在这一情况下,纹理为要被渲染的各种图像定义像素值并且一般用来在屏幕上渲染文本文本或者图像。
作为图像着色器技术的更具体示例,Direct3D和OpenGL图形库使用包括顶点着色器、几何形状着色器和像素或者片段着色器的三种基本着色器类型。顶点着色器为向图形处理器给出的每个顶点运行一次。如以上指出的那样,顶点着色器的目的是将顶点在虚拟空间中的位置变换成它在显示屏上出现的二维坐标(以及用于图形处理器的z缓冲器的深度值)。顶点着色器可以通过设置顶点的顶点属性来操纵诸如位置、颜色和纹理坐标之类的性质,但是不能创建新顶点。向在处理流水线中的下一级提供顶点着色器的输出,该下一级如果存在则是几何形状着色器或者是光栅化器。几何形状着色器可以添加和从顶点网去除顶点并且可以用来在程序上生成图像几何形状或者向现有图像添加体积细节,这在中央处理单元(CPU)上处理将成本太高。如果使用几何形状着色器,则向光栅化器发送输出。也称为片段着色器的像素着色器计算图像中的个别像素的颜色和光性质。向这一级的输入来自光栅化器,并且片段着色器操作用于填充通过图形流水线发送的多边形的像素值并且可以使用纹理以在特定图像对象内定义像素值。片段着色器通常用于景物照明和有关效果、比如颜色调色。没有在向片段着色器的调用与在屏幕上的像素之间的一对一关系,因为经常每像素调用片段着色器许多次,这是因为对于在对应空间中的每个图像元素或者对象,即使遮蔽该图像对象,仍然调用这些片段着色器。然而如果首先绘制遮蔽对象,则一般将不在片段着色器中处理其它对象的遮蔽的像素。
使用矢量图形可以在移动地图系统中特别地有利,在该移动地图系统中,从集中式地图数据库经由通信网络(比如因特网、无线通信网络等)向一个或者多个移动或者远程设备发送图像数据用于显示。具体而言,矢量数据一旦向接收设备发送就可以比像素化的光栅图像数据更容易被缩放和操纵(例如旋转等)。然而处理矢量数据通常比在接收数据的图像渲染系统上耗时和处理器密集得多。另外,使用将在地图中显示的提供更高级细节或者信息的矢量图像数据造成需要从存储这一信息的地图数据库向地图渲染系统发送的更大量矢量数据或者顶点,这可能在一些情况下造成更高带宽要求或者下载时间。
另外,在光栅化的地图图像和矢量数据生成的图像二者的情况下,一般存储文本、比如用来标注地图的街道、道路和其它特征的文本作为预定图像。这样的图像难以操纵以便变化文本的放置。例如在像素化的地图图像中,文本位于相对于其它地图特征的固定位置,因此如果并非不可能则难以改变文本相对于其它图像对象的定向或者放置。在使用矢量数据时,一般存储文本作为固定图像或者串,该图像或者串不连结到其它地图特征、因此可以在地图内放置于不同位置。然而仍然难以操纵文本图像以变化文本内的个别字符相对于彼此的放置以便使文本图像的字符跟随线条、比如多分段线条、即具有相互成角度延伸的多个线段的线条或者弯曲的线条。
发明内容
一种用于在显示设备上渲染图像的由计算机实施的方法包括:使用计算机设备来确定在图像内的线条,沿着线条渲染(可以在图像查找表内被存储为像素化的文本字符的集合的)文本串;确定与线条关联的多个线段和与每个线段关联的范围;并且为多个线段中的每个线段形成文本框,文本框中的每个文本框被定向用于沿着关联的线段在竖立位置绘制文本。该方法选择文本框中的要在其中渲染文本串的文本字符的一个文本框,从文本串选择文本字符中的一个文本字符,并且确定文本字符中的一个文本字符的中心当在图像上文本框中的一个文本框中被渲染时是否将在与文本框中的一个文本框关联的线段的范围内。如果文本字符中的一个文本字符的中心当在文本框中的一个文本框中被渲染时将在与文本框中的一个文本框关联的线段的范围内,则该方法随后使用文本框中的一个文本框在显示设备上渲染文本字符中的一个文本字符。否则,例如如果文本字符中的一个文本字符的中心当在文本框中的一个文本框中被渲染时将不在与文本框中的一个文本框关联的线段的范围内,则该方法选择多个文本框中的不同文本框作为文本框中的一个文本框用于在显示设备上渲染文本字符中的一个文本字符中使用。
在一个实施例中,该方法还包括:从在图像查找表内存储的文本串轮流选择文本字符中的每个文本字符,并且对于文本字符中的每个选择的文本字符,执行以下步骤:确定文本字符中的选择的一个文本字符的中心当在文本框中的一个文本框中被渲染时是否将在与文本框中的一个文本框关联的线段的范围内,如果文本字符中的选择的一个文本字符的中心当在文本框中的一个文本框中被渲染时将在与文本框中的一个文本框关联的线段的范围内,则使用文本框中的一个文本框在显示设备上显示文本字符中的选择的一个文本字符,并且否则选择多个文本框中的不同文本框作为文本框中的一个文本框用于在显示设备上渲染文本字符中的选择的一个文本字符中使用。另外,在确定文本字符中的一个文本字符的中心当在文本框中的一个文本框中被渲染时是否将在与文本框中的一个文本框关联的线段的范围内时,该方法可以读取用于文本字符中的一个文本字符的编码数据的集合,编码数据指定文本字符中的一个文本字符在至少一个方向上的中心和/或指定文本字符中的一个文本字符的宽度。
在形成文本框时,该方法可以形成沿着线段中的关联线段的长度定向的在文本框中的每个文本框,并且从而文本框在关联线段的长度的方向上具有比关联线段的范围更大的长度。在一种情况下,该方法可以形成文本框中的每个文本框,从而每个文本框的起始端在线段的起始端之前在关联线段的长度的方向上延伸预定距离,并且从而文本框的末端超过线段的末端在线段的方向上延伸预定距离。预定距离可以例如是在图像查找表中存储的文本串的文本字符中的一个文本字符当在文本框中形成时的宽度的一半。该方法也可以为多个线段中的每个线段形成文本框包括形成文本框中的每个文本框,从而文本框的高度与关联线段的方向正交地延伸预定距离。在这一情况下,文本框的高度可以是在图像查找表中存储的文本串的文本字符中的一个文本字符当在文本框中形成时的高度。
如果希望,则该方法可以使用片段着色器以确定文本字符中的一个文本字符的中心当在文本框中的一个文本框中被渲染时是否将在与文本框中的一个文本框关联的线段的范围内、并且如果文本字符中的一个文本字符当在文本框中的一个文本框中被渲染时将在与文本框中的一个文本框关联的线段的范围内则使用文本框中的一个文本框在显示设备上渲染文本字符中的一个文本字符。另外,该方法可以使用顶点着色器以为多个线段形成文本框。
根据另一实施例中,一种图像渲染引擎包括通信网络接口、处理器、被耦合到处理器的存储器、被耦合到处理器的显示设备和在存储器中存储的在处理器上字形的多个例程。第一例程经由通信网络接口接收包括定义一个或者多个图像对象的数据的矢量数据的集合以及一个或者多个文本串查找表,其中文本串查找表中的一个文本串查找表存储至少一个文本串的文本字符作为像素化的文本字符的集合并且存储编码数据,编码数据定义与文本串关联的多个文本字符中的每个文本字符的中心位置。第二例程确定与线条关联的多个线段和与每个线段关联的范围,将沿着该线条渲染文本串。第三例程确定用于多个线段中的每个线段的文本框,文本框中的每个文本框被定向用于沿着关联线段在竖立位置绘制文本。第四例程选择文本框中的要在其中渲染文本串的文本字符的一个文本框,选择文本串的文本字符中的下一文本字符,确定文本字符中的选择的一个文本字符的中心当在图像上文本框中的选择的一个文本框中被渲染时是否将在与文本框中的选择的一个文本框关联的线段的范围内,并且如果文本字符中的选择的一个文本字符的中心当在文本框中的选择的一个文本框中被渲染时将在与文本框中的选择的一个文本框关联的线段的范围内,则使用文本框中的一个文本框在显示设备上显示文本字符中的一个文本字符的像素。否则,第四例程选择多个文本框中的不同文本框作为文本框中的选择的文本框用于在显示设备上渲染文本字符中的选择的文本字符时使用。
根据另一实施例,一种用于在显示设备上渲染的图像内沿着线条渲染文本的方法包括在计算机存储器中存储文本串查找表,文本串查找表包括与文本串关联的多个文本字符以及编码数据,编码数据定义与文本串关联的多个文本字符中的每个文本字符的中心位置。该方法也确定与图像中的线条关联的多个线段和与每个线段关联的范围,将沿着该线条渲染文本串。该方法然后形成用于多个线段中的每个线段的文本框,文本框中的每个文本框被定向用于在图像中沿着关联线段在竖立位置绘制文本。对于文本串中的每个文本字符,该方法选择文本框中的要在其中渲染文本串的文本字符的一个文本框,从文本串查找表读取编码数据并且确定文本字符的中心位置当在文本框中的选择的一个文本框中时被渲染是否将在与文本框中的选择的一个文本框关联的线段的范围内。如果文本字符的中心位置当在文本框中的选择的一个文本框中被渲染时将在与文本框中的选择的一个文本框关联的线段的范围内,则该方法然后使用文本框中的选择的一个文本框在显示设备上显示图像中的文本字符。否则,即如果文本字符的中心位置当在文本框中的选择的一个文本框中被渲染时将不在与文本框中的选择的一个文本框关联的线段的范围内,则该方法选择多个文本框中的不同文本框作为文本框中的选择的一个文本框。
在更多又一实施例中,一种地图图像渲染系统包括地图数据库和地图图像渲染系统。地图数据库存储与地图有关的矢量图像数据,矢量图像数据包括定义一个或者多个图像对象和一个或者多个文本串查找表的数据,其中文本串查找表中的一个文本串查找表存储与要被渲染的至少一个文本串关联的文本字符作为像素化的文本字符的集合并且存储编码数据,编码数据定义与文本串关联的多个文本字符中的每个文本字符的中心位置。地图图像渲染设备通信地耦合到地图数据库以接收与地图有关的矢量图像数据并且使用与地图有关的矢量图像数据来渲染地图图像。地图图像渲染设备包括通信网络接口、处理器、被耦合到处理器的存储器、被耦合到处理器的显示设备和在存储器上存储并且在处理器上字形的多个例程。具体而言,通信例程经由通信网络接口接收用于将在显示设备上渲染的图像的矢量图像数据。此外,一个或者多个图像着色器例程确定与线条关联的多个线段和与每个线段关联的范围,将沿着该线条渲染文本串,并且为多个线段中的每个线段形成文本框,文本框中的每个文本框被定向用于绘制在图像中沿着关联线段在竖立位置的文本,并且每个文本框具有由关联线段的范围定义的范围值的集合。对于在文本串中的每个文本字符,一个或者多个图像着色器例程从文本串查找表读取编码数据,确定具有范围值的文本框,文本字符的中心位置将在文本字符图像上被渲染时落入该范围值中,并且使用文本框中的确定的文本框在显示设备上渲染文本字符作为图像的部分。
附图说明
图1是实施在服务器中存储的地图数据库与一个或者多个地图图像渲染设备之间的通信的地图成像系统的高级框图。
图2是用来使用地图矢量数据来渲染地图图像的图像渲染引擎的高级框图。
图3是具有文本串和编码条的编码纹理的描绘,该编码条使文本串能够在图像内跟随多分段线条来渲染。
图3A是更具体地图示图3的编码的文本的部分的描绘,该部分图示编码条。
图4是在地图图像中跟随道路的中心的多分段线条的描绘。
图5是与第一线段关联的第一文本框的图形描绘,该第一文本框被创建用于跟随图4的多分段线条渲染从图3的纹理获得的文本字符。
图6是与第二线段关联的第二文本框的图形描绘,该第二文本框被创建用于跟随图4的多分段线条渲染从图3的纹理获得的文本字符。
图7A和7B图示使用图5和6的文本框以及图3的编码的纹理在地图图像内跟随多分段线条渲染文本字符的集合的示例方法、例程或者过程流程图。
图8图示第二纹理,该第二纹理具有在其中设置的用于多个文本串中的每个文本串的第二编码线条的集合,其中第二编码线条中的每个第二编码线条指向在第二纹理中存储的字形。
图9图示具有重叠文本字符的文本串。
图10图示第三纹理,该第三纹理使用图8的编码技术将多个编码条用于文本串的集合的每个文本串以使重叠字符能够在图像跟随线条来渲染。
图11图示第四纹理,该第四纹理使用图3的编码技术将多个编码条用于文本串以使重叠字符能够在图像跟随线条来渲染。
具体实施方式
一种图形或者图像渲染系统、比如地图图像渲染系统从图像数据库或者从应用接收图像数据,该应用以矢量数据和纹理的形式生成图像数据,该矢量数据定义各种图像对象、比如道路、边界等,这些纹理定义将在图像上显示的文本串以例如提供用于图像对象的标签。图像渲染系统渲染图像,从而文本串的个别字符跟随多分段线条、例如弯曲的线条放置于图像上。这一渲染系统例如使文本串能够放置于地图图像上,从而文本跟随弯曲或者成角度的道路或者其它图像特征的中心线条。这一渲染技术提供在图像内渲染文本时的大量灵活性,因为这一技术允许渲染文本以便跟随线条而未知如下线条的曲率的细节,将在创建存储文本串信息的纹理时沿着该线条放置文本。这一特征在地图图像内提供增强的可视性质,因为它例如允许道路名称跟随道路的曲率放置于道路以内任何处、因此在渲染的地图图像内提供怡人的可视效果。
现在参照图1,与地图有关的成像系统10包括在服务器14中或者在例如位于中心地点或者位于各种不同的间隔开的地点的多个服务器中的地图数据库12并且也包括多个地图客户端设备16、18、20和22,每个地图客户端设备存储和实施地图渲染设备或者地图渲染引擎。地图客户端设备16-22可以经由任何硬接线或者无线通信网络25、例如包括硬接线或者无线LAN、MAN或者WAN、因特网或者其任何组合连接到服务器14。地图客户端设备16-22可以例如是移动电话设备(18)、计算机、比如膝上型、桌面型或者其它类型的计算机(16,20)或者其它成像系统的部件、比如汽车导航系统(22)的部件等。另外,客户端设备16-22可以经由任何适当通信系统、比如任何公共可用或者私人拥有的通信网络、包括使用基于硬接线的通信结构、比如电话和线缆硬件和/或无线通信结构的通信网络、比如无线通信网络、例如包括无线LAN和WAN、卫星和蜂窝电话通信系统等通信地连接到服务器14。
地图数据库12可以存储任何希望的类型或者种类的地图数据、包括光栅图像地图数据和矢量图像地图数据。然而这里描述的图像渲染系统最好地适合于与矢量图像数据使用,该矢量图像数据定义或者包括用于在要被显示的图像内的图像对象、元素或者体元的多个集合中的每个集合的系列顶点或者顶点数据点并且使用纹理以定义将在地图上显示的文本串。一般而言,矢量数据定义的图像对象中的每个图像对象将具有与之关联的多个顶点,并且这些顶点将用来经由客户端设备16-22中的一个或者多个客户端设备向用户显示与地图有关的图像对象。另外,例如定义文本图像或者文本字符的各种纹理地图可以存储于地图数据库12中用于在地图上渲染标签或者其它图像时使用,或者可以在客户端设备16-22内的一个或者多个应用中根据文本字符生成这些纹理地图。
如也将理解的那样,客户端设备16-22中的每个客户端设备包括图像渲染引擎,该图像渲染引擎具有一个或者多个处理器30、一个或者多个存储器32、显示设备34并且在许多情况下包括光栅化器或者图形卡36,该光栅化器或者图形卡一般以已知方式来编程和互连以实施或者在关联显示设备34上渲染图形(图像)。用于任何客户端设备16-22的显示设备34可以是任何类型的电子显示设备、比如液晶显示器(LCD)、发光二极管(LED)显示器、等离子体显示器、阴极射线管(CRT)显示器或者任何其它类型的已知或者适当电子显示器。
一般而言,图1的与地图有关的成像系统10操作,从而用户在客户端设备16-22之一打开或者执行地图应用(在图1中未示出),该地图应用操作用于经由服务器14与地图数据库12通信并且从地图数据库12获得地图信息或者与地图有关的数据、然后基于接收的地图数据显示或者渲染地图图像。地图应用可以允许用户查看在地图数据库12中存储的地图数据的不同的地理部分、放大或者缩小特定的地理位置、旋转、自旋或者改变显示的地图的二维或者三维查看角度等。更具体而言,当使用以下描述的系统在显示设备或者显示屏幕34上渲染地图图像时,客户端设备16-22中的每个客户端设备从地图数据库12以矢量的形式下载地图数据并且使用一个或者多个图像着色器来处理该矢量数据以在关联显示设备34上渲染图像。
现在参照图2,更具体地图示与客户端设备16-22之一关联或者由客户端设备16-22之一实施的图像生成或者图像渲染设备40。图2的图像渲染系统40包括两个处理器30a和30b、两个存储器32a和32b、用户接口34以及和光栅化器36。在这一情况下,处理器30b、存储器32b和光栅化器36设置于分离图形卡(以下表示为水平线)上,但是这无需是在所有实施例中的情况。例如在其它实施例中,可以代之以使用单个处理器。此外,图像渲染系统40包括网络接口42、通信和存储例程43以及一个或者多个地图应用48,该一个或者多个地图应用在其中具有在存储器32a上存储的可以在处理器30a上执行的显示逻辑。类似地,形式例如为顶点着色器44和片段着色器46的一个或者多个图像着色器存储于存储器32b上并且在处理器30b上被执行。存储器32a和32b可以包括易失性或者非易失性存储器或者二者,并且在处理器30a和30b上执行例程和着色器以提供以下描述的功能。网络接口42包括任何熟知的软件和/或硬件部件,该软件和/或硬件部件操作用于经由硬接线或者无线通信网络例如与图1的服务器14通信以用矢量数据的形式获得图像数据用于在用户接口或者显示设备34上创建图像显示时使用。图像渲染设备40也包括存储从地图数据库12接收的矢量数据的数据存储器48,该数据存储器可以例如是存储器32的缓冲器或者易失性存储器部分,该矢量数据包括如将更具体地描述的任何数目的顶点数据点和一个或者多个图像纹理。
在操作期间,地图应用48的地图逻辑在处理器30上执行以例如使用用户输入、GPS信号、预存逻辑或者编程等来确定需要用于经由显示设备34向用户显示的特定的图像数据。应用48的显示或者地图逻辑通过网络接口42与服务器14通信以从地图数据库12优选地以矢量数据或者压缩矢量数据的形式获得地图数据、使用通信例程43来与地图数据库12通信。这一矢量数据经由网络接口42由通信例程43返回并且可以被压缩并且存储于数据存储器49中。具体而言,从地图数据库12下载的数据可以是待使用的最终矢量数据的紧凑、结构化或者另外优化的版本,并且地图应用48可以操作用于使用处理器30a将下载的矢量数据变换成具体顶点数据点。在一个实施例中,从服务器14发送的图像数据包括矢量数据并且可能包括一个或者多个图像纹理,该矢量数据一般包括或者定义用于与将在屏幕34上显示的多个不同图像元素或者图像对象关联的顶点的集合的每个顶点的数据,该一个或者多个图像纹理定义或者包含将在图像上相对于图像对象显示的文本串或者其它标签。更具体而言,用于每个图像元素或者图像对象的矢量数据可以包括与组成图像的特定的元素或者对象的一个或者多个三角形关联的多个顶点。每个这样的三角形包括(由顶点数据点定义的)三个顶点,并且每个顶点数据点具有与之关联的顶点数据。在一个实施例中,每个顶点数据点包括顶点位置数据以及一个或者多个顶点属性值和/或属性引用,该顶点位置数据定义顶点在参考或者虚拟空间中的二维或者三维位置或者位置,该属性引用是对或者定义顶点属性值的集合。每个顶点数据点还可以包括其它信息,比如标识顶点数据点与之关联的图像对象类型的对象类型标识符。类似地,图像纹理定义要在图像上渲染的文本字符、文本串或者标签,这些图像纹理实质上文本图像或者像素查找表。尽管可以向客户端设备16-22下载这样的图像纹理,但是也可以在客户端设备16-22生成这些图像纹理,这些客户端设备使用向客户端设备16-22提供或者在客户端设备16-22使用的文本字符串。
一般而言,这里描述的用于在地图图像内沿着线条渲染文本的成像系统包括或者涉及到三个部分。第一,将在图像中渲染的文本被放置于图像纹理(无与之关联的路径或者特定的定向)内并且用编码数据来编码,该编码数据定义在文本串内的每个字符串的某些特性。这一步骤可以由在客户端设备内的地图应用执行,并且如果是这样,则文本串编码的纹理存储于客户端设备的存储器中。如果在服务器14执行这一编码,则这一纹理(也称为图像或者文本串查找表)可以存储于地图数据库12中并且可以向客户端设备16-22发送用于在客户端设备中存储和使用。第二,绘制或者建立要被渲染的文本将在图像上跟随的线段的集合优选地作为具有适当顶点属性的三角形。第三,一个或者多个着色器计算在何处绘制在纹理中存储的文本或者文本串的字符以便正确跟随线段而执行个别字符旋转,从而用如下定向渲染文本串的文本字符中的每个文本字符,该定向跟随线段形成的线或者相对于该线条被正确旋转。
如以上指出的那样,渲染技术将未旋转的文本渲染到纹理或者像素地图中。当然,可以使用将文本渲染到图像纹理或者其它类型的查找表中的任何希望的文本渲染库来执行这一过程。如果多于一个文本串将被放置到纹理中,则记录并且存储或者提供每个文本串的位置作为纹理的部分。另外,在每个文本串内的文本的高度可以被记录和编码到纹理中或者可以作为用于纹理的属性数据来提供。
除了在纹理内渲染文本串的未旋转的文本之外,还在用于每个文本串的纹理内提供编码数据、比如编码的像素条以沿着纹理的X方向定义文本字符的每个像素列相对于该文本串的中心的相对位置。编码数据也可以定义在文本串内的文本字符之间的间断或者过渡。尽管可以用任何希望的方式在纹理内提供编码数据,但是编码数据可以在编码的文本串的像素位置的顶部以上紧接或者接近地在像素行内放置于纹理内。
图3图示示例纹理50,该纹理具有位于其中的三个文本串,这些文本串以街道名称“Freemont Ave”、“Aurora Ave”和“First St”的形式。如将理解的那样,纹理50存储用于组成文本字符的像素中的每个像素的像素颜色值,这些文本字符形成文本串。另外,直接在文本串中的每个文本串的顶部以上、比如在该顶部以上的一个像素行提供以编码条52的形式的编码数据。一般而言,对在组成编码条52的像素行内的像素值编码以反应每个文本字符的中心像素列和文本字符的宽度或者从任何特定的像素列位置到关联文本字符的中心的距离。在图3中图示编码条52为恒定颜色的像素线条,但是将理解编码条52实际上包括用于其不同像素位置的不同颜色或者像素值。另外,为了示例,在图3的编码线条52内通过用小的竖直线条做标记来指示与文本串的文本字符中的每个文本字符关联的中心像素列。
在图3A中更具体地图示编码条52之一的部分。具体而言,图3A图示编码条52的设置于图3的“Freemont Ave”文本串的文本字符“Free”以上的部分。尽管在图3A中在各种像素值位置之上在块浮雕中示出文本字符F、r、e和e,但是这样做仅为了图示文本50的与这些文本字符关联的像素行和列。将理解在这些像素位置存储的像素值将定义这些具体文本串的具体图像特征。图3A的编码条52位于纹理50内直接在编码条52与之关联的文本串以上、例如在直接在关联文本串的顶部像素行以上的像素行中。在这一情况下,在编码条52中的像素中的每个像素的值反映或者指定沿着X方向的位置或者该像素列的纹理50的如相对于直接在编码条52以下位于像素列内的特定的文本串的中心测量的宽度。在一个示例中,可以将在文本字符的中心列的像素值设置成值128,而可以对于从中心字符的中心像素列离开的每个像素列将从中心像素偏移的像素的值递增(例如向左)或者递减(例如向右)一。例如在“Freemont Ave”文本串中的“F”文本串以上的像素范围包括12个像素而中心像素具有值128、在中心像素右侧的五个像素分别具有值127、126、125、124和123并且在中心像素左侧的四个像素分别具有值129、130、131和132。编码条52可以使用每个像素的红色颜色的值以执行这一编码、但是可以代之以或者附加地使用像素的其它颜色值用于对文本字符中心和宽度编码。在其中纹理50内的定义编码条52的像素行中对红色像素颜色值编码的示例中,在编码条52内的每个像素具有红色颜色值,该红色颜色值在从0到255的刻度上比像素到当前在像素以下或者在相同像素列内的文本字符的中心的距离多128。可以在用于每个文本字符的在编码条52内的像素左侧和右侧包括一个额外像素而在左侧上的额外像素具有例如255的红色值并且在右侧上的像素具有例如10的红色值以指示当前文本字符串的末端。当然,编码条52可以用来对文本串中的紧接在编码条52以下的每个字符串相似地编码。另外,尽管图示编码条52为位于关联文本串以上,但是编码条52可以备选地位于相同纹理内的文本串以下或者可以用其它方式被提供、比如在附加或者分离纹理中具有与它被关联到的文本串镜像或者相关的位置。在任何情况下,编码条52的列位置在位置上与关联文本串的像素列相关。然而可以用任何其它希望或者有用的方式编码或者提供文本串中的每个文本字符的中心位置和宽度。
作为存储和使用可以对于纹理中的每个文本串以编码条52的形式提供的编码数据的结果,这里描述的图像渲染系统能够渲染这些文本串中的文本字符,从而绘制个别字符沿着多分段线条正确定向。具体而言,使用编码数据,图像渲染系统能够确定在每个文本字符的任何特定的位置(即像素列)沿着纹理的X坐标与关联文本字符的中心的相对距离。如以下将描述的那样,使用这一信息,图像着色器、比如片段着色器46之一可以操作用于正确绘制旋转的文本、即沿着弯曲的线条的文本而在字符中间无间断。
这里描述的文本渲染过程的第二个一般步骤确定在编码的纹理内的文本串将跟随的线条的线段。这一步骤可以在渲染地图图像时出现,并且当然地,最终渲染文本串的方式将依赖于要被渲染的文本将跟随的具体线条。当然,待跟随的线条可以是任何希望的线条类型、比如使用基于矢量的图像对象来创建的沿着道路的中心穿越的线条、跟随边界的线条等。这样的线条一般可以被确定并且用来渲染文本以标注道路或者其它图像特征。当然,待跟随的线条可以是任何其它类型的线条、比如跟随图像特征的轮廓的线条或者任何其它希望的线条。待使用的线条可以根据其它图像特征、比如图像对象的顶点来确定、可以预存于地图数据库12中并且从地图数据库12被提供、可以由用户指定或者可以用任何其它希望的方式来确定。
在标识线条以沿着该线条渲染文本时,将线条分解成直线、但是连接的线段,其中每个线段一般与紧接相邻线段成角度。在图4中的虚线浮雕中图示多分段线条60的示例为沿着多分节道路62的中心穿越的线条。分段的线条60包括互连的线段60A、60B、60C和60D。当然,可以用任何希望的方式、比如基于在定义道路60的分段的顶点中提供的数据线条60和/或它的关联线段。
图5更具体地图示图4的线段60A和60B。在图5中图示线段60A为在起始点66开始并且向结束点68延伸,而图示线段60B从起始点68延伸并且向结束点70延伸。另外,图5的线段60A具有(比如按照像素数目或者根据某个其它距离量化符的如在相对于将在其上使用线条的图像而言的空间中测量的)长度35。在图5的情况下,指示线段60A为相对参考值0(在点66)开始并且沿着图5中的与线段60A平行设置的刻度72向相对参考值35(在点68)延伸。以相似方式,线段60B具有长度70(在相对图像空间中)并且在相对参考值35(在点68)开始并且如与线段60B平行设置的刻度74所示向相对参考值105(在点68)延伸。
一旦标识线条60的线段(例如60A和60B)中的每个线段并且确定其长度,可以代表每个线段作为形成矩形的三角形对,该矩形将这里称为文本框。在图5A中为线段60A图示这样的矩形或者文本框80A。一般而言,矩形80A将用来定义用于文本框的顶点的集合,该文本框被片段着色器用来沿着线段60A渲染文本。具体而言,选择矩形80A的顶点以从图像中的开始的位置跨越在线段60A的开始之前的(如在沿着线段60A的长度的方向上测量的)预定义或者具体距离(比如将沿着线条60A渲染的文本串的最宽字符的宽度的一半)到在线段60A的末端之前的预定义或者具体距离(例如在文本串内的最宽字符的宽度的一半)。在图5的示例中,图示预定距离为5(在图像的相对空间中),因此矩形80A沿着刻度标志72从-5到40延伸。在与线段60A正交的方向上,矩形80A跨越在与线段60A正交的方向上的另一距离、比如要被渲染的最高文本字符的高度的一半到在与线段60A正交的另一方向上的另一距离(例如要被渲染的最高文本字符的高度的一半)。因此,如图5的刻度75所示,矩形80A从-5到5跨越(假设将沿着线条渲染的文本串的高度在相对图像空间中为10)。
现在计算或者确定这里将称为线段60A的范围的、从起始点66到结束点68的整个线段60A的长度,并且设置这一范围作为用于文本框80A的顶点中的每个顶点的顶点属性的两个分量(而这些顶点属性的值对于形成文本框80A的三角形的顶点中的每个顶点相同)。线段的范围由此将用作或者将称为其中设置线段的文本框80A的范围。因此,矩形80A的范围将是线段60A的范围,将沿着该线段渲染文本。这一范围将在片段着色器中用来插值以计算用于矩形80A的顶点的长度值,从而线性插值从矩形80A的一端到另一端的长度产生在线段60A的开始、在线段60A的末端和在它们之间的所有点的正确长度。当然,可以通过从直至线段60A的开始的、线段60A的长度减去最宽字符的宽度的一半(即预定距离)并且将这用于在线段60A之前的矩形顶点而将最宽字符的宽度的一半(例如预定距离)与线段60A的末端的长度相加并且将这用于在线段60A之后的矩形顶点来执行这一插值。此外,可以向文本框的在线段以上的顶点指派指定Y纹理值0的顶点属性,并且可以向文本框的在线段以下的顶点指派顶点属性,该顶点属性指定与如在图像内渲染的文本的高度相等的Y纹理值。因此图5的矩形80A的外顶点的X、Y坐标为在图像空间中的(-5,0)、(40,0)、(-5,10)和(40,10),该图像空间以线段60A的起始点66为中心并且与线段60A平行(在X方向上)和正交(在Y方向上)延伸。提供这一坐标空间的使用仅为了易于示例而可以不是在图像本身中或者在执行插值和图像渲染的着色器中使用的实际坐标空间。然而可以通过坐标旋转和平移来实现向一致图像空间的转换以与图像的X、Y坐标空间匹配。
如果在相同纹理中提供多个文本串,该纹理用来指定用于在文本框(比如文本框80A)中渲染的文本串,则也可以有必要发送如在纹理内存储的讨论的文本串的Y偏移(即将在文本框中渲染的文本串的Y偏移)作为顶点属性以便能够在文本框内渲染正确文本图像。也可以有必要让用于沿着特定的线段(比如线段60A)渲染在纹理内存储的文本串的着色器知道在纹理内的文本串的大小(例如高度)以恰当计算纹理坐标以便能够在任何特定的时间位置要被渲染的文本字符并且当在图像上渲染文本串时执行恰当插值。然而在纹理中的字符或者文本串的大小(例如高度)可以统一,并且然后可以设置这一个值作为统一变量而不是作为文本框的顶点属性。
如将理解的那样,可以对于待跟随的线条60的其它线段60B、60C、60D中的每个线段形成矩形或者文本框。作为示例,对于线段60B在图6中图示文本框80B。文本框80B在(现在由刻度74和76定义的)相对图像空间中具有在(30,0)、(110,0)、(30,10)和(110,10)的顶点。另外,这一文本框的范围将是35到105,因为这是从线条60的开始测量的、线段60B的从它的起始点68到它的结束点70的范围。
在对于要被渲染的文本将跟随的线条的线段中的每个线段定义用于矩形或者文本框中的每个矩形或者文本框的两个三角形的顶点之后,可以向顶点着色器44之一发送这些顶点和它们的关联属性(例如二维位置和范围以及文本串坐标)以渲染用于待跟随的线条的线段中的每个线段的文本框。这些文本框一旦被顶点着色器44定义就然后可以被片段着色器46用来用以下描述的方式使用如例如在图5的纹理中存储的编码的文本串之一在这些文本框内渲染文本。
一般而言,在操作期间,片段着色器46确定在为确定的线段中的每个线段定义的文本框中为每个像素绘制来自文本图像的如果有的哪个像素。更具体而言,在沿着多分段线条渲染文本时,地图应用48使用片段着色器46以在各种文本框中一次一个文本框地放置来自文本图像的文本。在这样做时,地图应用48选择线段中的一个线段以沿着该线段开始渲染特定的文本串并且使用为该线段创建的文本框。第一个选择的线段或者文本框可以其中具有范围值0的线段或者文本框。在使用这一文本框来操作时,片段着色器46可以从适当纹理访问要被渲染的第一文本字符的像素并且可以使用在纹理内的编码条52来查找或者确定与该文本字符的中心的相对距离。可以通过使用插值的长度值作为进入纹理的X坐标来执行这一功能,该X坐标除以纹理的宽度以得到用于如在纹理内存储的渲染的字符的位置的纹理坐标。可以将进入纹理的Y坐标计算成在纹理中的第一像素行或者如果向纹理中紧缩多个串则为在纹理偏移之后的第一行。在发现渲染的文本串的当前文本字符时,片段着色器46从文本串的编码条52读取适当颜色值并且减去128以确定与字符的中心的距离。添加插值的长度给定直至字符的中心的长度。如果(如插值到图像空间中的)字符的中心落在文本框的范围内,则片段着色器46在文本框内在显示器上绘制文本图像的一个或者多个像素。然而如果文本字符的计算的中心不在为文本框提供的范围的第一与第二限制之间,则应当丢弃当前文本字符的像素并且不绘制像素。更具体而言,片段着色器46在逐个像素的基础上执行是否在文本框中放置每个文本字符的每个像素的确定、因此对于分析的每个个别像素执行文本图像的像素是否与具有中心点的文本字符关联的确定,该中心点落在当前渲染的文本框的范围内。当然,如果希望,则片段着色器46可以对于文本图像的每个像素列执行这一分析(在试着填充文本框的对应像素时)并且在这一情况下将根据字符的中心是否落在文本框的范围内在文本框中绘制列的文本图像像素或者不是这样。在任何情况下,在不丢弃任何特定的像素或者像素列时,片段着色器46可以使用与前文相同的纹理X坐标和除以纹理高度的作为顶点属性而传入的插值的Y纹理坐标加上一或者更多来查找在该像素列的用于文本的颜色(根据渲染的列的特定的行)。这应当给定来自渲染的文本的对应像素从而纠正在文本以上的中心编码像素。
当然,如果未在文本框中绘制文本字符的像素,因为文本字符的中心在文本框的范围以外,则地图应用48将使用片段着色器46以在处理或者渲染(与沿着线条的下一或者候选线段关联的)下一或者后续文本框时绘制该文本字符。片段着色器46重复确定是否应当在当前选择的文本框中渲染文本字符的像素的过程直至着色器46填充文本框、即到达文本框的末端。一旦在特定的文本框内或者使用特定的文本框来渲染文本字符的像素,片段着色器46试着在相同文本框内渲染下一文本字符的像素并且重复这一过程直至它到达文本框的末端。如将理解的那样,为线段形成的文本框的大小可以为小并且事实上可以小于字符的大小,因为如果不在一个文本框内(因为它的中心点在文本框的范围以外延伸)渲染字符,则将在后续文本框(即文本字符的中心落在其中的文本框)中渲染字符。在这一过程期间,可以创建其中未渲染文本字符的文本框。
这一过程的结果是渲染文本图像内的文本字符中的每个文本字符正面向上(即在文本框的定向中竖立)并且跟随线条,但是其中沿着线条在定向上旋转每个文本字符以正确跟随多分段线条。作为结果,文本串可以用未旋转的方式来预先计算并且存储于纹理中并且可以反复地用于具有不同曲率的多个线条。
现在参照图7A和7B,更具体地图示可以用来使用编码的纹理或者文本串查找表、比如图3和3A的编码的纹理或者文本串查找表在图像内沿着线条渲染文本的方法、例程或者过程100的过程流程图或者流程图图表。仅作为示例,例程100可以在地图渲染引擎、比如图2的地图渲染引擎中用来沿着多分段道路的边界或者在这些边界内并且更具体地沿着跟随该道路的中心的线条渲染文本,从而渲染的文本居中于道路中从而跨越道路的各种分段。一般而言,可以实施例程或者过程100作为在处理器30a和30b中执行的一个或者多个软件例程或者应用、包括如下例程,这些例程是地图应用48的部分和/或顶点和片段着色器44和46定义的例程。可以用任何希望的语言、比如Javascript、C代码等实施或者编写并且可以在处理器30a和30b中的一个或者两个处理器上执行这些例程。此外,这些例程可以使用光栅化器36以在显示设备34上渲染图像。
在任何情况下,例程100的块102可以绘制或者形成图像特征、比如多分节道路,将沿着该图像特征应用文本字符。作为这一过程的部分或者在完成这一过程之后,块104确定跟随图像特征、比如多分节道路的多分段线条,将沿着该多分段线条渲染文本串。在一个实施例中,这一多分段线条可以跟随多分节道路的中心线条、比如图4中所示线条60。接着,块106在多分段线条的每对相邻分节的交点沿着多分段线条发现或者定位点。因此,块106发现线条——将沿着该线条渲染文本——的每个线段的开始和结束点并且可以向多分段线条的线段指派唯一范围。指派的范围应当跨过线段的边界连续或者无缝延伸。也就是说,线条的范围可以始于一个线段的开始并且经过该线段、然后经过后继线段中的每个线段连续延伸,从而没有两个线段具有相同范围并且仅共享公共结束点。
接着,块108用以上关于图5和6讨论的方式为每个线段形成文本框。可以例如在地图应用48内的例程内定义或者计算并且然后可以向图2的顶点着色器44之一发送这些文本框的顶点以在使用光栅化器36来渲染的图像中形成文本框。当然,文本框的轮廓将为透明或者无颜色,因为文本框本身将不是渲染的图像的可视方面(但是如果希望这样则它们可以是)。用于每个文本框的顶点将指定文本框顶点在图像内的定位并且将包括与文本框关联的线段的范围并且如果希望则包括一个或者多个引用作为属性,该一个或者多个引用是对将在文本框中渲染的文本的文本串。也就是说,如果希望,则文本框顶点可以包括指向在纹理内的如下定位的指针作为属性,将沿着线条渲染的文本串位于该定位。
接着在块110,例程或者过程100选择文本框中的第一文本框以沿着该第一文本框开始渲染引用的文本串。这一文本框将一般是具有零(0)范围值的文本框,因为这一范围值指示开始位置以沿着该开始位置开始渲染在纹理内存储的文本串。然而无需是这种情况,并且可以沿着线条开始在沿着确定的线条的任何希望的定位或者位置渲染文本。在任何情况下,块112(图7B)定位在当前或者选择的文本框内的如下起始点作为沿着线条的当前定位,将在该起始点渲染文本。这一起始点可以并且(除了第一文本框之外)一般将在文本框的开始或者字体末端。块114然后获得与如在纹理内存储的文本串内的如下文本字符的列关联的像素或者像素的集合,该文本字符对应于与沿着线条的当前位置关联的范围值。
块116然后确定那些像素与之关联的文本字符的中心如果整个文本字符将在沿着线条的当前定位放置或者在当前文本框中被渲染则是否在当前文本框的范围内(在文本大小被插值为在作为当前文本框的部分而指定的大小内相配时)。块116可以通过读取纹理的紧接在考虑的文本字符的像素以上的编码条52来执行这一测试。也就是说,块116可以读取编码条52以确定用于当前文本字符的在编码条52内的像素位置(在纹理的X方向上)(即未跨过值为0或者255的像素位置穿越)、然后识别这一位置作为考虑的文本字符的中心(沿着纹理的X方向)。备选地或者附加地,块116可以使用编码条52内的宽度编码以确定与当前文本字符的中心的距离。如果在被恰当插值为放置于当前文本框内时当前文本符的当前像素位置在当前文本框的范围内,则块118在沿着线条的当前位置在当前文本框中渲染文本字符的当前列的所有像素(在恰当插值的大小)。在另一方面,如果在被恰当插值为放置于当前文本框内时文本字符的中心像素位置不在当前文本框的范围内,则(块122)略过块118,从而不在文本框内渲染文本字符的当前像素或者当前像素列。如果希望这样,则可以在片段着色器46中执行这些过程。当然,在片段着色器46在文本框内渲染文本字符时,将沿着文本框的X和Y定向渲染文本字符的像素,从而将在如文本框的定向所定义的沿着线条的竖立位置渲染文本字符。另外,在操作中,例程100可以在逐个像素的基础上相继执行块116和118,从而片段着色器对于在纹理的特定的像素列中的每个像素分离地分析该像素属于的文本字符是否具有落在文本框的范围内的中心位置。然而为了简化,图7A和7B的流程图未指示逐个像素的操作、但是代之以指示在逐个像素列的基础上处理文本字符像素。
在任何情况下,在已经分析纹理的特定的像素列的所有像素之后,块124将沿着线条的当前位置递增至下一位置,并且块126确定当前位置是否超出当前文本框的后端。如果不是,则将控制返回到获得下一像素(或者在纹理的像素列中的像素的集合)的块114,并且对于在文本字符中的下一像素列重复块116-126的步骤以查看是否应当在当前文本框内渲染那些像素。
然而在块126,如果发现线条的新位置在当前文本框的末端以外或者超出当前文本框的末端,则(可以在沿着线条绘制文本的应用48中运行的)块130确定是否已经渲染用于线条的所有文本框。如果不是,则块132确定要被渲染的下一文本框并且向片段着色器46提供该文本框的细节用于渲染。然后向112提供控制,112确定与新文本框关联的文本图像的起始点作为与新文本框的开始所定义的沿着线条的位置对应的该点并且设置这一点作为沿着线条的当前位置。片段着色器46然后操作用于对于下一文本框实施块114至126。在块130确定已经渲染最后文本框时,沿着线条渲染文本串的过程将对于在纹理中的一个文本串完成。
如将理解的那样,例程100实质上操作用于发现每个文本字符的中心将落入其中的沿着选择或者确定的线条的文本框并且在该文本框中绘制整个文本字符。由于线条的范围用来确定文本字符相对于彼此的位置并且这一范围连续而在相邻文本框的交点无间断,所以文本字符将各自在相对于在其中渲染它们的文本框的正确方向上被渲染。然而由于每个文本框的末端超出文本框的范围延伸,所以例程保证整个文本字符可以并且将在一个并且仅一个文本框、即具有如下范围值的文本框中被渲染,文本字符的中心落入该范围值中。这一系统使文本框能够有很小的大小,在该情况下,可以未在每个文本框中渲染文本字符、比如可以是对于连续弯曲的线条的情况。因此,这一技术使文本能够沿着任何弯曲的线条被正确渲染。
当然将理解,可以重新安排或者重新排序并且在其它方式或者序列中执行图7A和7B的不同块指定的各种动作。另外,可以在飞行中执行确定或者建立文本框,因为每个文本框在确定要被渲染的文本落在当前文本框以外时变成被需要而不是如这里描述的那样在文本渲染开始之前预先建立或者预定文本框。
尽管描述用于在纹理中的文本串的编码条52为紧接或者直接在关联文本串以上,但是可以在纹理中在文本串以下提供这一编码条52,或者如果希望这样,则甚至可以用与关联文本串的像素有些相关或者引用这些像素的方式在另一纹理或者查找表中提供这一编码条52。另外,可以用除了这里描述的方式之外的方式、包括用未使用编码条52的方式对文本串中的每个文本字符的中心的位置编码。另外,在使用编码条的情况下,编码技术不限于例如使用这里描述的具体像素值。因此,尽管这里描述值128为用来指示编码条52内的文本字符的中心,但是可以代之以使用其它值。类似地,尽管像素行的红色颜色值用于这里描述的编码条52,但是可以代之以使用一个或者多个其它像素颜色值。
另外,如以上指出的那样,重要的是沿着线条渲染文本串的片段着色器能够确定每个文本字符的中心在纹理内何处,从而片段着色器可以确定文本字符的中心是否落在文本框的范围内或者当前在其中渲染文本字符的文本框的范围以外。如以上指出的一种确定字符的中心的方式可以是对纹理或者图像查找表本身、比如图3和3A中所示纹理或者图像查找表中的字符的中心编码,其中单个编码条用于单个文本字符串或者组。
然而使用其它编码技术,有可能通过在纹理内存储将作为各种不同文本串的部分(或者作为相同文本串的部分)而渲染的不同文本字符作为字形的集合来减少纹理或者文本串查找表的大小。此外,这样的更多编码技术需要提供用于每个文本串的第一编码数据,该第一编码数据包括用于文本串的每个文本字符的中心和/或宽度信息,并且包括指向特定的字形的第二编码数据,该字形将在文本串的每个文本字符位置用作文本字符。例如图8图示纹理200,该纹理存储用于三个不同文本串的编码信息202、204和206,其中这些文本串可以定义用于例如地图瓦片(tile)中的不同道路的标签或者名称。图8的文本编码信息202、204和206的示例线条可以例如定义文本串“Freemont Ave”、“Aurora Ave”和“First St”。可以例如提供与编码信息202、204和206关联的文本串中的每个文本串以在地图图像内沿着不同线条渲染。在这一情况下,编码信息的集合202、204和206中的每个的集合分别包括编码条202A、204A、206A,这些编码条具有表示文本串中的每个文本字符的中心的像素值和/或从每个特定的像素列到关联文本字符的中心的距离。编码条202A、204A和206A与图3和3A的编码条52相似或者相同。同样,仅为了示例,文本串的每个文本字符的中心由编码条中的小竖直线条指示。然而取代存储实际像素值的集合,该像素值的集合定义纹理中的紧接在编码条202A、204A、206A中的每个编码条以下的文本字符,在文本串编码信息的集合202、204和206中的每个集合内提供第二编码线条。在图8中图示为编码线条202B、204B和206B的这些第二编码线条实质上是指向在纹理200内存储的字形字段210内的位置的指针的集合。在字形字段210内的字形中的每个字形可以是在文本串编码信息202、204和206定义的文本串中的一个或者多个文本串中使用的单个文本字符。在这一情况下,可以在文本串编码信息202、204和206定义的相同或者不同文本串中使用字形字段210内的字形中的一个或者多个字形多于一次。
因此,在图8中所示编码技术中,每个文本串编码信息线条或者集合202、204和206包括形成为像素值的集合202A、204A、206A的第一编码数据的集合,该像素值的集合指示在关联文本串内的每个字符(或者字形)的宽度、间距和中心以及在关联文本串内的不同文本字符或者字形相对于彼此的相对间距。另外,每个文本串编码信息线条或者集合202、204和206包括第二像素线条或者集合202B、204B、206B,该第二像素线条或者集合定义如在字形字段210中存储的字形的位置或者定位,该字形定义用于在关联文本串内的该位置使用的特定的文本串。
可以在纹理200内存储第二或者更多编码线条202B、204B、206B作为与第一编码线条202A、204A、206A相邻、比如在第一编码线条202A、204A、206A以下的分离像素线条。在一个实施例中,第二编码数据线条202B、204B、206B可以包括例如在如在第一编码数据线条202A、204A、206A中定义的每个文本字符的中心开始的字形指针值的分离的集合。作为示例,每个字形指针值的集合可以包括四个编码的像素值,这些编码的像素值一起指向字形字段210中的特定的字形的位置。仅作为示例,可以在两个像素值(第一和第二像素值)的第一集合中存储如在字形字段210中存储的引用的字形的X位置,而可以在两个像素值(第三和第四像素值)的第二集合中存储如在字形字段210中存储的引用的字形的Y位置。作为更具体示例,可以通过在第一像素位置存储引用的字形的X值除以256并且在第二像素位置存储余数(X以256为模)来在第一和第二像素值中存储X坐标。以相似方式,可以通过在第三像素位置存储引用的字形的Y值除以256并且在第四像素位置存储余数(Y以256为模)来在第三和第四像素值中存储引用的字形的Y坐标。当然,可以代之以使用任何其它提供或者编码具有位置指针的像素值的方式,这些位置指针指向在纹理200内的其它位置(或者甚至指向在其中存储字形的不同纹理内的位置)。另外,字形指针引用的位置可以是关联字形的中心、字形位置的拐角、比如左上拐角、右下拐角或者字形的任何其它预定义位置。尽管如在纹理200中存储的字形可以是预定或者预定义大小,但是它们的大小也可以变化。在这后一种情况下,编码线条202A、204A、206A可以用来定义待恢复的字形的宽度,并且可以固定字形的高度。备选地,文本串信息202、204、206的第二编码线条202B、204B、206B也可以包括待获得的字形的大小。在另一实施例中,字形本身可以具有定义它们的大小的像素值的集合,并且可以首先恢复这一像素值的集合以确定在纹理内的与任何特定的字形关联的确切像素位置。
当然,如图8的示例中所示使用两个或者更多编码条实际上允许在文本串中的一个或者多个文本串中别处使用的每个文本字符或者字形存储于纹理200中仅一次,因为这一字形可以被相同后者不同文本编码条引用许多次。这一双编码技术节省或者减少在下载和存储用来执行在多个文本框的集合或者沿着多个不同线条渲染文本时或者在设备40内的处理器30a与30b之间发送这些纹理时对于纹理而需要的空间或者数据。另外,尽管在图8中图示第二数据编码线202B、204B、206B为分别设置于紧接或者略微在关联第一编码数据线条202A、204A、206A以下的像素行中,但是第二数据编码线202B、204B、206B可以在纹理200中存储于其它位置、比如在第一编码数据线条以上或者甚至作为用于第一编码数据线条的不同颜色字段的像素值的集合。例如,如果第一编码数据线条存储于像素位置行中,该像素位置行使用该像素行的红色像素值,则第二编码数据线条可以存储于这一相同像素行的蓝色或者绿色像素值中。
在一些情况下,如图9中所示,可能希望创建或者渲染具有重叠字符的文本串。在图9的示例中,“r”和“A”重叠,因为“A”的部分(即像素值的最左列)位于与“r”的像素值的最右列相同的X坐标上。关于图3、3A和8图示和描述的编码技术不能使用单个文本编码窗来渲染这样的文本,因为文本串内的文本字符的位置都在单个像素线条中被串行定义从而需要在一个文本字符的末端与相邻字符的开始之间的清晰过渡。
为了允许或者实现在公共文本串内渲染渲染重叠文本字符或者字形,可以修改关于图3、3A和8描述的编码技术以包括用于每个文本串的编码线条的集合。在图10的纹理250中图示这样的技术。在这一情况下,图示单个文本串252为包括两个不同编码线条技术254和256而每个编码线条包括关于图8描述的两个编码条。在这一情况下,(可以定义文本串“Freemont Ave”的)文本串信息252的第一字符260位于上编码线条的集合254中并且包括编码条260A,该编码条定义文本字符(在X方向上)的中心和从第一字符的中心的宽度或者距离,并且还包括第二编码线条260B,该第二编码线条指向在字形字段210内的将用于第一文本字符的字形的位置。然而现在文本串信息252的第二字符262位于下线条256中并且包括编码条262A,该编码条定义第二文本字符(在X方向上)的中心和从第二字符的中心的宽度或者距离,并且还包括第二编码线条262B,该第二编码线条指向在字形字段210内的将用于第二文本字符的字形的位置。如图10中所示,由于编码条260A和262A在纹理250的不同行上,所以它们可能当在图像上被渲染时具有重叠的像素位置或者像素列。因此,如图10中所示,第一字符260A的最右像素列与第二字符262A的最左像素列重叠。读取编码条的集合254和256的片段着色器仅需读取两个编码线条以识别用于文本串252的要被渲染的下一字符。片段着色器可以例如在编码线条的集合254和256之间交替从而寻找下一字符、可以读取两个编码线条的集合254和256并且基于下一检测到的中心位置确定下一字符(无论发现哪个编码线条的下一中心位置)。当然,可以在文本字符不重叠的情况下使用两个编码线条的集合254和256,在该情况下(1)编码线条的集合254和256之一将无信息、因此可以被忽略或者(2)用于两个编码线条254和256的相邻文本字符的编码条将不相互重叠。同样,如编码的数据的集合270和280在图10中所示,各自在其中具有多个编码数据的集合的多个文本串编码数据的集合可以与字形字段210一起存储于纹理250中。
图11图示纹理290,该纹理在文本字符像素位于与中心和宽度编码条52紧接相邻的情况下将两个编码线条用于单个文本串。具体而言,图11图示在图3的纹理中应用重叠编码数据的方式,该纹理不使用编码数据,该编码数据引用字形。具体而言,在图11的示例中,两个编码线条用来提供文本串“Freemont Ave.”的“F”和“r”以及作为文本串的最后两个字符的“e”和“.”的重叠。
当然,可以用任何数目的方式更改或者变化这里描述的文本渲染和文本编码技术以提供一种有能力沿着弯曲、例如多分段线条在文本串内渲染个别文本字符的图像渲染系统、比如地图渲染系统。
贯穿本说明书,多个实例可以实施描述为单个实例的部件、操作或者结构。虽然图示和描述一种或者多种方法的个别操作为单独操作,但是可以并行执行个别操作中的一个或者多个个别操作并且未要求按照所示顺序执行操作。可以实施在示例配置中作为分离部件而呈现的结构和功能作为组合的结构或者部件。相似地,可以实施作为单个部件而呈现的结构和功能作为单独部件。这些和其它变化、修改、添加以及改进落入这里的主题内容的范围内。
例如网络25可以包括但不限于LAN、MAN、WAN、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合。另外,尽管在图1中图示仅四个客户端设备以使描述简化和清楚,但是理解任何数目的客户端计算机或者显示设备被支持并且可以与服务器14通信。
此外,这里描述某些实施例为包括逻辑或者多个部件、模块或者机制。模块可以构成软件模块(例如在机器可读介质中或者在传输信号中体现的代码)或者硬件模块。硬件模块是能够执行某些操作的有形单元并且可以用某种方式来配置或者布置。在示例实施例中,一个或者多个计算机系统(例如独立客户端或者服务器计算机系统)或者计算机系统的一个或者多个硬件模块(例如处理器或者处理器组)可以被软件(例如应用或者应用部分)配置作为操作用于执行如这里描述的某些操作的硬件模块。
在各种实施例中,可以机械地或者电子地实施硬件模块。例如硬件模块可以包括被持久地配置(例如作为专用处理器、比如现场可编程门阵列(FPGA)或者专用集成电路(ASIC))用于执行某些操作的专用电路装置或者逻辑。硬件模块也可以包括被软件暂时配置用于执行某些操作的可编程逻辑或者电路装置(例如作为包含于通用处理器或者其它可编程处理器内)。将理解用于机械地、在专用和持久配置的电路装置中或者在暂时配置的电路装置(例如由软件配置)的决策可以由成本和时间考虑驱动。
因而,术语硬件应当被理解为涵盖有形实体、即被物理地构造、被持久配置(例如硬接线)或者被暂时配置(例如编程)用于以某种方式操作或者执行这里描述的某些操作的实体。考虑其中暂时配置(例如编程)硬件模块的实施例,无需在任何一个时间实例配置或者实例化硬件模块中的每个硬件模块。例如在硬件模块包括使用软件来配置的通用处理器时,通用处理器可以在不同时间被配置作为相应不同硬件模块。软件可以相应地配置处理器以例如在一个时间实例构成特定的硬件模块并且在不同时间实例构成不同硬件模块。
硬件和软件模块可以向其它硬件和/或软件模块提供信息和从其它硬件和/或软件模块接收信息。因而,描述的硬件模块可以视为被通信地耦合。在多个这样的硬件或者软件模块同时存在时,可以通过连接硬件模块的信号传输(例如通过适当电路和总线)实现通信。在其中在不同时间配置或者实例化多个硬件模块或者软件的实施例中,可以例如通过在这样的硬件或者软件模块有权访问的存储器结构中存储和取回信息来实现在多个硬件或者软件模块之间的通信。例如一个硬件或者软件模块可以执行操作并且在它通信地耦合到的存储器设备中存储该操作的输出。又一硬件或者软件模块然后可以在以后时间访问存储器设备以取回和处理存储的输出。硬件或者软件模块也可以发起与输入或者输出设备的通信并且可以对资源(例如信息汇集)操作。
这里描述的示例方法的各种操作可以至少部分由被(例如软件)暂时配置或者被持久配置用于执行相关操作的一个或者多个处理器执行。无论是暂时还是持久配置,这样的处理器可以构成操作用于执行一个或者多个操作或者功能的由处理器实施的模块。这里所指的模块可以在一些示例实施例中包括处理器实施的模块。
相似地,这里描述的方法或者例程可以至少部分由处理器实施。例如方法的操作中的至少一些操作可以由一个或者多个处理器或者由处理器实施的硬件模块执行。操作中的某些操作的执行可以分布于一个或者多个处理器之中、并非仅驻留于单个机器内、但是跨过多个机器来部署。在一些示例实施例中,一个或者多个处理器可以位于单个位置(例如位于家用环境、办公室环境内或者作为服务器群),而在其它实施例中,可以跨过多个位置分布处理器。
一个或者多个处理器也可以操作用于支持在“云计算”环境中或者作为“软件即服务”(SaaS)执行相关操作。例如操作中的至少一些操作可以由计算机组(作为包括处理器的机器的示例)执行,这些操作经由网络(例如因特网)和经由一个或者多个适当接口(例如应用程序接口(API)可访问。
操作中的某些操作的执行可以分布于一个或者多个处理器之中、并非仅驻留于单个机器内、但是跨过多个机器来部署。在一些示例实施例中,一个或者多个处理器或者由处理器实施的模块可以位于单个地理位置(例如在家庭环境、办公室环境或者服务器场内)。在其它示例实施例中,可以跨过多个地理位置分布一个或者多个处理器或者由处理器实施的模块。
在对作为位或者二进制数字信号存储于机器存储器(例如计算机存储器)内的数据的操作的算法或者符号表示方面呈现本说明书的一些部分。这些算法或者符号表示是数据处理领域普通技术人员用来向本领域其他技术人员传达他们的工作实质的技术的示例。如这里所用,“算法”或者“例程”是促成希望的结果的自一致操作序列或者相似处理。在本文中,算法、例程和操作涉及到对物理数量的物理操纵。通常但是并非必需,这样的数量可以采用能够由机器存储、访问、传送、组合、比较或者另外操纵的电、磁或者光学信号的形式。主要出于普遍用法的原因而使用诸如“数据”、“内容”、“位”、“值”、“元素”、“符号”、“字符”、“项”、“数”、“数值”等字眼来是指这些信号有时是方便的。然而这些字眼仅为方便标记并且将与适当物理数量关联。
除非另外具体陈述,这里使用诸如“处理”、“计算”、“运算”、“确定”、“呈现”、“显示”等字眼的讨论可以是指如下机器(例如计算机)的动作或者过程,该机器操纵或者变换在一个或者多个存储器(例如易失性存储器、非易失性存储器或者其组合)、寄存器或者接收、存储、传输或者显示信息的其它机器部件内表示为物理(例如电子、磁或者光学)数量的数据。
如这里所用,对“一个实施例”或者“实施例”的任何引用意味着结合该实施例描述的特定的元素、特征、结构或者特性包含于至少一个实施例中。短语“在一个实施例中”出现于说明书中的各处未必都是指相同实施例。
可以使用表达“耦合”和“连接”及其派生表达来描述一些实施例。例如可以使用术语“耦合”来描述一些实施例以指示两个或者更多元素相互直接物理或者电接触。然而术语“耦合”也可以意味着两个或者更多元素未相互直接接触、但是仍然相互配合或者交互。实施例在这一上下文中不受限制。
如这里所用,术语“包括”、“具有”或者其任何其它变化旨在于覆盖非穷举包括。例如包括元素列表的过程、方法、物品或者装置未必仅限于那些元素、但是可以包括未明确列举的或者这样的过程、方法、物品或者装置固有的其它元素。另外除非明确地相反陈述,“或者”是指包括意义的或者而不是穷举意义的或者。例如以下各项中的任一项满足条件A或者B:A为真(或者存在)并且B为假(或者不存在)、A为假(或者不存在)并且B为真以及A和B均为真(或者存在)。
此外,对“一个/一种”的使用用来描述这里的实施例的元素和部件。这样做仅为了方便并且给出本发明的一般意义。应当解读这一描述包括一个或者至少一个,并且单数除非明显的是它另有含义则也包括多个。
另外,附图仅为了示例而描绘一种地图渲染系统的优选实施例。本领域技术人员将从以下讨论容易认识可以运用这里所示结构和方法的备选实施例而未脱离这里描述的原理。
在阅读本公开内容时,本领域技术人员将理解用于如下系统和过程的更多附加备选结构和功能设计,该系统和过程用于使用这里公开的原理来渲染地图或者其它类型的图像。因此,尽管已经图示和描述具体实施例和应用,但是将理解公开的实施例不限于这里公开的精确构造和部件。可以在这里公开的方法和装置的布置、操作和细节上做出本领域技术人员将清楚的各种修改、改变和变化而未脱离在所附权利要求中定义的精神实质和范围。
Claims (116)
1.一种用于在显示设备上渲染图像的由计算机实施的方法,包括:
使用计算机设备来确定在所述图像内的线条,沿着所述线条渲染文本串,所述文本串在图像查找表内被存储为像素化的文本字符的集合;
使用所述计算机设备来确定与所述线条关联的多个线段和与每个线段关联的范围;
使用所述计算机设备来为所述多个线段中的每个线段形成文本框,所述文本框中的每个文本框被定向用于沿着关联的线段在竖立位置绘制文本;
使用所述计算机设备来选择所述文本框中的要在其中渲染所述文本串的文本字符的一个文本框;
使用所述计算机设备从在所述图像查找表内被存储为像素化的文本字符的集合的所述文本串选择所述文本字符中的一个文本字符;
使用所述计算机设备来确定所述文本字符中的所述一个文本字符的中心当在所述图像上在所述文本框中的所述一个文本框中被渲染时是否将在与所述文本框中的所述一个文本框关联的所述线段的所述范围内;以及
如果所述文本字符中的所述一个文本字符的中心当在所述文本框中的所述一个文本框中被渲染时将在与所述文本框中的所述一个文本框关联的所述线段的所述范围内,则使用所述计算机设备、使用所述文本框中的所述一个文本框在所述显示设备上渲染所述文本字符中的所述一个文本字符;并且如果所述文本字符中的所述一个文本字符的中心当在所述文本框中的所述一个文本框中被渲染时将不在与所述文本框中的所述一个文本框关联的所述线段的所述范围内,则不使用所述文本框中的所述一个文本框在所述显示设备上渲染所述文本字符中的所述一个文本字符。
2.根据权利要求1所述的由计算机实施的方法,还包括:如果所述文本字符中的所述一个文本字符的所述中心当在所述文本框中的所述一个文本框中被渲染时将不在与所述文本框中的所述一个文本框关联的所述线段的所述范围内,则选择所述多个文本框中的不同文本框作为所述文本框中的所述一个文本框以用于在所述显示设备上渲染所述文本字符中的所述一个文本字符中使用。
3.根据权利要求1所述的由计算机实施的方法,还包括:从在所述图像查找表内存储的所述文本串轮流选择所述文本字符中的每个文本字符,并且对于所述文本字符中的每个选择的一个文本字符,执行以下步骤:
使用所述计算机设备来确定所述文本字符中的所述选择的一个文本字符的所述中心当在所述文本框中的所述一个文本框中被渲染时是否将在与所述文本框中的所述一个文本框关联的所述线段的所述范围内,
如果所述文本字符中的所述选择的一个文本字符的所述中心当在所述文本框中的所述一个文本框中被渲染时将在与所述文本框中的所述一个文本框关联的所述线段的所述范围内,则使用所述计算机设备、使用所述文本框中的所述一个文本框在所述显示设备上渲染所述文本字符中的所述选择的一个文本字符,以及
如果所述文本字符中的所述选择的一个文本字符的所述中心当在所述文本框中的所述一个文本框中被渲染时将不在与所述文本框中的所述一个文本框关联的所述线段的所述范围内,则选择所述多个文本框中的不同文本框作为所述文本框中的所述一个文本框以用于在所述显示设备上渲染所述文本字符中的所述选择的一个文本字符中使用。
4.根据权利要求1所述的由计算机实施的方法,其中确定所述文本字符中的所述一个文本字符的所述中心当在所述文本框中的所述一个文本框中被渲染时是否将在与所述文本框中的所述一个文本框关联的所述线段的所述范围内包括读取用于所述文本字符中的所述一个文本字符的编码数据的集合,所述编码数据指定所述文本字符中的所述一个文本字符在至少一个方向上的所述中心。
5.根据权利要求3所述的由计算机实施的方法,其中读取用于所述文本字符中的所述一个文本字符的编码数据的集合包括读取编码数据,所述编码数据指定所述文本字符中的所述一个文本字符的宽度。
6.根据权利要求1所述的由计算机实施的方法,其中为所述多个线段中的每个线段形成文本框包括形成沿着所述线段中的关联线段的长度定向的在所述文本框中的每个文本框。
7.根据权利要求1所述的由计算机实施的方法,其中为所述多个线段中的每个线段形成文本框包括形成沿着所述线段中的关联线段的长度定向的、并且在所述关联线段的长度的方向上具有比所述关联线段的所述范围更大的长度的在所述文本框中的每个文本框。
8.根据权利要求7所述的由计算机实施的方法,其中为所述多个线段中的每个线段形成文本框包括形成所述文本框中的每个文本框,使得每个文本框的起始端在所述线段的起始端之前在所述关联线段的长度的方向上延伸预定距离,并且使得所述文本框的末端超过所述线段的末端在所述线段的方向上延伸所述预定距离。
9.根据权利要求8所述的由计算机实施的方法,其中所述预定距离是在所述图像查找表中存储的所述文本串的所述文本字符中的一个文本字符当在所述文本框中形成时的宽度的一半。
10.根据权利要求7所述的由计算机实施的方法,其中为所述多个线段中的每个线段形成文本框包括形成所述文本框中的每个文本框,使得所述文本框的高度与所述关联线段的方向正交地延伸预定距离。
11.根据权利要求10所述的由计算机实施的方法,其中所述文本框的高度是在所述图像查找表中存储的所述文本串的所述文本字符中的一个文本字符当在所述文本框中形成时的高度。
12.根据权利要求1所述的由计算机实施的方法,还包括:使用所述计算机设备内的片段着色器以确定所述文本字符中的所述一个文本字符的所述中心当在所述文本框中的所述一个文本框中被渲染时是否将在与所述文本框中的所述一个文本框关联的所述线段的所述范围内;并且如果所述文本字符中的所述一个文本字符当在所述文本框中的所述一个文本框中被渲染时将在与所述文本框中的所述一个文本框关联的所述线段的所述范围内,则使用所述文本框中的所述一个文本框在所述显示设备上渲染所述文本字符中的所述一个文本字符。
13.一种图像渲染引擎,包括:
通信网络接口;
处理器;
被耦合到所述处理器的存储器;
被耦合到所述处理器的显示设备;
在所述存储器中存储的第一例程,在所述处理器上执行以经由所述通信网络接口接收包括定义一个或者多个图像对象的数据的矢量数据的集合,并且从所述存储器获得一个或者多个文本串查找表,其中所述文本串查找表中的一个文本串查找表存储至少一个文本串的文本字符作为像素化的文本字符的集合以及编码数据,所述编码数据定义与所述文本串关联的多个文本字符中的每个文本字符的中心位置;
在所述存储器中存储的第二例程,在所述处理器上执行以确定与线条关联的多个线段和与每个线段关联的范围,将沿着所述线条渲染所述文本串;
在所述存储器中存储的第三例程,在所述处理器上执行以确定用于所述多个线段中的每个线段的文本框,所述文本框中的每个文本框被定向用于沿着关联线段在竖立位置绘制文本;以及
在所述存储器中存储的第四例程,在所述处理器上执行以:
选择所述文本框中的要在其中渲染所述文本串的文本字符的一个文本框;
选择所述文本串的所述文本字符中的下一文本字符的一个或者多个像素;
确定所述文本字符中的所述下一文本字符的中心当在所述图像上在所述文本框中的所述选择的一个文本框中被渲染时是否将在与所述文本框中的所述选择的一个文本框关联的所述线段的所述范围内;并且
如果所述文本字符中的所述一个文本字符的中心当在所述文本框中的所述选择的一个文本框中被渲染时将在与所述文本框中的所述选择的一个文本框关联的所述线段的所述范围内,则使用所述文本框中的所述一个文本框在所述显示设备上渲染所述文本字符中的所述一个文本字符的所述像素,并且如果所述文本字符中的所述一个文本字符的中心当在所述文本框中的所述一个文本框中被渲染时将不在与所述文本框中的所述一个文本框关联的所述线段的所述范围内,则不使用所述文本框中的所述一个文本框在所述显示设备上渲染所述文本字符中的所述一个文本字符的所述像素。
14.根据权利要求13所述的图像渲染引擎,其中所述第三例程包括顶点着色器。
15.根据权利要求13所述的图像渲染引擎,其中所述第四例程包括使用片段着色器的应用。
16.根据权利要求13所述的图像渲染引擎,其中所述第四例程轮流选择用于在所述图像查找表内存储的所述文本串的所述文本字符中的每个文本字符的像素,并且对于所述文本字符中的每个选择的一个文本字符:
确定所述文本字符中的所述选择的一个文本字符的所述中心当在于所述文本框中的所述一个文本框中被渲染时是否将在与所述文本框中的所述一个文本框关联的所述线段的所述范围内,
如果所述文本字符中的所述选择的一个文本字符的所述中心当在所述文本框中的所述一个文本框中被渲染时将在与所述文本框中的所述一个文本框关联的所述线段的所述范围内,则使用所述文本框中的所述一个文本框在所述显示设备上渲染所述文本字符中的所述选择的一个文本字符,并且
如果所述文本字符中的所述选择的一个文本字符的所述中心当在所述文本框中的所述一个文本框中被渲染时将不在与所述文本框中的所述一个文本框关联的所述线段的所述范围内,则选择所述多个文本框中的不同文本框作为所述文本框中的所述一个文本框以用于在所述显示设备上渲染所述文本字符中的所述选择的一个文本字符中使用。
17.根据权利要求13所述的图像渲染系统,其中所述第四例程通过以下操作来确定所述文本字符中的所述一个文本字符的所述中心当在所述文本框中的所述一个文本框中被渲染时是否将在与所述文本框中的所述一个文本框关联的所述线段的所述范围内:读取用于所述文本字符中的所述一个文本字符的编码数据的集合,所述编码数据指定所述文本字符中的所述一个文本字符在至少一个方向上的所述中心,并且使用所述文本字符中的所述一个文本字符的所述中心的位置以确定所述文本字符中的所述一个文本字符的所述中心当在所述文本框中的所述一个文本框中被渲染时是否将在与所述文本框中的所述一个文本框关联的所述线段的所述范围内。
18.根据权利要求13所述的图像渲染系统,其中所述第三例程通过形成沿着所述线段中的关联线段的长度定向的文本框来为所述多个线段中的每个线段形成文本框。
19.根据权利要求18所述的图像渲染系统,其中所述第四例程形成沿着所述线段中的关联线段的长度定向的、在所述文本框中的每个文本框,使得所述文本框中的每个文本框在所述关联线段的长度的方向上具有比所述关联线段的所述范围更大的长度。
20.一种用于在显示设备上在被渲染的图像内沿着线条渲染文本的方法,包括:
在计算机存储器中存储文本串查找表,所述文本串查找表包括与文本串关联的多个文本字符以及编码数据,所述编码数据定义与所述文本串关联的所述多个文本字符中的每个文本字符的中心位置;
确定与所述图像中的线条关联的多个线段和与每个线段关联的范围,将沿着所述线条渲染所述文本串;
为所述多个线段中的每个线段形成文本框,所述文本框中的每个文本框被定向用于在所述图像中沿着关联线段在竖立位置绘制文本;以及
对于所述文本串中的每个文本字符:
选择所述文本框中的要在其中渲染所述文本串的所述文本字符的一个文本框;
从所述文本串查找表读取所述编码数据并且确定所述文本字符的所述中心位置当在所述文本框中的所述选择的一个文本框中被渲染时是否将在与所述文本框中的所述选择的一个文本框关联的所述线段的所述范围内;并且
如果所述文本字符的所述中心位置当在所述文本框中的所述选择的一个文本框中被渲染时将在与所述文本框中的所述选择的一个文本框关联的所述线段的所述范围内,则使用所述文本框中的所述选择的一个文本框在所述显示设备上渲染所述图像中的所述文本字符,或者否则如果所述文本字符的所述中心位置当在所述文本框中的所述选择的一个文本框中被渲染时将不在与所述文本框中的所述选择的一个文本框关联的所述线段的所述范围内,则选择所述多个文本框中的不同文本框作为所述文本框中的所述选择的一个文本框。
21.根据权利要求20所述的沿着线条渲染文本的方法,其中从所述文本串查找表读取用于所述文本字符中的一个文本字符的所述编码数据包括读取编码数据,所述编码数据指定所述文本字符中的所述一个文本字符在沿着所述文本串的长度的方向上的所述中心位置。
22.根据权利要求21所述的沿着线条渲染文本的方法,其中从所述文本串查找表读取用于所述文本字符中的所述一个文本字符的所述编码数据包括读取编码数据,所述编码数据指定所述文本字符中的所述一个文本字符沿着所述文本串的长度的宽度。
23.根据权利要求20所述的沿着线条渲染文本的方法,其中为所述多个线段中的每个线段形成文本框包括形成沿着所述多个线段中的关联线段的长度定向的每个文本框。
24.根据权利要求20所述的沿着线条渲染文本的方法,其中为所述多个线段中的每个线段形成文本框包括形成沿着所述线段中的关联线段的长度定向的并且在所述关联线段的长度的方向上具有比所述关联线段的所述范围更大的长度的每个文本框。
25.根据权利要求24所述的沿着线条渲染文本的方法,其中为所述多个线段中的每个线段形成文本框包括形成每个文本框,使得每个文本框的起始端在所述线段的起始端之前在所述关联线段的长度的方向上延伸预定距离,并且使得每个文本框的末端超过所述关联线段的末端在所述线段的方向上延伸所述预定距离。
26.根据权利要求25所述的沿着线条渲染文本的方法,其中所述预定距离是与所述文本串关联的所述多个文本字符中的一个文本字符在所述文本框中形成时的宽度的一半。
27.根据权利要求25所述的沿着线条渲染文本的方法,其中为所述多个线段中的每个线段形成文本框包括形成每个文本框,使得所述文本框的高度与关联线段的方向正交地延伸预定距离。
28.根据权利要求27所述的沿着线条渲染文本的方法,其中所述文本框的高度是与所述文本串关联的所述多个文本字符中的一个文本字符在所述文本框中形成时的高度。
29.根据权利要求20所述的沿着线条渲染文本的方法,其中在计算机存储器中存储所述文本串查找表包括存储编码数据作为用于所述文本串的每个像素列的像素值,所述编码数据定义与所述文本串关联的所述多个文本字符中的每个文本字符的中心位置。
30.根据权利要求20所述的沿着线条渲染文本的方法,其中在计算机存储器中存储所述文本串查找表包括存储编码数据作为用于所述文本串的每个像素列的像素值,所述编码数据定义与所述文本串关联的所述多个文本字符中的每个文本字符的中心位置,其中特定的像素值用来定义文本字符的中心位置,并且从所述特定的像素值增加或者减小的像素值用来指示在文本字符的每个像素列到所述文本字符的所述中心位置的距离。
31.根据权利要求20所述的沿着线条渲染文本的方法,其中在计算机存储器中存储所述文本串查找表包括在所述文本串查找表中的字形字段内存储字形的集合,并且存储用于在所述文本串内的每个文本字符的进一步的编码数据,所述进一步的编码数据引用所述字形中的一个字形以在所述文本串内的位置用作所述文本字符。
32.根据权利要求31所述的沿着线条渲染文本的方法,包括在所述文本串查找表中存储所述编码数据和所述进一步的编码数据为按照位置相互相关。
33.一种地图图像渲染系统,包括:
数据库,存储与地图有关的矢量图像数据,所述矢量图像数据包括定义一个或者多个图像对象和一个或者多个文本串查找表的数据,其中所述文本串查找表中的一个文本串查找表存储与要被渲染的至少一个文本串关联的文本字符作为像素化的文本字符的集合以及编码数据,所述编码数据定义与所述文本串关联的多个文本字符中的每个文本字符的中心位置;以及
地图图像渲染设备,通信地被耦合到所述数据库以使用所述与地图有关的矢量图像数据并且使用所述与地图有关的矢量图像数据来渲染地图图像,所述地图图像渲染设备包括:
处理器;
被耦合到所述处理器的存储器;
被耦合到所述处理器的显示设备;
在所述存储器上存储的一个或者多个应用,当在所述处理器上被执行时:
确定与线条关联的多个线段和与每个线段关联的范围,将沿着所述线条渲染文本串;
为所述多个线段中的每个线段形成文本框,所述文本框中的每个文本框被定向用于在所述图像中沿着关联线段在竖立位置绘制文本并且具有由所述关联线段的所述范围定义的范围值的集合;并且
对于在所述文本串中的每个文本字符:
(1)从所述文本串查找表读取所述编码数据;
(2)确定具有范围值的所述文本框,所述文本字符的所述中心位置将在所述文本字符在所述图像上被渲染时落入所述范围值中;并且
(3)使用所述文本框中的所述确定的文本框在所述显示设备上渲染所述文本字符作为所述图像的部分。
34.根据权利要求33所述的地图图像渲染系统,其中所述编码数据还定义与所述文本串关联的所述文本字符中的每个文本字符的宽度。
35.根据权利要求33所述的地图图像渲染系统,其中所述一个或者多个应用包括一个或者多个图像着色器,所述一个或者多个图像着色器通过形成沿着所述线段中的关联线段的长度定向的、并且在所述关联线段的长度的方向上具有比所述关联线段的所述范围更大的长度的在所述文本框中的每个文本框来为所述多个线段中的每个线段形成文本框。
36.根据权利要求35所述的地图图像渲染系统,其中所述一个或者多个图像着色器为所述多个线段中的每个线段形成文本框,使得每个文本框的起始端在所述线段的起始端之前在所述关联线段的长度的方向上延伸预定距离,并且使得所述文本框的末端超过所述线段的末端在所述线段的方向上延伸所述预定距离。
37.根据权利要求33所述的地图图像渲染系统,其中所述文本串查找表中的一个文本串查找表存储所述编码数据作为用于文本串的每个像素列的像素值,所述编码数据定义与所述文本串关联的所述文本字符中的每个文本字符的中心位置,其中特定的像素值用来定义文本字符的中心位置,并且从所述特定的像素值增加或者减小其他像素值以指示在文本字符的每个像素列处的到所述文本字符的所述中心位置的距离。
38.根据权利要求33所述的地图图像渲染系统,其中所述文本串查找表中的一个文本串查找表还在所述文本串查找表中的字形字段内存储字形的集合,并且存储用于与所述文本串关联的每个文本字符的进一步的编码数据,所述进一步的编码数据引用所述字形中的一个字形以在所述文本串内的位置用作所述文本字符。
39.根据权利要求33所述的地图图像渲染系统,其中所述一个或者多个图像着色器通过以下操作来确定具有范围值的所述文本框,所述文本字符的所述中心位置将在所述文本字符在所述图像上被渲染时落入所述范围值中:
选择所述文本框中的要在其中渲染所述文本串的所述文本字符的一个文本框,
确定所述文本字符的所述中心位置当在所述文本框中的所述选择的一个文本框中被渲染时是否将在与所述文本框中的所述选择的一个文本框关联的所述线段的所述范围内,并且
如果所述文本字符的所述中心位置当在所述文本框中的所述选择的一个文本框中被渲染时将在与所述文本框中的所述选择的一个文本框关联的所述线段的所述范围内,则使用所述文本框中的所述选择的一个文本框在所述显示设备上渲染所述图像中的所述文本字符,或者否则如果所述文本字符的所述中心位置当在所述文本框中的所述选择的一个文本框中被渲染时将不在与所述文本框中的所述选择的一个文本框关联的所述线段的所述范围内,则选择所述多个文本框中的不同文本框作为所述文本框中的所述选择的一个文本框。
40.一种用于在显示设备上渲染文本图像的由计算机实施的方法,包括:
使用计算机设备来确定要在图像中渲染的文本串,所述文本串在图像查找表内被存储为像素化的文本字符的集合;
使用所述计算机设备来确定在与如在所述图像查找表内存储的所述文本串的文本字符关联的一个或者多个位置的像素以分析以用于在所述图像内的特定的位置渲染;
使用所述计算机设备从所述图像查找表读取与所述文本串的所述文本字符关联的编码数据以确定所述图像查找表内的所述文本字符的中心位置;并且
使用所述计算机设备基于所述图像查找表内的所述文本字符的所述中心位置的位置在所述图像内的所述特定的位置渲染在所述文本串的所述文本字符内位于所述一个或者多个位置的所述像素。
41.根据权利要求40所述的由计算机实施的方法,其中基于所述图像查找表内的所述文本字符的所述中心位置的位置在所述图像内的所述特定的位置渲染在所述文本串的所述文本字符内位于所述一个或者多个位置的所述像素包括:确定所述文本字符的所述中心位置当在所述图像上的文本框中被渲染时是否将在所述文本框的范围内;并且在所述文本字符的中心当在所述图像上的所述文本框中被渲染时将在所述文本框的所述范围内时,在所述图像内的所述特定的位置渲染在所述文本串的所述文本字符内位于所述一个或者多个位置的所述像素。
42.根据权利要求40所述的由计算机实施的方法,还包括:在所述文本字符的所述中心当在所述图像上的所述文本框中被渲染时将在所述文本框的所述范围以外时,不在所述图像内的所述特定的位置渲染在所述文本串的所述文本字符内位于所述一个或者多个位置的所述像素。
43.根据权利要求40所述的由计算机实施的方法,其中读取与所述文本字符关联的编码数据包括读取指定所述文本字符的宽度的编码数据。
44.根据权利要求40所述的由计算机实施的方法,其中读取与所述文本字符关联的编码数据包括读取为所述文本字符的特定的像素列存储的编码数据,所述编码数据指定从所述文本字符的所述特定的像素列到在所述文本字符的所述中心的像素列的距离。
45.根据权利要求40所述的由计算机实施的方法,其中读取与所述文本字符关联的编码数据包括读取在与在所述图像查找表中存储的所述文本串的所述文本字符的所述像素相邻的位置在所述图像查找表中存储的编码数据。
46.根据权利要求40所述的由计算机实施的方法,其中所述文本串的所述文本字符存储在所述图像查找表中作为像素字段,所述像素字段具有用于所述文本串的所述文本字符的多个像素行和多个像素列,其中所述编码数据被存储作为与所述像素字段相邻的编码数据行,并且其中读取与所述文本串的所述文本字符关联的所述编码数据以确定所述图像查找表内的文本字符的中心位置包括从所述编码数据行的、在与文本字符的特定的像素列相同的列中的位置读取用于所述文本字符的所述特定的像素列的编码数据。
47.根据权利要求40所述的由计算机实施的方法,其中所述图像查找表是二维纹理地图。
48.一种图像渲染引擎,包括:
处理器;
被耦合到所述处理器的存储器;
被耦合到所述处理器的显示设备;
在所述存储器中存储的文本串查找表,包括作为像素化的文本字符的集合存储的至少一个文本串的文本字符并且包括编码数据,所述编码数据定义与所述文本串关联的多个文本字符中的每个文本字符的中心位置;
在所述存储器中存储的第一例程,在所述处理器上执行以从所述文本串查找表读取与所述文本串内的所述文本字符中的一个文本字符关联的一个或者多个像素并且从所述文本串查找表读取与所述文本字符中的所述一个文本字符关联的所述编码数据;以及
在所述存储器中存储的第二例程,在所述处理器上执行以使用与所述文本字符中的所述一个文本字符关联的所述编码数据来确定如在所述文本串查找表内存储的所述文本字符中的所述一个文本字符的中心。
49.根据权利要求48所述的图像渲染引擎,还包括:第三例程,被存储于所述存储器中并且在所述处理器上执行以基于编码数据在所述显示设备上的图像内的特定的位置渲染在所述文本串的所述文本字符中的所述一个文本字符内位于一个或者多个位置的像素,所述编码数据定义所述文本串查找表内的所述文本字符中的所述一个文本字符的所述中心位置的位置。
50.根据权利要求49所述的图像渲染引擎,其中所述第三例程通过以下操作来基于所述文本串查找表内的所述文本字符中的所述一个文本字符的所述中心位置的位置在所述图像内的所述特定的位置渲染在所述文本串的所述文本字符中的所述一个文本字符内位于所述一个或者多个位置的所述像素:确定所述文本字符中的所述一个文本字符的所述中心位置当在所述图像上的文本框中被渲染时是否将在所述文本框的范围内;并且在所述文本字符中的所述一个文本字符的所述中心当在所述图像上的所述文本框中被渲染时将在所述文本框的所述范围内时在所述图像内的所述特定的位置渲染在所述文本串的所述文本字符中的所述一个文本字符内位于所述一个或者多个位置的所述像素。
51.根据权利要求48所述的图像渲染引擎,其中与每个文本字符关联的所述编码数据包括指定所述文本字符的宽度的编码数据。
52.根据权利要求48所述的图像渲染引擎,其中与每个文本字符关联的所述编码数据在所述文本字符中的每个文本字符的像素列的集合的每个像素列处包括编码数据,所述编码数据指定从所述编码数据的所述像素列到关联文本字符的中心像素列的距离。
53.根据权利要求48所述的图像渲染引擎,其中与所述文本串查找表中的每个文本字符关联的所述编码数据包括在所述文本串查找表中的与所述编码数据与之关联的所述文本字符的所述像素相邻的位置存储的编码数据。
54.根据权利要求53所述的图像渲染引擎,其中与所述文本串查找表中的每个文本字符关联的所述编码数据包括用于在所述文本串查找表的与文本字符的特定的像素列相同的列中存储的所述文本字符的所述特定的像素列的编码数据。
55.根据权利要求48所述的图像渲染引擎,其中所述文本字符被存储于所述文本串查找表中作为像素字段,所述像素字段具有用于所述文本串的所述文本字符的多个像素行和多个像素列,其中所述编码数据被存储作为与所述像素字段相邻的编码数据行,使得用于文本字符的特定的像素列的所述编码数据被存储于与所述特定的像素列相同的像素列中。
56.根据权利要求48所述的图像渲染引擎,其中所述文本串查找表包括将被渲染为文本串的多个文本字符,其中每个文本字符被存储于所述文本串查找表中作为像素字段,所述像素字段具有用于每个文本字符的多个像素行和多个像素列,其中用于特定的文本字符的编码数据被存储于所述文本串查找表中与用于所述特定的文本字符的所述像素字段相邻。
57.根据权利要求56所述的图像渲染引擎,其中用于每个文本字符的所述编码数据被存储于在用于每个文本字符的所述像素字段以上的行中。
58.根据权利要求56所述的图像渲染引擎,其中存储所述文本串中的文本字符作为单个像素字段线条,而用于每个文本字符的所述像素字段共享所述文本串查找表中的至少一个公共行、但是不具有任何重叠的像素列。
59.根据权利要求56所述的图像渲染引擎,其中存储所述文本串中的文本字符作为两个或者更多像素字段线条而用于相同线条中的每个文本字符的所述像素字段共享所述图像查找表中的至少一个公共像素行、但是不具有任何重叠的像素列、并且不同像素字段线条中的文本字符不共享所述文本串查找表的任何像素行。
60.根据权利要求59所述的图像渲染引擎,其中用于所述像素字段线条中的第一像素字段线条中的至少一个文本字符的像素字段包括与用于所述像素字段线条中的第二像素字段线条中的不同的文本字符的像素列重叠的像素列。
61.根据权利要求60所述的图像渲染引擎,其中所述至少一个文本字符和所述不同的文本字符是所述文本串中的相邻的文本字符。
62.一种创建文本串查找表的方法,包括:
在计算机存储器中、在定义所述文本串查找表的存储器位置存储文本串的文本字符的集合作为像素化的文本字符的集合,使得用于每个文本字符的多个像素被存储于所述存储器中;以及
在计算机存储器中、在定义所述文本串查找表的存储器位置存储用于每个文本字符的编码数据,所述编码数据定义所述文本串的所述文本字符的集合的每个文本字符的中心位置,用于所述文本字符集合的每个文本字符的所述编码数据在所述存储器内的定义所述文本串查找表的位置上与所述编码数据与之关联的所述文本字符的所述像素协调。
63.根据权利要求62所述的方法,其中存储用于每个文本字符的所述编码数据包括存储指定每个文本字符的宽度的编码数据。
64.根据权利要求62所述的方法,其中存储用于每个文本字符的所述编码数据包括存储编码数据,所述编码数据指定到每个文本字符的不同的像素位置的集合中的每个像素位置的所述文本字符的中心的距离。
65.根据权利要求62所述的方法,其中存储用于每个文本字符的所述编码数据包括在每个文本字符的像素列的集合的每个像素列存储编码数据,所述编码数据指定从所述编码数据的所述像素列到所述文本字符的中心像素列的距离。
66.根据权利要求62所述的方法,其中存储用于每个文本字符的所述编码数据包括存储在所述存储器中的定义所述文本串查找表的、与所述编码数据与之关联的所述文本字符的所述像素相邻的位置存储的编码数据。
67.根据权利要求66所述的方法,其中在定义所述文本串查找表的所述存储器中存储用于每个文本字符的所述编码数据包括在定义所述文本串查找表的所述存储器的与文本字符的特定的像素列相同的列中存储用于所述文本字符的所述特定的像素列的编码数据。
68.根据权利要求62所述的方法,其中在定义所述文本串查找表的所述存储器中存储所述文本串的所述文本字符的集合作为像素化的文本字符的集合包括在定义所述文本串查找表的所述存储器中存储所述文本字符作为像素字段,所述像素字段具有用于所述文本串的所述文本字符的多个像素行和多个像素列,并且其中存储所述编码数据包括存储所述编码数据作为与所述像素字段相邻的编码数据行,使得用于文本字符的特定的像素列的所述编码数据被存储于与所述特定的像素列相同的像素列中。
69.根据权利要求62所述的方法,其中所述文本串包括要被渲染为所述文本串的多个文本字符,其中每个文本字符被存储于定义所述文本串查找表的所述存储器中作为像素字段,所述像素字段具有用于每个文本字符的多个像素行和多个像素列,并且其中用于特定的文本字符的编码数据被存储于所述文本串查找表中与用于所述特定的文本字符的所述像素字段相邻。
70.根据权利要求69所述的方法,其中用于每个文本字符的所述编码数据被存储于在用于每个文本字符的所述像素字段以上的行中。
71.根据权利要求69所述的方法,其中所述文本串中的文本字符被存储于单个像素字段线条中,而用于每个文本字符的所述像素字段共享定义所述文本串查找表的所述存储器中的至少一个公共行、但是不具有任何重叠的像素列。
72.根据权利要求69所述的方法,其中所述文本串中的所述文本字符被存储于两个或者更多像素字段线条中,而用于相同线条中的每个文本字符的所述像素字段共享所述图像查找表中的至少一个公共像素行、但是不具有任何重叠的像素列、并且不同的像素字段线条中的文本字符不共享所述文本串查找表的任何像素行。
73.根据权利要求72所述的方法,其中用于所述像素字段线条中的一个像素字段线条中的至少一个文本字符的像素字段包括与用于所述像素字段线条中的另一像素字段线条中的不同的文本字符的像素列重叠的像素列。
74.根据权利要求73所述的方法,其中所述至少一个文本字符和所述不同的文本字符是所述文本串中的相邻的文本字符。
75.一种用于在显示设备上渲染文本图像的由计算机实施的方法,包括:
使用计算机设备来访问图像查找表,所述图像查找表具有用于与要在图像中被渲染的文本串关联的一个或者多个文本字符的编码的数据的集合;
使用计算机设备从所述图像查找表读取所述编码的数据的集合以确定用于与所述文本串关联的所述文本字符中的一个文本字符的第一编码数据和第二编码数据,用于所述文本字符中的所述一个文本字符的所述第一编码数据定义关于所述文本字符在所述文本串中的位置的信息,并且用于所述文本字符中的所述一个文本字符的所述第二编码数据定义对所述图像查找表中的像素字段的引用,所述像素字段存储像素值的集合,所述像素值的集合定义将针对所述文本字符中的所述一个文本字符被渲染的所述图像;
使用所述计算机设备根据如在所述图像查找表内存储的用于所述文本字符中的所述一个文本字符的引用的像素字段来确定用于所述文本字符中的所述一个文本字符的像素值以分析在所述图像内的特定的位置的渲染;
使用所述计算机设备基于用于所述文本字符中的所述一个文本字符的所述第一编码数据来确定在由用于所述文本字符中的所述一个文本字符的所述第二编码数据定义的所述像素字段中存储的所述文本字符中的所述一个文本字符的中心位置;以及
使用所述计算机设备基于所述文本字符中的所述一个文本字符的所述中心位置的位置在所述图像内的特定的位置渲染所述文本字符中的所述一个文本字符的像素。
76.根据权利要求75所述的由计算机实施的方法,其中基于所述文本字符中的所述一个文本字符的所述中心位置的位置在所述图像内的所述特定的位置渲染所述文本字符中的所述一个文本字符的所述像素包括:确定所述文本字符中的所述一个文本字符的所述中心位置当在所述图像上的文本框中被渲染时是否将在所述文本框的范围内;并且在所述文本字符中的所述一个文本字符的所述中心当在所述图像上的所述文本框中被渲染时将在所述文本框的所述范围内时,在所述图像内的所述特定的位置渲染所述文本字符中的所述一个文本字符的所述像素。
77.根据权利要求75所述的由计算机实施的方法,还包括:在所述文本字符中的所述一个文本字符的所述中心当在所述图像上的所述文本框中被渲染时将在所述文本框的所述范围以外时,不在所述图像内的所述特定的位置渲染所述文本字符中的所述一个文本字符的所述像素。
78.根据权利要求75所述的由计算机实施的方法,其中读取所述编码数据的集合包括读取指定所述文本字符的宽度的所述第一编码数据。
79.根据权利要求75所述的由计算机实施的方法,其中读取所述编码数据的集合包括读取为所述文本字符中的所述一个文本字符的特定的像素列存储的所述第一编码数据,所述第一编码数据指定从所述文本字符中的所述一个文本字符的所述特定的像素列到在所述文本字符中的所述一个文本字符的所述中心的像素列的距离。
80.根据权利要求75所述的由计算机实施的方法,其中读取所述编码数据的集合包括读取在所述图像查找表中的与所述第二编码数据相邻的位置存储的第一编码数据。
81.根据权利要求75所述的由计算机实施的方法,其中读取所述编码数据的集合包括读取在所述图像查找表的具有第一编码数据信息的行中存储的所述第一编码数据,所述第一编码数据信息为所述图像查找表的多列中的每列定义从列位置到所述文本字符中的所述一个文本字符的所述中心的列位置的距离。
82.根据权利要求81所述的由计算机实施的方法,其中读取所述编码数据的集合包括从所述图像查找表的与所述第一编码数据的所述行关联的行读取所述第二编码数据,所述第二编码数据具有相对于所述第一编码数据的所述列中的一列的固定位置。
83.根据权利要求81所述的由计算机实施的方法,其中读取所述编码数据的集合包括从所述图像查找表的与所述第一编码数据的所述行关联的行读取所述第二编码数据,所述第二编码数据在所述图像查找表的列开始,所述第一编码数据指示在所述列是所述文本字符的中心列。
84.根据权利要求75所述的由计算机实施的方法,其中用于所述文本字符中的所述一个文本字符的所述第一编码数据被存储于跨越所述图像查找表的多列的第一编码数据行,并且其中用于所述文本字符中的所述一个文本字符的所述第二编码数据被存储于跨越所述文本图像查找表的多列的第二编码数据行,所述多列定义所述第一编码数据所使用的所述图像查找表的所述多列的子集,并且其中读取与所述文本字符中的所述一个文本字符关联的所述第一编码数据以确定述所述文本字符中的所述一个文本字符的中心位置包括读取用于所述文本字符中的所述一个文本字符的特定的像素列的第一编码数据,所述特定的像素列位于由所述文本字符中的所述一个文本字符的所述第二编码数据定义的所述像素字段中。
85.根据权利要求75所述的由计算机实施的方法,其中所述图像查找表是二维纹理地图。
86.一种图像渲染引擎,包括:
处理器;
被耦合到所述处理器的存储器;
被耦合到所述处理器的显示设备;
在所述存储器中存储的文本串查找表,包括字形的集合和一个或者多个编码数据分节,其中存储每个字形作为定义与文本字符关联的可显示图像的像素字段,并且其中每个编码数据分节定义将在图像中被渲染的文本串,其中每个编码数据分节包括一个或者多个字符编码数据的集合,而每个字符编码数据的集合包括第一编码数据和第二编码数据,所述第一编码数据定义关于所述文本串中的特定的文本字符的位置的信息,所述第二编码数据定义对所述字形中的一个字形的引用以定义所述文本串中的所述特定的文本字符的标识;以及
在所述存储器中存储的例程,在所述处理器上执行以读取用于文本字符的特定的字符编码数据的集合的所述第一编码数据和所述第二编码数据以确定以字形存储的一个或者多个像素的位置,所述字形与在要在图像中渲染的所述文本串内的所述文本字符关联。
87.根据权利要求86所述的图像渲染引擎,其中所述例程使用与所述特定的字符编码数据的集合关联的所述第一编码数据来确定所述第二编码数据所引用的所述字形的所述文本字符的中心。
88.根据权利要求86所述的图像渲染引擎,包括:在所述存储器中存储的又一例程,在所述处理器上执行以基于所述第一编码数据在所述显示设备上在图像内的特定的位置渲染在所述字形中的一个字形的所述像素字段内位于一个或者多个位置的像素,所述第一编码数据定义所述第二编码数据所引用的所述文本字符的所述中心位置的位置。
89.根据权利要求88所述的图像渲染引擎,其中所述又一例程通过以下操作来基于所述第一编码数据在所述图像内的所述特定的位置渲染在所述字形中的所述一个字形的所述像素字段内位于所述一个或者多个位置的所述像素:确定所述文本字符的所述中心位置当在所述图像上的文本框中被渲染时是否将在所述文本框的范围内;并且在所述文本字符的所述中心当在所述图像上的所述文本框中被渲染时将在所述文本框的所述范围内时,在所述图像内的所述特定的位置渲染在所述字形中的所述一个字形的所述像素字段内位于所述一个或者多个位置的所述像素。
90.根据权利要求86所述的图像渲染引擎,其中所述第一编码数据包括指定由字形定义的文本字符的宽度的编码数据。
91.根据权利要求86所述的图像渲染引擎,其中用于特定的文本字符的所述第一编码数据在用于所述特定的文本字符的像素列的集合中的每个像素列处包括第一编码数据,所述第一编码数据指定从所述第一编码数据的所述像素列到用于所述特定的文本字符的由所述第二编码数据引用的字形定义的所述特定的文本字符的中心像素列的距离。
92.根据权利要求86所述的图像渲染引擎,其中所述文本串中的每个文本字符的所述第一编码数据被存储于在所述文本串查找表中、与每个文本字符的所述第二编码数据相邻的位置。
93.根据权利要求86所述的图像渲染引擎,其中所述编码数据的集合分节中的一个编码数据的集合分节的所述文本字符中的一个文本字符的所述第二编码数据涉及与所述编码数据的集合分节中的所述一个编码数据的集合分节的所述文本字符中的不同的文本字符的所述第二编码数据相同的字形。
94.根据权利要求86所述的图像渲染引擎,其中所述编码数据的集合分节中的一个编码数据的集合分节的所述文本字符中的一个文本字符的所述第二编码数据涉及与所述编码数据的集合分节中的第二编码数据的集合分节的所述文本字符中的一个文本字符的所述第二编码数据相同的字形。
95.根据权利要求86所述的图像渲染引擎,其中所述编码数据的分节集合中的每个编码数据的分节集合包括在所述文本串查找表的行中存储的所述第一编码数据,所述第一编码数据对于所述文本串查找表的多列中的每列定义从列位置到由所述第二编码数据引用的所述文本字符的像素列的中心的列位置的距离。
96.根据权利要求95所述的图像渲染引擎,其中所述编码数据的集合分节中的每个编码数据的集合分节包括在所述文本串查找表中的相对于所述第一编码数据的所述列中的一列的固定位置中存储的所述第二编码数据。
97.根据权利要求96所述的图像渲染引擎,其中第二编码数据在一列处在所述文本串查找表的列位置开始被存储,所述列被所述第一编码数据指示为文本字符的所述中心位置。
98.根据权利要求86所述的图像渲染引擎,其中用于所述文本字符中的一个文本字符的所述第一编码数据被存储于跨越所述文本串查找表的多列的第一编码数据行中,并且其中用于所述文本字符中的所述一个文本字符的所述第二编码数据被存储于跨越所述文本串查找表的多列的第二编码数据行中,所述多列定义所述第一编码数据所使用的所述文本串查找表的所述多列的子集,并且其中用于所述文本字符中的所述一个文本字符的所述第一编码数据定义位于所述文本字符中的所述一个文本字符的所述第二编码数据所定义的所述字形的所述像素字段中的所述文本字符中的所述一个文本字符的中心位置。
99.根据权利要求86所述的图像渲染引擎,其中用于每个文本字符的所述第一编码数据被存储于所述文本串查找表的在用于每个文本字符的所述第二编码数据以上的行中。
100.根据权利要求86所述的图像渲染引擎,其中用于编码数据分节中的一个编码数据分节的所述字符编码数据的集合被存储作为单个字符编码数据的集合的线条,而所述编码数据分节中的所述一个编码数据分节内的用于每个文本字符的所述第一编码数据共享所述文本串查找表中的至少一个公共行、但是不具有在所述文本串查找表中的任何重叠的列。
101.根据权利要求86所述的图像渲染引擎,其中用于编码数据分节中的一个编码数据分节的所述字符编码数据的集合被存储作为两个或者更多字符编码数据的集合线条,而用于在相同的字符编码数据的集合线条中的每个文本字符的所述第一编码数据共享所述文本串查找表中的至少一个公共行、但是不具有所述文本串查找表中的任何重叠的列、并且用于在不同的字符编码数据的集合线条中的每个文本字符的所述第一编码数据不共享所述文本串查找表的任何行。
102.根据权利要求101所述的图像渲染引擎,其中用于在所述字符编码数据的集合线条中的第一字符编码数据的集合线条中的至少一个文本字符的第一编码数据包括与在所述字符编码数据的集合线条中的第二字符编码数据的集合线条中的不同的文本字符的第一编码数据的列重叠的列。
103.根据权利要求101所述的图像渲染引擎,其中所述至少一个文本字符和所述不同的文本字符是在由所述编码数据分节定义的所述文本串中的相邻的文本字符。
104.一种创建文本串查找表的方法,包括:
在计算机存储器中的定义所述文本串查找表的存储器位置存储字形的集合,其中每个字形被存储为像素字段,所述像素字段定义与文本字符关联的可显示图像,使得用于每个字形的多个像素被存储于所述存储器中;并且
在所述计算机存储器中的定义所述文本串查找表的存储器位置存储一个或者多个编码数据分节,其中每个编码数据分节定义将在图像中被渲染的文本串,并且其中每个编码数据分节包括一个或者多个字符编码数据的集合,而每个字符编码数据的集合定义所述文本串的文本字符并且包括第一编码数据和第二编码数据,所述第一编码数据定义关于所述文本串中的文本字符的位置的信息,所述第二编码数据定义对所述字形中的一个字形的引用以定义所述文本串中的所述文本字符的标识。
105.根据权利要求104所述的方法,其中存储用于每个文本字符的所述第一编码数据包括存储第一编码数据,所述第一编码数据定义所述文本串的所述文本字符的中心位置,用于所述字符编码数据的集合中的每个字符编码数据的集合的所述第一编码数据在所述存储器内的定义所述文本串查找表的位置上与相同的所述字符编码数据的集合的所述第二编码数据协调。
106.根据权利要求104所述的方法,其中存储用于每个文本字符的所述第一编码数据包括存储第一编码数据,所述第一编码数据指定到每个文本字符的不同像素位置的集合中的每个像素位置的文本字符的中心的距离。
107.根据权利要求104所述的方法,其中存储用于每个文本字符的所述第一编码数据包括在用于所述特定的文本字符的像素列的集合的每个像素列处存储编码数据,所述编码数据指定从所述编码数据的所述像素列到由用于所述特定的文本字符的所述第二编码数据引用的字形定义的所述特定的文本字符的中心像素列的距离。
108.根据权利要求104所述的方法,其中存储用于每个文本字符的所述第一编码数据包括在所述文本串查找表中的与每个文本字符的所述第二编码数据相邻的位置存储所述文本串中的每个文本字符的所述第一编码数据。
109.根据权利要求104所述的方法,其中存储所述编码数据的集合分节中的一个编码数据的集合分节的所述文本字符中的一个文本字符的所述第二编码数据涉及与所述编码数据的集合分节中的所述一个编码数据的集合分节的所述文本字符中的不同的文本字符的所述第二编码数据相同的字形。
110.根据权利要求104所述的方法,其中存储所述编码数据的集合分节中的一个编码数据的集合分节的所述文本字符中的一个文本字符的所述第二编码数据涉及与所述编码数据的集合分节中的第二编码数据的集合分节的所述文本字符中的一个文本字符的所述第二编码数据相同的字形。
111.根据权利要求104所述的方法,其中存储所述编码数据的分节集合中的每个编码数据的分节集合包括在所述文本串查找表的行中存储所述第一编码数据,所述第一编码数据对于所述文本串查找表的多列中的每列定义从列位置到由所述第二编码数据引用的所述文本字符的像素列的中心的列位置的距离。
112.根据权利要求111所述的方法,其中存储所述编码数据的集合分节中的每个编码数据的集合分节包括在所述文本串查找表中的相对于所述第一编码数据的所述列中的一列的固定位置中存储所述第二编码数据。
113.根据权利要求104所述的方法,其中存储用于所述文本字符中的一个文本字符的所述第一编码数据包括在跨越所述文本串查找表的多列的第一编码数据行中存储所述第一编码数据,并且其中存储用于所述文本字符中的所述一个文本字符的所述第二编码数据包括在跨越所述文本串查找表的多列的第二编码数据行中存储所述第二编码数据,所述多列定义所述第一编码数据所使用的所述文本串查找表的所述多列的子集。
114.根据权利要求104所述的方法,还包括存储用于编码数据分节中的一个编码数据分节的所述字符编码数据的集合作为单个字符编码数据的集合线条,而所述编码数据分节中的所述一个编码数据分节内的用于每个文本字符的所述第一编码数据共享所述文本串查找表中的至少一个公共行、但是不具有所述文本串查找表中的任何重叠的列。
115.根据权利要求104所述的方法,还包括存储用于编码数据分节中的一个编码数据分节的所述字符编码数据的集合作为两个或者更多字符编码数据的集合的线条,而用于相同的字符编码数据的集合的线条中的每个文本字符的所述第一编码数据共享所述文本串查找表中的至少一个公共行、但是不具有所述文本串查找表中的任何重叠的列、并且用于不同的字符编码数据的集合的线条中的每个文本字符的所述第一编码数据不共享所述文本串查找表的任何行。
116.根据权利要求104所述的方法,包括在列中存储用于所述字符编码数据的集合的线条中的第一字符编码数据的集合的线条中的至少一个文本字符的第一编码数据,所述列与用于所述字符编码数据的集合的线条中的第二字符编码数据的集合的线条中的不同的文本字符的列重叠。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/174,283 US8400453B2 (en) | 2011-06-30 | 2011-06-30 | Rendering a text image following a line |
US13/174,403 | 2011-06-30 | ||
US13/174,378 US20130002679A1 (en) | 2011-06-30 | 2011-06-30 | Rendering a text image using texture map character center encoding |
US13/174,378 | 2011-06-30 | ||
US13/174,403 US8760451B2 (en) | 2011-06-30 | 2011-06-30 | Rendering a text image using texture map character center encoding with character reference encoding |
US13/174,283 | 2011-06-30 | ||
PCT/US2012/044602 WO2013003567A2 (en) | 2011-06-30 | 2012-06-28 | Rendering a text image following a line |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103765413A true CN103765413A (zh) | 2014-04-30 |
CN103765413B CN103765413B (zh) | 2018-02-16 |
Family
ID=47424793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280041541.8A Active CN103765413B (zh) | 2011-06-30 | 2012-06-28 | 渲染跟随线条的文本图像 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP2727006B1 (zh) |
JP (1) | JP5959637B2 (zh) |
KR (1) | KR102001191B1 (zh) |
CN (1) | CN103765413B (zh) |
DE (1) | DE202012013465U1 (zh) |
WO (1) | WO2013003567A2 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016107440A1 (zh) * | 2014-12-31 | 2016-07-07 | 高德软件有限公司 | 一种电子地图的生成、显示方法和装置 |
CN107066109A (zh) * | 2016-09-10 | 2017-08-18 | 上海触乐信息科技有限公司 | 动态文本即时输入的方法、系统和装置 |
CN108701120A (zh) * | 2016-02-29 | 2018-10-23 | 微软技术许可有限责任公司 | 字形处理中的查找的条件确定 |
CN109978968A (zh) * | 2019-04-10 | 2019-07-05 | 广州虎牙信息科技有限公司 | 运动对象的视频绘制方法、装置、设备及存储介质 |
CN110309824A (zh) * | 2019-07-02 | 2019-10-08 | 北京百度网讯科技有限公司 | 文字检测方法、装置以及终端 |
CN111489411A (zh) * | 2019-01-29 | 2020-08-04 | 北京百度网讯科技有限公司 | 线条绘制方法、装置、图像处理器、显卡及车辆 |
CN112135775A (zh) * | 2018-03-15 | 2020-12-25 | 王欣欣 | 用于防止和检测安全关键型显示器上的危险误导信息的方法和系统 |
CN112464739A (zh) * | 2020-11-05 | 2021-03-09 | 福建天泉教育科技有限公司 | 一种文档文本易读性评测的方法及终端 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101755807B1 (ko) * | 2015-07-10 | 2017-07-10 | 김성일 | 휴대단말의 화면에 문자를 표시하는 방법 및 저장매체 |
KR101887086B1 (ko) * | 2017-12-15 | 2018-08-09 | 세종대학교산학협력단 | 무브먼트 데이터를 다방향 벡터필드에서 시각화하는 방법 및 그 장치 |
CN113168272A (zh) * | 2018-12-07 | 2021-07-23 | 三菱电机株式会社 | 输入显示控制装置、输入显示控制方法以及输入显示系统 |
KR102142238B1 (ko) * | 2020-02-25 | 2020-08-07 | 주식회사 엔디소프트 | 소정 이미지에 포함된 축약어, 손글씨, 비정형 단어 및 문장과 같은 텍스트 정보를 추출한 후 그 추출 결과를 소정 언어로 자동 번역하는 방법 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5724072A (en) * | 1995-03-13 | 1998-03-03 | Rutgers, The State University Of New Jersey | Computer-implemented method and apparatus for automatic curved labeling of point features |
CN1270366A (zh) * | 1999-03-31 | 2000-10-18 | 国际商业机器公司 | 使用捕捉的图形硬件指令的图形渲染方法和系统 |
CN1395222A (zh) * | 2001-06-29 | 2003-02-05 | 三星电子株式会社 | 映射和渲染三维目标和活动的三维目标的基于图像的方法 |
US6803913B1 (en) * | 1999-12-01 | 2004-10-12 | Microsoft Corporation | Warping text along a curved path |
US7076505B2 (en) * | 2002-07-11 | 2006-07-11 | Metrobot Llc | Method, apparatus, and computer program product for providing a graphical user interface with a linear map component |
US20070211062A1 (en) * | 2006-03-13 | 2007-09-13 | International Business Machines Corporation | Methods and systems for rendering complex text using glyph identifiers in a presentation data stream |
US7567252B2 (en) * | 2003-12-09 | 2009-07-28 | Microsoft Corporation | Optimizing performance of a graphics processing unit for efficient execution of general matrix operations |
US7787708B2 (en) * | 2005-06-07 | 2010-08-31 | Ids Scheer Aktiengesellschaft | Systems and methods for rendering text within symbols |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58112176A (ja) * | 1981-12-26 | 1983-07-04 | Toshiba Corp | 光学的文字読取装置 |
US4864628A (en) * | 1983-08-26 | 1989-09-05 | Texas Instruments Incorporated | Method of optical character recognition |
US4847604A (en) * | 1987-08-27 | 1989-07-11 | Doyle Michael D | Method and apparatus for identifying features of an image on a video display |
US5134663A (en) * | 1991-04-19 | 1992-07-28 | Unisys Corporation | Center line magnetic ink character recognition system |
EP0534446B1 (en) * | 1991-09-26 | 2001-07-11 | Mitsubishi Denki Kabushiki Kaisha | System with approximation means for recognizing graphical elements in a drawing |
JP2634126B2 (ja) * | 1992-07-27 | 1997-07-23 | インターナショナル・ビジネス・マシーンズ・コーポレイション | グラフィックス表示方法および装置 |
JP3161834B2 (ja) * | 1992-09-18 | 2001-04-25 | 株式会社ザナヴィ・インフォマティクス | 車載ナビゲーションシステム |
DE69316898T2 (de) | 1993-11-05 | 1998-07-30 | Philips Patentverwaltung | Fahrzeugnavigationsanzeigesystem |
JP3108979B2 (ja) * | 1994-07-28 | 2000-11-13 | セイコーエプソン株式会社 | 画像処理方法および画像処理装置 |
JP3345224B2 (ja) * | 1995-03-06 | 2002-11-18 | 富士通株式会社 | パターン抽出装置、パターン再認識用テーブル作成装置及びパターン認識装置 |
US5793936A (en) * | 1996-09-27 | 1998-08-11 | Texas Instruments Incorporated | Center-line anti-aliasing for digital printing |
US6141002A (en) * | 1996-11-12 | 2000-10-31 | Opentv, Inc. | System and method for downloading and rendering glyphs in a set top box |
JP4434355B2 (ja) * | 1998-03-27 | 2010-03-17 | キヤノン株式会社 | アニメ―ションフォント作成装置 |
US6565610B1 (en) * | 1999-02-11 | 2003-05-20 | Navigation Technologies Corporation | Method and system for text placement when forming maps |
US7305617B2 (en) * | 2000-02-12 | 2007-12-04 | Adobe Systems Incorporated | Method for aligning text to baseline grids and to CJK character grids |
JP2001311625A (ja) * | 2000-04-28 | 2001-11-09 | Pioneer Electronic Corp | ナビゲーション装置 |
JP2002351311A (ja) * | 2001-05-25 | 2002-12-06 | Zenrin Co Ltd | 出力制御装置及びその方法並びにコンピュータプログラム |
US7123261B2 (en) * | 2002-12-26 | 2006-10-17 | Adobe Systems Incorporated | Coordinating grid tracking and mojikumi spacing of Japanese text |
JP2005115174A (ja) * | 2003-10-09 | 2005-04-28 | Navitime Japan Co Ltd | 地図表示装置、地図表示方法および地図表示プログラム |
US20050190970A1 (en) * | 2004-02-27 | 2005-09-01 | Research In Motion Limited | Text input system for a mobile electronic device and methods thereof |
US8271962B2 (en) * | 2006-09-12 | 2012-09-18 | Brian Muller | Scripted interactive screen media |
JP2008165264A (ja) * | 2006-12-26 | 2008-07-17 | Dynacomware Taiwan Inc | ネットワークを利用して多様なフォントを用いたアジアWebページ文書を編集するためのシステム及び方法 |
US8023725B2 (en) * | 2007-04-12 | 2011-09-20 | Samsung Electronics Co., Ltd. | Identification of a graphical symbol by identifying its constituent contiguous pixel groups as characters |
US7791605B2 (en) * | 2007-05-01 | 2010-09-07 | Qualcomm Incorporated | Universal rasterization of graphic primitives |
CA2732394C (en) * | 2008-10-20 | 2014-05-13 | Research In Motion Limited | Method and system for rendering of labels |
-
2012
- 2012-06-28 EP EP12803602.7A patent/EP2727006B1/en active Active
- 2012-06-28 JP JP2014519010A patent/JP5959637B2/ja active Active
- 2012-06-28 CN CN201280041541.8A patent/CN103765413B/zh active Active
- 2012-06-28 DE DE202012013465.5U patent/DE202012013465U1/de not_active Expired - Lifetime
- 2012-06-28 KR KR1020147001988A patent/KR102001191B1/ko active IP Right Grant
- 2012-06-28 WO PCT/US2012/044602 patent/WO2013003567A2/en active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5724072A (en) * | 1995-03-13 | 1998-03-03 | Rutgers, The State University Of New Jersey | Computer-implemented method and apparatus for automatic curved labeling of point features |
CN1270366A (zh) * | 1999-03-31 | 2000-10-18 | 国际商业机器公司 | 使用捕捉的图形硬件指令的图形渲染方法和系统 |
US6803913B1 (en) * | 1999-12-01 | 2004-10-12 | Microsoft Corporation | Warping text along a curved path |
CN1395222A (zh) * | 2001-06-29 | 2003-02-05 | 三星电子株式会社 | 映射和渲染三维目标和活动的三维目标的基于图像的方法 |
US7076505B2 (en) * | 2002-07-11 | 2006-07-11 | Metrobot Llc | Method, apparatus, and computer program product for providing a graphical user interface with a linear map component |
US7567252B2 (en) * | 2003-12-09 | 2009-07-28 | Microsoft Corporation | Optimizing performance of a graphics processing unit for efficient execution of general matrix operations |
US7787708B2 (en) * | 2005-06-07 | 2010-08-31 | Ids Scheer Aktiengesellschaft | Systems and methods for rendering text within symbols |
US20070211062A1 (en) * | 2006-03-13 | 2007-09-13 | International Business Machines Corporation | Methods and systems for rendering complex text using glyph identifiers in a presentation data stream |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016107440A1 (zh) * | 2014-12-31 | 2016-07-07 | 高德软件有限公司 | 一种电子地图的生成、显示方法和装置 |
CN108701120A (zh) * | 2016-02-29 | 2018-10-23 | 微软技术许可有限责任公司 | 字形处理中的查找的条件确定 |
CN107066109A (zh) * | 2016-09-10 | 2017-08-18 | 上海触乐信息科技有限公司 | 动态文本即时输入的方法、系统和装置 |
CN112135775A (zh) * | 2018-03-15 | 2020-12-25 | 王欣欣 | 用于防止和检测安全关键型显示器上的危险误导信息的方法和系统 |
CN112135775B (zh) * | 2018-03-15 | 2024-04-26 | 王欣欣 | 用于防止和检测安全关键型显示器上的危险误导信息的方法和系统 |
CN111489411A (zh) * | 2019-01-29 | 2020-08-04 | 北京百度网讯科技有限公司 | 线条绘制方法、装置、图像处理器、显卡及车辆 |
CN109978968A (zh) * | 2019-04-10 | 2019-07-05 | 广州虎牙信息科技有限公司 | 运动对象的视频绘制方法、装置、设备及存储介质 |
CN110309824A (zh) * | 2019-07-02 | 2019-10-08 | 北京百度网讯科技有限公司 | 文字检测方法、装置以及终端 |
CN110309824B (zh) * | 2019-07-02 | 2021-07-02 | 北京百度网讯科技有限公司 | 文字检测方法、装置以及终端 |
CN112464739A (zh) * | 2020-11-05 | 2021-03-09 | 福建天泉教育科技有限公司 | 一种文档文本易读性评测的方法及终端 |
CN112464739B (zh) * | 2020-11-05 | 2023-05-23 | 福建天泉教育科技有限公司 | 一种文档文本易读性评测的方法及终端 |
Also Published As
Publication number | Publication date |
---|---|
JP5959637B2 (ja) | 2016-08-02 |
WO2013003567A3 (en) | 2013-04-11 |
CN103765413B (zh) | 2018-02-16 |
KR102001191B1 (ko) | 2019-10-01 |
DE202012013465U1 (de) | 2017-01-30 |
JP2014521148A (ja) | 2014-08-25 |
WO2013003567A2 (en) | 2013-01-03 |
EP2727006A2 (en) | 2014-05-07 |
KR20140073480A (ko) | 2014-06-16 |
EP2727006B1 (en) | 2018-10-31 |
EP2727006A4 (en) | 2014-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103765413A (zh) | 渲染跟随线条的文本图像 | |
US8400453B2 (en) | Rendering a text image following a line | |
EP2761584B1 (en) | Label positioning technique to reduce crawling during zoom activities | |
US8803901B1 (en) | Map rendering using interpolation of style parameters across zoom levels | |
US9384596B2 (en) | Visualization of obscured objects in 3D space | |
US9417777B2 (en) | Enabling quick display transitions between indoor and outdoor map data | |
US9811879B2 (en) | Keeping map labels consistent across multiple zoom levels | |
US8760451B2 (en) | Rendering a text image using texture map character center encoding with character reference encoding | |
US8730264B1 (en) | Determining when image elements intersect | |
US8730258B1 (en) | Anti-aliasing of straight lines within a map image | |
US20150054841A1 (en) | Image shader using style attribute references | |
US9721363B2 (en) | Encoding polygon data for fast retrieval and rendering | |
Chao et al. | Parallel algorithm for viewshed analysis on a modern GPU | |
CN103959343A (zh) | 分层数字图像数据重新排序和有关的数字图像渲染引擎 | |
US20160307294A1 (en) | Systems and Methods for Displaying Patterns of Recurring Graphics on Digital Maps | |
US9092907B2 (en) | Image shader using two-tiered lookup table for implementing style attribute references | |
CN115129191B (zh) | 三维对象拾取方法、装置、设备及存储介质 | |
US8976188B1 (en) | Optimized data communication system and method for an image rendering system | |
US20130002679A1 (en) | Rendering a text image using texture map character center encoding | |
US9911205B1 (en) | Visual continuity for arbitrary length stipple patterns | |
Lobão et al. | Generating a Terrain | |
JPS6373378A (ja) | 模擬視界発生方法及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: American California Patentee after: Google limited liability company Address before: American California Patentee before: Google Inc. |
|
CP01 | Change in the name or title of a patent holder |