DE202012013465U1 - Wiedergabe eines textbildes entlang einer linie - Google Patents

Wiedergabe eines textbildes entlang einer linie Download PDF

Info

Publication number
DE202012013465U1
DE202012013465U1 DE202012013465.5U DE202012013465U DE202012013465U1 DE 202012013465 U1 DE202012013465 U1 DE 202012013465U1 DE 202012013465 U DE202012013465 U DE 202012013465U DE 202012013465 U1 DE202012013465 U1 DE 202012013465U1
Authority
DE
Germany
Prior art keywords
text
character
image
encoding data
characters
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.)
Expired - Lifetime
Application number
DE202012013465.5U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US13/174,378 external-priority patent/US20130002679A1/en
Priority claimed from US13/174,403 external-priority patent/US8760451B2/en
Priority claimed from US13/174,283 external-priority patent/US8400453B2/en
Application filed by Google LLC filed Critical Google LLC
Publication of DE202012013465U1 publication Critical patent/DE202012013465U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/36Input/output arrangements for on-board computers
    • G01C21/3667Display of a road map
    • G01C21/3673Labelling using text of road map data items, e.g. road names, POI names
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing 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

Bildwiedergabemaschine, aufweisend; eine Datenübertragungsnetzwerkschnittstelle; einen Prozessor; eine mit dem Prozessor gekoppelte Speicherkomponente; ein Anzeigegerät, das an ein oder mehrere Prozessoren gekoppelt ist; eine erste Routine, die im Speicher gespeichert ist, die auf dem Prozessor ausgeführt wird, um über die Datenübertragungsnetzwerkschnittstelle einen Satz von Vektordaten zu empfangen, die Daten aufweisen, die ein oder mehrere Bildobjekte definieren, und um vom Speicher eine oder mehrere Textzeichenfolge-Nachschlagetabellen zu beziehen, wobei eine der Textzeichenfolge-Nachschlagetabellen Textzeichen von wenigstens einer Textzeichenfolge als einen Satz von pixelierten Textzeichen sowie Codierdaten speichert, die die Mittelposition eines jeden der Vielzahl der zur Textzeichenfolge gehörenden Textzeichen definieren; eine zweite Routine, die im Speicher gespeichert ist, die auf dem Prozessor ausgeführt wird, um eine Vielzahl von Liniensegmenten, die zu einer Linie gehören, entlang der die Textzeichenfolge wiedergegeben werden soll, und einen zu jedem Liniensegment gehörenden Bereich zu bestimmen; eine dritte Routine, die im Speicher gespeichert ist, die auf dem Prozessor ausgeführt wird, um ein Textkästchen für jedes der Vielzahl von Liniensegmenten zu bestimmen, wobei jedes der Textkästchen so ausgerichtet ist, dass Text in einer aufrechten Position entlang eines dazugehörenden Liniensegmentes gezeichnet wird; und eine vierte Routine, die im Speicher gespeichert ist, die auf dem Prozessor ausgeführt wird, um: eines der Textkästchen auszuwählen, im ein Textzeichen der Textzeichenfolge wiedergegeben werden soll; eines oder mehrere Pixel eines nächsten einen der Textzeichen der Textzeichenfolge auszuwählen; zu bestimmen, ob eine Mitte des nächsten einen der Textzeichen, wenn es im ausgewählten einen der Textkästchen auf dem Bild wiedergegeben wird, innerhalb des Bereiches des zu dem ausgewählten einen der Textkästchen gehörenden Liniensegmentes liegt; und die Pixel des einen der Textzeichen auf dem Anzeigegerät unter Verwendung des einen der Textkästchen wiederzugeben, wenn eine Mitte des einen der Textzeichen, wenn es im ausgewählten einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zu dem ausgewählten einen der Textkästchen gehörenden Liniensegmentes liegt und die Pixel des einen der Textzeichen auf dem Anzeigegerät unter Verwendung des einen der Textkästchen nicht wiederzugeben, wenn eine Mitte des einen der Textzeichen, wenn es im ausgewählten einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zu dem ausgewählten einen der Textkästchen gehörenden Liniensegment liegt

Description

  • Technisches Gebiet
  • Die vorliegende Offenbarung betrifft Bildwiedergabesysteme, wie beispielsweise elektronische Kartenanzeigesysteme und insbesondere eine Bildwiedergabemaschine, die ein Textbild entlang einer Linie, wie beispielsweise einer multisegmentierten Linie, wiedergibt. Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
  • Hintergrund
  • Digitale Karten kommen in einer großen Bandbreite von Geräten, unter anderem Mobiltelefonen, Autonavigationssystemen, Handheld-GPS-Systemen, Computer und vielen Websites vor und werden von diesen angezeigt. Obgleich das Ansehen und Nutzen von digitalen Karten für einen Endnutzer leicht ist, handelt es sich bei der Erstellung einer digitalen Karte um einen schwierigen und zeitaufwändigen Prozess. Insbesondere beginnt jede digitale Karte mit dem Speichern eines Satzes an Rohdaten in einer Kartendatenbank, die Millionen von Straßen und Kreuzungen sowie anderen als Teil der Karte anzuzeigenden Merkmalen entsprechen. Die Rohkartendaten, die in der Kartendatenbank gespeichert und zum Erzeugen von digitalen Kartenbildern verwendet werden, werden aus einer Reihe verschiedener Quellen hergeleitet, wobei jede Quelle normalerweise verschiedene Mengen und Typen von Informationen bereitstellt. Diese Kartendaten müssen demzufolge erst zusammengestellt und in der Kartendatenbank gespeichert werden, ehe auf sie von Kartenanzeige- und Kartenwiedergabeanwendungen und entsprechender Hardware zugegriffen wird.
  • Es gibt selbstverständlich verschiedene Arten und Weisem zum digitalen Wiedergeben von Kartenbildern (was als digitale Kartenbilder bezeichnet wird) auf der Grundlage von in einer Kartendatenbank gespeicherten Kartendaten. Ein Verfahren zum Wiedergeben eines Kartenbildes besteht im Speichern von Kartenbildern innerhalb der Kartendatenbank als Sätze von Raster oder pixelierten Bildern, die aus einer Vielzahl von Pixeldatenpunkten bestehen, wobei jeder Pixeldatenpunkt Eigenschaften umfasst, die definieren, wie ein bestimmtes Pixel in einem Bild auf einem elektronischen Anzeigegerät angezeigt werden soll. Obgleich diese Art von Kartendaten verhältnismäßig leicht zu erstellen und zu speichern ist, erfordert das Kartenwiedergabeverfahren, das diese Daten verwendet, normalerweise eine große Menge an Speicherplatz für umfassende digitale Kartenbilder, und es ist schwer, die digitalen Kartenbilder in ihrer auf einem Anzeigegerät angezeigten Form auf vielfältige nützliche Art und Weise zu bearbeitenbearbeiten.
  • Ein weiteres, flexibleres Verfahren zur Wiedergabe von Bildern verwendet die im herkömmlichen Sinne als Vektorbilddaten bezeichneten Daten. Vektorbilddaten werden normalerweise in hochauflösenden und schnell beweglichen Bildgebungssystemen, wie beispielsweise in jenen verwendet, die mit Spielesystemen und insbesondere mit 3D-Spielesystemen assoziiert sind. Allgemein beinhalten Vektorbilddaten (oder Vektordaten) Daten, die spezielle Bildobjekte oder Elemente (auch als Primitivs bezeichnet) definieren, die als Teil eines Bildes über ein Bildanzeigegerät angezeigt werden sollen. Im Zusammenhang mit einem Kartenbild können solche Bildelemente oder Primitivs beispielsweise einzelne Straßen oder Straßensegmente, Textkennzeichnungen, Gegenden, Textkästchen, Gebäude, Hervorhebungen von Sehenswürdigkeiten, Geländemerkmale, Radwege, Karten oder Straßenkennzeichnungen usw. sein. Jedes Bildelement wird allgemein als ein Satz aus einem oder mehreren Dreiecken (unterschiedlicher Größen, Formen, Farben oder Füllmuster usw.) gebildet beziehungsweise gezeichnet, wobei jedes Dreieck drei miteinander durch Linien verbundene Vertices (Eckpunkte) umfasst. Demgemäß speichert die Bilddatenbank für jedes bestimmte Bildelement einen Satz von Vertexdatenpunkten, wobei jeder Vertexdatenpunkt einen bestimmten Vertex (Eckpunkt) eines der das Bildelement bildenden Dreiecke definiert. Allgemein umfasst jeder Vertexdatenpunkt Daten, die zu einer zwei- oder dreidimensionalen Position des Vertex (beispielsweise einem X, Y- oder einem X, Y, Z-Koordinatensystem) gehören, sowie verschiedene Vertexattribute, die Eigenschaften des Vertex, wie beispielsweise Farbeigenschaften, Fülleigenschaften, Strichbreiteeigenschaften für vom Vertex ausgehende Linien usw., definieren.
  • Während des Bildwiedergabeprozesses werden die für die verschiedenen Bildelemente eines wiederzugebenden Bildes definierten Vertices einem oder mehreren Bild-Shadern bereitgestellt und in diesem/diesen verarbeitet, die zusammen mit einer Grafikprozessoreinheit (GPU) wie einer Grafikkarte oder einer Rastereinrichtung zusammenarbeiten, um ein zweidimensionales Bild auf einem Anzeigebildschirm zu erzeugen. Allgemein handelt es sich bei einem Bild-Shader um einen Satz Software-Anweisungen, die vorwiegend zum Berechnen von Wiedergabeeffekten auf die Grafik-Hardware mit einem hohen Maß an Flexibilität verwendet werden. Bild-Shader sind auf dem Gebiet der Technik gut bekannt und in verschiedenen Anwendungsprogrammierschnittstellen (APIs) verfügbar, die beispielsweise von OpenGL und Direct3D zum Definieren spezieller Shading-Funktionen bereitgestellt werden. Im Grunde genommen handelt es sich bei Shadern um einfache Programme in einer höheren Programmiersprache, die die Züge von entweder eines Vertex oder eines Pixels beschreiben oder bestimmen. So definieren beispielsweise Vertex-Shader die Züge (z. B. Position, Texturkoordination, Farben usw.) eines Vertex (Eckpunktes), während Pixel- oder Fragment-Shader die Züge (Farbe, z-Tiefe und Alphawert) eines Pixels definieren. Ein Vertex-Shader wird für jeden Vertex in einem Bildelement oder Primitiv so aufgerufen, dass der Vertex-Shader für jeden in den Vertex-Shader eingegebenen Vertex eine (aktualisierte) Vertexausgabe erzeugt. Anschließend wird jede vom Vertex-Shader ausgegebene Vertexausgabe als eine Reihe von Pixeln auf einen Speicherblock wiedergegeben, der schließlich an einen Anzeigebildschirm gesendet wird. Um ein weiteres Beispiel zu nennen, verwenden Fragment-Shader die von den Vertex-Shaderm ausgegebenen Vertices zum Pixelieren des Bildes, d. h. zum Bestimmen von Pixelfarbwerten des Bildes, das erstellt wird. Auf der Grundlage der Vertexattributwerte der von den Vertex-Shadern erzeugten Vertices können Fragment-Shader durch Interpolieren zwischen den Vertexattributwerten verschiedener Vertices eines Bildobjektes Pixel einfüllen oder wiedergeben. In anderen Fällen können Fragment-Shader vorab festgelegte Texturen in Form von Pixelfarbkarten verwenden, um bestimmte, durch die Vertices des Bildobjektes definierte Bereiche, einzufüllen oder zu pixelieren. In diesem Fall definieren die Texturen Pixelwerte für verschiedene wiederzugebende Bilder und werden im Allgemeinen zur Wiedergabe von Text oder einem Bild auf einem Bildschirm verwendet.
  • Als konkreteres Beispiel von Bild-Shader-Technologie verwenden Grafikbibliotheken von Direct3D und OpenGL drei grundlegende Typen von Shadern unter anderem Vertex-Shader, Geometrie-Shader und Pixel- oder Fragment-Shader. Vertex-Shader werden einmal für jeden dem Grafikprozessor bereitgestellten Vertex betrieben. Wie vorstehend beschrieben, besteht der Zweck eines Vertex-Shaders darin, eine Position eines Vertex in einem virtuellen Raum zur zweidimensionalen Koordinate (ebenso als einen Tiefenwert für den z-Puffer des Grafikprozessors) umzuwandeln, an der er auf dem Anzeigebildschirm erscheint. Vertex-Shader können Eigenschaften wie Position, Farbe und Texturkoordinaten durch Einstellen von Vertex-Attributen der Vertices bearbeiten, jedoch keine neuen Vertices erzeugen. Die Ausgabe des Vertex-Shaders wird der nächsten Stufe in der Vearbeitungs-Pipeline bereitgestellt, bei der es sich entweder um einen gegebenenfalls vorhandenen Geometrie-Shader oder die Rastereinrichtung handelt. Geometrie-Shader können Vertices zu und von einem Netz an Vertices hinzufügen und entfernen und können zum prozeduralen Erzeugen von Bildgeometrie oder zum Hinzufügen von volumetrischen Details zu vorhandenen Bildern verwendet werden, deren Bearbeitung auf einer zentralen Verarbeitungseinheit (CPU) zu kostspielig wäre. Werden Geometrie-Shader verwendet, wird die Ausgabe anschließend an die Rastereinrichtung gesendet. Pixel-Shader, die auch als Fragment-Shader bekannt sind, berechnen die Farb- und Lichteigenschaften der einzelnen Pixel in einem Bild. Die Eingabe in diese Stufe erfolgt von der Rastereinrichtung, und die Fragment-Shader werden zum Einfüllen der Pixelwerte der Vielecke betrieben, die durch die Grafik-Pipeline gesendet werden, und verwenden möglicherweise Texturen zum Definieren der Pixelwerte innerhalb eines bestimmten Bildobjektes. Fragment-Shader werden normalerweise für Szenebeleuchtung und ähnliche Effekte, wie beispielsweise Farbnuancierung, verwendet. Es besteht keine Eins-zu-Eins-Beziehung zwischen den Aufrufen an den Fragment-Shader und Pixeln auf dem Bildschirm, da Fragment-Shader oftmals viele Male pro Pixel aufgerufen werden, weil sie für jedes Bildelement oder -objekt aufgerufen werden, das sich im entsprechenden Raum befindet, selbst wenn dieses Bildobjekt verdeckt ist. Wird das verdeckte Objekt jedoch zuerst gezeichnet, werden die verdeckten Pixel anderer Objekte generell nicht im Fragment-Shader verarbeitet.
  • Die Verwendung von Vektorgrafiken kann insbesondere in einem mobilen Kartensystem von Vorteil sein, im Bilddaten von einer zentralen Kartendatenbank über ein Datenübertragungsnetzwerk (wie beispielsweise das Internet, ein Drahtlosdatenübertragungsnetzwerk usw.) an ein oder mehrere entfernte Geräte zum Anzeigen gesendet werden. Insbesondere Vektordaten können, wenn sie erst einmal an das Empfangsgerät gesendet wurden, leichter als pixelierte Rasterbilddaten skaliert und manipuliert (beispielsweise gedreht usw.) werden. Dennoch ist das Verarbeiten von Vektordaten normalerweise viel zeitaufwendiger und rechenintensiver auf dem Bildwiedergabesystem, welches die Daten empfängt. Darüber hinaus führt das Verwenden von Vektorbilddaten, was ein höheres Maß an Detail oder Informationen, die angezeigt werden sollen, erreicht, zu einer größeren Menge an Vektordaten oder Vertices, die von der diese Informationen speichernden Kartendatenbank zum Kartenwiedergabesystem gesendet werden müssen, was in einigen Fällen zu höheren Bandbreitenanforderungen oder längeren Download-Zeiten führen kann.
  • Darüber hinaus wird im Fall sowohl von gerasterten Kartenbildern als auch von mithilfe von Vektordaten erzeugten Bildern Text. wie beispielsweise jener, der zum Kennzeichnen von Straßen, Wegen und anderen Merkmalen einer Karte verwendet wird, als ein vorab festgelegtes Bild gespeichert. Solche Bilder sind schwer zu bearbeitenbearbeiten, um beispielsweise die Platzierung des Textes zu verändern. So ist beispielsweise in einem pixelierten Kartenbild der Text in einer fixierten Position in Bezug auf andere Kartenmerkmale vorhanden, und es ist demzufolge schwierig, wenn nicht sogar unmöglich, die Ausrichtung oder Platzierung des Textes in Bezug auf andere Bildobjekte zu verändern. Werden Vektordaten verwendet, wird Text normalerweise als ein fixiertes Bild oder eine Zeichenfolge gespeichert, die nicht an andere Kartenmerkmale gebunden ist und demzufolge an verschiedenen Orten innerhalb einer Karte platziert werden kann. Es ist jedoch immer noch schwierig, das Textbild so zu bearbeiten, dass die Platzierung der einzelnen Zeichen innerhalb des Textes in Bezug zueinander variiert werden könnte, sodass Zeichen des Textbildes einer Linie beispielsweise einer multisegmentierten Linie, d. h. einer Linie, die eine Vielzahl von Liniensegmenten aufweist, die sich in Winkeln zueinander erstrecken oder eine Linie, die gekrümmt ist, folgen.
  • Zusammenfassung
  • Ein computerimplementiertes Verfahren zum Wiedergeben eines Bildes auf einem Anzeigegerät umfasst ein Computergerät zum Bestimmen einer Linie innerhalb eines Bildes, entlang derer eine Textzeichenfolge wiedergegeben werden soll (die als ein Satz von pixelierten Textzeichen innerhalb einer Bildnachschlagetabelle gespeichert werden kann), um eine Vielzahl von zur Linie gehörenden Liniensegmenten und einen zu jedem Liniensegment gehörenden Bereich zu bestimmen, sowie ein Textkästchen für jedes der Vielzahl von Liniensegmenten zu erstellen , wobei jedes der Textkästchen so ausgerichtet ist, dass Text in einer aufrechten Position entlang eines dazu gehörenden Liniensegmentes gezeichnet wird. Das Verfahren wählt eines der Textkästchen aus, im ein Textzeichen der Textzeichenfolge wiedergegeben werden soll, wählt eines der Textzeichen aus der Textzeichenfolge aus und bestimmt, ob eine Mitte des einen der Textzeichen, wenn es im einen der Textkästchen auf dem Bild wiedergegeben wird, innerhalb des Bereiches des zum einen der Textkästchen gehörenden Liniensegmentes liegt. Anschließend gibt das Verfahren das eine der Textzeichen auf dem Anzeigegerät unter Verwendung des einen der Textkästchen wieder, wenn die Mitte des einen der Textzeichen, wenn es im einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zum einen der Textkästchen gehörenden Liniensegmentes liegt. Anderenfalls wählt das Verfahren ein anderes der Vielzahl von Textkästchen als das eine der Textkästchen zur Verwendung beim Wiedergeben des einen der Textzeichen auf dem Anzeigegerät aus, beispielsweise wenn die Mitte des einen der Textzeichen, wenn es im einen der Textkästchen wiedergegeben wird, nicht innerhalb des Bereiches des zum einen der Textkästchen gehörenden Liniensegmentes liegt.
  • In einer Ausführungsform umfasst das Verfahren des Weiteren Auswählen eines jeden der Textzeichen der Reihe nach aus der innerhalb der Bildnachschlagetabelle gespeicherten Textzeichenfolge und, für jedes ausgewählte der Textzeichen, Durchführen der Schritte des Bestimmens, ob die Mitte des ausgewählten einen der Textzeichen, wenn es im einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zum einen der Textkästchen gehörenden Liniensegmentes liegt, Wiedergeben des ausgewählten einen der Textzeichen auf dem Anzeigegerät unter Verwendung des einen der Textkästchen, wenn die Mitte des ausgewählten einen der Textzeichen, wenn es im einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zum einen der Textkästchen gehörenden Liniensegmentes liegt, und anderenfalls Auswählen eines anderen der Vielzahl von Textkästchen als das eine der Textkästchen zur Verwendung beim Wiedergeben des ausgewählten einen der Textzeichen auf dem Anzeigegerät. Des Weiteren kann das Verfahren, wenn es bestimmt, ob die Mitte des einen der Textzeichen, wenn es im einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zu diesem einen der Textkästchen gehörenden Liniensegmentes liegt, einen Satz von Codierdaten für das eine der Textzeichen lesen, wobei die kodierenden Daten die Mitte des einen der Textzeichen in wenigstens einer Richtung spezifizieren und/oder die Breite des einen der Textzeichen spezifizieren.
  • Wenn das Verfahren die Textkästchen erstellt, kann es jedes der Textkästchen so erstellen, dass es entlang einer Länge eines dazugehörenden einen der Liniensegmente ausgerichtet ist und so, dass die Textkästchen eine Länge in Richtung der Länge des dazugehörenden Liniensegmentes aufweisen, die größer als der Bereich des dazugehörenden Liniensegmentes ist. In einem Fall kann das Verfahren jedes der Textkästchen so erstellen, dass sich der Anfang eines jeden Textkästchens über einen vorab festgelegten Abstand in Richtung der Länge des dazugehörenden Liniensegmentes bis vor den Anfang des Liniensegmentes erstreckt, und so, dass sich das Ende des Textkästchens über den vorab festgelegten Abstand in Richtung des Liniensegmentes bis nach dem Ende des Liniensegmentes erstreckt. Der vorab festgelegte Abstand kann beispielsweise die Hälfte der Breite des einen der Textzeichen der in der Bildnachschlagetabelle gespeicherten Textzeichenfolge sein, wenn sie im Textkästchen erstellt wird. Das Verfahren kann des Weiteren ein Textkästchen für jedes der Vielzahl von Liniensegmenten so erstellen, dass sich die Höhe des Textkästchens über einen vorab festgelegten Abstand orthogonal zur Richtung eines dazugehörenden Liniensegmentes erstreckt. In diesem Fall kann die Höhe des Textkästchens beispielsweise die Höhe von einem der Textzeichen der in der Bildnachschlagetabelle gespeicherten Textzeichenfolge sein, wenn sie im Textkästchen erstellt wird.
  • Falls gewünscht, kann das Verfahren einen Fragment-Shader verwenden, um zu bestimmen, ob die Mitte des einen der Textzeichen, wenn es im einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zu diesem einen der Textkästchen gehörenden Liniensegments liegt, und um das eine der Textzeichen auf dem Anzeigegerät unter Verwendung des einen der Textkästchen wiederzugeben, wenn das eine der Textzeichen, wenn es im einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zu diesem einen der Textkästchen gehörenden Liniensegmentes liegt. Des Weiteren kann das Verfahren einen Vertex-Shader zum Erstellen der Textkästchen für die Vielzahl von Liniensegmenten verwenden.
  • Gemäß einer weiteren Ausführungsform umfasst eine Bildwiedergabemaschine eine Datenübertragungsschnittstelle, einen Prozessor, einen mit dem Prozessor verbundenen Speicher, ein mit dem Prozessor verbundenes Anzeigegerät und eine Vielzahl von im Speicher gespeicherten Routinen, die auf dem Prozessor ausgeführt werden. Eine erste Routine empfängt, über die Datenübertragungsschnittstelle, einen Satz von Vektordaten, die Daten, die ein oder mehrere Bildobjekte definieren, und eine oder mehrere Textzeichenfolge-Nachschlagetabellen aufweisen, wobei eine der Textzeichenfolge-Nachschlagetabellen Textzeichen von wenigstens einer Textzeichenfolge als einen Satz von piexelierten Textzeichen speichert und Codierdaten speichert, die die Mittelposition eines jeden einer Vielzahl von zu dieser Textzeichenfolge gehörenden Textzeichen definiert. Eine zweite Routine bestimmt eine Vielzahl von Liniensegmenten, die zu einer Linie gehören, entlang der die Textzeichenfolge wiedergegeben werden soll, und einen zu diesem Liniensegment gehörenden Bereich. Eine dritte Routine bestimmt ein Textkästchen für jedes der Vielzahl von Liniensegmenten, wobei jedes der Textkästchen so ausgerichtet ist, dass Text in einer aufrechten Position entlang eines dazugehörenden Liniensegmentes gezeichnet wird. Eine vierte Routine wählt eins von den Textkästchen aus, im ein Textzeichen der Textzeichenfolge wiedergegeben werden soll, wählt ein nächstes der Textzeichen der Textzeichenfolge aus, bestimmt, ob eine Mitte des ausgewählten einen der Textzeichen, wenn es im ausgewählten einen der Textkästchen auf dem Bild wiedergegeben wird, innerhalb des Bereiches des zu diesem einen ausgewählten der Textkästchen gehörenden Liniensegments liegt, und gibt das eine der Textzeichen unter Verwendung des einen der Textkästchen auf dem Anzeigegerät wieder, wenn eine Mitte des ausgewählten einen der Textzeichen, wenn es im ausgewählten einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zu diesem einen ausgewählten der Textkästchen gehörenden Liniensegmentes liegt. Anderenfalls wählt die vierte Routine ein anderes der Vielzahl von Textkästchen als das ausgewählte eine der Textkästchen zur Verwendung beim Wiedergeben des ausgewählten einen der Textzeichen auf dem Anzeigegerät aus.
  • Gemäß einer weiteren Ausführungsform umfasst ein Verfahren zum Wiedergeben von Text entlang einer Linie innerhalb eines auf einem Anzeigegerät wiedergegebenen Bildes Speichern einer Textzeichenfolge-Nachschlagetabelle in einem Computerspeicher, wobei die Textzeichenfolge-Nachschlagetabelle eine Vielzahl von zu einer Textzeichenfolge gehörenden Textzeichen und Codierdaten umfasst, die eine Mittelposition eines jeden der Vielzahl von zur Textzeichenfolge gehörenden Textzeichen definiert. Das Verfahren bestimmt ferner eine Vielzahl von Liniensegmenten, die zu einer Linie im Bild gehören, entlang der die Textzeichenfolge wiedergegeben werden soll, und einen zu jedem Liniensegment gehörenden Bereich. Das Verfahren erstellt anschließend ein Textkästchen für jedes der Vielzahl von Liniensegmenten, wobei jedes der Textkästchen so ausgerichtet ist, dass Text in einer aufrechten Position entlang eines dazugehörenden Liniensegments gezeichnet wird. Das Verfahren wählt für jedes Textzeichen in der Textzeichenfolge eins der Textkästchen aus, im das Textzeichen der Textzeichenfolge wiedergegeben werden soll, liest die Codierdaten aus der Textzeichenfolge-Nachschlagetabelle und bestimmt, ob die Mittelposition des Textzeichens, wenn es im ausgewählten einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zum ausgewählten einen der Textkästchen gehörenden Liniensegmentes liegt. Das Verfahren gibt anschließend das Textzeichen im Bild auf dem Anzeigegerät unter Verwendung des ausgewählten einen der Textkästchen wieder, wenn die Mittelposition des Textzeichens, wenn es im ausgewählten einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zum ausgewählten einen der Textkästchen gehörenden Liniensegmentes liegt. Anderenfalls wählt das Verfahren ein anderes der Vielzahl von Textkästchen als das ausgewählte eine der Textkästchen aus, d. h., wenn die Mittelposition des Textzeichens, wenn es im ausgewählten einen der Textkästchen wiedergegeben wird, nicht innerhalb des Bereiches des zum ausgewählten einen der Textkästchen gehörenden Liniensegmentes liegt.
  • In noch einer weiteren Ausführungsform umfasst ein Kartenbildwiedergabesystem eine Kartendatenbank und ein Kartenbildwiedergabesystem. Die Kartendatenbank speichert kartenbezogene Vektorbilddaten, wobei die Vektorbilddaten Daten, die ein oder mehrere Bildobjekte definieren, und eine oder mehrere Textzeichenfolge-Nachschlagetabellen aufweisen, wobei eine der Textzeichenfolge-Nachschlagetabellen Textzeichen speichert, die zu wenigstens einer Textzeichenfolge gehört, die als ein Satz von pixelierten Textzeichen wiedergegeben werden soll und Codierdaten speichert, die die Mittelposition eines jeden einer Vielzahl von zur Textzeichenfolge gehörenden Textzeichen definiert. Das Kartenbildwiedergabegerät ist über Datenübertragung mit der Kartendatenbank verbunden, um die kartenbezogenen Vektorbilddaten zu empfangen und gibt ein Kartenbild unter Verwendung der kartenbezogenen Vektorbilddaten wieder. Das Kartenbildwiedergabegerät umfasst eine Datenübertragungsnetzwerkschnittstelle, einen Prozessor, einen mit dem Prozessor verbundenen Speicher, ein mit dem Prozessor verbundenes Anzeigegerät und eine Anzahl von Routinen, die auf dem Speicher gespeichert sind und auf dem Prozessor ausgeführt werden. Insbesondere empfängt eine Datenübertragungsroutine die Vektorbilddaten über die Datenübertragungsnetzwerkschnittstelle für ein Bild, das auf dem Anzeigegerät wiedergegeben werden soll. Zusätzlich bestimmen eine oder mehrere Bild-Shader-Routinen eine Vielzahl von Liniensegmenten, die zu einer Linie gehören, entlang der eine Textzeichenfolge wiedergegeben werden soll, sowie einen zu jedem Liniensegment gehörenden Bereich, und erstellen ein Textkästchen für jedes der Vielzahl von Liniensegmenten, wobei jedes der Textkästchen so ausgerichtet ist, dass Text in einer aufrechten Position entlang eines dazugehörenden Liniensegments im Bild gezeichnet wird und jedes Textkästchen einen Satz von Bereichswerten aufweist, die durch den Bereich des dazugehörenden Liniensegmentes definiert werden. Für jedes Textzeichen in der Textzeichenfolge lesen die eine oder mehreren Bild-Shader-Routinen die Codierdaten aus der Textzeichenfolge-Nachschlagetabelle, bestimmen das Textkästchen mit einem Bereichswert, in den die Mittelposition des Textzeichens fällt, wenn das Textzeichen auf dem Bild wiedergegeben wird, und geben das Textzeichen unter Verwendung des bestimmten einen der Textkästchen als Teil des Bildes auf dem Anzeigegerät wieder.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist ein Highlevel-Blockschaubild eines Kartenbildgebungssystems, das Datenübertragungen zwischen einer in einem Server gespeicherten Kartendatenbank und einem oder mehreren Kartenbildwiedergabegeräten implementiert.
  • 2 ist ein Highlevel-Blockschaubild einer Bildwiedergabemaschine, die zum Wiedergeben von Kartenbildern unter Verwendung von Kartenvektordaten verwendet wird.
  • 3 ist eine Darstellung einer codierten Textur aufweisend eine Textzeichenfolge und einen Codierstreifen, mit dem die Textzeichenfolge einer multisegmentierten Linie innerhalb eines Bildes folgend wiedergegeben werden kann.
  • 3A ist eine Darstellung eines Abschnittes der codierten Textur von 3 die den Codierstreifen genauer veranschaulicht.
  • 4 ist eine Darstellung einer multisegmentierten Linie, die einer Mitte einer Straße in einem Kartenbild folgt.
  • 5 ist eine graphische Darstellung eines ersten Textkästchens, das zu einem ersten Liniensegment gehört, das zum Wiedergeben von anhand der Textur von 3 erhaltenen Textzeichen einer multisegmentierten Linie von 4 folgend erstellt wurde.
  • 6 ist eine graphische Darstellung eins zweiten Textkästchens, das zu einem zweiten Liniensegment gehört, das zum Wiedergeben von anhand der Textur von 3 erhaltenen Textzeichen einer multisegmentierten Linie von 4 folgend erstellt wurde.
  • Die 7A und 7B veranschaulichen ein beispielhaftes Verfahren, eine Routine oder einen Prozessablaufplan, das, die oder der einen Satz von Textzeichen folgend einer multisegmentierten Linie innerhalb eines Kartenbildes unter Verwendung der Textkästchen der 5 und 6 und der codierten Textur von 3 wiedergibt.
  • 8 veranschaulicht eine zweite Textur aufweisend einen zweiten Satz von darin angeordneten Codierzeilen für jedes einer Zahl von Textzeichenfolgen, wobei jede der zweiten Codierzeilen auf in der zweiten Textur gespeicherte Glyphen zeigen.
  • 9 veranschaulicht eine Textzeichenfolge mit überlappenden Textzeichen.
  • 10 veranschaulicht eine dritte Textur, die mehrere Codierstreifen für jeden eines Satzes von Textzeichenfolgen verwendet, die das Codierverfahren von 8 verwenden, damit überlappende Zeichen einer Linie auf einem Bild folgend wiedergegeben werden können.
  • 11 veranschaulicht eine vierte Textur, die mehrere Codierstreifen für eine Textzeichenfolge verwendet, die das Codierverfahren von 3 verwendet, damit überlappende Zeichen einer Linie auf einem Bild folgend wiedergegeben werden können.
  • Detaillierte Beschreibung
  • Ein Grafik- oder ein Bildwiedergabesystem, wie beispielsweise ein Kartenbildwiedergabesystem, empfängt Bilddaten von einer Bilddatenbank oder einer Anwendung, die die Bilddaten in Form von Vektordaten erzeugt, die verschiedene Bildobjekte, wie beispielsweise Straßen, Grenzen usw., definieren, und Texturen, die auf dem Bild anzuzeigende Textzeichenfolgen definieren, um beispielsweise Kennzeichnungen für die Bildobjekte bereitzustellen. Das Bildwiedergabesystem gibt die Bilder so wieder, dass die einzelnen Zeichen der Textzeichenfolgen auf dem Bild einer multisegmentierten Linie beispielsweise einer gekrümmten Linie folgend platziert werden. Mit diesem Bildwiedergabesystem können beispielsweise Textzeichenfolgen auf einem Kartenbild so platziert werden, dass der Text der Mittellinie einer gekrümmten oder einer verwinkelten Straße einer eines anderen Bildmerkmals folgt. Dieses Wiedergabeverfahren bietet eine große Flexibilität bei der Wiedergabe von Text innerhalb eines Bildes, da mit diesem Verfahren der Text so wiedergegeben werden kann, dass er einer Linie folgt, ohne die speziellen Merkmale der Krümmung der Linie zu kennen, entlang der der Text platziert wird, wenn die Textur erstellt wird, die die Textzeichenfolgeinformationen speichert. Dieses Merkmal liefert verbesserte visuelle Eigenschaften innerhalb eines Kartenbildes, da damit beispielsweise Straßennahmen überall innerhalb einer Straße, der Krümmung der Straße folgend platziert werden können, womit eine ansprechende optische Wirkung innerhalb des Kartenbildes, das wiedergegeben wird, bereitgestellt wird.
  • In Bezug auf 1 umfasst ein kartenbezogenes Bildgebungssystem 10 eine in einem Speicher 14 oder in mehreren Servern, beispielsweise an einem zentralen oder an mehreren unterschiedlichen voneinander beabstandeten Orten vorhandenen Servern gespeicherte Kartendatenbank 12 und des Weiteren mehrere Karten-Client-Geräte 16, 18, 20 und 22, von denen jedes ein Kartenwiedergabegerät oder eine Kartenwiedergabemaschine speichert und implementiert. Die Karten-Client-Geräte 1622 können über ein beliebiges verdrahtetes oder drahtloses Datenübertragungsnetzwerk 25, unter anderem beispielsweise einem verdrahtetem oder drahtlosem LAN, MAN oder WAN, dem Internet oder einer beliebigen Kombination davon, mit einem Server 14 verbunden sein. Bei den Karten-Client-Geräten 1622 kann es sich beispielsweise um Mobiltelefongeräte (18), Computer wie beispielsweise ein Laptop, Desktop oder andere Arten von Computer (16, 20) oder Komponenten von anderen Bildgebungssystemen wie beispielsweise Komponenten von Automobilnavigationssystemen (22) usw. handeln. Des Weiteren können die Client-Geräte 1622 über eine Datenübertragung mittels eines geeigneten Datenübertragungssystems wie beispielsweise einem beliebigen öffentlich verfügbaren oder in Privatbesitz befindlichen Datenübertragungsnetzwerk, unter anderem jene, die eine fest verdrahtete Datenübertragungsstruktur wie beispielsweise Telefon und Kabel-Hardware und/oder eine drahtlose Datenübertragungsstruktur, wie beispielsweise Drahtlosdatenübertragungsnetzwerke, unter anderem beispielsweise drahtlose LANs und WANs, Satelliten und Zellulartelefondatenübertragungssysteme usw. verwenden, mit dem Server 14 verbunden sein.
  • Die Kartendatenbank 12 kann jede beliebige gewünschte Typen oder Arten von Kartendaten, unter anderem Rasterbildkartendaten und Vektorbildkartendaten speichern. Die hierin beschriebenen Bildwiedergabesysteme sind jedoch am besten zur Verwendung mit Vektorbilddaten geeignet, die eine Reihe von Vertices oder Vertexdatenpunkten für jedes einer Vielzahl von Sätzen von Bildobjekten, Elementen oder Primitiven innerhalb eines anzuzeigenden Bildes definieren oder beinhalten und die Texturen zum Definieren von auf einer Karte anzuzeigenden Textzeichenfolgen verwenden. Allgemein weist jedes der von den Vektordaten definierten Bildobjekte eine Vielzahl von zu ihnen gehörenden Vertices auf, und diese Vertices werden zum Anzeigen eines kartenbezogenen Bildobjektes einem Nutzer über ein oder mehrere der Client-Geräte 1622 verwendet. Des Weiteren können verschiedene Texturkarten, die beispielsweise Textbilder oder Textzeichen definieren, in einer Kartendatenbank 12 zur Verwendung beim Wiedergeben von Kennzeichnungen oder anderen Bildern auf der Karte gespeichert werden, oder diese Texturkarten können anhand von Textzeichen in einer oder mehreren Anwendungen innerhalb der Client-Geräte 1622 erzeugt werden.
  • Wie ferner ersichtlich ist, umfasst jedes der Client-Geräte 1622 eine Bildwiedergabemaschine mit einem oder mehreren Prozessoren 30, einem oder mehreren Speichern 32, einem Anzeigegerät 34 und oftmals einer Rastereinrichtung oder Grafikkarte 36, die allgemein auf bekannte Weisen programmiert und miteinander verbunden sind, um Grafiken (Bilder) auf dem dazugehörenden Anzeigegerät 34 zu implementieren oder wiederzugeben. Beim Anzeigegerät 34 kann es sich für ein beliebiges bestimmtes Client-Gerät 1622 um einen beliebigen Typ von elektronischem Anzeigegerät, wie beispielsweise eine LCD-Anzeige, eine LED-Anzeige, eine Plasmaanzeige, eine Kathodenstrahlröhren-(CRT)Anzeige, oder einen beliebigen anderen Typ einer bekannten geeigneten elektronischen Anzeige, handeln.
  • Allgemein ist das kartenbezogene Bildgebungssystem 10 von 1 so eingerichtet, dass ein Nutzer an einem der Client-Geräte 1622 eine Kartenanwendung (in 1 nicht dargestellt) öffnet oder ausführt, die so eingerichtet ist, dass sie mit der Kartendatenbank 12 über den Server 14 kommuniziert und Karteninformationen oder kartenbezogene Daten von ihr bezieht und anschließend ein Kartenbild auf der Grundlage der empfangenen Kartendaten anzeigt oder wiedergibt. Mit der Kartenanwendung kann der Nutzer verschiedene geografische Abschnitte der in der Kartendatenbank 12 gespeicherten Kartendaten ansehen, einen bestimmten geografischen Ort vergrößern oder verkleinern, den zwei- oder dreidimensionalen Betrachtungswinkel der angezeigten Karten drehen, herumdrehen oder ändern usw. Insbesondere lädt beim Wiedergeben eines Kartenbildes auf einem Anzeigegerät oder einem Anzeigebildschirm 34 unter Verwendung des nachstehend beschriebenen Systems jedes der Client-Geräte 1622 Kartendaten in Form von Vektordaten aus der Kartendatenbank 12 herunter und verarbeitet diese Vektordaten unter Verwendung von einem oder mehreren Bild-Shadern, um ein Bild auf einem dazugehörenden Anzeigegerät 34 wiederzugeben.
  • In Bezug auf 2 wird ein Bilderzeugungs- oder Bildwiedergabegerät 40, das zu einem der Client-Geräte 1622 gehört oder von ihm implementiert wird, genauer veranschaulicht. Das Bildwiedergabesystem 40 von 2 umfasst zwei Prozessoren 30a und 30b, zwei Speicher 32a und 32b, eine Benutzerschnittstelle 34 und eine Rastereinrichtung 36. In diesem Fall sind der Prozessor 30b, der Speicher 32b und die Rastereinrichtung 36 auf einer separaten Grafikkarte (unterhalb der horizontale Linie dargestellt) angeordnet, obgleich dies nicht in allen Ausführungsformen der Fall sein muss. So kann beispielsweise in anderen Ausführungsformen ein einzelner Prozessor verwendet werden. Das Bildwiedergabesystem 40 umfasst des Weiteren eine Netzwerkschnittstelle 42, eine Datenübertragungs- und Speicherroutine 43 und eine oder mehrere Kartenanwendungen 48 mit einer darin auf dem Speicher 32a gespeicherten Kartenanzeigelogik, die auf dem Prozessor 30a ausgeführt werden kann. Auf gleiche Weise werden ein oder mehrere Bild-Shader, beispielsweise in Form von Vertex-Shadern 44 und Fragment-Shadern 46, auf dem Speicher 32b gespeichert und auf dem Prozessor 30b ausgeführt. Die Speicher 32a und 32b können einen oder beide eines flüchtigen und nichtflüchtigen Speichers umfassen, und die Routinen und Shader werden auf den Prozessoren 30a und 30b ausgeführt, um die nachstehend beschriebene Funktionalität bereitzustellen. Die Netzwerkschnittstelle 42 umfasst jede beliebige gut bekannten Software- und/oder Hardwarekomponenten, die eingerichtet sind, um mit beispielsweise dem Server 14 von 1 über ein verdrahtetes oder drahtloses Datenübertragungsnetzwerk zu kommunizieren, um Bilddaten in Form von Vektordaten zur Verwendung beim Erzeugen einer Bildanzeige auf der Benutzerschnittstelle oder dem Anzeigegerät 34 zu beziehen. Das Bildwiedergabegerät 40 umfasst des Weiteren einen Datenspeicher 49, bei dem es sich beispielsweise um einen Pufferspeicher oder einen flüchtigen Speicherabschnitt des Speichers 32 handeln kann, der von der Kartendatenbank 12 empfangene Vektordaten speichert, wobei die Vektordaten eine beliebige Zahl von Vertexdatenpunkten und ein oder mehrere Bildtexturen umfassen, wie dies noch genauer beschrieben wird.
  • Während des Betriebs wird die Kartenlogik der Kartenanwendung 48 auf dem Prozessor 30 ausgeführt, um die bestimmten Bilddaten zu bestimmen, die zum Anzeigen über das Anzeigegerät 34 einem Nutzer beispielsweise unter Verwendung von Nutzereingabe, GPS-Signalen, einer vorab gespeicherten Logik oder Programmierung usw. benötigt werden. Die Anzeige oder Kartenlogik der Anwendung 48 interagiert mit der Kartendatenbank 12 mithilfe der Kommunikationsroutine 43, durch Datenübertagung mit dem Server 14 über die Netzwerkschnittstelle 42, um Kartendaten, vorzugsweise in Form von Vektordaten oder komprimierten Vektordaten von der Kartendatenbank 12 zu beziehen. Diese Vektordaten werden über die Netzwerkschnittstelle 42 zurückgeführt und können von der Routine 43 dekomprimiert und im Datenspeicher 49 gespeichert werden. Insbesondere kann es sich bei den von der Kartendatenbank 12 heruntergeladenen Daten um eine kompakte, strukturierte oder anderweitig optimierte Version der zuletzt zu verwendenden Vektordaten handeln, und die Kartenanwendung 48 kann so eingerichtet sein, dass sie die heruntergeladenen Vektordaten unter Verwendung des Prozessors 30a in spezielle Vertexdatenpunkte umwandelt. In einer Ausführungsformen beinhalten die vom Server 14 gesendeten Bilddaten Vektordaten, die allgemein Daten für jeden eines Satzes an Vertices, die zu einer Zahl unterschiedlicher auf dem Bildschirm 34 anzuzeigender Bildelemente oder Bildobjekte gehören, beinhalten oder definieren, sowie möglicherweise eine oder mehrere Bildtexturen, die die Textzeichenfolgen oder andere auf dem Bild in Bezug auf die Bildobjekte anzuzeigende Kennzeichnungen definieren oder enthalten. Insbesondere können die Vektordaten für jedes Bildelement oder Bildobjekt eine Vielzahl von Vertices umfassen, die zu einem oder mehreren Dreiecken gehören, die das bestimmte Element oder Objekt eines Bildes bilden. Jedes solche Dreieck umfasst drei Vertices (durch Vertexdatenpunkte definiert), und jeder Vertexdatenpunkt weist zu ihm gehörende Vertexdaten auf. In einer Ausführungsform umfasst jeder Vertexdatenpunkt Standortdaten, die eine zwei- oder dreidimensionale Position oder einen Standort des Vertex (Eckpunktes) in einem Referenz- oder virtuellen Raum definieren, ebenso wie einen oder mehrere Vertexattributwerte und/oder eine Attributreferenz, die zu einem Satz von Vertexattributwerten zeigt oder diesen definiert. Jeder Vertexdatenpunkt kann zusätzlich weitere Informationen, wie beispielsweise eine Objekttypkennung, umfassen, die den Typ von Bildobjekt identifiziert, zum der Vertexdatenpunkt gehört. Auf gleiche Weise definieren die Bildtexturen, bei denen es sich im Grunde genommen um Textbild- oder Pixelnachschlagetabellen handelt, Textzeichen, Textzeichenfolgen oder Kennzeichnungen, die auf dem Bild wiedergegeben werden sollen. Obgleich solche Bildtexturen auf die Client-Geräte 1622 heruntergeladen werden können, können diese Bildtexturen auch auf den Client-Geräten 1622 unter Verwendung von Textzeichenfolgen erzeugt werden, die den Client-Geräten 1622 bereitgestellt oder auf diesen verwendet werden.
  • Das Bildgebungssystem zum Wiedergeben von Text entlang einer Linie innerhalb eines Kartenbildes umfasst oder beinhaltet allgemein drei Bestandteile. Zuerst wird wiederzugebender Text in eine Bildtextur (ohne einen Pfad oder eine bestimmte dazu gehörende Ausrichtung) platziert und mit Codierdaten, die bestimmte Eigenschaften eines jeden Textzeichens innerhalb der Textzeichenfolge definieren, codiert. Dieser Schritt kann von einer Kartenanwendung innerhalb des Client-Gerätes durchgeführt werden, und, falls dies der Fall ist, wird die auf Textzeichenfolge basierend codierte Textur in einem Speicher des Client-Gerätes gespeichert. Wird dieses Codieren auf dem Server 14 durchgeführt, kann diese Textur (auch als Bild- oder Textzeichenfolge-Nachschlagetabelle bezeichnet) in der Kartendatenbank 12 gespeichert und an ein Client-Gerät 1622 zur Speicherung und Verwendung im Client-Gerät gesendet werden. Als Zweites wird ein Satz aus Liniensegmenten, denen der wiederzugebende Text auf einem Bild folgen soll, vorzugsweise als Dreiecke mit geeigneten Vertexattributen, gezeichnet beziehungsweise eingerichtet. Als Drittes berechnen ein oder mehrere Shader, wo der Text oder die Zeichen der in der Textur gespeicherten Textzeichenfolgen zu zeichnen ist, um den Liniensegmenten korrekt zu folgen, wobei einzelne Zeichendrehungen so durchgeführt werden, dass jedes der Textzeichen der Textzeichenfolge mit einer Ausrichtung wiedergegeben wird, die der durch die Liniensegmente gebildeten Linie folgt oder in Bezug auf sie richtig gedreht ist.
  • Wie vorstehend beschrieben, gibt das Wiedergabeverfahren nicht gedrehten Text in einer Textur oder Pixelkarte wieder. Selbstverständlich kann dieser Prozess unter Verwendung einer beliebigen gewünschten Textwiedergabebibliothek durchgeführt werden, die Text in einer Bildtextur oder einem anderen Typ von Nachschlagetabelle wiedergibt. Muss mehr als eine Textzeichenfolge in einer Textur platziert werden, wird der Standort einer jeden Textzeichenfolge aufgezeichnet und als Bestandteil der Textur bereitgestellt. Ferner kann die Höhe des Textes innerhalb einer jeden Textzeichenfolge aufgezeichnet und in der Textur codiert oder als Attributdaten für eine Textur bereitgestellt werden.
  • Zusätzlich zum Wiedergeben des nicht gedrehten Textes der Textzeichenfolgen innerhalb der Textur werden Codierdaten, weise ein codierter Pixelstreifen, innerhalb der Textur für jede zu definierende Textzeichenfolge entlang der X-Richtung der Textur, der verhältnismäßigen Position einer jeden Pixelspalte eines Textzeichens in Bezug auf die Mitte dieses Textzeichens bereitgestellt. Die Codierdaten können auch Brüche oder Übergänge zwischen Textzeichen innerhalb einer Textzeichenfolge definieren. Obgleich die Codierdaten mit der Textur auf jede beliebige gewünschte Art und Weise bereitgestellt werden können, können die Codierdaten innerhalb der Textur innerhalb einer Pixelzeile unmittelbar oder nahe über den obersten der Pixelorte der Textzeichenfolge platziert werden, die gerade codiert wird.
  • 3 veranschaulicht eine beispielhafte Textur 50 mit drei darin angeordneten Textzeichenfolgen in Form der Straßennamen: „Freemont Ave”, „Aurora Ave” und „First St”. Wie dies ersichtlich ist, speichert die Textur 50 Pixelfarbwerte für jedes der Pixel, die die Textzeichen bilden, welche die Textzeichenfolgen bilden. Ferner werden Codierdaten in Form eines Codierstreifens 52 direkt über, beispielsweise eine Pixelzeile über den obersten jeder der Textzeichenfolgen bereitgestellt. Allgemein werden die Pixelwerte innerhalb der Pixelzeile, die den Codierstreifen 52 ausmachen, codiert, um die mittlere Pixelspalte eines jeden Textzeichens und die Breiten der Textzeichen oder die Abstände zu einer Mitte eines dazugehörenden Textzeichens von einer beliebigen bestimmten Pixelspaltenposition zu reflektieren. Die Codierstreifen 52 sind in 3 als eine Pixelzeile konstanter Farbe dargestellt, es ist jedoch ersichtlich, dass die Codierstreifen 52 tatsächlich verschiedene Farb- oder Pixelwerte für unterschiedliche Pixelpositionen davon umfassen. Ferner ist zu Veranschaulichungszwecken die mittlere Pixelspalte, die zu jedem der Textzeichen der Textzeichenfolge gehört, innerhalb der Codierzeilen 52 von 3 durch Markierung mit einer kleinen vertikalen Linie angezeigt.
  • Ein Abschnitt einer der Codierstreifen 52 wird in 3A genauer veranschaulicht. So veranschaulicht insbesondere 3A einen Abschnitt des Codierstreifens 52, der über den Textzeichen ”Free” der Textzeichenfolge „Freemont Ave” von 3 angeordnet ist. Obgleich die Textzeichen F, r, e und e in Blockschrift hervorgehoben über bestimmten Pixelwertorten in 3A dargestellt sind, wird dies nur gemacht, um die Pixelzeilen und -spalten der Textur 50 zu veranschaulichen, die zu diesen Textzeichen gehört. Es ist offensichtlich, dass die an diesen Pixelorten gespeicherten Pixelwerte die bestimmten Bildmerkmale dieser bestimmten Textzeichen definieren. Der Codierstreifen 52 von 3A liegt innerhalb der Textur 50 direkt über der Textzeichenfolge, zur der Codierstreifen 52 gehört, beispielsweise in einer Pixelzeile direkt über der oberen Pixelzeile der dazugehörenden Textzeichenfolge. In diesem Fall reflektieren oder spezifizieren die Werte eines jeden der Pixel im Codierstreifen 52 die Position entlang der X-Richtung oder die Breite der Textur 50 dieser Pixelspalte, gemessen in Bezug auf die Mitte des bestimmten Textzeichens, dass sich innerhalb der Pixelspalte direkt unter dem Codierstreifen 52 befindet. In einem Beispiel kann der Pixelwert auf der mittleren Spalte eines Textzeichens auf einen Wert von 128 eingestellt werden, obgleich der Wert der Pixelverschiebung um Eins für jede Pixelspalte von der mittleren Pixelspalte des Textzeichens vom mittleren Pixel (beispielsweise nach links) erhöht oder (beispielsweise nach rechts) verringert werden kann. So umfasst beispielsweise der Pixelbereich über dem Textzeichen ”F” in der Textzeichenfolge „Freemont Ave” 12 Pixel, wobei das mittlere Pixel einen Wert von 128 aufweist, die fünf Pixel nach rechts vom mittleren Pixel jeweils den Wert von 127, 126, 125, 124 und 123 und die vier Pixel nach links vom mittleren Pixel jeweils den Wert von 129, 130, 131 und 132 aufweisen. Der Codierstreifen 52 kann die Werte der roten Farbe eines jeden Pixels zum Durchführen dieser Codierung verwenden, könnte stattdessen oder zusätzlich dazu aber auch andere Farbwerte der Pixel zum Codieren von Textzeichenmitten und -breiten verwenden. Im Beispiel, im die roten Farbwerte in der Pixelzeile innerhalb der Textur 50 codiert werden, die den Codierstreifen 52 definiert, hat jedes Pixel im Codierstreifen 52 einen roten Farbwert, der, auf einer Skala von 0 bis 255, um 128 größer ist als der Pixelabstand zur Mitte des Textzeichens, das sich aktuell unter dem Pixel oder innerhalb derselben Pixelspalte befindet. Es kann für jedes Textzeichen ein extra Pixel links und rechts von den Pixeln innerhalb des Codierstreifens 52 eingefügt werden, wobei das extra Pixel links einen Rotwert von beispielsweise 255 und das Pixel rechts einen Rotwert von beispielsweise 0 aufweist, um die Enden des aktuellen Textzeichens anzuzeigen. Selbstverständlich kann der Codierstreifen 52 zum ähnlichen Codieren eines jeden Textzeichens in der Textzeichenfolge unmittelbar unter dem Codierstreifen 52 verwendet werden. Des noch Weiteren kann, obgleich der Codierstreifen 52 als über der dazugehörenden Textzeichenfolge liegend veranschaulicht wird, der Codierstreifen 52 alternativ dazu auch unter der Textzeichenfolge innerhalb derselben Textur angeordnet oder auf andere Art und Weise bereitgestellt werden, wie beispielsweise in einer zusätzlichen oder separaten Textur, mit einem Ort, der die Textzeichenfolge, zur er gehört, widerspiegelt oder mit dem er korreliert. Auf jeden Fall korreliert die Spaltenposition des Codierstreifens 52 in der Position mit den Pixelspalten des dazugehörenden Textzeichens. Die Mittelposition und Breite eines jeden Textzeichens in einer Textzeichenfolge können codiert oder auf jede andere gewünschte oder nützliche Art und Weise bereitgestellt werden.
  • Im Ergebnis des Speicherns und Verwendens der Codierdaten, die in Form des Codierstreifens 52 für jede Textzeichenfolge in der Textur bereitgestellt werden, ist das hierin beschriebene Bildwiedergabesystem in der Lage, die Textzeichen in diesen Textzeichenfolgen so wiederzugeben, dass einzelne Zeichen richtig entlang einer multisegmentierten Linie ausgerichtet gezeichnet werden. Insbesondere ist das Bildwiedergabesystem unter Verwendung der Codierdaten in der Lage, den verhältnismäßigen Abstand zur Mitte eines dazugehörenden Textzeichens entlang der X-Koordinate der Textur bei einer beliebigen bestimmten Position (d. h. Pixelspalte) eines jeden Textzeichens zu bestimmen. Unter Verwendung dieser Informationen kann ein Bild-Shader, wie beispielsweise einer der Fragment-Shader 46, so eingerichtet sein, dass er gedrehten Text, d. h. Text entlang einer gekrümmten Linie, korrekt, ohne Brüche in der Mitte der Textzeichen zeichnen kann, wie dies nachstehend beschrieben wird.
  • Der zweite allgemeine Schritt des hierin beschriebenen Textwiedergabeprozesses bestimmt die Liniensegmente der Linie, der die Textzeichenfolge innerhalb der codierten Textur folgen soll. Dieser Schritt kann auftreten, wenn das Kartenbild wiedergegeben wird, und natürlich hängt die Art und Weise, mit der die Textzeichenfolge schließlich wiedergegeben wird, von der speziellen Linie ab, der der wiederzugebende Text folgen soll. Selbstverständlich kann es sich bei der Linie, der gefolgt werden soll, um einen beliebigen gewünschten Typ von Linie, wie beispielsweise eine, die längs durch die Mitte einer erstellten Straße unter Verwendung von vektorbasierten Bildobjekten verläuft, eine Linie, die einer Grenze folgt usw. handeln. Solche Linien können im Allgemeinen bestimmt und zum Wiedergeben von Text verwendet werden, um eine Straße oder ein anderes Bildmerkmal zu kennzeichnen. Selbstverständlich kann es sich bei der Linie, der gefolgt werden soll, um jeden anderen beliebigen Typ von Linien, wie beispielsweise eine Linie handeln, die einem Umriss eines Bildmerkmals oder jede andere gewünschte Linie handeln. Die zu verwendende Linie kann anhand anderer Bildmerkmale, wie beispielsweise den Vertices von Bildobjekten, bestimmt, vorab in der Kartendatenbank 12 gespeichert und von dieser bereitgestellt werden, von einem Nutzer spezifiziert oder auf jede andere beliebige gewünschte Art und Weise bestimmt werden.
  • Beim Identifizieren der Linie, entlang der Text wiedergegeben werden soll, wird die Linie in gerade jedoch verbundene Liniensegmente unterteilt, wobei jedes Liniensegment im Allgemeinen in einem Winkel zu dem/den unmittelbar angrenzenden Liniensegment/en liegt. Ein Beispiel einer multisegmentierten Linie 60 ist in 4 als gestrichelte hervorgehobene Linie dargestellt, die eine Straße 62 mit mehreren Abschnitten in der Mitte längs durchquert. Die segmentierte Linie 60 umfasst miteinander verbundene Liniensegmente 60A, 60B, 60C und 60D. Selbstverständlich kann Linie 60 und/oder ihre dazugehörenden Liniensegmente auf jede beliebige gewünschte Art und Weise, wie beispielsweise auf der Grundlage von Daten, die in den die Segmente der Straße 60 definierenden Vertices bereitgestellt werden, bestimmt werden.
  • 5 veranschaulicht die Liniensegmente 60A und 60B von 4 genauer. In 5 ist das Liniensegment 60A veranschaulicht, wie es an einem Anfangspunkt 66 beginnt und sich bis zu einem Endpunkt 68 erstreckt, wohingegen das Liniensegment 60B veranschaulicht ist, wie es sich von einem Anfangspunkt 68 zu einem Endpunkt 70 erstreckt. Ferner weist das Liniensegment 60A von 5 eine Länge von 35 (gemessen in einem Abstand verhältnismäßig zum Bild, auf dem die Linie verwendet werden soll, wie beispielsweise in Pixelzahlen oder gemäß einem anderen Mittel zur Abstandsgebung) auf. Im Fall von 5 wird Liniensegment 60A veranschaulicht, wie es bei einem verhältnismäßigen Referenzwert von 0 (an Punkt 66) beginnt und sich bis zu einem verhältnismäßigen Referenzwert von 35 (an Punkt 68) entlang der Skala 72 in 5 erstreckt, die parallel zu Liniensegment 60A angeordnet ist. Auf ähnliche Weise weist Liniensegment 60B eine Länge von 70 (im verhältnismäßigen Bildabstand) auf und beginnt bei einem verhältnismäßigen Referenzwert von 35 (an Punkt 68) und erstreckt sich bis zu einem verhältnismäßigen Referenzwert von 105 (an Punkt 68) wie dies durch eine Skala 74 veranschaulicht ist, die parallel zu Liniensegment 60B angeordnet ist.
  • Sobald jedes der Liniensegmente (beispielsweise 60A und 60B) von Linie 60 identifiziert und die Länge von ihnen bestimmt ist, kann anschließend jedes Liniensegment als Rechteck bildendes Paar von Dreiecken dargestellt werden, das hierin als Textkästchen bezeichnet wird. Solch ein Rechteck oder Textkästchen 80A ist in 5 für das Liniensegment 60A veranschaulicht. Das Rechteck 80A wird im Allgemeinen zum Definieren eines Satzes an Vertices für ein Textkästchen verwendet, das durch einen Fragment-Shader zum Wiedergeben von Text entlang einem Liniensegment 60A verwendet wird. Insbesondere werden die Vertices des Rechtecks 80A so ausgewählt, dass sie sich von einer Position im Bild, das bei einem vorab definierten oder spezifischen Abstand anfangt (wie beispielsweise die Hälfte der Breite des breitesten Textzeichens der entlang der Linie 60A wiederzugebenden Textzeichenfolge) vor dem Anfang des Liniensegmentes 60A (gemessen in Richtung entlang der Länge des Liniensegmentes 60A) bis zum vorab definierten oder spezifischen Abstand (beispielsweise die Hälfte der Breite des breitesten Textzeichens der Textzeichenfolge) nach dem Ende des Liniensegmentes 60A erstrecken. Im Beispiel von 5 ist der vorab festgelegte Abstand veranschaulicht, wie er 5 beträgt (im verhältnismäßigen Abstand des Bildes), und sich demzufolge das Rechteck 80A von –5 bis 40 entlang des Skalenanzeigers 72 erstreckt. In Richtung orthogonal zum Liniensegment 60A überspannt das Rechteck 80A einen weiteren Abstand, wie beispielsweise die Hälfte der Höhe des größten wiederzugebenden Textzeichens in eine Richtung orthogonal zum Liniensegment 60A zu einem anderen Abstand (beispielsweise die Hälfte der Höhe des größten wiederzugebenden Textzeichens) in der anderen Richtung orthogonal zum Liniensegment 60A. Demzufolge reicht, wie dies durch die Skala 75 von 5 veranschaulicht ist, das Rechteck 80A von –5 bis 5 (angenommen, dass die Höhe der wiederzugebenden Textzeichenfolge entlang der Linie 10 im verhältnismäßigen Bildabstand liegt).
  • Nun wird die Länge des gesamten Liniensegmentes 60A vom Anfangspunkt 66 bis zum Endpunkt 68, was hierin als Bereich des Liniensegment 60A bezeichnet wird, berechnet oder bestimmt, und dieser Bereich wird als zwei Komponenten eines Vertexattributs für jeden der Vertices des Textkästchens 80A eingestellt (wobei die Werte dieser Vertexattribute dieselben für jeden der Vertices der das Textkästchen 80A bildenden Dreiecke sind). Der Bereich eines Liniensegmentes wird dementsprechend als ein Bereich des Textkästchens 80A verwendet oder als solcher bezeichnet, im das Liniensegment angeordnet ist. Demgemäß ist der Bereich des Rechteckes 80A der Bereich des Liniensegmentes 60A entlang der der Text wiedergegeben werden soll. Dieser Bereich wird in einem Fragment-Shader zum Interpolieren verwendet, um Längenwerte für die Vertices des Rechtecks 80A so zu berechnen, dass das lineares Interpolieren der Länge von einem Ende des Rechteckes 80A bis zum anderen Ende und zur richtigen Länge am Anfang des Liniensegmentes 60A, an dem Ende des Liniensegmentes 60A und an allen Punkten dazwischen führt. Natürlich kann dieses Interpolieren durch Subtrahieren der Hälfte der Breite des breitesten Textzeichens (das heißt der vorab festgelegten Abstand) von der Länge des Liniensegmentes 60A bis zum Anfang des Liniensegmentes 60A und Verwenden dieses Wertes für die Rechteckvertices vor dem Liniensegment 60A und Addieren der Hälfte der Breite des breitesten Zeichens (beispielsweise der vorab festgelegte Abstand) zur Länge des Endes des Liniensegmentes 60A und Verwenden dieses Wertes für die Rechteckvertices nach dem Liniensegment 60A durchgeführt werden. Zusätzlich dazu kann den Vertices eines Textkästchens über einem Liniensegment ein Vertextattribut zugewiesen werden, das einen Y-Texturwert von 0 spezifiziert, und den Vertices des Textkästchens unter dem Liniensegment kann ein Vertexattribut zugewiesen werden, das einen Y-Texturwert spezifiziert, der der Höhe des Textes in seiner innerhalb des Bildes wiedergegebenen Form entspricht. Die X-, Y-Koordinaten der äußeren Vertices des Rechtecks 80A von 5 werden dementsprechend als (-5, 0), (40, 0), (–5, 10) und (40, 10) in einem Bildabstand veranschaulicht, der am Anfangspunkt 66 des Liniensegments 60A in der Mitte angeordnet ist und sich parallel (in X-Richtung) und orthogonal (in Y-Richtung) zum Liniensegment 60A erstreckt. Die Verwendung dieses Koordinatenabstandes wird lediglich zur einfacheren Veranschaulichung bereitgestellt und ist möglicherweise nicht der tatsächliche im Bild selbst oder in den Shaders, welche Interpolation und Bildwiedergabe durchführen, verwendete Koordinatenabstand. Es kann jedoch eine Umwandlung zu einem konsistenten Bildabstand durch eine Koordinatenrotation und eine Umsetzung erzielt werden, sodass eine Übereinstimmung mit dem X-Y-Koordinatenabstand erzielt wird.
  • Werden mehrere Textzeichenfolgen in derselben Textur bereitgestellt, die zum Spezifizieren der Textzeichenfolge zur Wiedergabe in einem Textkästchen (wie beispielsweise Textkästchen 80A) verwendet werden, muss möglicherweise auch die Y-Verschiebung der betreffenden Textzeichenfolge in ihrer in der Textur gespeicherten Form (das heißt die Y-Verschiebung der im Textkästchen wiederzugebenden Textzeichenfolge) als ein Vertexattribut gesendet werden, sodass das richtige Textbild innerhalb des Textkästchens wiedergegeben werden kann. Möglicherweise wird auch ein Shader benötigt, der die innerhalb einer Textur gespeicherten Textzeichenfolge entlang eines bestimmten Liniensegmentes (wie beispielsweise Liniensegment 60A) wiedergeben soll, um die Größe (beispielsweise Höhe) der Textzeichenfolge innerhalb der Text zu kennen, um ordnungsgemäß Textkoordinaten zu berechnen, damit das wiederzugebende Textzeichen zu jeder beliebigen Zeit lokalisiert und eine ordnungsgemäße Interpolation durchgeführt werden kann, wenn die Textzeichenfolge auf dem Bild wiedergegeben wird. Die Größen (beispielsweise die Höhen) von Zeichen oder Textzeichen in der Textur können jedoch einheitlich sein, und dieser Wert kann anschließend eher als eine einheitliche Variable als ein Vertextattribut eines Textkästchens eingestellt werden.
  • Wie dies ersichtlich ist, kann ein Rechteck oder ein Textkästchen für jedes der anderen Liniensegmente 60B, 60C, 60D der zu folgenden Linie 60 gebildet werden. Als Beispiel ist ein Textkästchen 80B in 6 für das Liniensegment 60B veranschaulicht. Das Textkästchen 80B weist Vertices (30, 0), (110, 0), (30, 10) und (110, 10) im verhältnismäßigen Bildabstand (nun durch die Skalen 74 und 76 definiert) auf. Ferner ist der Bereich dieses Textkästchens 35 bis 105, da dies der Bereich des Liniensegmentes 60B von seinem Anfangspunkt 68 zu seinem Endpunkt 70, gemessen vom Anfang der Linie 60 ist.
  • Nachdem die Vertices für die zwei Dreiecke für jedes der Dreiecke oder Textkästchen für jedes der Liniensegmente der Linie definiert sind, der der wiederzugebende Text folgen soll, können diese Vertices und ihre dazugehörenden Attribute (beispielsweise zweidimensionale Orte und Bereiche sowie Textzeichenfolgekoordination) an einen der Vertex-Shader 44 gesendet werden, um die Textkästchen für jedes der Liniensegmente der zu folgenden Linie wiederzugeben. Diese Textkästchen können, wenn sie erst einmal durch den Vertex-Shader 44 definiert sind, anschließend von einem Fragment-Shader 46 zum Wiedergeben von Text innerhalb dieser Textkästchen unter Verwendung der codierten Textzeichenfolgen in ihrer in der Text von 5 gespeicherten Form, beispielsweise auf die nachstehend beschriebene Art und Weise verwendet werden.
  • Im Allgemeinen bestimmt der Fragment-Shader 46 während des Betriebs welche Pixel vom zu zeichnende Textbild, sofern vorhanden, für jedes Pixel im Kästchen zu zeichnen sind, das für jedes der bestimmten Liniensegmente definiert ist. Insbesondere verwendet die Kartenanwendung 48, wenn Text entlang einer multisegmentierten Linie wiedergegeben wird, den Fragment-Shader 46, um Text vom Textbild in die verschiedenen Textkästchen einzeln (Textkästchen für Textkästchen) zu platzieren. Bei dieser Vorgehensweise wählt die Kartenanwendung 48 eines der Liniensegmente aus, entlang dem das Wiedergeben einer bestimmten Textzeichenfolge begonnen werden soll und verwendet das für dieses Liniensegment erstellte Textkästchen. Das erste ausgewählte Liniensegment oder Textkästchen kann das Liniensegment oder Textkästchen sein, das einen Bereichswert von 0 darin aufweist. Während des Betriebs unter Verwendung dieses Textkästchens kann der Fragment-Shader 46 auf die Pixel des ersten wiederzugebenden Textzeichens von der geeigneten Textur zugreifen und unter Verwendung des Codierstreifens 52 innerhalb der Textur den verhältnismäßigen Abstand zur Mitte dieses Textzeichens nachschlagen oder bestimmen. Diese Funktion kann durch Verwendung des interpolierten Längenwertes als X-Koordinate in der Textur, geteilt durch die Breite der Textur verwendet werden, um eine Texturkoordinate für die Position des Zeichens, das wiedergegeben wird, in seiner innerhalb der Textur gespeicherten Form zu erhalten. Die Y-Koordinate in der Textur kann als die erste Pixelzeile in der Textur oder die erste Reihe nach der Texturverschiebung berechnet werden, wenn mehrere Zeichenfolgen in die Textur gepackt werden. Sobald der Fragment-Shader 46 das richtige Textzeichen der wiederzugebenden Textzeichenfolge gefunden hat, liest er die geeigneten Farbwerte aus dem Codierstreifen 52 der Textzeichenfolge aus und subtrahiert 128, um den Abstand zur Mitte des Zeichens zu bestimmen. Durch Addieren der interpolierten Länge wird die Länge bis zur Mitte des Zeichens erhalten. Liegt die Mitte des Zeichens (in ihrer interpolierten Form in den Bildabstand) im Bereich des Textkästchens, dann zeichnet der Fragment-Shader 46 das oder die Pixel des Textbildes auf der Anzeige innerhalb des Textkästchens. Liegt die berechnete Mitte des Textzeichens jedoch nicht zwischen der ersten und zweiten Grenze des für das Textkästchen bereitgestellten Bereiches, sollten die Pixel des aktuellen Textzeichens verworfen und nichts gezeichnet werden. Insbesondere führt der Fragment-Shader 46 die Bestimmung, ob jedes Pixel eines Textzeichens in das Textkästchen platziert werden sollte, Pixel für Pixel durch und führt demzufolge die Bestimmung, ob ein Pixel eines Textbildes zu einem Textzeichen mit einem Mittelpunkt gehört, der in den Bereich des aktuell wiedergegebenen Textkästchens liegt, für jedes einzelne Pixel, das analysiert wird, durch. Natürlich könnte, falls dies gewünscht ist, der Fragment-Shader 46 diese Analyse für jede Pixelspalte des Textbildes (bei dem Schritt, die entsprechenden Pixel des Textkästchens einzufüllen) durchführen, und in diesem Fall entweder die Textbildpixel einer Spalte in Abhängigkeit davon in das nächste Textkästchen oder nicht zeichnen, ob die Mitte des Zeichens im Bereich des Textkästchens liegt. Auf jeden Fall kann der Fragment-Shader 46, wenn irgendein bestimmtes Pixel oder eine Pixelspalte nicht verworfen wird, die Farben für den Text an dieser Pixelspalte unter Verwendung derselben Textur-X-Koordinaten wie zuvor und einem oder mehr als der interpolierten Y-Texturkoordinate, die als Vertexattribut hereingereicht wurde (je nach der bestimmten Zeile der Spalte, die wiedergegeben wird), geteilt durch die Texturhöhe, nachschlagen. Damit sollte das entsprechende Pixel aus dem wiedergegebenen Text erhalten werden, womit das mittlere Codierpixel über dem Text korrigiert wird.
  • Natürlich verwendet die Kartenanwendung 48, wenn die Pixel eines Textzeichens nicht in das Textkästchen gezeichnet werden, weil die Mitte des Textzeichens außerhalb des Bereiches des Textkästchens liegt, den Fragment-Shader 46, um dieses Textzeichen zu zeichnen, wenn das nächste oder ein darauffolgendes Textkästchen (das zum nächsten oder einem darauffolgenden Liniensegment entlang der Linie gehört) bearbeitet oder wiedergegeben wird. Der Fragment-Shader 46 wiederholt den Prozess des Bestimmens, ob die Pixel eines Textzeichens im aktuell ausgewählten Textkästchen wiedergegeben werden sollten oder nicht, bis der Shader 46 das Textkästchen einfüllt, das heißt das Ende des Textkästchens erreicht. Sobald die Pixel eines Textzeichens innerhalb oder unter Verwendung eines bestimmten Textkästchens wiedergegeben sind, versucht der Fragment-Shader 46 die Pixel des nächsten Textzeichens innerhalb desselben Textkästchens wiederzugeben und wiederholt diesen Prozess, bis er das Ende des Textkästchens erreicht hat. Wie dies ersichtlich ist, kann die Größe der Textkästchen, die für die Liniensegmente gebildet wurden, klein und tatsächlich kleiner als die Größe eines Zeichens sein, da, wenn ein Zeichen nicht in einem Textkästchen wiedergegeben wird (weil sich sein Mittelpunkt außerhalb des Bereiches des Textkästchens erstreckt), das Textzeichen in einem darauffolgenden Textkästchen (das heißt dem Textkästchen, in dem die Mitte des Textzeichens liegt) wiedergegeben wird. Während dieses Prozesses können Textkästchen gezeichnet werden, in denen keine Textzeichen wiedergegeben werden.
  • Im Ergebnis dieses Prozesses wird jedes der Textzeichen innerhalb des Textbildes mit der richtigen Seite nach oben (das hießt in Ausrichtung eines Textkästchens aufrecht) und einer Linie folgend wiedergegeben, wo jedes Textzeichen in einer Ausrichtung entlang einer Linie gedreht wird, um der multisegmentierten Linie korrekt zu folgen. Im Ergebnis können die Textzeichenfolgen vorab als nicht gedreht berechnet und in einer Textur gespeichert und immer wieder für mehrere Linien mit unterschiedlichen Krümmungen verwendet werden.
  • In Bezug auf die 7A und 7B wird ein Prozessablaufdiagramm oder Ablaufplan eines Verfahrens, einer Routine oder eines Prozesses 100 genauer veranschaulicht, das, die oder der zum Wiedergeben von Text innerhalb eines Bildes unter Verwendung einer codierten Textur oder einer Textzeichenfolge-Nachschlagetabelle, wie der von 3 und 3A, verwendet werden kann. Lediglich als Beispiel kann die Routine 100 in einer Kartenwiedergabemaschine wie der von 2 verwendet werden, um Text entlang oder innerhalb der Grenzen einer multisegmentierten Straße und insbesondere einer Linie wiederzugeben, die der Mitte dieser Straße folgt, sodass der wiedergegebene Text in der Straße zentriert ist und verschiedene Segmente der Straße überspannt. Im Allgemeinen kann die Routine oder der Prozess 100 als eine oder mehrere Software-Routinen oder Anwendungen, unter anderem Routinen implementiert sein, die Bestandteil der Kartenanwendung 48 sind und/oder Routinen, die durch die Vertex- und Fragment-Shader 44 und 46 definiert sind, die in den Prozessoren 30a und 30b ausgeführt werden. Diese Routinen können in einer beliebigen Sprache, beispielsweise Javascript, C Code usw. implementiert oder geschrieben sein und sowohl auf einem als auch auf beiden der Prozessoren 30a und 30b ausgeführt werden. Zusätzlich können diese Routinen die Rastereinrichtung 36 zum Wiedergeben eines Bildes auf dem Anzeigegerät 34 verwenden.
  • Auf jeden Fall kann ein Block 102 der Routine 100 ein Bildmerkmal zeichnen oder bilden, wie beispielsweise eine multisegmentierte Straße zeichnen oder bilden, entlang der Textzeichen anzuwenden sind. Als Teil dieses Prozesses oder nach seinem Abschluss bestimmt ein Block 104 eine multisegmentierte Linie, die dem Bildmerkmal folgt, wie beispielsweise eine Straße mit mehreren Kreuzungen, entlang der die Textzeichenfolge wiedergegeben werden soll. In einem Beispiel kann diese multisegmentierte Linie der Mittellinie dieser Straße mit mehreren Abschnitten, wie die in 4 veranschaulichte Straße 60, folgen. Als Nächstes findet oder lokalisiert ein Block 106 die Punkte entlang der multisegmentierten Linie an der Kreuzung eines jeden Paares angrenzender Abschnitte der multisegmentierten Linie. Auf diese Weise findet der Block 106 den Anfangs- und Endpunkt eines jeden Liniensegmentes der Linie, entlang der Text wiederzugeben ist und kann jedem Segment der multisegmentierten Linie einen eindeutigen Bereich zuweisen. Der zugewiesene Bereich sollte sich aufeinanderfolgend oder durchgehend über die Grenze der Liniensegmente erstrecken. Das heißt, der Bereich der Linie kann am Anfang eines Liniensegmentes beginnen und sich durchgehend durch dieses Liniensegment und anschließend durch jedes der folgenden Liniensegmente erstrecken, sodass keine zwei Liniensegmente denselben Bereich aufweisen und lediglich gemeinsame Endpunkte aufweisen.
  • Als Nächstes erstellt ein Block 108 ein Textkästchen für jedes Liniensegment auf die vorstehend in Bezug auf die 5 und 6 beschriebene Art und Weise. Die Vertices dieser Textkästchen können definiert oder berechnet werden, beispielsweise in einer Routine innerhalb der Kartenanwendung 48 definiert oder berechnet und anschließend an eine der Vertex-Shader 44 von 2 gesendet werden, um Textkästchen im Bild, das wiedergegeben wird, unter Verwendung der Rastereinrichtung 36 zu erstellen. Natürlich sind die Umrisse der Textkästchen transparent oder farblos, da die Textkästchen selbst keine visuellen Aspekte des Bildes, das wiedergegeben wird, sind (obgleich sie das sein könnten, falls dies gewünscht ist). Die Vertices für jedes Textkästchen spezifizieren den Ort der Textkästchenvertices innerhalb des Bildes und umfassen als Attribute den Bereich des zu dem Textkästchen gehörenden Liniensegmentes und, falls erforderlich, eine oder mehrere Referenzen zur Textzeichenfolge der Textur, die im nächsten Kästchen wiederzugeben ist. Das heißt, falls dies gewünscht wird, können die Textkästchenvertices als Attribute Zeiger auf den Ort innerhalb der Textur umfassen, an dem sich die entlang der Linie wiederzugebende Textzeichenfolge befindet.
  • Als Nächstes wählt in einem Block 110 die Routine oder der Prozess 100 ein erstes der Textkästchen aus, entlang dem das Wiedergeben der referenzierten Textzeichenfolge begonnen werden soll. Dieses Textkästchen ist im Allgemeinen das Textkästchen mit dem Bereichswert Null (0), da dieser Bereichswert die Anfangsposition anzeigt, entlang der die Wiedergabe der innerhalb der Textur gespeicherten Textzeichenfolge begonnen werden soll. Dies muss jedoch nicht der Fall sein, und der Text könnte auch entlang der Linie beginnend an jeder beliebigen gewünschten Ort oder Position entlang der bestimmten Linie sein. Auf jeden Fall lokalisiert ein Block 112 (7B) den Anfangspunkt im aktuellen oder ausgewählten Textkästchen, im Text wiederzugeben ist, als den aktuellen Ort entlang der Linie. Dieser Anfangspunkt kann (mit Ausnahme des ersten Textkästchens) am Anfang beziehungsweise vorderen Ende des Textkästchens sein und ist dies im Allgemeinen auch. Ein Block 114 bezieht anschließend das Pixel oder den Satz von Pixeln, der zu einer Spalte mit Textzeichen innerhalb der Textzeichenfolge in ihrer innerhalb der Textur gespeicherten Form gehört, das oder die dem Bereichswert entspricht, der zu dem aktuellen Ort entlang der Linie gehört.
  • Ein Block 116 bestimmt anschließend, ob die Mitte des Textzeichens, zu dem diese Pixel gehören, im Bereich des aktuellen Textkästchens liegt (wenn die Textgröße so interpoliert wird, dass sie in die als Teil des aktuellen Textkästchens spezifizierte Größe passt), wenn das gesamte Textzeichen an dem aktuellen Ort entlang der Linie im aktuellen Textkästchen platziert oder wiedergegeben werden soll. Block 116 kann diesen Test durch Lesen des Codierstreifens 52 der Textur unmittelbar über den Pixeln des betreffenden Textzeichens durchführen. Das heißt, Block 116 kann den Codierstreifen 52 lesen, um den Pixelport (in X-Richtung der Textur) innerhalb des Codierstreifens 52 für das aktuelle Textzeichen (das heißt, ohne Durchqueren eines mit 0 oder 255 bewerteten Pixelortes) zu bestimmen, der einen Rotfarbwert von 128 aufweist, und anschließend diese Position als die Mitte (entlang der X-Richtung der Textur) des betreffenden Textzeichens anerkennen. Alternativ oder zusätzlich dazu kann Block 116 die Codierbreite innerhalb des Codierstreifens 52 verwenden, um dem Abstand zur Mitte des aktuellen Textzeichens zu bestimmen. Wenn, bei einer ordnungsgemäßen Interpolation zum Platzieren innerhalb der aktuellen Textkästchen der mittige Pixelort des aktuellen Textzeichens innerhalb des Bereiches des aktuellen Textkästchens liegt, gibt ein Block 118 alle der Pixel der aktuellen Spalte des Textzeichens im aktuellen Textkästchen (bei einer ordnungsgemäß interpolierten Größe) an dem aktuellen Ort entlang der Linie wieder. Wenn im Gegensatz dazu bei einer ordnungsgemäßen Interpolation zum Platzieren innerhalb der aktuellen Textkästchen der mittige Pixelort des aktuellen Textzeichens nicht innerhalb des Bereiches des aktuellen Textkästchens liegt, wird Block 118 (von Block 122) so übersprungen, dass das aktuelle Pixel oder die aktuelle Pixelspalte des Textzeichens nicht im Textkästchen wiedergegeben wird. Die Vorgehensweisen können, falls dies so gewünscht ist, in einem Fragment-Shader 46 durchgeführt werden. Natürlich werden, wenn der Fragment-Shader 46 ein Textzeichen innerhalb des Textkästchens wiedergibt, die Pixel des Textzeichens entlang der X- und Y-Ausrichtung des Textkästchens wiedergegeben, sodass das Textzeichen in aufrechter Position entlang der Linie, wie durch die Ausrichtung des Textkästchens definiert, wiedergegeben wird. Ferner kann die Routine 100 während des Betriebs die Blöcke 116 und 118 nacheinander Pixel für Pixel durchführen, sodass der Fragment-Shader separat für jedes Pixel in einer bestimmten Pixelspalte der Textur analysiert, ob das Textzeichen, zu dem dieses Pixel gehört, eine Mittelposition aufweist, die innerhalb des Bereiches des Textkästchens liegt. Für ein leichteres Verständnis zeigt der Ablaufplan der 7A und 7B jedoch keine Vorgehensweise Pixel für Pixel, sondern zeigt die Verarbeitung von Textzeichenpixeln Pixelspalte für Pixelspalte an.
  • Auf jeden Fall erhöht, nachdem alle der Pixel einer bestimmten Pixelspalte der Textur analysiert worden sind, ein Block 124 den aktuellen Ort entlang der Linie auf die nächste Position, und ein Block 126 bestimmt, ob der aktuelle Ort hinter dem Ende des aktuellen Textkästchens liegt. Ist dies nicht der Fall, kehrt die Steuerung zurück zu Block 114, der den nächsten Pixel (oder Satz von Pixeln in einer Pixelspalte der Textur) bezieht, und die Schritte der Blöcke 116126 werden für die nächste Pixelspalte in einem Textzeichen wiederholt, um zu sehen, ob diese Pixel innerhalb des aktuellen Textkästchens wiedergegeben werden sollen.
  • Wird jedoch in Block 126 herausgefunden, dass der neue Ort der Linie außerhalb von oder hinter dem Ende des aktuellen Textkästchens liegt, bestimmt ein Block 130 (der in der Anwendung 48 zum Zeichnen des Textes entlang der Linie ausgeführt werden kann), ob alle Textkästchen für eine Linie wiedergegeben worden sind. Ist dies nicht der Fall, bestimmt ein Block 132 das nächste wiederzugebende Textkästchen und stellt die spezifizierenden Merkmale dieses Textkästchens dem Fragment-Shader 46 zur Wiedergabe bereit. Anschließend wird die Steuerung in 112 bereitgestellt, wo der Anfangspunkt des zu diesem neuen Textkästchen gehörenden Textbildes als dieser Punkt bestimmt wird, der dem Ort entlang der durch den Anfang des neuen Textkästchens definierten Linie entspricht und stellt diesen Punkt als den aktuellen Ort entlang der Linie ein. Anschließend funktioniert der Fragment-Shader 46 so, dass er die Blöcke 114 bis 126 für das nächste Textkästchen implementiert. Bestimmt der Block 130, dass das letzte Textkästchen wiedergegeben wurde, ist der Prozess des Wiedergebens der Textzeichenfolge entlang der Linie für eine Textzeichenfolge in der Textur abgeschlossen.
  • Wie dies ersichtlich ist, ist die Routine 100 im Grunde genommen so eingerichtet, dass sie das Textkästchen entlang der ausgewählten oder bestimmten Linie findet, in der die Mitte eines jeden Textzeichens liegen wird, und zeichnet das gesamte Textzeichen in diesem Textkästchen. Da der Bereich der Linie verwendet wird, um die Position der Textzeichen in Bezug auf einander zu bestimmen und dieser Bereich an Schnittpunkten von angrenzenden Textkästchen durchgängig und ununterbrochen ist, werden die Textzeichen jeweils in der richtigen Richtung (aufrecht) in Bezug auf das Textkästchen, in dem sie wiedergegeben werden, wiedergegeben. Da sich jedoch die Enden eines jeden Textkästchens über den Bereich des Textkästchens hinaus erstrecken, stellt die Routine sicher, dass ein ganzes Textzeichen in nur einem Textkästchen wiedergegeben werden kann und wird, das heißt, dem Textkästchen, das den Bereichswert aufweist, in dem die Mitte des Textzeichens liegt. Durch das System können Textkästchen eine sehr kleine Größe aufweisen, wobei ein Textzeichen möglicherweise nicht in jedem Textkästchen wiedergegeben werden kann, wie dies beispielsweise mit einer durchgehend gekrümmten Linie der Fall sein kann. Demzufolge kann mit diesem Verfahren Text entlang jeder beliebigen gekrümmten Linie richtig wiedergegeben werden.
  • Es ist natürlich ersichtlich, dass die verschiedenen von den unterschiedlichen Blöcken der 7A und 7B spezifizierten Schritte in einer neuen und anderen Reihenfolge, sowie auf andere Art und Weise oder mit einem anderen Ablauf durchgeführt werden können. Des Weiteren kann das Bestimmen oder Einrichten von Textkästchen „on the fly” durchgeführt werden, da jedes Textkästchen dann benötigt wird, wenn bestimmt wird, dass wiederzugebender Text außerhalb des aktuellen Textkästchens liegt, anstelle dass die Textkästchen eingerichtet oder festgelegt werden, bevor die Textwiedergabe beginnt, wie dies hierin beschrieben ist.
  • Obgleich der Codierstreifen 52 für eine Textzeichenfolge in einer Textur als unmittelbar ober und direkt unter einer dazugehörenden Textzeichenfolge beschrieben wird, kann dieser Codierstreifen 52 in der Textur auch unter der Textzeichenfolge bereitgestellt oder sogar in einer anderen Textur oder Nachschlagetabelle bereitgestellt werden, falls dies so gewünscht ist, oder auf eine Weise bereitgestellt werden, die in irgendeiner Weise mit den Pixeln der dazugehörenden Textzeichenfolge korreliert oder einen Bezug zu ihnen aufweist. Des Weiteren kann die Position der Mitte eines jeden Textzeichens in einer Textzeichenfolge auf andere Weise als die hierin beschriebene unter anderem auf eine Weise codiert werden, die keinen Codierstreifen 52 verwendet. Des Weiteren ist in den Fällen, in denen ein Codierstreifen verwendet wird, das Codierverfahren nicht auf beispielsweise das Verwenden der speziellen, hierin beschriebenen Pixelwerte beschränkt. Demzufolge können, obgleich der Wert 128 hierin als der Wert beschrieben wird, der zum Anzeigen der Mitte eines Textzeichens innerhalb des Codierstreifens 52 verwendet wird, andere Werte stattdessen verwendet werden. Auf ähnliche Weise können, obgleich der rote Farbwert einer Pixelzeile für die hierin beschriebenen Codierstreifen 52 verwendet werden, eine oder mehrere andere Pixelfarbwerte stattdessen verwendet werden.
  • Des Weiteren ist es wichtig, wie dies vorstehend angemerkt wird, dass der Fragment-Shader, der die Textzeichenfolge entlang einer Linie wiedergibt, bestimmen kann, wo die Mitte eines jeden Textzeichens innerhalb einer Textur liegt, sodass der Fragment-Shader bestimmen kann, ob die Mitte des Textzeichens im Bereich eines Textkästchens oder außerhalb des Bereiches des Textzeichens liegt, in dem die Textzeichen aktuell wiedergegeben werden. Eine Art und Weise des Bestimmens der Mitte eines Zeichens kann, wie vorstehend beschrieben, darin bestehen, die Mitte der Zeichen in der Textur oder Bildnachschlagetabelle selbst, wie die in den 3 und 3A veranschaulichte, zu codieren, in der ein einzelner Codierstreifen für eine einzelne Zeichenfolge oder Gruppe aus Textzeichen verwendet wird.
  • Unter Verwendung anderer Codierverfahren kann jedoch die Größe einer Textur oder Textzeichenfolge-Nachschlagetabelle durch Speichern der verschiedenen wiederzugebenden Textzeichen als Teile mehrerer unterschiedlicher Textzeichenfolgen (oder als Teile derselben Textzeichenfolge) als einen Satz von Glyphen innerhalb einer Textur zu verringern. Zusätzlich dazu müssen solche weiteren Codierverfahren erste Codierdaten für jede Textzeichenfolge, die Mitte- und/oder Breiteinformationen für jedes Textzeichen der Textzeichenfolge umfassen, sowie zweite Codierdaten bereitstellen, die auf eine bestimmte Glyphe zeigen, das als Textzeichen an jedem Textzeichenort einer Textzeichenfolge zu verwenden ist. So veranschaulicht beispielsweise 8 eine Textur 200, die Codierinformationen 202, 204 und 206 für drei unterschiedliche Textzeichenfolgen speichert, wobei die diese Textzeichenfolgen Kennzeichnungen oder Namen für verschiedene Straßen beispielsweise in einer gekachelten Karte definieren können. Die beispielhaften Linien der Textcodierinformationen 202, 204 und 206 von 8 können beispielsweise die Textzeichenfolgen „Freemont Ave”, „Aurora Ave” und ”First St” definieren. Jede der zu den Codierinformationen 202, 204 und 206 gehörende Textzeichenfolge kann beispielsweise bereitgestellt werden, um entlang unterschiedlicher Linien innerhalb eines Kartenbildes wiedergegeben zu werden. In diesem Fall umfasst jeder Satz von Codierinformationen 202, 204 und 206 jeweils einen Codierstreifen 202A, 204A, 206A, die Pixelwerte aufweisen, die die Mitte eines jeden Textzeichens in der Textzeichenfolge und/oder die Abstände von jeder bestimmten Pixelspalte eines dazugehörenden Textzeichens bezeichnen. Die Codierstreifen 202A, 204A, 206A sind ähnlich oder identisch mit den Codierstreifen 52 von 3 und 3A. Erneut wird im Sinne einer vereinfachten Veranschaulichung die Mitte eines jeden Textzeichens einer Textzeichenfolge durch eine kleine vertikale Linie in den Codierstreifen angezeigt. Anstatt jedoch einen tatsächlichen Satz von Pixelwerten zu speichern, die Textzeichen in der Textur direkt über jedem der Codierstreifen 202A, 204A, 206A definieren, wird eine zweite Codierzeile innerhalb eines jeden der Sätze an Textzeichenfolgencodierinformationen 202, 204 und 206 bereitgestellt. Diese zweite Codierzeile, die in 8 als Codierzeile 202B, 204B und 206B veranschaulicht ist, sind im Wesentlichen Sätze an Zeigern zu Positionen innerhalb eines Felds von Glyphen 210, die innerhalb der Textur 200 gespeichert sind. Jedes der Glyphen innerhalb des Feldes von Glyphen 210 kann ein einzelnes Textzeichen sein, das in einer oder mehreren der Textzeichenfolgen verwendet wird, die durch die Textzeichenfolge-Codierinformationen 202, 204 und 206 definiert werden. In diesem Fall können eine oder mehrere der Glyphen innerhalb des Feldes an Glyphen 210 mehr als einmal in derselben oder in verschiedenen Textzeichenfolgen verwendet werden, die durch die Textzeichenfolge-Codierinformationen 202, 204 und 206 definiert werden.
  • Auf diese Weise umfasst bei dem in 8 veranschaulichten Codierverfahren jede Linie oder jeder Satz von Textzeichenfolge-Codierinformationen 202, 204 und 206 einen ersten Satz von Codierdaten, die als ein Satz von Pixelwerten 202A, 204A und 206A ausgebildet sind, die die Breite, den Abstand und die Mitte eines jeden Zeichens (oder Glyphe) innerhalb der dazugehörenden Textzeichenfolge ebenso wie den verhältnismäßigen Abstand unterschiedlicher Textzeichen oder Glyphen in Bezug aufeinander innerhalb der dazugehörenden Textzeichenfolge anzeigen. Ferner umfasst jede Linie oder jeder Satz von Textzeichenfolge-Codierinformationen 202, 204 und 206 eine zweite Linie oder Satz von Pixeln 202B, 204B, 206B, der die Position oder den Ort der Glyphe in ihrer im Feld an Glyphen 210 gespeicherten Form definiert, das das bestimmte an dieser Position innerhalb der dazugehörenden Textzeichenfolge wiederzugebenden Textzeichens definiert.
  • Die zweite oder weitere Codierzeile 202B, 204B, 206B kann als eine separate Pixelzeile innerhalb der Textur 200 angrenzend an, wie nachstehend beschrieben, die erste Codierzeile 202A, 204A, 206A gespeichert werden. In einer Ausführungsform kann die zweite Linie an Codierdaten 202B, 20BB, 206B einen separaten Satz von Glyphenzeigerwerten umfassen, die beispielsweise in der Mitte eines jeden Textzeichens gemäß Definition in der ersten Linie aus Codierdaten 202A, 204A, 206A beginnen. Als Beispiel kann jeder Satz von Glyphenzeigerwerten vier codierte Pixelwerte umfassen, die zusammen zum Ort einer bestimmten Glyphe im Feld an Glyphen 210 zeigen. Lediglich als Beispiel kann die X-Position einer referenzierten Glyphe in ihrer im Feld an Glyphen 210 gespeicherten Form, im ersten Satz aus zwei Pixelwerten (dem ersten und dem zweiten Pixelwert) gespeichert werden, während die Y-Position der referenzierten Glyphe in ihrer im Feld an Glyphen 210 gespeicherten Form im zweiten Satz aus zwei Pixelwerten (dem dritten und dem vierten Pixelwert) gespeichert werden kann. Als ein konkreteres Beispiel kann die X-Koordinate im ersten und zweiten Pixelwert, durch Speichern des X-Wertes der referenzierten Glyphe geteilt durch 256 an dem ersten Pixelort und Speichern der verbleibenden (X-Modulo 256) an dem zweiten Pixelort gespeichert werden. Auf ähnliche Weise kann die Y-Koordinate der referenzierten Glyphe im dritten und vierten Pixelwert, durch Speichern des Y-Wertes der referenzierten Glyphe geteilt durch 256 an dem dritten Pixelort und Speichern der verbleibenden (Y-Modulo 256) an dem vierten Pixelort gespeichert werden. Selbstverständlich kann stattdessen jede andere Art und Weise des Bereitstellens oder Codierens von Pixelwerten an Ortszeiger auf andere Positionen innerhalb der Textur 200 (oder sogar auf Orte innerhalb einer anderen Textur, in der Glyphen gespeichert werden) verwendet werden. Des Weiteren kann der Ort, auf den die Glyphenzeiger verweisen, die Mitte eine dazugehörenden Glyphe, eine Ecke des Glyphenortes, wie beispielsweise die obere linke Ecke, die untere rechte Ecke oder jede anderen beliebige vorab definierte Position einer Glyphe, sein. Obgleich Glyphen in ihrer in der Textur 200 gespeicherten Form eine vorab festgelegte oder vorab definierte Größe aufweisen können, kann ihre Größe auch variieren. In diesem letzten Fall können die Codierzeilen 202A, 204A, 206A verwendet werden, um die Breite der wiederherzustellenden Glyphe verwendet und die Höhe der Glyphe festgelegt werden. Alternativ dazu können die Codierzeilen 202B, 204B, 206B der Textzeichenfolgeninformationen 202, 204, 206 auch eine Größe der zu beziehenden Glyphe umfassen. In einer anderen Ausführungsform können die Glyphen selbst einen Satz von Pixelwerten aufweisen, die ihre Größe definieren, und dieser Satz von Pixelwerten kann wiederhergestellt werden, um zunächst die genauen Pixelorte innerhalb der Textur zu bestimmen, zu denen eine beliebige bestimmte Glyphe gehört.
  • Selbstverständlich kann durch die Verwendung von zwei oder mehr Codierstreifen, wie dies im Beispiel von 8 veranschaulicht ist, tatsächlich jedes Textzeichen oder jede Glyphe, die an irgendeiner Stelle der einen oder mehreren Textzeichenfolgen verwendet wird, nur einmal in der Textur 200 gespeichert werden, da diese Glyphe viele Male durch denselben oder unterschiedliche Textcodierstreifen referenziert werden kann. Dieses duale Codierverfahren spart oder verringert den Platz oder die Daten, die für eine Textur erforderlich sind, wenn die Texturen heruntergeladen und gespeichert werden, die zum Durchführen von Wiedergabe von Text in mehreren Sätzen von Textkästchen oder entlang mehrere unterschiedlicher Linien verwendet werden, oder wenn diese Texturen zwischen den Prozessoren 30a und 30b innerhalb des Gerätes 40 gesendet werden. Des Weiteren kann, obgleich die zweite Datencodierzeile 202B, 204B, 206B in 8 veranschaulicht wird, wie sie in einer Pixelzeile unmittelbar oder leicht unter jeweils der dazugehörenden ersten Datencodierzeile 202A, 204, 206A angeordnet ist, die zweite Datencodierzeile 202B, 204B, 206B in derselben Textur 200 an anderen Orten, wie beispielsweise über der ersten Datencodierzeile oder selbst als ein Satz von Pixelwerten für ein anderes Farbfeld der ersten Datencodierzeile, gespeichert werden. Wenn beispielsweise die erste Datencodierzeile in einer Zeile von Pixelorten unter Verwendung der roten Pixelwerte dieser Pixelzeile gespeichert wird, kann die zweite Datencodierzeile in den blauen oder grünen Pixelwerten derselben Pixelzeile gespeichert werden.
  • In einigen Fällen kann es, wie in 9 veranschaulicht ist, wünschenswert sein, eine Textzeichenfolge zu erstellen oder wiederzugeben, die überlappende Zeichen aufweist. Im Beispiel von 9 überlappen sich das ”r” und das ”A”, da sich ein Abschnitt des ”A” (das heißt, die am weitesten links liegende Pixelwertspalte) auf derselben X-Koordinate wie die am weitesten rechts liegende Pixelwertspalte des „r” liegt. Die in den 3, 3A und 8 veranschaulichten und in Bezug auf sie beschriebenen Codierverfahren sind nicht in der Lage, solchen Text unter Verwendung einer einzelnen Textcodierzeichenfolge wiederzugeben, da die Positionen der Textzeichen innerhalb der Textzeichenfolge alle reihenweise in einer einzelnen Pixelzeile definiert sind, was einen eindeutigen Übergang zwischen dem Ende des einen Textzeichens und dem Anfang des angrenzenden Textzeichens erfordert.
  • Um das Wiedergeben von überlappenden Textzeichen oder Glyphen innerhalb einer gemeinsamen Textzeichenfolge zu ermöglichen, können die in Bezug auf die 3, 3A und 8 beschriebenen Codierverfahren so modifiziert werden, dass sie für jede Textzeichenfolge mehrere Sätze an Codierzeilen umfasst. Solch ein Verfahren ist in der Textur 250 von 10 veranschaulicht. In diesem Fall wird eine einzelne Textzeichenfolge 252 veranschaulicht, wie sie zwei unterschiedliche Sätze an Codierzeilen 254 und 256 umfasst, wobei jede Codierzeile die zwei in Bezug auf 8 beschriebenen Codierstreifen umfasst. In diesem Fall befindet sich ein erstes Zeichen 260 der Textzeichenfolgeinformationen 252 (die Textzeichenfolge ”Freemont Ave” definieren können) im oberen Satz von Codierzeilen 254 und umfasst einen Codierstreifen 260A, der die Mitte des Textzeichens (in X-Richtung) und die Breite oder den Abstand von der Mitte des ersten Zeichens definiert, sowie des Weiteren eine zweite Codierzeile 260B, die auf den Ort der Glyphe innerhalb des Feldes an Glyphen 210 zeigt, der für das erste Textzeichen zu verwenden ist. Das zweite Zeichen 262 der Textzeichenfolgeinformationen 252 befindet sich jedoch in der unteren Zeile 256 und umfasst einen Codierstreifen 262A, der die Mitte des zweiten Textzeichens (in X-Richtung) und die Breite oder den Abstand von der Mitte des zweiten Zeichens definiert, sowie eine zweite Codierzeile 262B, die auf den Ort der Glyphe innerhalb des Feldes an Glyphen 210 zeigt, der für das zweite Textzeichen zu verwenden ist. Wie dies in 10 veranschaulicht ist, können die Codierstreifen 260A und 262A, da sie auf verschiedenen Zeilen der Textur 250 liegen, Pixelorte oder Pixelspalten aufweisen, die sich, wenn sie auf einem Bild wiedergegeben werden, überlappen. Dementsprechend überlappt sich, wie in 10 dargestellt, die am weitesten rechts liegende Pixelspalte des ersten Zeichens 260A mit der am weitesten links liegenden Pixelspalte des zweiten Zeichens 262A. Der Fragment-Shader, der die Sätze an Codierstreifen 254 und 256 liest, muss gerade einmal beide Codierzeilen lesen, um das nächste Zeichen zu erkennen, das für die Textzeichenfolge 252 wiedergegeben werden soll. Der Fragment-Shader kann beispielsweise bei der Suche nach dem nächsten Zeichen zwischen dem Satz von Codierzeilen 254 und 256 wechseln, kann beide Sätze an Codierzeilen 254 und 256 lesen und das nächste Zeichen auf der Grundlage der nächsten erfassten Mittelposition (ungeachtet dessen, für welche Codierzeile die nächste Mittelposition gefunden wird) usw. bestimmen. Selbstverständlich können die zwei Sätze an Codierzeilen 254 und 256 in Fällen verwendet werden, in denen die Textzeichen sich nicht überlappen, wobei entweder (1) einer der Sätze an Codierzeilen 254 und 256 keine Informationen aufweist und demzufolge ignoriert werden kann oder (2) Codierstreifen für angrenzende Textzeichen der zwei Codierzeilen 254 und 256 sich gegenseitig nicht überlappen. Wie dies in 10 erneut durch die Sätze an codierten Daten 270 und 280 veranschaulicht ist, können mehrere Sätze an Textzeichenfolge-Codierdaten, die jeweils mehrere Sätze an Codierdaten darin aufweisen, in der Textur 250 zusammen mit dem Feld an Glyphen 210 gespeichert werden.
  • 11 veranschaulicht eine Textur 290, die zwei Codierzeilen für eine einzelne Textzeichenfolge verwendet, wobei die Textzeichenpixel unmittelbar angrenzend an die Mitte und Breite der Codierstreifen 52 angeordnet sind. Insbesondere veranschaulicht 11 eine Art und Weise des Anwendens der überlappenden Codierdatenzeilen in der Textur von 3, die keine auf Glyphen verweisenden Codierdaten verwendet. Insbesondere werden im Beispiel von 11 die zwei Codierzeilen zum Bereitstellen von Überlappen des „F” und des „r” der Textzeichenfolge „Freemont Ave” und des „e” und des „.”verwendet welche die letzten zwei Zeichen der Textzeichenfolge sind.
  • Selbstverständlich können die hierein beschriebenen Textwiedergabe- und Texturcodierverfahren verändert und auf eine beliebige Reihe von Arten und Weisen variiert werden, um ein Bildwiedergabesystem, wie beispielsweise ein Kartenwiedergabesystem, mit der Fähigkeit bereitzustellen, einzelne Textzeichen innerhalb einer Textzeichenfolge entlang einer gekrümmten, beispielsweise einer multisegmentierten Linie wiederzugeben.
  • In dieser gesamten Spezifikation können mehrere Instanzen Komponenten, Vorgänge oder Strukturen implementieren, die als einzelner Fall beschrieben werden. Auch wenn einzelne Operationen von einem oder mehreren Verfahren als getrennte Operationen veranschaulicht und beschrieben sind, können eine oder mehrere der einzelnen Operationen gleichzeitig durchgeführt werden, und nichts erfordert, dass die Operationen in der veranschaulichten Reihenfolge durchgeführt werden. Strukturen und Funktionen, die in beispielhaften Konfigurationen als getrennte Komponenten dargestellt werden, können als kombinierte Struktur oder Komponente implementiert werden. In ähnlicher Weise können Strukturen und Funktionen, die als einzelne Komponenten dargestellt werden, als getrennte Komponenten implementiert werden. Diese und andere Variationen, Modifikationen, Ergänzungen und Verbesserungen fallen in den Anwendungsbereich des hierin beschriebenen Gegenstands.
  • Das Netzwerk 25 kann beispielsweise unter anderem eine beliebige Kombination aus einem LAN, einem MAN, einem WAN, einem mobilen, einem verdrahteten oder drahtlosen Netzwerk, einem privaten Netzwerk oder einem virtuellen, privaten Netzwerk umfassen. Obwohl zur Vereinfachung und Verdeutlichung der Beschreibung in 1 nur vier Client-Geräte dargestellt sind, ist es selbstverständlich, dass eine beliebige Anzahl von Client-Geräten oder Anzeigegeräte unterstützt werden und mit dem Server 14 kommunizieren kann.
  • Außerdem sind bestimmte Ausführungsformen hierin als Logik oder eine Reihe von Komponenten, Modulen oder Mechanismen umfassend beschrieben. Module können entweder Softwaremodule (z. B. Code, der auf einem maschinenlesbaren Medium oder in einem Sendesignal verkörpert ist) oder Hardwaremodule darstellen. Ein Hardwaremodul ist ein greifbares Gerät, das bestimmte Operationen durchführen kann, und es kann in einer bestimmten Weise konfiguriert oder angeordnet sein. In exemplarischen Ausführungsformen können eines oder mehrere Computersysteme (z. B. ein eigenständiges, Client- oder Server-Computersystem) oder eines oder mehrere Hardwaremodule eines Computersystems (z. B. ein Prozessor oder eine Gruppe von Prozessoren) von der Software (z. B. einer Anwendung oder einem Anwendungsteil) als Hardwaremodul konfiguriert sein, um bestimmte, hierin beschriebene Operationen durchzuführen.
  • In verschiedenen Ausführungsformen kann ein Hardwaremodul mechanisch oder elektronisch implementiert werden. Ein Hardwaremodul kann beispielsweise eine spezielle Schaltung oder Logik umfassen, die dauerhaft zur Ausführung bestimmter Operationen konfiguriert ist (z. B. als ein spezieller Prozessor, wie beispielsweise ein Field Programmable Gate Array (FPGA) oder eine anwendungsspezifische integrierte Schaltung (ASIC)). Ein Hardwaremodul kann außerdem programmierbare Logik oder Schaltkreise umfassen (z. B. wie in einem Allzweck-Prozessor oder einem anderen programmierbaren Prozessor eingeschlossen), der von der Software temporär für die Durchführung bestimmter Operationen konfiguriert ist. Es wird darauf hingewiesen, dass die Entscheidung für die mechanische Implementierung eines Hardwaremoduls in spezielle und dauerhaft konfigurierte oder temporär konfigurierte Schaltungen (z. B. per Software konfiguriert) von Kosten- und Zeitüberlegungen abhängig sein kann.
  • Demgemäß sollte der Begriff Hardware so verstanden werden, dass er eine greifbare Entität umfasst, sei es eine Entität, die physisch konstruiert, permanent konfiguriert (z. B. hartverdrahtet) oder temporär konfiguriert (z. B. programmiert) ist, um auf bestimmte Weise zu arbeiten oder bestimmte, hierin beschriebene Operationen durchzuführen. Bei Berücksichtigung von Ausführungsformen, in denen Hardwaremodule temporär konfiguriert (z. B. programmiert) sind, müssen die jeweiligen Hardwaremodule nicht zu jeder einzelnen zeitlichen Instanz konfiguriert oder instanziiert sein. Wenn die Hardwaremodule zum Beispiel einen Allzweck-Prozessor umfassen, der für die Verwendung von Software konfiguriert ist, kann der Allzweck-Prozessor als entsprechend unterschiedliche Hardwaremodule zu verschiedenen Zeiten konfiguriert sein. Software kann demgemäß einen Prozessor zum Beispiel so konfigurieren, dass er zu einer zeitlichen Instanz ein bestimmtes Hardwaremodul und zu einer anderen zeitlichen Instanz ein anderes Hardwaremodul darstellt.
  • Hardware- und Softwaremodule können Informationen anderen Hardware- und/oder Softwaremodulen bereitstellen und Informationen von diesen empfangen. Demgemäß können die beschriebenen Hardwaremodule als kommunikativ gekoppelt betrachtet werden. Wenn mehrere solcher Hardware- oder Softwaremodule gleichzeitig vorhanden sind, kann die Kommunikation über Signalübertragung (z. B. über entsprechende Schaltkreise und Busse) erreicht werden, die mit den Hardware- oder Softwaremodulen verbunden sind. In Ausführungsformen, in denen mehrere Hardware- und Softwaremodule zu verschiedenen Zeiten konfiguriert oder instanziiert sind, kann die Kommunikation zwischen solchen Hardware- und Softwaremodulen zum Beispiel durch die Speicherung und das Abrufen von Informationen in Speicherstrukturen erreicht werden, zu denen die mehreren Hardware- und Softwaremodule Zugriff haben. Zum Beispiel kann ein Hardware- oder Softwaremodul eine Operation durchführen und den Ausgang dieser Operation in einem Speichergerät speichern, mit dem es kommunikativ gekoppelt ist. Ein weiteres Hardware- oder Softwaremodul kann dann, zu einem späteren Zeitpunkt, auf das Speichergerät zugreifen, um die gespeicherte Ausgabe abzurufen und zu verarbeiten. Hardware- und Softwaremodule können außerdem die Kommunikation mit Eingabe- und Ausgabegeräten initiieren, und sie können auf einer Ressource (z. B. einer Informationssammlung) betrieben werden.
  • Die verschiedenen Operationen hierin beschriebener exemplarischer Verfahren können, zumindest teilweise, von einem oder mehreren Prozessoren durchgeführt werden, die temporär (z. B. durch Software) oder permanent für die Durchführung der relevanten Operationen konfiguriert sind. Ganz gleich, ob sie temporär oder permanent konfiguriert sind, stellen solche Prozessoren von Prozessoren implementierte Module dar, die betrieben werden, um eine oder mehrere Operationen oder Funktionen durchzuführen. Module, auf die hierin verwiesen wird, umfassen in einigen exemplarischen Ausführungsformen von Prozessoren implementierte Module.
  • Ihn ähnlicher Weise können hierin beschriebene Verfahren oder Routinen zumindest teilweise von Prozessoren implementiert sein. Zum Beispiel können zumindest einige der Operationen eines Verfahrens von einem oder mehreren Prozessoren oder von durch Prozessoren implementierten Hardwaremodulen durchgeführt werden. Die Durchführung bestimmter Operationen kann unter den ein oder mehreren Prozessoren verteilt sein, die sich nicht in einer einzigen Maschine befinden, sondern über eine Reihe von Maschinen bereitgestellt werden. In einigen exemplarischen Ausführungsformen können sich der Prozessor oder die Prozessoren an einem einzigen Ort (z. B. in einer Wohnungsumgebung, in einer Büroumgebung oder als eine Serverfarm) befinden, während in anderen Ausführungsformen die Prozessoren über eine Reihe von Orten verteilt sein können.
  • Der eine oder die mehreren Prozessoren können auch so arbeiten, dass sie die Leistung der relevanten Vorgänge in einer „Cloud Computin”-Umgebung oder als ein „Software as a Service” (SaaS) unterstützen. Zum Beispiel können einige der Operationen durch eine Gruppe von Computer (z. B. von Maschinen einschließlich Prozessoren) durchgeführt werden, wobei dieses Operationen über ein Netzwerk (z. B. das Internet) und über eine oder mehrere geeignete Schnittstellen (z. B. Anwendungsprogrammschnittstellen, APIs) zugänglich sind.
  • Die Durchführung bestimmter Operationen kann unter den ein oder mehreren Prozessoren verteilt sein, die sich nicht in einer einzigen Maschine befinden, sondern über eine Reihe von Maschinen bereitgestellt werden. In einigen exemplarischen Ausführungsformen können sich der eine oder die mehreren Prozessoren oder durch Prozessoren implementierte Module an einem einzigen geografischen Standort (z. B. einer Wohnumgebung, einer Büroumgebung oder einer Serverfarm) befinden. In anderen exemplarischen Ausführungsformen können der eine oder die mehreren Prozessoren oder durch Prozessoren implementierten Module über eine Reihe geografischer Standorte verteilt sein.
  • Einige Teile dieser Spezifikation werden in Bezug auf Algorithmen oder symbolische Darstellungen von Operationen bei Daten dargestellt, die als Bits oder binäre digitale Signale in einem Maschinenspeicher (z. B. einem Computerspeicher) gespeichert sind. Diese Algorithmen oder symbolischen Darstellungen sind Beispiele von Techniken, die von Fachleuten der Datenverarbeitungstechnik verwendet werden, um anderen Fachleuten die wesentlichen Inhalte ihrer Arbeit zu vermitteln. Wie hierin verwendet, ist ein „Algorithmus” oder eine „Routine” eine eigenkonsistente Sequenz von Operationen oder ähnliche Verarbeitung, die zu einem gewünschten Ergebnis führt. In diesem Kontext beinhalten Algorithmen, Routinen und Operationen die physische Manipulation physischer Mengen. Normalerweise, aber nicht notwendigerweise, können solche Mengen die Form elektrischer, magnetischer oder optischer Signale annehmen, die von einer Maschine gespeichert, aufgerufen, übertragen, kombiniert, verglichen oder sonst manipuliert werden können. Hauptsächlich aus Gründen der allgemeinen Verwendung ist es manchmal praktisch, solche Signale mithilfe von Wörtern wie „Daten”, „Inhalt”, „Bits”, „Werte”, „Elemente”, „Symbole” „Zeichen”, „Begriffe”, „Zahlen”, „Ziffern” oder dergleichen zu bezeichnen. Diese Wörter sind jedoch lediglich praktische Bezeichnungen und dürfen nicht mit entsprechenden physischen Mengen verbunden werden.
  • Sofern nicht speziell anders angegeben, können sich Erörterungen hierin, die Wörter wie „Verarbeitung”, „Berechnung”, „Bestimmung”, „Darstellung”, „Anzeige” o. ä. verwenden, auf Aktionen oder Prozesse einer Maschine (z. B. eines Computers) beziehen, die Daten bearbeiten oder umwandeln, die als physische (z. B. elektronische, magnetische oder optische) Mengen in einem oder mehreren Speichern (z. B. flüchtiger Speicher, nichtflüchtiger Speicher oder eine Kombination davon), Register oder andere Maschinenkomponenten dargestellt sind, die Informationen empfangen, speichern, übertragen oder anzeigen.
  • Wie hierin verwendet, bedeuten Verweise auf „eine Ausführungsform” oder „Ausführungsformen”, dass ein bestimmtes Element, Merkmal, eine Struktur oder eine Eigenschaft, das/die in Verbindung mit der Ausführungsform beschrieben wird, zumindest in einer Ausführungsform enthalten ist. Das Erscheinen der Formulierung „in einer Ausführungsform” an verschiedenen Orten in der Spezifikation bezieht sich nicht notwendigerweise immer auf dieselbe Ausführungsform.
  • Einige Ausführungsformen können mithilfe des Ausdrucks „gekoppelt” und „verbunden” zusammen mit deren Ableitungen beschrieben werden. Zum Beispiel können einige Ausführungsformen mithilfe des Begriffs „gekoppelt” beschrieben werden, um anzugeben, dass eines oder mehrere Elemente im direkten physischen oder elektrischen Kontakt sind. Der Begriff „verbunden” kann jedoch auch bedeuten, dass eines oder mehrere Elemente nicht im direkten Kontakt miteinander sind, aber trotzdem noch miteinander zusammenarbeiten oder interagieren. Die Ausführungsformen sind in diesem Kontext nicht beschränkt.
  • Wie hierin verwendet, sollen die Begriffe „umfasst”, „umfassend”, „beinhaltet”, „enthält”, „hat”, „haben” und andere Varianten davon eine nicht ausschließliche Einbeziehung abdecken. Zum Beispiel ist ein Prozess, ein Verfahren, ein Artikel oder eine Vorrichtung, der/die eine Liste von Elementen umfasst, nicht notwendigerweise nur auf diese Elemente beschränkt, sondern kann andere Elemente beinhalten, die nicht ausdrücklich aufgelistet oder bei einem solchen Prozess, einem solchen Verfahren, einem solchen Artikel oder einer solchen Vorrichtung inhärent sind. Des Weiteren bezieht sich, sofern nichts Gegenteiliges angegeben ist, „oder” auf ein einschließendes und nicht auf ein ausschließendes Oder. Zum Beispiel ist eine Bedingung A oder B durch eines der folgenden erfüllt: A ist wahr (oder vorhanden) und B ist falsch (oder nicht vorhanden), A ist falsch (oder nicht vorhanden) und B ist wahr (oder vorhanden) und sowohl A als auch B sind wahr (oder vorhanden).
  • Außerdem wird „eine”, „einer” oder „eines” verwendet, um Elemente und Komponenten der Ausführungsformen hierin zu beschreiben. Dies erfolgt lediglich aus praktischen Gründen und um eine allgemeine Vorstellung der Beschreibung zu vermitteln. Die Beschreibung sollte so gelesen werden, dass sie eines oder mindestens eines enthält, und der Singular umfasst auch den Plural, außer es ist offensichtlich anders gedacht.
  • Weiterhin stellen die Figuren bevorzugte Ausführungsformen eines Kartenwiedergabesystems nur zu Veranschaulichungszwecken dar. Fachleute auf diesem Gebiet werden anhand der nachfolgenden Abhandlung leicht erkennen, dass alternative Ausführungsformen der hierin veranschaulichten Strukturen und Verfahren verwendet werden können, ohne von den hierin beschriebenen Prinzipien abzuweichen.
  • Nach dem Lesen dieser Offenbarung werden Fachleute alternative Struktur- und Funktionsdesigns für ein System und einen Prozess zur Wiederhabe von Karten oder anderen Typen von Bildern unter Verwendung der hierin offenbarten Prinzipien erkennen. Somit sollte, während bestimmte Ausführungsformen und Anwendungen veranschaulicht und beschrieben wurden, es selbstverständlich sein, dass die offenbarten Ausführungsformen nicht auf die genaue Konstruktion und Komponenten beschränkt sind, die hierin offenbart wurden. Verschiedene Modifikationen, Änderungen und Variationen, die für Fachleute auf dem Gebiet ersichtlich werden, können in der Anordnung, dem Betrieb und in den Einzelheiten der Verfahren und der Vorrichtung, die hierin offenbart werden, ohne Abweichung von der Idee und dem Umfang der angehängten Ansprüche erfolgen.

Claims (46)

  1. Bildwiedergabemaschine, aufweisend; eine Datenübertragungsnetzwerkschnittstelle; einen Prozessor; eine mit dem Prozessor gekoppelte Speicherkomponente; ein Anzeigegerät, das an ein oder mehrere Prozessoren gekoppelt ist; eine erste Routine, die im Speicher gespeichert ist, die auf dem Prozessor ausgeführt wird, um über die Datenübertragungsnetzwerkschnittstelle einen Satz von Vektordaten zu empfangen, die Daten aufweisen, die ein oder mehrere Bildobjekte definieren, und um vom Speicher eine oder mehrere Textzeichenfolge-Nachschlagetabellen zu beziehen, wobei eine der Textzeichenfolge-Nachschlagetabellen Textzeichen von wenigstens einer Textzeichenfolge als einen Satz von pixelierten Textzeichen sowie Codierdaten speichert, die die Mittelposition eines jeden der Vielzahl der zur Textzeichenfolge gehörenden Textzeichen definieren; eine zweite Routine, die im Speicher gespeichert ist, die auf dem Prozessor ausgeführt wird, um eine Vielzahl von Liniensegmenten, die zu einer Linie gehören, entlang der die Textzeichenfolge wiedergegeben werden soll, und einen zu jedem Liniensegment gehörenden Bereich zu bestimmen; eine dritte Routine, die im Speicher gespeichert ist, die auf dem Prozessor ausgeführt wird, um ein Textkästchen für jedes der Vielzahl von Liniensegmenten zu bestimmen, wobei jedes der Textkästchen so ausgerichtet ist, dass Text in einer aufrechten Position entlang eines dazugehörenden Liniensegmentes gezeichnet wird; und eine vierte Routine, die im Speicher gespeichert ist, die auf dem Prozessor ausgeführt wird, um: eines der Textkästchen auszuwählen, im ein Textzeichen der Textzeichenfolge wiedergegeben werden soll; eines oder mehrere Pixel eines nächsten einen der Textzeichen der Textzeichenfolge auszuwählen; zu bestimmen, ob eine Mitte des nächsten einen der Textzeichen, wenn es im ausgewählten einen der Textkästchen auf dem Bild wiedergegeben wird, innerhalb des Bereiches des zu dem ausgewählten einen der Textkästchen gehörenden Liniensegmentes liegt; und die Pixel des einen der Textzeichen auf dem Anzeigegerät unter Verwendung des einen der Textkästchen wiederzugeben, wenn eine Mitte des einen der Textzeichen, wenn es im ausgewählten einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zu dem ausgewählten einen der Textkästchen gehörenden Liniensegmentes liegt und die Pixel des einen der Textzeichen auf dem Anzeigegerät unter Verwendung des einen der Textkästchen nicht wiederzugeben, wenn eine Mitte des einen der Textzeichen, wenn es im ausgewählten einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zu dem ausgewählten einen der Textkästchen gehörenden Liniensegment liegt
  2. Bildwiedergabemaschine nach Anspruch 1, wobei die dritte Routine einen Vertex-Shader aufweist.
  3. Bildwiedergabemaschine nach Anspruch 1, wobei die vierte Routine eine Anwendung aufweist, die einen Fragment-Shader verwendet.
  4. Bildwiedergabemaschine nach Anspruch 1, wobei die vierte Routine Pixel für jedes der Textzeichen der in der Textzeichenfolge-Nachschlagetabelle gespeicherten Textzeichenfolge der Reihe nach auswählt, und für jedes ausgewählte eine der Textzeichen; bestimmt, ob die Mitte des ausgewählten einen der Textzeichen, wenn es im einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zu dem einen der Textkästchen gehörenden Liniensegmentes liegt, das ausgewählte eine der Textzeichen auf dem Anzeigegerät unter Verwendung des einen der Textkästchen wiedergibt, wenn die Mitte des ausgewählten einen der Textzeichen, wenn es im einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zu dem einen der Textkästchen gehörenden Liniensegmentes liegt, und ein anderes der Vielzahl von Textkästchen als das eine der Textkästchen zum Verwenden beim Wiedergeben des ausgewählten einen der Textzeichen auf dem Anzeigegerät auswählt, wenn die Mitte des ausgewählten einen der Textzeichen, wenn es im einen der Textkästchen wiedergegeben wird, nicht innerhalb des Bereiches des zu diesem einen der Textkästchen gehörenden Liniensegmentes liegt.
  5. Bildwiedergabesystem nach Anspruch 1, wobei die vierte Routine bestimmt, ob die Mitte des einen der Textzeichen, wenn es im einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zu dem einen der Textkästchen gehörenden Liniensegmentes liegt, durch Lesen eines Satzes an Codierdaten für das eine der Textzeichen, wobei die Codierdaten die Mitte des einen der Textzeichen in wenigstens einer Richtung spezifizieren und Verwenden des Ortes der Mitte des einen der Textzeichen um zu bestimmen, ob die Mitte des einen der Textzeichen, wenn es im einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zu dem einen der Textkästchen gehörenden Liniensegmentes liegt.
  6. Bildwiedergabesystem nach Anspruch 1, wobei die dritte Routine ein Textkästchen für jedes der Vielzahl von Liniensegmenten erstellt, durch Erstellen eines Textkästchens, das entlang einer Länge eines dazugehörenden einen der Liniensegmente ausgerichtet ist.
  7. Bildwiedergabesystem nach Anspruch 6, wobei die vierte Routine jedes der Textkästchen, das entlang der Länge eines dazugehörenden einen der Liniensegmente ausgerichtet ist, so erstellt, dass jedes der Textkästchen eine Länge in Richtung der Länge des dazugehörenden Liniensegmentes aufweist, die größer als der Bereich des dazugehörenden Liniensegmentes ist.
  8. Kartenbildwiedergabesystem, aufweisend: eine Datenbank, die kartenbezogene Vektorbilddaten speichert, wobei die Vektorbilddaten Daten aufweisen, die ein oder mehrere Bildobjekte und eine oder mehrere Textzeichenfolge-Nachschlagetabellen definieren, wobei eine der Textzeichenfolge-Nachschlagetabelle zu wenigstens einer wiederzugebenden Textzeichenfolge gehörende Textzeichen als einen Satz von pixelierten Textzeichen und Codierdaten speichert, die die Mittelposition eines jeden einer Vielzahl von zur Textzeichenfolge gehörenden Textzeichen definiert; und ein Kartenbildwiedergabegerät, das über Datenübertragung mit der Datenbank verbunden ist, um die kartenbezogenen Vektorbilddaten zu verwenden und ein Kartenbild unter Verwendung der kartenbezogenen Vektorbilddaten wiederzugeben, wobei das Kartenbildwiedergabegerät umfasst; einen Prozessor; einen mit dem Prozessor verbundenen Speicher; ein mit dem Prozessor verbundenes Anzeigegerät; eine oder mehrere Anwendungen, die auf dem Speicher gespeichert sind, die, wenn sie auf dem Prozessor ausgeführt werden; eine Vielzahl von Liniensegmenten, die zu einer Linie gehören, entlang der eine Textzeichenfolge wiedergegeben werden soll, und einen zu jedem Liniensegment gehörenden Bereich bestimmen; ein Textkästchen für jedes der Vielzahl von Liniensegmenten erstellen, wobei jedes der Textkästchen so ausgerichtet ist, dass Text in einer aufrechten Position entlang eines dazu gehörenden Liniensegmentes im Bild gezeichnet wird und einen Satz von Bereichswerten aufweist, die durch den Bereich des dazugehörenden Liniensegmentes definiert sind; und für jedes Textzeichen in der Textzeichenfolge, (1) die Codierdaten aus der Textzeichenfolge-Nachschlagetabelle lesen; (2) das Textkästchen bestimmen, das einen Bereichswert aufweist, in dem die Mittelposition des Textkästchens liegt, wenn das Textzeichen auf dem Bild wiedergegeben wird; und (3) das Textzeichen als Teil des Bildes auf dem Anzeigegerät unter Verwendung des bestimmten einen der Textkästchen wiedergeben.
  9. Kartenbildwiedergabesystem nach Anspruch 8, wobei die Codierdaten des Weiteren eine Breite eines jeden der zur Textzeichenfolge gehörenden Textzeichen definieren.
  10. Kartenbildwiedergabesystem nach Anspruch 8, wobei die eine oder mehreren Anwendungen einen oder mehrere Bild-Shader umfassen, die ein Textkästchen für jedes der Vielzahl von Liniensegmenten erstellen, indem sie jedes der Textkästchen erstellen, das entlang einem dazugehörenden einen der Liniensegmente ausgerichtet ist und eine Länge in Richtung der Länge des dazu gehörenden Liniensegmentes aufweist, die größer als der Bereich des dazu gehörenden Liniensegmentes ist.
  11. Kartenbildwiedergabesystem nach Anspruch 10, wobei der eine oder die mehreren Bild-Shader ein Textkästchen für jedes der Vielzahl von Liniensegmenten so erstellen, dass sich der Anfang eines jeden Textkästchens über einen vorab festgelegten Abstand in Richtung der Länge des dazugehörenden Liniensegmentes vor dem Anfang des Liniensegmentes und so erstreckt, dass sich das Ende des Textkästchens über den vorab festgelegten Abstand in Richtung des Liniensegmentes über das Ende des Liniensegmentes hinaus erstreckt.
  12. Kartenbildwiedergabesystem nach Anspruch 8, wobei eine der Textzeichenfolge-Nachschlagetabellen die Codierdaten speichert, die die eine Mittelposition eines jeden zu einer Textzeichenfolge gehörenden Textzeichen als einen Pixelwert für jede Pixelspalte der Textzeichenfolge definieren, wobei ein bestimmter Pixelwert verwendet wird, um eine Mittelposition eines Textzeichens zu definieren und andere Pixelwerte vom bestimmten Pixelwert erhöht oder verringert werden, um an jeder Pixelspalte eines Textzeichens einen Abstand zur Mittelposition des Textzeichens anzuzeigen.
  13. Kartenbildwiedergabesystem nach Anspruch 8, wobei eine der Textzeichenfolge-Nachschlagetabellen des Weiteren einen Satz von Glyphen innerhalb eines Feldes an Glyphen in der Textzeichenfolge-Nachschlagetabellen speichert und des Weiteren Codierdaten für jedes zur Textzeichenfolge gehörenden Textzeichen speichert, wobei die weiteren Codierdaten eine der Glyphen referenzieren, sodass es als das Textzeichen an einer Position innerhalb der Textzeichenfolge verwendet wird.
  14. Kartenbildwiedergabesystem nach Anspruch 8, wobei der eine oder die mehreren Bild-Shader das Textkästchen bestimmen, das einen Bereichswert aufweist, in dem die Mittelposition des Textzeichens liegt, wenn das Textzeichen auf dem Bild wiedergegeben wird, durch; Auswählen eines der Textkästchen, in dem das Textzeichen der Textzeichenfolge wiedergegeben werden soll, Bestimmen, ob die Mitte des Textzeichens, wenn es im ausgewählten einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zu dem ausgewählten einen der Textkästchen gehörenden Liniensegmente liegt; und Wiedergeben eines Textzeichens im Bild auf dem Anzeigegerät unter Verwendung des ausgewählten einen der Textkästchen, wenn die Mittelposition des Textzeichens, wenn es im ausgewählten einen der Textkästchen wiedergegeben wird, innerhalb des Bereiches des zu dem ausgewählten einen der Textkästchen gehörenden Liniensegment liegt oder anderenfalls Auswählen eines anderen der Vielzahl von Textkästchen als das ausgewählte eine der Textkästchen, wenn die Mittelposition des Textzeichens, wenn es im ausgewählten einen der Textkästchen wiedergegeben wird, nicht innerhalb des Bereiches des zu dem ausgewählten einen der Textkästchen gehörenden Liniensegment liegt.
  15. Bildwiedergabemaschine, aufweisend; einen Prozessor; eine mit dem Prozessor gekoppelte Speicherkomponente; ein Anzeigegerät, das an ein oder mehrere Prozessoren gekoppelt ist; Bildwiedergabemaschine, aufweisend; einen Prozessor, einen mit dem Prozessor verbundenen Speicher; ein mit dem Prozessor verbundenes Anzeigegerät; eine im Speicher gespeicherte Textzeichenfolge-Nachschlagetabelle, die Textzeichen von wenigstens einer Textzeichenfolge als einen Satz von pixelierten Textzeichen umfasst, und die Codierdaten umfasst, die die Mittelposition eines jeden einer Vielzahl von zur Textzeichenfolge gehörenden Textzeichen definiert; eine erste Routine, die im Speicher gespeichert ist, die auf dem Prozessor ausgeführt wird, um eine oder mehrere Pixel, die zu einem der Textzeichen innerhalb der Textzeichenfolge gehören, aus der Textzeichenfolge-Nachschlagetabelle liest und die die Codierdaten, die zu einem der Textzeichen gehören, aus der Textzeichenfolge-Nachschlagetabelle liest; und eine zweite Routine, die im Speicher gespeichert ist, die auf dem Prozessor ausgeführt wird, um eine Mitte des einen der Textzeichen in ihrer in der Textzeichenfolge-Nachschlagetabelle gespeicherten Form unter Verwendung der Codierdaten zu bestimmen, die zu einem der Textzeichen gehören.
  16. Bildwiedergabemaschine nach Anspruch 15, des Weiteren umfassend eine dritte Routine, die im Speicher gespeichert und auf dem Prozessor ausgeführt wird, um Pixel, die sich an einer oder mehreren Positionen innerhalb des einen der Textzeichen der Textzeichenfolge befinden, an einer bestimmten Position innerhalb eines Bildes auf dem Anzeigegerät auf der Grundlage von Codierdaten wiederzugeben, die die Mittelposition des einen der Textzeichen innerhalb der Textzeichenfolge-Nachschlagetabelle definieren.
  17. Bildwiedergabemaschine nach Anspruch 16, wobei die dritte Routine die Pixel, die sich an einer oder mehreren Positionen innerhalb des einen der Textzeichen der Textzeichenfolge befinden, an der bestimmten Position innerhalb eines Bildes auf der Grundlage des Ortes der Mittelposition des einen der Textzeichen innerhalb der Textzeichenfolge-Nachschlagetabelle wiedergibt, durch Bestimmen, ob die Mittelposition des einen der Textzeichen, wenn es in einem Textkästchen auf dem Bild wiedergegeben wird, innerhalb eines Bereiches des Textkästchens liegt und durch Wiedergeben der Pixel, die sich an der einen oder den mehreren Positionen innerhalb des einen der Textzeichen der Textzeichenfolge befinden, an der bestimmten Position innerhalb des Bildes wiedergibt, wenn die Mitte des einen der Textzeichen, wenn es im Textkästchen auf dem Bild wiedergegeben wird, innerhalb des Bereiches des Textkästchens liegt.
  18. Bildwiedergabemaschine nach Anspruch 15, wobei die zu jedem Textzeichen gehörenden Codierdaten umfassen, die eine Breite des Textzeichens definieren.
  19. Bildwiedergabemaschine nach Anspruch 15, wobei die zu jedem Textzeichen gehörenden Codierdaten an jedem eines Satzes an Pixelspalten eines jeden der Textzeichen umfassen, die einen Abstand von der Pixelspalte der Codierdaten zur mittigen Pixelspalte eines dazu gehörenden Textzeichens spezifizieren.
  20. Bildwiedergabemaschine nach Anspruch 15, wobei die zu jedem Textzeichen in der Textzeichenfolge-Nachschlagetabelle gehörenden Codierdaten umfassen, die an einer Position in der Textzeichenfolge-Nachschlagetabelle angrenzend an die Pixel des Textzeichens gespeichert sind, zu denen die Codierdaten gehören.
  21. Bildwiedergabemaschine nach Anspruch 20, wobei die zu jedem Textzeichen in der Textzeichenfolge-Nachschlagetabelle gehörenden Codierdaten für eine bestimmte Pixelspalte eines in derselben Spalte der Textzeichenfolge-Nachschlagetabelle als die bestimmte Pixelspalte des Textzeichens gespeicherten Textzeichens umfassen.
  22. Bildwiedergabemaschine nach Anspruch 15, wobei die Textzeichen in der Textzeichenfolge-Nachschlagetabelle als ein Pixelfeld gespeichert werden, wobei das Pixelfeld mehrere Reihen an Pixeln und mehrere Pixelspalten für die Textzeichen der Textzeichenfolge aufweist, wobei die Codierdaten als eine Zeile von Codierdaten angrenzend an das Pixelfeld gespeichert werden, sodass die Codierdaten für eine bestimmte Pixelspalte eines Textzeichens in derselben Pixelspalte wie die bestimmte Pixelspalte gespeichert werden.
  23. Bildwiedergabemaschine nach Anspruch 15, wobei die Textzeichenfolge-Nachschlagetabelle mehrere Textzeichen umfasst, die als eine Textzeichenfolge wiedergegeben werden sollen, wobei jedes Textzeichen in der Textzeichenfolge-Nachschlagetabelle als ein Pixelfeld mit mehreren Reihen und mehreren Pixelspalten für jedes Textzeichen gespeichert wird, wobei Codierdaten in der Textzeichenfolge-Nachschlagetabelle für ein bestimmtes Textzeichen angrenzend an das Pixelfeld für das bestimmte Textzeichen gespeichert werden.
  24. Bildwiedergabemaschine nach Anspruch 23, wobei die Codierdaten für jedes Textzeichen in einer Zeile über dem Pixelfeld für jedes Textzeichen gespeichert werden.
  25. Bildwiedergabemaschine nach Anspruch 23, wobei Textzeichen in der Textzeichenfolge als eine einzelne Zeile aus Pixelfeldern gespeichert werden, wobei das Pixelfeld für jedes Textzeichen wenigstens eine gemeinsame Zeile in der Textzeichenfolge-Nachschlagetabelle haben, jedoch keinerlei überlappende Pixelspalten aufweisen.
  26. Bildwiedergabemaschine nach Anspruch 23, wobei Textzeichen in der Textzeichenfolge als zwei oder mehr Zeilen aus Pixelfeldern gespeichert werden, wobei das Pixelfeld für jedes Textzeichen wenigstens eine gemeinsame Pixelzeile in der Textzeichenfolge-Nachschlagetabelle jedoch keinerlei überlappenden Pixelspalten aufweisen und Textzeichen in unterschiedlichen Zeilen aus Pixelfeldern keinerlei Pixelzeilen der Textzeichenfolge-Nachschlagetabelle gemeinsam haben.
  27. Bildwiedergabemaschine nach Anspruch 26, wobei ein Pixelfeld für wenigstens ein Textzeichen in einer ersten der Zeilen aus Pixelfeldern eine Pixelspalte aufweist, die eine Pixelspalte für ein anderes Textzeichen in einer zweiten der Zeilen aus Pixelfeldern überlappt.
  28. Bildwiedergabemaschine nach Anspruch 27, wobei das wenigstens eine Textzeichen und das andere Textzeichen angrenzende Textzeichen in der Textzeichenfolge sind.
  29. Bildwiedergabemaschine, aufweisend; einen Prozessor; eine mit dem Prozessor gekoppelte Speicherkomponente; ein Anzeigegerät, das an ein oder mehrere Prozessoren gekoppelt ist; Bildwiedergabemaschine, aufweisend einen Prozessor; einen mit dem Prozessor verbundenen Speicher; ein mit dem Prozessor verbundenes Anzeigegerät; eine im Speicher gespeicherte Textzeichenfolge-Nachschlagetabelle, die einen Satz von Glyphen und einen oder mehrere Abschnitte mit Codierdaten umfasst, wobei jede Glyphe als eine Pixelzeile gespeichert wird, die ein zu einem Textzeichen gehörendes anzeigbares Bild definiert, und wobei jeder Abschnitt mit Codierdaten eine in einem Bild anzuzeigende Textzeichenfolge definiert, wobei jeder Abschnitt mit Codierdaten einen oder mehrere Sätze an Zeichencodierdaten umfasst, wobei jeder Satz von Zeichencodierdaten erste Codierdaten, die Informationen über eine Position eines bestimmten Textzeichens in der Textzeichenfolge definieren, und zweite Codierinformationen umfasst, die eine Referenz auf eine der Glyphen definieren, um die Identität des bestimmten Textzeichens in der Textzeichenfolge zu definieren; und eine Routine, die im Speicher gespeichert ist, die auf dem Prozessor ausgeführt wird, um die ersten und zweiten Codierdaten eines bestimmten Satzes an Zeichencodierdaten für ein Textzeichen zu lesen, um eine Position eines oder mehrerer Pixel zu bestimmen, die mit einer zum Textzeichen gehörenden Glyphe innerhalb der Textzeichenfolge gespeichert werden, die in einem Bild wiedergegeben werden soll.
  30. Bildwiedergabemaschine nach Anspruch 29, worin eine Routine eine Mitte des Textzeichens der Glyphe bestimmt, die durch die zweiten Codierdaten unter Verwendung der ersten Codierdaten referenziert wird, die zum bestimmten Satz von Zeichencodierdaten gehören.
  31. Bildwiedergabemaschine nach Anspruch 29, umfassend eine weitere Routine, die im Speicher gespeichert wird, die auf dem Prozessor ausgeführt wird, um Pixel, die sich an einer oder mehreren Positionen innerhalb des Pixelfeldes einer oder mehrerer der Glyphen befinden, an einer bestimmten Position innerhalb eines Bildes auf dem Anzeigegerät auf der Grundlage der ersten Codierdaten anzuzeigen, die den Ort der Mittelposition des Textzeichens definieren, das durch die zweiten Codierdaten referenziert wird.
  32. Bildwiedergabemaschine nach Anspruch 31, wobei die weitere Routine die Pixel, die sich an einer oder mehreren Positionen innerhalb des Pixelfeldes einer oder mehrerer der Glyphen befinden, an einer bestimmten Position innerhalb eines Bildes auf dem Anzeigegerät auf der Grundlage der ersten Codierdaten anzeigt, durch Bestimmen, ob die Mittelposition des Textzeichens, wenn es in einem Textkästchen auf dem Bild wiedergegeben wird, innerhalb eines Bereiches des Textkästchens liegt, und durch Wiedergeben der Pixel, die sich an einer oder mehreren Positionen innerhalb des Pixelfeldes der einen der Glyphen befinden, an der bestimmten Position innerhalb des Bildes, wenn die Mitte des Textzeichens, wenn es im Textkästchen auf dem Bild wiedergegeben wird, innerhalb des Bereiches des Textkästchens liegt.
  33. Bildwiedergabemaschine nach Anspruch 29, worin die ersten Codierdaten umfassen, die eine Breite eines Textzeichens spezifizieren, das durch eine Glyphe definiert wird.
  34. Bildwiedergabemaschine nach Anspruch 29, worin die ersten Codierdaten für ein bestimmtes Textzeichen erste Codierdaten an jedem eines Satzes an Pixelspalten für das bestimmte Textzeichen umfassen, das einen Abstand von der Pixelspalte der erste Codierdaten zur mittleren Pixelspalte des bestimmten Textzeichens spezifiziert, das durch eine Glyphe definiert wird, der durch die zweiten Codierdaten für das bestimmte Textzeichen referenziert wird.
  35. Bildwiedergabemaschine nach Anspruch 29, worin die ersten Codierdaten eines jeden Textzeichens in der Textzeichenfolge an einer Position in der Textzeichenfolge-Nachschlagetabelle angrenzend an die zweiten Codierdaten eines jeden Textzeichens gespeichert werden.
  36. Bildwiedergabemaschine nach Anspruch 29, worin die zweiten Codierdaten des einen der Textzeichen von einem der Abschnitte mit Sätzen von Codierdaten auf dieselbe Glyphe als die zweiten Codierdaten eines anderen der Textzeichen des einen der Abschnitte mit Sätzen von Codierdaten referenziert.
  37. Bildwiedergabemaschine nach Anspruch 29, worin die zweiten Codierdaten des einen der Textzeichen eines der Abschnitte mit Sätzen von Codierdaten auf dieselbe Glyphe als die zweiten Codierdaten des einen der Textzeichen eines zweiten der Abschnitte mit Sätzen von Codierdaten referenziert.
  38. Bildwiedergabemaschine nach Anspruch 29, worin jeder der Sätze aus Abschnitten mit Codierdaten die ersten Codierdaten umfasst, die in einer Reihe der Textzeichennachschlagetabelle gespeichert sind und für jede einer Vielzahl an Spalten der Textzeichennachschlagetabelle den Abstand von einem Spaltenort zum Spaltenort der Mitte einer Pixelspalte des Textzeichens definieren, die durch die zweiten Codierdaten referenziert wurden.
  39. Bildwiedergabemaschine nach Anspruch 38, worin jeder der Abschnitte mit Sätzen von Codierdaten die zweiten Codierdaten umfasst, die an einem fixierten Ort in der Textzeichenfolge-Nachschlagetabelle in Bezug auf eine der Spalten der ersten Codierdaten gespeichert sind.
  40. Bildwiedergabemaschine nach Anspruch 39, worin zweite Codierdaten beginnend an einem Spaltenort der Textzeichennachschlagetabelle an einer Spalte gespeichert werden, die durch die ersten Codierdaten als die Mittelposition eines Textzeichens angezeigt werden.
  41. Bildwiedergabemaschine nach Anspruch 29, worin die ersten Codierdaten für eines der Textkästchen in einer ersten Zeile aus Codierdaten gespeichert werden, die mehrere Spalten der Textzeichenfolge-Nachschlagetabelle überspannen und worin die zweiten Codierdaten für das eine der Textzeichen in einer zweiten Zeile aus Codierdaten gespeichert werden, die eine Vielzahl von Spalten der Textzeichenfolge-Nachschlagetabelle überspannen, die einen Teilsatz der mehreren Spalten der Textzeichennachschlagetabelle definiert, die von den ersten Codierdaten verwendet wird, und wobei die ersten Codierdaten für das eine der Textzeichen eine Mittelposition des einen der Textzeichen definiert, das sich im Pixelfeld der Glyphe befindet, der durch die zweiten Codierdaten des einen der Textzeichens definiert wird.
  42. Bildwiedergabemaschine nach Anspruch 29, worin die ersten Codierdaten für jedes Textzeichen in einer Zeile der Textzeichenfolge-Nachschlagetabelle über den zweiten Codierdaten für jedes Textzeichen gespeichert sind.
  43. Bildwiedergabemaschine nach Anspruch 29, worin die Sätze an Zeichencodierdaten für einen der Abschnitte mit Codierdaten als eine einzelne Zeile aus Sätzen von Zeichencodierdaten gespeichert sind, wobei die ersten Codierdaten für jedes Textzeichen innerhalb dem einen der Abschnitte mit Codierdaten wenigstens eine gemeinsame Zeile in der Textzeichennachschlagetabelle jedoch keinerlei überlappenden Spalten in der Textzeichennachschlagetabelle aufweisen.
  44. Bildwiedergabemaschine nach Anspruch 29, worin die Sätze an Zeichencodierdaten für einen der Abschnitte mit Codierdaten als zwei oder mehr Zeilen von Sätzen von Zeichencodierdaten gespeichert werden, wobei die ersten Codierdaten für jedes Textzeichen in derselben Zeile aus Sätzen Zeichencodierdaten wenigstens eine gemeinsame Zeile in der Textzeichennachschlagetabelle jedoch keinerlei überlappenden Spalten in der Textzeichenfolge-Nachschlagetabelle aufweisen, und wobei die ersten Codierdaten für jedes Textzeichen in verschiedenen Zeilen aus Sätzen von Zeichencodierdaten keine gemeinsamen Reihen der Textzeichenfolge-Nachschlagetabelle aufweisen.
  45. Bildwiedergabemaschine nach Anspruch 44, worin erste Codierdaten für wenigstens ein Textzeichen in einer ersten der Zeilen aus Sätzen von Zeichencodierdaten eine Spalte umfassen, die eine Spalte von ersten Codierdaten eines anderen Textzeichens in einer zweiten der Zeilen aus Sätzen von Zeichencodierdaten überlappt.
  46. Bildwiedergabemaschine nach Anspruch 44, worin das wenigstens eine Textzeichen und das andere Textzeichen angrenzende Textzeichen in der Textzeichenfolge sind, die durch den Abschnitt mit Codierdaten definiert sind.
DE202012013465.5U 2011-06-30 2012-06-28 Wiedergabe eines textbildes entlang einer linie Expired - Lifetime DE202012013465U1 (de)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US13/174,378 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,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
US13/174,403 2011-06-30
US13/174,283 US8400453B2 (en) 2011-06-30 2011-06-30 Rendering a text image following a line

Publications (1)

Publication Number Publication Date
DE202012013465U1 true DE202012013465U1 (de) 2017-01-30

Family

ID=47424793

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202012013465.5U Expired - Lifetime DE202012013465U1 (de) 2011-06-30 2012-06-28 Wiedergabe eines textbildes entlang einer linie

Country Status (6)

Country Link
EP (1) EP2727006B1 (de)
JP (1) JP5959637B2 (de)
KR (1) KR102001191B1 (de)
CN (1) CN103765413B (de)
DE (1) DE202012013465U1 (de)
WO (1) WO2013003567A2 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105808617B (zh) * 2014-12-31 2020-02-07 高德软件有限公司 一种电子地图的生成、显示方法和装置
KR101755807B1 (ko) 2015-07-10 2017-07-10 김성일 휴대단말의 화면에 문자를 표시하는 방법 및 저장매체
US20170249292A1 (en) * 2016-02-29 2017-08-31 Microsoft Technology Licensing, Llc Conditional determination of lookups in glyph processing
CN107066109A (zh) * 2016-09-10 2017-08-18 上海触乐信息科技有限公司 动态文本即时输入的方法、***和装置
KR101887086B1 (ko) * 2017-12-15 2018-08-09 세종대학교산학협력단 무브먼트 데이터를 다방향 벡터필드에서 시각화하는 방법 및 그 장치
US11131987B2 (en) * 2018-03-15 2021-09-28 Xinxin Wang Method and system for preventing and detecting hazardously misleading information on safety-critical display
EP3879391B1 (de) * 2018-12-07 2023-12-27 Mitsubishi Electric Corporation Eingabeanzeigesteuerungsvorrichtung, eingabeanzeigesteuerungsverfahren und eingabeanzeigesystem
CN111489411B (zh) * 2019-01-29 2023-06-20 北京百度网讯科技有限公司 线条绘制方法、装置、图像处理器、显卡及车辆
CN109978968B (zh) * 2019-04-10 2023-06-20 广州虎牙信息科技有限公司 运动对象的视频绘制方法、装置、设备及存储介质
CN110309824B (zh) * 2019-07-02 2021-07-02 北京百度网讯科技有限公司 文字检测方法、装置以及终端
KR102142238B1 (ko) * 2020-02-25 2020-08-07 주식회사 엔디소프트 소정 이미지에 포함된 축약어, 손글씨, 비정형 단어 및 문장과 같은 텍스트 정보를 추출한 후 그 추출 결과를 소정 언어로 자동 번역하는 방법
CN112464739B (zh) * 2020-11-05 2023-05-23 福建天泉教育科技有限公司 一种文档文本易读性评测的方法及终端

Family Cites Families (33)

* Cited by examiner, † Cited by third party
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
DE69231923T2 (de) * 1991-09-26 2002-04-04 Mitsubishi Denki K.K., Tokio/Tokyo System mit Annäherungsmittel zur Erkennung von graphischen Elementen in einer Zeichnung
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 Electronics Nv Fahrzeugnavigationsanzeigesystem
JP3108979B2 (ja) * 1994-07-28 2000-11-13 セイコーエプソン株式会社 画像処理方法および画像処理装置
JP3345224B2 (ja) * 1995-03-06 2002-11-18 富士通株式会社 パターン抽出装置、パターン再認識用テーブル作成装置及びパターン認識装置
US5684940A (en) * 1995-03-13 1997-11-04 Rutgers, The States University Of New Jersey Computer-implemented method and apparatus for automatically labeling area regions of maps using two-step label placing procedure and for curved labeling of point features
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
US6952215B1 (en) * 1999-03-31 2005-10-04 International Business Machines Corporation Method and system for graphics rendering using captured graphics hardware instructions
US6803913B1 (en) * 1999-12-01 2004-10-12 Microsoft Corporation Warping text along a curved path
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 出力制御装置及びその方法並びにコンピュータプログラム
RU2216781C2 (ru) * 2001-06-29 2003-11-20 Самсунг Электроникс Ко., Лтд Основанные на изображениях способ представления и визуализации трехмерного объекта и способ представления и визуализации анимированного объекта
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
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 地図表示装置、地図表示方法および地図表示プログラム
US7567252B2 (en) * 2003-12-09 2009-07-28 Microsoft Corporation Optimizing performance of a graphics processing unit for efficient execution of general matrix operations
US20050190970A1 (en) * 2004-02-27 2005-09-01 Research In Motion Limited Text input system for a mobile electronic device and methods thereof
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
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

Also Published As

Publication number Publication date
EP2727006A2 (de) 2014-05-07
JP2014521148A (ja) 2014-08-25
KR102001191B1 (ko) 2019-10-01
EP2727006B1 (de) 2018-10-31
JP5959637B2 (ja) 2016-08-02
WO2013003567A2 (en) 2013-01-03
CN103765413B (zh) 2018-02-16
EP2727006A4 (de) 2014-12-10
KR20140073480A (ko) 2014-06-16
WO2013003567A3 (en) 2013-04-11
CN103765413A (zh) 2014-04-30

Similar Documents

Publication Publication Date Title
DE202012013465U1 (de) Wiedergabe eines textbildes entlang einer linie
DE202012013450U1 (de) Beschriftungspositionierbildwiedergabesystem zur Reduzierung des Kriechens bei Zoom-Aktivitäten
DE69130545T2 (de) System zur Erzeugung einer texturierten Perspektivsicht
US8400453B2 (en) Rendering a text image following a line
DE202014010937U1 (de) Überlagerung zweidimensionaler Kartendaten auf einer dreidimensionalen Szene
EP0984397B1 (de) Verfahren und Vorrichtung zum Eliminieren unerwünschter Stufungen an Kanten bei Bilddarstellungen im Zeilenraster
DE202014010911U1 (de) Effiziente Zusammensetzung und Darstellung grafischer Elemente
DE19917092A1 (de) Verfahren zur Rasterisierung eines Graphikgrundelements
DE202015009138U1 (de) Indexierte Einheitsgrößenparameter für Strichwiedergabe
DE112005002076T5 (de) Unterteilung von Geometriebildern in Grafikhardware
DE202008018626U1 (de) System zum Betrachten von Panoramabildern
DE102018125472B4 (de) Grafikprozessor, der Abtastungs-basiertes Rendering durchführt, und Verfahren zum Betreiben desselben
DE202012013456U1 (de) Neuordnung überlagerter digitaler Bilddaten und zugehörige Rendering-Engine für digitale Bilder
DE202015009181U1 (de) Überblendung zwischen Straßenansicht und Erdansicht
DE102012023481A1 (de) Vorrichtung, Verfahren und Computerprogramm zur räumlichen Darstellung eines digitalen Kartenausschnitts
DE69606177T2 (de) Verfahren und gerät zur texturabbildung
DE112022003721T5 (de) Mikro-netze, eine strukturierte geometrie für computergrafik
DE202012013439U1 (de) Das Verwenden von Banding zur Optimierung der Kartenwiedergabe in einer dreidimensionalen Neigungsansicht
US8760451B2 (en) Rendering a text image using texture map character center encoding with character reference encoding
DE202014010846U1 (de) Farbverlauf von Wasser auf einer digitalen Karte
DE102010028668A1 (de) Verfahren zur räumlichen Darstellung
DE112011105126T5 (de) Texturkartierungsvorrichtung
DE602004011234T2 (de) Verfahren und Vorrichtung zur Erzeugung dreidimensionaler Bilder
DE102013021044A1 (de) Erzeugung fehlerbefreiter Voxel-Daten
DE69910980T2 (de) Antialiasing mit unterabtastung für textur-raender

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R151 Utility model maintained after payment of second maintenance fee after six years
R152 Utility model maintained after payment of third maintenance fee after eight years
R071 Expiry of right