DE112007002225T5 - Erstellen und Codieren von Glyphen - Google Patents

Erstellen und Codieren von Glyphen Download PDF

Info

Publication number
DE112007002225T5
DE112007002225T5 DE112007002225T DE112007002225T DE112007002225T5 DE 112007002225 T5 DE112007002225 T5 DE 112007002225T5 DE 112007002225 T DE112007002225 T DE 112007002225T DE 112007002225 T DE112007002225 T DE 112007002225T DE 112007002225 T5 DE112007002225 T5 DE 112007002225T5
Authority
DE
Germany
Prior art keywords
outline
glyph
elements
library
parameters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112007002225T
Other languages
English (en)
Other versions
DE112007002225B4 (de
Inventor
Terence S. San Jose Dowling
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.)
Adobe Inc
Original Assignee
Adobe Systems Inc
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
Application filed by Adobe Systems Inc filed Critical Adobe Systems Inc
Publication of DE112007002225T5 publication Critical patent/DE112007002225T5/de
Application granted granted Critical
Publication of DE112007002225B4 publication Critical patent/DE112007002225B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/28Quantising the image, e.g. histogram thresholding for discrimination between background and foreground patterns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/56Extraction of image or video features relating to colour
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/387Composing, repositioning or otherwise geometrically modifying originals

Abstract

Computerimplementiertes Verfahren, umfassend:
Identifizieren einer Bibliothek von Elementen, wobei jedes Element in der Bibliothek von Elementen einem Umriss sowie einem oder mehreren Parametern zugeordnet ist;
Identifizieren einer Glyphe, die einen oder mehrere Verweise auf ein jeweiliges Element in der Bibliothek von Elementen aufweist, wobei jeder Verweis einen Wert für einen oder mehrere der Parameter mit einer Zuordnung zu dem jeweiligen Element spezifiziert; und
Erstellen bzw. Rendern der Glyphe auf Grundlage jedes jeweiligen Elementes, auf das durch die Glyphe verwiesen wird, wobei der Wert des einen oder der mehreren Parameter aus der Spezifizierung durch jeden Verweis Auswirkungen auf das Aussehen des erstellten bzw. gerenderten Elementes hat.

Description

  • Hintergrund
  • Die Erfindung betrifft die Informationscodierung und insbesondere eine kompakte Darstellung von Zeichensätzen (fonts).
  • Ein Zeichensatz beschreibt eine Familie von Glyphen, die üblicherweise einen bestimmten Stil oder ein bestimmtes Schriftbild (typeface) aufweisen. Jede einzelne Glyphe in dem Zeichensatz stellt im Allgemeinen ein einzelnes Zeichen einer Sprache dar, wobei der Zeichensatz gegebenenfalls Glyphen für zahlreiche Sprachen beinhalten kann. Jede Glyphe beschreibt, wie ein Zeichen aussehen sollte. Ein Computerzeichensatz ist die digitale Codierung eines Zeichensatzes, der üblicherweise in einer Datei enthalten ist und geläufigerweise für eine Spezifizierung dahingehend verwendet wird, wie Zeichen an einer Anzeigevorrichtung erstellt werden sollen, auf einem Drucker ausgedruckt werden sollen oder beides.
  • Ein Umrisszeichensatz bzw. Outlinefont ist ein Computerzeichensatz, bei dem jede Glyphe üblicherweise als Abfolge von Punkten spezifiziert ist, die einen Umriss beschreiben. So zeigt beispielsweise 1A eine Glyphe 100, die als Abfolge von Linien (beispielsweise Linie 110) und Kurven (beispielsweise Kurve 120) dargestellt ist, und zwar so, wie sie in einem Umrisszeichensatz bzw. Outlinefont spezifiziert sein kann. Jede Linie oder Kurve in der Glyphe 100 beinhaltet wenigstens einen Punkt 130, der die horizontale und vertikale Position des Endes jeder Linie oder Kurve spezifiziert. Das Erstellen 195 der Glyphe 100 ist in 1B dargestellt.
  • Jede Glyphe kann aus einer Anzahl von nichtzusammenhängenden Komponenten bestehen. So beinhaltet die Glyphe 100 beispielsweise die Komponenten 140, 150, 160, von denen jede von der anderen getrennt ist. Der Umriss jeder Komponente wird üblicherweise durch eine oder mehrere Konturen bzw. Umrisslinien beschrieben, die als Abfolge von Linien und Kurven spezifiziert sind. So beinhaltet die Zeichensatzkomponente 150 beispielsweise drei Konturen bzw. Umrisslinien 155A, 155B und 155C. Zeichensätze, die Zeichen aus zahlreichen Sprachen, insbesondere asiatischen Sprachen, unterstützen, können Tausende oder sogar Zehntausende von Glyphen und Komponentenumrissen von Glyphenbestandteilen codieren.
  • Zusammenfassung
  • Allgemein kann ein Aspekt des in dieser Druckschrift beschriebenen Gegenstandes in Verfahren verkörpert sein, die die Vorgänge des Identifizierens einer Bibliothek von Elementen beinhalten, wobei jedes Element in der Bibliothek von Elementen einem Umriss sowie einem oder mehreren Parametern zugeordnet ist. Es wird eine Glyphe identifiziert, die einen oder mehrere Verweise auf ein jeweiliges Element in der Bibliothek von Elementen aufweist. Jeder Verweis spezifiziert einen Wert für einen oder mehrere der Parameter mit einer Zuordnung zu dem jeweiligen Element. Die Glyphe wird auf Grundlage jedes jeweiligen Elementes, auf das durch die Glyphe verwiesen wird, erstellt. Der Wert des einen oder der mehreren Parameter aus einer Spezifizierung durch jeden Verweis hat Auswirkungen auf das Aussehen des erstellten Elementes. Andere Ausführungsbeispiele dieses Aspektes beinhalten entsprechende Systeme, Vorrichtungen und Computerprogrammerzeugnisse.
  • Diese und andere Ausführungsbeispiele können optional eines oder mehrere der nachfolgenden Merkmale aufweisen. Jedes Element in der Bibliothek von Elementen kann von allen anderen Elementen in der Bibliothek von Elementen verschieden sein. Beinhalten kann das Erstellen der Glyphe ein Erstellen jedes Umrisses mit einer Zuordnung zu jedem jeweiligen Element, auf das durch die Glyphe verwiesen wird, auf Grundlage des Wertes des zugeordneten einen oder der zugeordneten mehreren Parameter, wobei der Wert eines jeden von dem einen oder den mehreren Parametern Auswirkungen auf die Form des Umrisses hat. Jeder von dem einen oder den mehreren Parametern mit einer Zuordnung zu einem Element kann Transformationen des zugeordneten Umrisses beschreiben, wobei jede Transformation bei der Erstellung Auswirkungen auf die Form des Umrisses hat. Die Transformationen können Auswirkungen auf eine oder mehrere Größen von der Höhe, der Breite, der Drehung, der Dicke, der Verjüngung, der Erweiterung, dem Radius und der Krümmung des Umrisses haben. Jede Transformation kann Auswirkungen auf die Form eines Abschnittes des Umrisses haben.
  • Allgemein kann ein weiterer Aspekt des in dieser Druckschrift beschriebenen Gegenstandes in Verfahren verkörpert sein, die die Vorgänge des Codierens einer Bibliothek von Elementen beinhalten, wobei jedes Element in der Bibliothek von Elementen einem Umriss sowie einem oder mehreren Parametern zugeordnet ist. Jedes Element in der Bibliothek von Elementen ist von allen anderen Elementen in der Bibliothek verschieden. Eine Glyphe wird auf Grundlage einer Mehrzahl von Verweisen auf jeweilige Elemente in der Bibliothek von Elementen codiert. Jeder Verweis beinhaltet einen Wert für einen oder mehrere Parameter von dem zugeordneten einen oder den zugeordneten mehreren Parametern. Andere Ausführungsbeispiele dieses Aspektes beinhalten entsprechende Systeme, Vorrichtungen und Computerprogrammerzeugnisse.
  • Diese und andere Ausführungsbeispiele können optional eines oder mehrere der nachfolgenden Merkmale aufweisen. Jeder von dem einen oder den mehreren Parametern kann einer Transformation des zugeordneten Umrisses des Elementes zugeordnet sein. Die Transformationen können Auswirkungen auf die Form des Umrisses haben und eines oder mehrere von dem Nachfolgenden betreffen: Höhe, Breite, Drehung, Dicke, Verjüngung, Erweiterung, Radius und Krümmung. Jede Transformation kann Auswirkungen auf die Form eines Abschnittes des Umrisses haben. Der Wert von Parametern in dem Verweis kann unter Verwendung von Versätzen relativ zu dem Wert eines vorher codierten Verweises codiert sein. Es kann der kleinste Absolutwert jedes Parameters bestimmt werden. Beinhalten kann das Codieren der Glyphe das Codieren einer Mehrzahl von Verweisen, die auf ein bestimmtes Element Bezug nehmen, durch Spezifizieren von Werten für die Parameter des bestimmten Elementes für jeden aus der Mehrzahl von Verweisen und lediglich einmal erfolgendes Identifizieren des bestimmten Elementes. Das Codieren kann das Codieren von Werten unter Verwendung einer variablen Bytecodierung beinhalten.
  • Allgemein kann ein Aspekt des in dieser Druckschrift beschriebenen Gegenstandes in einem computerlesbaren Medium verkörpert sein, das eine Datenstruktur zum Speichern einer Glyphe beinhaltet. Die Dateistruktur beinhaltet einen oder mehrere Verweise auf ein Element in einer Bibliothek von Elementen, wobei jedes Element in der Bibliothek von Elementen einem Umriss zugeordnet ist. Die Datenstruktur beinhaltet zudem eine Mehrzahl von Werten für jeden von dem einen oder den mehreren Verweisen, wobei der eine oder die mehreren Werte die Form des Umrisses mit einer Zuordnung zu dem jeweiligen Element des einen oder der mehreren Verweise spezifizieren.
  • Bestimmte Ausführungsbeispiele des in dieser Druckschrift beschriebenen Gegenstandes können implementiert sein, um einen oder mehrere der nachfolgenden Vorteile zu bieten. Ein Zeichensatz kann derart spezifiziert und codiert sein, dass er im Vergleich zum Spezifizieren eines Umrisses für jede Glyphenkomponente sehr wenig Speicherplatz erfordert. Es kann eine Glyphe auf Grundlage einer Kombination von Umrisselementen anstatt einer oder mehrerer Konturen bzw. Umrisslinien spezifiziert und codiert sein. Das Gestalten der Glyphen eines Zeichensatzes unter Verwendung einer Kombination von Umrisselementen kann den Gestaltungsaufwand verringern. Das Wiederverwenden von Elementen in Glyphen verbessert die Intraglyphen- und Interglyphenkonsistenz, was sowohl für die Lesbarkeit wie auch für die Qualität von Bedeutung ist. Der nummerische Wert von Parametern mit Auswirkungen auf die genaue Form von Umrisselementen in der Glyphe kann gestapelt (stacked) werden, um die Größe der Glyphencodierung zu verringern. Nummerische Werte in der Glyphe können als relative Versätze variabel bytecodiert oder spezifiziert werden, um die Größe der codierten Glyphe weiter zu verringern.
  • Details hinsichtlich eines oder mehrerer Ausführungsbeispiele der Erfindung sind in der begleitenden Zeichnung sowie in der nachfolgenden Beschreibung niedergelegt. Weitere Merkmale, Aspekte und Vorteile der Erfindung ergeben sich aus der Beschreibung, der Zeichnung und den Ansprüchen.
  • Kurzbeschreibung der Zeichnung
  • 1A ist die Darstellung einer Glyphe, wie sie in einem Umrisszeichensatz bzw. Outlinefont spezifiziert ist.
  • 1B ist die Darstellung einer Erstellung der in 1A dargestellten Glyphe.
  • 2A ist die Darstellung einer Glyphe, deren Komponenten mehrere Umrisse mit einer Zuordnung zu verschiedenen Elementen beinhalten.
  • 2B ist die Darstellung einer Erstellung der in 2A dargestellten Glyphe.
  • 3 ist die Darstellung eines Zeichensatzes, der mehrere von den Zeichensatzglyphen mit Bezug auf Elemente in einer Bibliothek von Elementen beinhaltet.
  • 4 zeigt, wie der Wert von Parametern mit einer Zuordnung zu Elementen, auf die in einer Glyphe verwiesen wird, Auswirkungen auf das Aussehen von Umrissen in der Glyphe hat.
  • 5 ist ein Flussdiagramm zum Erstellen einer Glyphe, die Verweise auf die Elemente in einer Bibliothek von Elementen beinhaltet.
  • 6 ist ein Blockdiagramm eines Systems zum Erstellen von Glyphen, die Bezug auf Elemente aus einer Bibliothek von Elementen nehmen.
  • Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Figuren der Zeichnung verweisen auf gleiche Elemente.
  • Detailbeschreibung
  • 2A ist die Darstellung einer Glyphe 200, deren Komponenten 210A–C mehrere Umrisse beinhalten (beispielsweise die Umrisse 250A–C), die jeweils einem jeweiligen Element (beispielsweise dem Element 250260) zugeordnet sind. Jeder Umriss ist nicht mit anderen Umrissen in der Glyphe verbunden. So ist beispielsweise der Umriss 250A von allen anderen Umrissen (beispielsweise dem Umriss 260A–C) in der Glyphe getrennt. Jeder Umriss mit einer Zuordnung zu einem Element ist ein Umriss, der durch eine oder mehrere Konturen bzw. Umrisslinien spezifiziert ist, die jeweils durch eine Abfolge von Linien und Kurven (quadratische oder kubische Bezierkurven) spezifiziert sind.
  • Eine erstellte Glyphe kann den Umriss mit einer mehrfachen Zuordnung zu einem bestimmten Element beinhalten. So weisen beispielsweise der Umriss 250B und der Umriss 250C ähnliches Aussehen auf. Die Umrisse unterscheiden sich lediglich bezüglich ihrer relativen vertikalen Position. Die Glyphe bezieht sich, wie man auch sagen kann, mehrfach auf dasselbe Element. Die Umrisse 250A und 250B sind einander ebenfalls ähnlich. Zusätzlich dazu, dass sie verschiedene Positionen aufweisen, unterscheiden sich diese Umrisse jedoch auch noch bezüglich ihrer relativen horizontalen Größe.
  • Jedes Element ist einem Umriss sowie einem oder mehreren Parametern zugeordnet, die das Aussehen des Umrisses spezifizieren, so beispielsweise die Länge und Breite des Umrisses sowie die vertikale und horizontale Position des Umrisses. Wird auf ein Element durch eine Glyphe verwiesen, so beinhaltet die erstellte Glyphe den Umriss, der dem Element, auf das verwiesen wird, zugeordnet ist. Jeder Elementverweis beinhaltet Werte für jeden der Elementparameter, die das Aussehen des Umrisses in der Glyphe bestimmen. Daher ist der Wert eines jeden der Elementparameter glyphenspezifisch. Bei einigen Implementierungen müssen die Glyphen keine Werte für jeden der Glyphenparameter spezifizieren, wenn die Parameter einem Standardwert zugewiesen sind.
  • Bei einigen Implementierungen müssen einige Parameter nicht für alle Elemente Gültigkeit besitzen. So kann beispielsweise das Element 280 einen Parameter, der die Dicke des Elementes angibt, und einen weiteren Parameter, der die Krümmung des Elementes angibt, beinhalten. Obwohl der erstgenannte Parameter auch bei dem Element 250A Gültigkeit besitzt, gilt dies nicht für den letztgenannten Parameter. Parameter und ihre möglichen Auswirkungen auf das Aussehen eines Elementumrisses werden nachstehend detaillierter unter Bezugnahme auf 4 beschrieben.
  • Eine Glyphe kann durch Bezugnahme auf ein oder mehrere vordefinierte Elemente und den spezifizierten Wert der Parameter jedes Elementes spezifiziert werden. So kann beispielsweise das Spezifizieren der Glyphe 200 die Bezugnahme auf das Element 260 in drei getrennten Kategorien bzw. Fällen beinhalten. Jeder Verweis beinhaltet Werte für die Parameter des Elementes, wobei die Werte die Position und Form des Elementumrisses in der Glyphe beschreiben.
  • Allgemein kann eine Glyphe zudem einen Umriss beinhalten, der nicht einem Element zugeordnet ist. So kann der Umriss 240 beispielsweise kein Element sein und keine zugeordneten Parameter aufweisen. Dieser Umriss kann in der Glyphe als Abfolge von Liniensegmenten anstatt als Verweis auf eine Form spezifiziert sein. Bei einigen Implementierungen kann bei einem bestimmten Zeichensatz jedes Element aus einer Bibliothek von Elementen identifiziert werden.
  • 2B zeigt die Erstellung 295 der in 2A dargestellten Glyphe 200. Jeder Umriss in der spezifizierten Glyphe ist als ausgefüllter Bereich erstellt, wodurch eine Glyphe erstellt ist, die derart aussieht, als würde sie nur drei getrennte Glyphenkomponenten beinhalten. Obwohl beispielsweise die Komponente 210C der Glyphe 200 mehrere Umrisse beinhaltet, sehen die erstellten Umrisse idealerweise identisch zur Erstellung einer entsprechenden Komponente (so beispielsweise der Komponente 160) aus, die unter Verwendung lediglich eines einzigen Umrisses spezifiziert ist (beispielsweise im Vergleich zur Erstellung 195 in 1B). Allgemein kann die Erstellung der Glyphe ein Erstellen der Glyphe mit Farben oder Farbschattierungen, das Einsetzen von visuellen Effekten, so beispielsweise von Tröpfchenschatten, Umrissen, dreidimensionaler Extrusion, Rasterung der Glyphe zu einem Bild oder Verwendung als Bildmaske, beinhalten. Bei einigen Implementierungen können Umrisse, die zu den in 1A gezeigten ähnlich sind, aus den in 2A gezeigten Umrisselementen abgeleitet werden.
  • Die Information, die zum Spezifizieren der Glyphe 200 notwendig ist, kann mit der Information verglichen werden, die zum Spezifizieren der Glyphe 100 notwendig ist. Man beachte insbesondere, dass die Komponente 140 wenigstens 48 Punkte benötigt, um jede Linie oder Kurve zu spezifizieren, wobei jeder Punkt aus zwei Werten besteht (beispielsweise der horizontalen und der vertikalen Position). Die Glyphe kann in der Praxis jedoch weitaus mehr als 45 Punkte beinhalten. Im Gegensatz hierzu erfordert jeder der acht Elementverweise der Komponente 210A acht Punkte zum Spezifizieren der Position jedes Umrisses und nicht weniger als acht zusätzliche Werte für die Parameter jedes Elementes. Daher ist sehr viel mehr Information notwendig, um die Punkte zu spezifizieren, die den Umriss 140 (beispielsweise 90 Werte) definieren, im Vergleich zu derjenigen Information, die zum Identifizieren und Bereitstellen von Werten für die Parameter von jedem der acht Elemente (beispielsweise 24 Werte), die die größte Komponente der Glyphe 200 bilden, notwendig ist.
  • 3 ist die Darstellung eines Zeichensatzes 300, der mehrere der Zeichensatzglyphen 350A–C beinhaltet, die auf Elemente in einer Bibliothek von Elementen 310 Bezug nehmen. Die Bibliothek von Elementen 310 beinhaltet mehrere Elemente, von denen jedes durch seinen eindeutigen Umriss dargestellt ist (beispielsweise den Umriss 320, 330 und 340). Im Allgemeinen ist der Umriss jedes Elementes (so beispielsweise der Umriss 320, 330 und 340) von dem Umriss aller anderen Elemente verschieden, sodass keine zwei Umrisse in der Bibliothek dasselbe Aussehen aufweisen (oder als Ergebnis einer Transformation entsprechend Parametern jedes jeweiligen Elementes dasselbe Aussehen aufweisen können). So erscheinen beispielsweise bei einigen Implementierungen der Umriss 330 und der Umriss 340 ähnlich. Gleichwohl sind die Seiten des Umrisses 330 Linien, wohingegen die Seiten des Umrisses 340 Kurven sind. Bei anderen Implementierungen können der Umriss 330 und der Umriss 340 gleich sein. Gleichwohl können die Parameter jedes zugeordneten Elementes des Umrisses unterschiedlich sein. So kann beispielsweise das dem Umriss 340 zugeordnete Element einen Parameter mit Auswirkungen auf die Krümmung des Umrisses beinhalten, während das dem Umriss 330 zugeordnete Element keine derartigen Parameter aufweist. Bei derartigen Implementierungen bezieht sich eine Glyphe, die die gekrümmte Variante des Umrisses 340 benötigt, auf das entsprechende Element des Umrisses und den geeigneten Krümmungsparameter, wohingegen sich eine Glyphe, die aus dem geraden Umriss 330 erstellt ist, auf ein entsprechendes Element bezieht, ohne dass zusätzliche Werte für den einen oder die mehreren Parameter mit Bezug auf die Krümmung des Umrisses beinhaltet sein müssten.
  • Auf ein oder mehrere Elemente in der Bibliothek kann durch jede der Glyphen in dem Zeichensatz Bezug genommen werden. So kann sich die Glyphe 350A beispielsweise auf Elemente 320, 330, 333, 337 und 340 beziehen. Eine andere Glyphe 350B kann sich auf Elemente 320, 333 und 337 beziehen. Durch Bezugnahme auf die Elemente in der Bibliothek kann jede Glyphe in dem Zeichensatz unter Verwendung von weniger Information spezifiziert werden, als notwendig wäre, wenn die Glyphe lediglich unter Verwendung von Linien und Kurven spezifiziert wäre. Auf jedes Element kann wiederholt durch Glyphen im ganzen Zeichensatz Bezug genommen werden, und zwar insbesondere bei Zeichensätzen, die eine große Anzahl von Glyphen beinhalten, die sich äußerlich sehr ähnlich sind (was beispielsweise bei Zeichensätzen der Fall ist, die japanische Kanji verwenden, oder bei Zeichen, die für die traditionelle und vereinfachte chinesische Schrift verwendet werden).
  • 4 zeigt, wie der Wert von Parametern (beispielsweise der Wert 410, 415, 425, 435, 445, 450, 455, 460, 465, 470), die den Elementen, auf die in einer Glyphe 400 Bezug genommen wird, zugeordnet sind, Auswirkungen auf das Aussehen der Umrisse 448, 490A–C, 493 und 497 in der Glyphe haben kann. Jedes Element ist mehreren Parametern zugeordnet, die Auswirkungen dahingehend haben, wie der dem Element zugeordnete Umriss innerhalb der Glyphe aussieht. Jedes Element wird zwei Positionsparametern zugeordnet, die die jeweiligen horizontalen und vertikalen Positionen des Umrisses innerhalb der Glyphe spezifizieren. So kann beispielsweise die Position des Umrisses 490C als x und y-Koordinate spezifiziert sein (beispielsweise ein Wert 410 beziehungsweise ein Wert 445), die relativ zu einem vorher spezifizierten Punkt oder zu einem Ursprung 407, der in der Glyphe vorhanden sein kann, (beispielsweise der am weitesten links auf der Grundlinie 403 befindliche Punkt) gegeben sind. Jedes Element ist zudem wenigstens einem transformationsbezogenen Parameter zugeordnet, der Auswirkungen auf die Form anstatt auf die Position des Elementumrisses in der Glyphe hat (so beispielsweise die Breite, die Höhe oder die Krümmung des Umrisses).
  • Allgemein entsprechen die Parameter eines Elementes jeweils einer aus einer Vielzahl von Transformationen, die bei dem zugeordneten Umriss des Elementes angewendet werden können. Jede Transformation spezifiziert eine Verfahrensweise, mittels der das Aussehen des Elementumrisses verändert werden kann (beispielsweise Skalierung, Drehung oder Krümmung). Der Wert eines Parameters hat Auswirkungen darauf, in welchem Umfang die Transformation den Elementumriss beeinflusst. So beinhaltet beispielsweise das Element 490 einen Parameter, der einer Transformation zugeordnet ist, die zum horizontalen Skalieren des zugeordneten Umrisses des Elementes verwendet wird. Man beachte, dass der Wert 470 zur Spezifizierung der horizontalen Skalierung des Elementes 490 einen Umriss 490A beschreibt, der größer ist in demjenigen Fall ist, in dem dasselbe Element mit einem Wert 475 spezifiziert ist, der die horizontale Skalierung des Umrisses 490C spezifiziert. Auf diese Weise kann der Umriss jedes Elementes immer dann, wenn auf das Element durch eine Glyphe Bezug genommen wird, angepasst werden.
  • Es können andere Transformationen verwendet werden, um die Drehung eines Umrisses um einen Punkt zu bestimmen. So ist beispielsweise das Element 497 einem Parameter zugeordnet, dessen Wert 460 Auswirkungen auf die Drehung des Elementumrisses um den Punkt 463 hat. Der Punkt 463, um den die Drehung erfolgt, kann für alle Elemente vorab bestimmt werden, oder er kann für jedes Element vorab bestimmt werden. Bei einigen Implementierungen kann der Wert eines Parameters verwendet werden, um Auswirkungen auf das Wesen einer einem anderen Parameter zugeordneten Transformation zu haben. So kann das Element 497 beispielsweise einem zweiten Parameter zugeordnet sein, der den Ort des Punktes, um den die Drehung des Elementumrisses erfolgt (beispielsweise der Punkt 463), spezifiziert.
  • Die Elemente beinhalten jeden der nachfolgenden positionsbezogenen Parameter mit Auswirkungen auf die Position des Elementumrisses in der Glyphe:
    • • horizontale Position mit Auswirkungen auf die horizontale Position eines Elementumrisses (beispielsweise der Wert 410) innerhalb der Glyphe;
    • • vertikale Position mit Auswirkungen auf die vertikale Position eines Elementumrisses (beispielsweise der Wert 445) innerhalb der Glyphe.
  • Bestimmte Transformationen, die jedem Element zugeordnet sind, können einen oder mehrere der nachfolgenden Transformationen beinhalten:
    • • horizontale Skalierung mit Auswirkungen auf die Breite eines Elementumrisses (beispielsweise der Wert 470);
    • • vertikale Skalierung mit Auswirkungen auf die Höhe eines Elementumrisses;
    • • Dicke mit Auswirkungen auf die Dicke (beispielsweise der Wert 455) eines Elementumrisses ohne Auswirkungen auf die Breite hiervon. Bei einigen Implementierungen kann ein Element mehreren Dickenparametern zugeordnet sein, von denen jeder Auswirkungen auf die Dicke von verschiedenen Segmenten des Elementumrisses hat. So können beispielsweise drei Dickenparameter Auswirkungen auf die relative Dicke von jedem des einen horizontalen und der zwei vertikalen Streifen des Elementes 495 haben;
    • • Drehung mit Auswirkungen auf die Umrissdrehung (beispielsweise der Wert 460) um einen Punkt;
    • • Krümmung mit Auswirkungen auf einen Krümmungspunkt mit Anwendbarkeit auf den Umriss. So identifiziert beispielsweise der Wert eines Parameters 450 das Ausmaß, in dem sich der Umriss 448 in eine bestimmte Richtung krümmt;
    • • Strichverjüngung mit Auswirkungen auf das Ausmaß, in dem eine Linie oder Kurve in dem Umriss in Bezug auf den Rest des Umrisses verzerrt oder verjüngt ist. So identifiziert beispielsweise der Wert des Parameters 465 das Ausmaß, in dem sich das Ende des Umrisses 493 verjüngt;
    • • Merkmalserweiterung mit Auswirkungen auf die Länge oder Größe eines Teiles des Umrisses. So kann beispielsweise das Merkmal 455 des Umrisses verlängert werden, ohne dass dies Auswirkungen auf den Rest des Umrisses hätte. Bei einem anderen Beispiel können die vertikalen Striche des Umrisses 495 verlängert oder verkürzt werden. Darüber hinaus kann der Raum zwischen jedem vertikalen Strich des Umrisses 495 ebenfalls entsprechend dem Wert eines zugeordneten Parameters Auswirkungen haben;
    • • Radius mit Auswirkungen auf die Größe eines Elementumrisses in Kreisform. Bei einigen Implementierungen kann der Parameter zum Spezifizieren von größeren und kleineren Radien für Umrisse, die eine elliptische Form aufweisen, verwendet werden.
  • Einer oder mehrere der vorgenannten Punkte können auch zu einem einzigen Parameter kombiniert werden. So kann beispielsweise ein Element zwei Parametern zugeordnet werden, und zwar jeweils entsprechend einer horizontalen und vertikalen Skalierung. Ein anderes Element kann einem einzelnen Parameter zugeordnet werden, was Auswirkungen sowohl auf die horizontale wie auch die vertikale Skalierung hat (so beispielweise eine Proportionalskalierung des Umrisses). Die kombinierte Transformation kann von Nutzen sein, wenn der Umriss in mehreren Glyphen mit variierenden, jedoch proportionalen Größen auftritt.
  • Bei einigen Implementierungen kann jedes codiertes Element eine Codierung des Elementumrisses beinhalten (beispielsweise mit einer Spezifizierung als Abfolge von Linien und Kurven). Jedes Element kann zudem Information beinhalten, die spezifiziert, wie viele transformationsbezogene Parameter das Element aufweist, welche Transformationen diesen Parametern zugeordnet sind und welche Punkte in dem Element jeder Trans formation zugeordnet sind. So kann beispielsweise Information mit demjenigen Element codiert werden, das dem Umriss 448 zugeordnet ist, wodurch angegeben wird, welche Punkte des Umrisses einer Krümmungstransformation unterworfen werden.
  • Bei einigen Implementierungen kann jeder Wert, der für einen Elementparameter in der Glyphe spezifiziert ist, relativ zu einer vorher spezifizierten Glyphe sein. So kann beispielsweise die Position des Umrisses 490B relativ zu dem zuvor spezifizierten Element spezifiziert sein (beispielsweise der Umriss 490A), anstatt dass sie relativ zum Glyphenursprung 407 spezifiziert wäre. Der Wert 435, der der vertikalen Position des Umrisses 490B zugeordnet ist, gibt die Umrissposition über dem vorherigen Umriss 490A an. Auf gleiche Weise zeigen die Werte 425 und 450 die relative horizontale und vertikale Position des Umrisses 490A zu der Position des Umrisses 490B an.
  • Bei einigen Implementierungen kann jeder einzelne Wert als relativer Versatz im Vergleich zu einem vorher spezifizierten Wert spezifiziert sein. So kann beispielsweise ein Elementverweis die nachfolgenden sechs Werte beinhalten: 610, 548, 457, 528, 427, 481. Dieselben Werte können unter Verwendung der relativen Versätze folgendermaßen spezifiziert sein: 610, –62, –91, 71, –101, 54. Man beachte insbesondere, dass der zweite Wert 548 durch Addieren von 610 und –62 gegeben ist, wohingegen der dritte Wert durch Addieren von 548 und –91 gegeben ist. Man beachte, dass bei binärer Codierung die erstgenannten sechs Werte mehr als jeweils ein Byte benötigen, wohingegen die letztgenannten sechs Werte ohne Weiteres in nur sieben Byte codiert werden können. Alternativ kann eine Abfolge von Werten als relativer Versatz in Bezug auf den ersten Wert spezifiziert sein (So kann beispielsweise jeder der vorgenannten Werte als Versatz relativ zu dem ersten Wert 610 gegeben sein).
  • Jede Glyphe wird durch eine Codierung spezifiziert, die Verweise auf Elemente und den Wert für jeden Parameter jedes Elementes, auf das verwiesen wird, beinhalten kann. Im Allgemeinen ist jede Glyphencodierung Teil einer größeren Zeichensatzcodierung und wird üblicherweise in einer Datei in einer Speichervorrichtung gespeichert (beispielsweise mit einer Speicherung in einem Nurlesespeicher oder einem Leseschreibspeicher und mit Zugriff hierauf). Bei einigen Implementierungen kann die Zeichensatzcodierung die Bibliothek von Elementen sowie Information über die Parameter jedes Elementes der zugeordneten Transformationen beinhalten. Bei anderen Implementierungen kann die Bibliothek von Elementen getrennt vom Zeichensatz codiert werden. Alternativ kann die Bibliothek von Elementen derart codiert werden, dass einige der Elemente mit dem Zei chensatz und einige der Elemente getrennt von dem Zeichensatz codiert werden (so beispielsweise bei einer globalen Bibliothek von Elementen, auf die mehrere Zeichensatzcodierungen Bezug nehmen können).
  • Bei einigen Implementierungen kann eine Glyphe als Abfolge von Anweisungen codiert werden, die jeweils einen oder mehrere Operanden aufweisen. So kann beispielsweise eine Anweisung angeben, dass eine Linie von der aktuellen Position zu einer zweiten Position gezogen werden soll, indem eine Anweisung „Linie zu" (line to) mit zwei Operanden spezifiziert wird, die horizontale und vertikale Aspekte der zweiten Positionen angeben. Eine Anweisung kann darüber hinaus auf ein Element verweisen, das anzeigt, dass ein Elementumriss aus der Bibliothek von Elementen gezeichnet werden soll. Eine derartige Anweisung kann darüber hinaus eine variable Anzahl von Operanden spezifizieren, die als Parameterwerte gedeutet werden können. So kann beispielsweise bei einer Verweisanweisung der erste Operrand das bestimmte Element identifizieren (beispielsweise durch Bezugnahme auf die Position des Elementes in der Bibliothek von Elementen), während nachfolgende Operanden den Wert von jedem der Elementparameter angeben.
  • Ein Glyphe, die zweimal auf dasselbe Element verweist, kann die nachfolgende repräsentative Codierung aufweisen:
    84 34 –29 45 94 Zusammensetzen (Compose)
    39 –92 21 23 94 Zusammensetzen (Compose)
  • In der vorstehenden Codierung spezifiziert „Zusammensetzen (Compose)" eine Anweisung, die den ersten Operanden zum Identifizieren eines bestimmten Elementes, in diesem Fall des Wertes „94" in der Bibliothek von Elementen verwendet. Die verbleibenden vier Operanden sind Parameterwerte für das spezifizierte Element. Die erstellte Glyphe enthält dann zwei Umrisse, die beide auf dasselbe Element Bezug nehmen, sich jedoch in Position und Form entsprechend diesen spezifizierten Parametern unterscheiden.
  • Bei einigen Implementierungen können die Operanden zum Spezifizieren der Parameter des Elementes gestapelt werden, wie dies beispielsweise bei der nachfolgenden repräsentativen Codierung der Fall ist:
    84 34 –29 45 94 39 –92 21 33 94 Zusammensetzen (Compose)
  • Die ersten acht Werte spezifizieren dieselben vier Parameter für die beiden oben angegebenen Verweise. Durch Stapeln von Parameterwerten wird auf das Element „94" für jedes Vielfache von vier Parametern aus einer Spezifizierung in der Codierung Bezug genommen. Im Allgemeinen können die Parameter eines Elementes auf diese Weise derart gestapelt werden, dass für ein gegebenes Element, das n Parameter aufweist, wenn m mal n Parameter vorgesehen sind, m Umrisse entsprechend jeder m-Menge von n Parametern erzeugt werden.
  • Zusätzlich zur Bezugnahme auf Elemente kann die Glyphencodierung auch Information beinhalten, die einen Umriss direkt spezifiziert (beispielsweise als Linien und Kurven ohne Bezugnahme auf ein Element). Derartige Information kann mit einer Glyphe codiert werden, wenn notwendige Aspekte der Glyphe aus denjenigen Elementen, die in der Elementbibliothek zur Verfügung stehen, nicht für sich konstruiert oder nicht effizient konstruiert werden können.
  • Bei einigen Implementierungen kann jeder codierte Wert oder eine solche Zahl unter Verwendung einer variablen Bytecodierung codiert werden. Eine variable Bytecodierung codiert eine Zahl in einer variablen Anzahl von Bytes im Verhältnis zum Absolutwert der Zahl. Bei einigen Implementierungen kann ein einziges Byte zum Codieren sowohl von kleinen Zahlen als auch von Information zur Spezifizierung, ob zusätzliche Bytes zum Decodieren der Zahl von Nöten sind, verwendet werden. Beispielsweise unter der Annahme, dass v der Wert eines ersten Byte ist, gilt: wenn v einen Wert zwischen 32 und 246 aufweist, so ist die codierte Zahl gleich v minus 139. Weist v einen Wert zwischen 247 und einschließlich 250 auf, so ist die codierte Zahl gleich (v – 241) × 256 + v' + 108, wobei v' der Wert des Byte ist, das auf v folgt. Auf ähnliche Weise gilt: Weist v einen Wert zwischen 251 und einschließlich 254 auf, so ist die codierte Zahl gleich (v – 251) × (–256) – v' – 108. Ist der Wert von v gleich 255, so ist die codierte Zahl als signierte Vier-Byte-Zahl in den vier Bytes codiert, die auf v folgen. Die Werte von v zwischen 0 und 32 können zum Codieren von wenigstens 32 eindeutigen Anweisungen oder Operationen verwendet werden (so beispielsweise eine Anweisung, die auf ein Element in einer Bibliothek von Elementen Bezug nimmt, oder eine Anweisung zum Zeichnen der Linie zwischen einer aktuellen Position und der durch einen Operanden gegebenen Position).
  • Bei einigen Implementierungen kann die Glyphe zum Minimieren des Absolutwertes einer jeden bei der Codierung verwendeten Zahl codiert werden. Anstatt des Spezifizie rens des Wertes eines Umrisses in Abmessungen, die große Werte benötigen (so beispielsweise ein quadratischer Kasten mit 300 auf 300), können die Werte minimiert werden, wobei die Relativform des Umrisses erhalten bleibt (beispielsweise ein quadratischer Kasten von 30 auf 30). Das Minimieren des Absolutwertes der Zahlen, die zum Codieren der Glyphe verwendet werden, minimiert die Anzahl von Bytes, die zum Speichern des Zeichensatzes benötigt werden, und dies insbesondere bei einer Kombination mit einer der oben diskutierten Techniken, so beispielsweise einer variablen Bytecodierung oder relativen Versätzen.
  • 5 ist ein Flussdiagramm eines Prozesses 500 zum Erstellen einer Glyphe, die Verweise auf die Elemente in einer Bibliothek von Elementen beinhaltet. Der Prozess 500 beinhaltet ein Identifizieren einer Bibliothek von Elementen (Schritt 510). Bei einigen Implementierungen ist eine Bibliothek von Elementen mit einem Zeichensatz beinhaltet, der Glyphen enthält, die sich auf Elemente aus der Bibliothek beziehen. Bei anderen Implementierungen kann eine Bibliothek von Elementen getrennt von dem Zeichensatz identifiziert werden. Die Bibliothek von Elementen kann vorab definiert sein (beispielsweise durch ein Betriebssystem, eine Anwendung oder eine Anwenderpräferenz). So kann beispielsweise eine Bibliothek von Elementen identifiziert werden, aus der sich mehrere getrennte Zeichensätze (wo beispielsweise jeder Zeichensatz einen anderen Stil aufweist oder andere Sätze von Glyphen beinhaltet) auf dieselbe Bibliothek von Elementen beziehen können.
  • Der Prozess 500 beinhaltet das Empfangen einer Identifizierung eines Elementes in der Bibliothek von Elementen (Schritt 520). Eine Glyphe in einem Zeichensatz kann in einem Verweis ein bestimmtes Element in der Bibliothek von Elementen identifizieren. Der Prozess 500 beinhaltet ein Empfangen eines Wertes für einen oder mehrere Parameter des identifizierten Elementes (Schritt 530). Die Werte für jeden Parameter werden jedem Verweis auf das Element in der Glyphe zugeordnet oder damit codiert. Das Empfangen eines Wertes kann das Decodieren eines Wertes beinhalten, der codiert worden ist, um den zum Spezifizieren des Wertes benötigten Raum zu minimieren. So kann beispielsweise ein Wert als relativer Versatz von einem vorherigen Wert spezifiziert werden, oder der Wert kann in einer kompakten variablen Bytecodierung codiert werden, und/oder die Parameter mehrerer Verweise auf dasselbe Element können gestapelt werden. Der Wert jedes transformationsbezogenen Parameters wird verwendet, um die Form des Umrisses mit einer Zuordnung zu dem Element bei Erstellung des Umrisses zu bestimmen.
  • Der Prozess 500 beinhaltet das Transformieren des Umrisses mit einer Zuordnung zu dem identifizierten Element auf Grundlage der Werte jedes Parameters aus einer Spezifizierung in dem Elementverweis der Glyphe (Schritt 540). Die Transformation jeder Glyphe beruht auf dem Element aus der Spezifizierung in der Bibliothek von Elementen (beispielsweise die Parameter, die dem Element zugeordnet sind) und dem bestimmten Umriss, der dem Element zugeordnet ist. Im Allgemeinen kann eine Glyphe mehrere Elemente in mehreren Verweisen identifizieren und für jeden Verweis Parameterwerte für jedes Element jedes Verweises spezifizieren. Für jeden Verweis wird der Umriss des Elementes, auf das verwiesen wird, transformiert (So können beispielsweise Schritte 520 bis 540 für jeden Verweis in der Glyphe wiederholt werden).
  • Der Prozess 500 kann optional das Empfangen von zusätzlichen Umrissen, die der Glyphe zugeordnet sind, beinhalten (Schritt 550). Derartige Umrisse sind nicht irgendeinem Element in der Bibliothek von Elementen zugeordnet. Eine Glyphe kann derartige Umrisse mit einer Spezifizierung als Linien und Kurven beinhalten, und zwar insbesondere dann, wenn die Glyphe eine Form annimmt, die nicht effizient als eine oder eine Kombination von mehreren Elementen in der Bibliothek spezifiziert werden kann.
  • Der Prozess 500 beinhaltet das Erstellen der Glyphe durch Erstellen des transformierten Umrisses (Schritt 560). Der transformierte Umriss wird auf ähnliche Weise erstellt, wie dies beim Erstellen eines Umrisses der Fall ist, und dies trotz der Spezifizierung als Teil einer Glyphe. Im Allgemeinen beinhaltet dies das Rastern des Umrisses und kann weitere Operationen beinhalten, so beispielsweise ein Anti-Aliasing (Unterdrückung einer Stufenbildung) oder ein Suppixelrendern. Bei einigen Implementierungen kann die Glyphe direkt an der Anzeigevorrichtung erstellt werden. Bei anderen Implementierungen wird die Erstellung der transformierten Umrisse jeder Glyphe in einem Speichercache gespeichert (beispielsweise in einem Teil des Speichers, der üblicherweise ein flüchtiger Hochgeschwindigkeitsspeicher ist). Beim Erstellen der Glyphen auf einer Anzeigevorrichtung können die Glyphen aus dem Cache erstellt oder kopiert werden. Das aus einem Cache heraus erfolgende Erstellen der Glyphe für eine Anzeigevorrichtung minimiert das Decodieren, die Umrisstransformationen und das Rastern, die zum Erstellen einer Abfolge von Glyphen notwendig sind, die oftmals mehrere Erstellungen für dieselbe Glyphe beinhalten kann.
  • Im Allgemeinen wird ein transformierter Umriss für jeden Verweis in der Glyphe erstellt. Unter denjenigen Implementierungen, bei denen ein oder mehrere Umrisse mit der Glyphe spezifiziert sind (beispielsweise gemäß Empfang in Schritt 550), werden die glyphenspezifischen Umrisse ebenfalls erstellt.
  • 6 zeigt ein System 600 zum Erstellen von Glyphen, die sich auf Elemente in einer Bibliothek von Elementen beziehen. Das System 600 beinhaltet allgemein Module (beispielsweise Modul 650690) und Ressourcen (beispielsweise Zeichensatzinformation 610). Ein Modul ist üblicherweise eine Einheit mit eindeutiger Funktionalität, die Information für andere Module bereitstellen und von diesen empfangen kann. Module können die Kommunikation mit Eingabe- oder Ausgabevorrichtungen (beispielsweise dem Glyphenersteller 680) erleichtern. Module können mit Ressourcen arbeiten. Im Allgemeinen ist eine Ressource eine Sammlung von Informationen, die durch ein Modul verarbeitet wird. Bei einigen Implementierungen kann sich jedoch auch ein Modul, das Information für ein anderes Modul bereitstellt, wie eine Ressource verhalten und umgekehrt. So kann beispielsweise der Glyphencache 690 bei einigen Implementierungen als Ressource betrachtet werden.
  • Das System 600 beinhaltet Zeichensatzinformation 610, die Information hinsichtlich eines oder mehrerer Zeichensätze betrifft, wobei jeder Zeichensatz Glypheninformation 620 für eine oder mehrere Glyphen beinhaltet. Die Glypheninformation für jede Glyphe kann einen oder mehrere Umrisse 623 und einen oder mehrere Verweise 627 auf ein Element beinhalten. Jeder Verweis in der Glyphe identifiziert ein Element in der Bibliothek von Elementen 630. Die Bibliothek von Elementen 630 beinhaltet ein oder mehrere Elemente, die jeweils einen Umriss 633 und sowohl positionsbezogene wie auch transformationsbezogene Parameter 637 beinhalten.
  • Das System 600 beinhaltet einen Zeichensatzerstellmechanismus 640. Der Zeichensatzerstellmechanismus 640 beinhaltet einen Elementdecoder 645 zum Decodieren von empfangener Glypheninformation 620. Der Elementdecoder 645 beinhaltet einen Elementidentifizierer 650 zum Decodieren von Glyphenelementverweisen 627, die Elemente in der Elementbibliothek 630 decodieren. So kann der Elementidentifizierer 650 beispielsweise Elementverweisanweisungen und die jeweiligen Operanden der Anweisungen identifizieren, die sowohl das Element, auf das verwiesen wird, wie auch die jeweiligen Parameter des Elementes spezifizieren können. Die Glypheninformation hinsichtlich des Wertes eines Parameters eines Elementes kann durch einen Parameterprozessor 660 decodiert werden. Der Parameterprozessor 660 kann bestimmen, wie viele Parameter das Element, auf das verwiesen wird, erfordert. Bei einigen Implementierungen kann der Parameterprozessor 660 bestimmen, wann Parameter gestapelt worden sind (beispielsweise bei mehreren Verweisen auf dasselbe Element mit einer Codierung als mehrere Mengen von Parametern ohne explizites Neuidentifizieren des Elementes, auf das verwiesen wird).
  • Der Elementdecoder 645 kann zudem einen Umrisstransformator 670 beinhalten, der den Umriss mit einer Zuordnung zu einem Element auf Grundlage des Wertes der Parameter aus der Spezifizierung in der Glyphe und Verarbeitung durch den Parameterprozessor 660 transformiert. Der Umrisstransformator 645 kann Operationen durchführen, die Punkte in dem Umriss relativ zueinander anpassen. So können beispielsweise Punkte horizontal oder vertikal auseinander bewegt werden (beispielsweise entsprechend horizontalen und vertikalen Skalierungsparametern).
  • Der Zeichensatzerstellmechanismus 640 kann zudem einen Glyphenersteller 680 beinhalten. Der Glyphenersteller 680 kann die Glyphe unter Verwendung der transformierten Umrisse der Elemente, auf die verwiesen wird, sowie beliebiger Umrisse aus der Spezifizierung mit der Glyphe selbst, wenn überhaupt, erstellen. Der Glyphenersteller kann jede Glyphe direkt an einer Anzeigevorrichtung 695 erstellen. Die Anzeigevorrichtung 695 kann einen CRT- oder LCD-Monitor, eine Projektionsanzeigevorrichtung oder eine eingebaute Anzeigevorrichtung beinhalten, wie sie in handgehaltenen oder tragbaren Kommunikations-, Unterhaltungs- oder Steuervorrichtungen vorhanden sind.
  • Bei einigen Implementierungen kann der Glyphenersteller 680 Glyphen in einem Glyphencache erstellen. Glyphen können bei Bedarf (beispielsweise wenn sie gebraucht werden) in dem Glyphencache 690 erstellt werden, oder sie können in dem Glyphencache 690 vorab erstellt werden (beispielsweise wenn der Zeichensatz von dem System geladen wird). Bei derartigen Implementierungen kann der Glyphenersteller 86 bei Erstellung für eine Anzeigevorrichtung 695 Glyphen durch Zugreifen auf eine vorab erstellte Glyphe in dem Glyphencache 690 anstatt durch erneutes, von vorne beginnendes Erstellen der Glyphe erstellen.
  • Im Allgemeinen können Module und Ressourcen gemäß Darstellung in dem System 600 kombiniert oder in irgendeiner Kombination aus Hardware und Software auf einem oder mehreren Computersystemen, die durch ein oder mehrere Netzwerke verbunden sind, unterteilt und implementiert werden.
  • Ausführungsbeispiele des Gegenstandes und der funktionellen Operationen aus der Beschreibung in dieser Druckschrift können in einer digitalen elektronischen Schaltung oder in Computersoftware, Firmware oder Hardware implementiert werden, darunter denjenigen Strukturen, die in dieser Druckschrift offenbart sind, sowie in ihren strukturellen Äquivalenten sowie in Kombinationen aus einer oder mehreren hiervon. Ausführungsbeispiele des in dieser Druckschrift beschriebenen Gegenstandes können als ein oder mehrere Computerprogrammerzeugnisse implementiert sein, beispielsweise als ein oder mehrere Module von Computerprogrammanweisungen, die auf einem computerlesbaren Medium zur Ausführung durch eine Datenverarbeitungsvorrichtung oder zum Steuern des Betriebes hiervon implementiert sind. Das computerlesbare Medium kann eine maschinenlesbare Speichervorrichtung, ein maschinenlesbares Speichersubstrat, eine Speichervorrichtung, ein Materiegebilde, das ein maschinenlesbares und sich ausbreitendes Signal erzeugt, oder eine Kombination von einem oder mehreren hiervon sein. Der Begriff „Datenverarbeitungsvorrichtung" umfasst sämtliche Vorrichtungen, Einrichtungen und Maschinen, die Daten verarbeiten, darunter beispielsweise einen programmierbaren Prozessor, einen Computer oder auch mehrere Prozessoren und Computer. Die Vorrichtung kann zusätzlich zur Hardware Code beinhalten, der eine Ausführungsumgebung für das in Rede stehende Computerprogramm erzeugt, so beispielsweise Code, der Prozessorfirmware, einen Protokollstapel, ein Datenbankverwaltungssystem, ein Betriebssystem oder eine Kombination von einem oder mehreren hiervon bildet. Ein sich ausbreitendes Signal ist ein künstlich erzeugtes Signal, so beispielsweise ein maschinenerzeugtes elektrisches, optisches oder elektromagnetisches Signal, das zur Codierung von Information zur Übertragung an angeeignete Empfangsvorrichtungen erzeugt wird.
  • Ein Computerprogramm (auch als Programm, Software, Softwareanwendung, Script oder Code bekannt) kann in einer Programmiersprache beliebiger Art geschrieben sein, darunter kompilierende oder interpretierende Sprachen, und es kann in einer beliebigen Form vorliegen, darunter als allein stehendes Programm oder als Modul, Komponente, Subroutine oder andere Einheit, die zur Verwendung in einer Rechnerumgebung geeignet ist. Ein Computerprogramm entspricht nicht notwendigerweise einer Datei in einem Dateisystem. Gespeichert sein kann ein Programm in einem Abschnitt einer Datei, der auch andere Programme oder Daten enthält (beispielsweise ein oder mehrere Scripts, die in einem Dokument in einer Markup-Sprache gespeichert sind), in einer einzelnen Datei, die für das in Rede stehende Programm eigens vorgesehen ist, oder in mehreren koordinierten Dateien (beispielsweise Dateien, die ein oder mehrere Module, Subpro gramme oder Codeabschnitte speichern). Ein Computerprogramm kann dafür eingesetzt werden, auf einem Computer oder mehreren Computern, die an einem Ort befindlich sind oder an mehreren Orten verteilt und durch ein Kommunikationsnetzwerk verbunden sind, ausgeführt zu werden.
  • Die Prozesse und logischen Abläufe, die in dieser Druckschrift beschrieben werden, können von einem oder mehreren programmierbaren Prozessoren durchgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Funktionen durch Bearbeiten von Eingabedaten und Erzeugen von Ausgabedaten wahrzunehmen. Die Prozesse und logischen Abläufe können zudem durch Spezialzwecklogikschaltungen durchgeführt werden, und die Vorrichtungen können als solche implementiert sein, so beispielsweise als FPGA (Field-Programmable Gate Array FPGA, feldprogrammierbares Gatearray) oder als ASIC (Application-Specific Integrated Circuit ASIC, anwendungsspezifische integrierte Schaltung).
  • Prozessoren, die zur Ausführung eines Computerprogramms geeignet sind, beinhalten beispielsweise sowohl Altzweck- wie auch Spezialzweckmikroprozessoren sowie einen beliebigen oder mehrere beliebige Prozessoren eines Digitalcomputers beliebiger Art. Im Allgemeinen empfängt ein Prozessor Anweisungen und Daten aus einem Nurlesespeicher oder einem Speicher mit wahlfreiem Zugriff oder beidem. Die wesentlichen Elemente eines Computers sind ein Prozessor zum Ausführen von Anweisungen in der einen oder den mehreren Speichervorrichtungen zum Speichern von Anweisungen und Daten. Im Allgemeinen beinhaltet ein Computer zudem einen oder mehrere Massenspeichervorrichtungen zum Speichern von Daten, so beispielsweise magnetische, magnetooptische oder optische Platten, oder ist funktionell mit diesen verbunden, um Daten von ihnen zu empfangen oder an sie zu überfragen oder beides. Gleichwohl muss ein Computer derartige Vorrichtungen nicht zwangsläufig aufweisen. Darüber hinaus kann ein Computer in eine weitere Vorrichtung eingebettet sein, so beispielsweise ein Mobiltelefon, einen persönlichen digitalen Assistenten PDA, ein mobiles Audioabspielgerät oder einen GPS-Empfänger, um nur einige zu nennen. Computerlesbare Medien, die zum Speichern von Computerprogrammanweisungen und Daten geeignet sind, beinhalten sämtliche Formen von nichtflüchtigem Speicher, Medium und Speichervorrichtungen, darunter beispielsweise Halbleiterspeichervorrichtungen wie EPROM, EEPROM und Flash-Speichenvorrichtungen; magnetische Platten wie interne Festplatten oder herausnehmbare Platten; magnetooptische Platten wie CD-ROM- und DVD-ROM-Platten. Der Prozessor und der Speicher können durch Spezialzwecklogikschaltungen ergänzt oder in diesen verkörpert sein.
  • Zur Ermöglichung eines Austausches mit einem Anwender können Ausführungsbeispiele des in dieser Druckschrift beschriebenen Gegenstandes auf einem Computer mit einer Anzeigevorrichtung implementiert sein, so beispielsweise einem CRT- oder LCD-Monitor (Liquid Crystal Display LCD, Flüssigkristallanzeige), und zwar zum Anzeigen von Information für Anwender, sowie eine Tastatur und eine Zeigevorrichtung, so beispielsweise eine Maus oder einen Trackball, durch die der Anwender für den Computer eine Eingabe bereitstellen kann. Andere Arten von Vorrichtungen können zur Ermöglichung eines Austausches mit einem Anwender ebenfalls verwendet werden. So kann beispielsweise eine für den Anwender bereitgestellte Rückmeldung eine beliebige Art von sensorischer Rückmeldung sein, so beispielsweise eine optische Rückmeldung, eine akustische Rückmeldung oder eine tasttechnische Rückmeldung. Eine Eingabe von dem Anwender kann in einer beliebigen Form empfangen werden, darunter akustisch, sprachbasiert oder tasttechnisch.
  • Ausführungsbeispiele des in dieser Druckschrift beschriebenen Gegenstandes können in einem Rechnersystemen implementiert sein, das eine Back-End-Komponente beinhaltet, so beispielsweise einen Datenserver, oder das eine Middleware-Komponente beinhaltet, so beispielsweise einen Anwendungsserver, oder das eine Front-End-Komponente beinhaltet, so beispielsweise einen Client-Computer mit einer grafischen Anwenderschnittstelle oder einem Web-Browser, durch die ein Anwender mit einer Implementierung des in dieser Druckschrift beschriebenen Gegenstandes in Austausch treten kann, oder auch eine beliebige Kombination aus einer oder mehreren derartigen Back-End-, Middleware- oder Front-End-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder durch ein beliebiges Medium der digitalen Datenkommunikation wechselseitig verbunden sein, so beispielsweise mittels eines Kommunikationsnetzwerkes. Beispiele für Kommunikationsnetzwerke beinhalten ein Ortsbereichsnetzwerk (Local Area Network LAN) oder ein Großbereichsnetzwerk (Wide Area Network WAN) wie das Internet.
  • Das Rechnersystem kann Clients und Server beinhalten. Client und Server sind im Allgemeinen voneinander getrennt und stehen üblicherweise über ein Kommunikationsnetzwerk miteinander in Austausch. Die Beziehung von Client und Server entsteht be dingt durch Computerprogramme, die auf den jeweiligen Computern laufen und die eine Client-Server-Beziehung zueinander aufweisen.
  • Obwohl die vorliegende Druckschrift zahlreiche spezifische Angaben enthält, sollen diese nicht als Beschränkung des Schutzumfanges der Erfindung oder des gegebenenfalls Beanspruchten betrachtet werden, sondern vielmehr als Beschreibung von Merkmalen, die für bestimmte Ausführungsbeispiele von bestimmten Erfindungen spezifisch sind. Die bestimmten Merkmale, die in dieser Druckschrift im Kontext getrennter Ausführungsbeispiele beschrieben sind, können bei einem einzigen Ausführungsbeispiel auch in Kombination verwirklicht sein. Umgekehrt können verschiedene Merkmale, die im Kontext eines einzigen Ausführungsbeispieles beschrieben sind, auch in mehreren Ausführungsbeispielen getrennt oder in einer beliebigen geeigneten Unterkombination verwirklicht sein. Obwohl Merkmale vorstehend als in bestimmten Kombinationen wirkend beschrieben oder anfänglich sogar derart beansprucht dargestellt sein können, kann ein Merkmal oder können mehrere Merkmale aus einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgenommen werden, und die beanspruchte Kombination kann auf eine Unterkombination oder Abwandlung der Unterkombination abstellen.
  • Obwohl in der Zeichnung Operationen in einer bestimmten Reihenfolge beschrieben sind, sollt dies nicht dahingehend verstanden werden, dass die Ausführung dieser Operationen in dieser bestimmten Reihenfolge oder einer gezeigten sequenziellen Abfolge erfolgen muss oder dass sämtliche dargestellten Operationen ausgeführt werden müssen, um erwünschte Ergebnisse zu erreichen. Unter bestimmten Umständen kann Multitasking und Parallelverarbeitung von Vorteil sein. Darüber hinaus sollte die Trennung von verschiedenen Systemkomponenten bei den Ausführungsbeispielen gemäß vorstehender Beschreibung nicht derart verstanden werden, dass eine derartige Trennung bei allen Ausführungsbeispielen von Nöten ist, sondern vielmehr derart, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zu einem einzigen Softwareerzeugnis integriert oder in mehrere Software-Erzeugnisse gepackt werden können.
  • Es sind bestimmte Ausführungsbeispiele des in dieser Druckschrift beschriebenen Gegenstandes beschrieben worden. Weitere Ausführungsbeispiele sind innerhalb des Schutzumfanges der Ansprüche. In den Ansprüchen aufgeführte Vorgänge können beispielsweise auch in einer anderen Reihenfolge ausgeführt werden, und es werden dennoch erwünschte Ergebnisse erreicht.
  • Zusammenfassung
  • Bereitgestellt werden Verfahren, Systeme und Vorrichtungen, darunter Computerprogrammerzeugnisse, zum kompakten Codieren von Zeichensatzinformation. Gemäß einem Aspekt ist ein Verfahren vorgesehen, das ein Identifizieren einer Bibliothek von Elementen beinhaltet, wobei jedes Element in der Bibliothek von Elementen einem Umriss sowie einem oder mehreren Parametern zugeordnet ist. Es wird eine Glyphe identifiziert, die einen oder mehrere Verweise auf ein jeweiliges Element in der Bibliothek von Elementen aufweist. Jeder Verweis spezifiziert einen Wert für einen oder mehrere der Parameter mit einer Zuordnung zu dem jeweiligen Element. Die Glyphe wird auf Grundlage jedes jeweiligen Elementes, auf das durch die Glyphe verwiesen wird, erstellt. Der Wert des einen oder der mehreren Parameter aus der Spezifizierung durch jeden Verweis hat Auswirkungen auf das Aussehen des erstellten Elementes.

Claims (20)

  1. Computerimplementiertes Verfahren, umfassend: Identifizieren einer Bibliothek von Elementen, wobei jedes Element in der Bibliothek von Elementen einem Umriss sowie einem oder mehreren Parametern zugeordnet ist; Identifizieren einer Glyphe, die einen oder mehrere Verweise auf ein jeweiliges Element in der Bibliothek von Elementen aufweist, wobei jeder Verweis einen Wert für einen oder mehrere der Parameter mit einer Zuordnung zu dem jeweiligen Element spezifiziert; und Erstellen bzw. Rendern der Glyphe auf Grundlage jedes jeweiligen Elementes, auf das durch die Glyphe verwiesen wird, wobei der Wert des einen oder der mehreren Parameter aus der Spezifizierung durch jeden Verweis Auswirkungen auf das Aussehen des erstellten bzw. gerenderten Elementes hat.
  2. Verfahren nach Anspruch 1, wobei jedes Element in der Bibliothek von Elementen von allen anderen Elementen in der Bibliothek von Elementen verschieden ist.
  3. Verfahren nach Anspruch 1, wobei das Erstellen der Glyphe des Weiteren um fasst: Erstellen jedes Umrisses mit einer Zuordnung zu jedem jeweiligen Element, auf das durch die Glyphe verwiesen wird, auf Grundlage des Wertes des zugeordneten einen oder der zugeordneten mehreren Parameter, wobei der Wert jedes von dem einen oder den mehreren Parametern Auswirkungen auf eine Form des Umrisses hat.
  4. Verfahren nach Anspruch 1, wobei jeder von dem einen oder den mehreren Parametern mit einer Zuordnung zu einem Element Transformationen des zugeordneten Umrisses beschreibt, wobei jede Transformation beim Erstellen Auswirkungen auf die Form des Umrisses hat, darunter auf eines oder mehrere von der Höhe, der Breite, der Drehung, der Dicke, der Verjüngung, der Erweiterung, dem Radius und der Krümmung des Umrisses.
  5. Verfahren nach Anspruch 4, wobei: jede Transformation Auswirkungen auf die Form eines Abschnittes des Umrisses hat.
  6. Computerimplementiertes Verfahren, umfassend: Codieren einer Bibliothek von Elementen, wobei jedes Element in der Bibliothek von Elementen einem Umriss sowie einem oder mehreren Parametern zugeordnet ist, wobei jedes Element in der Bibliothek von Elementen von allen anderen Elementen in der Bibliothek verschieden ist; und Codieren eine Glyphe auf Basis einer Mehrzahl von Verweisen auf jeweilige Elemente in der Bibliothek von Elementen, wobei jeder Verweis einen Wert für einen oder mehrere von dem zugeordneten einen oder den zugeordneten mehreren Parametern aufweist.
  7. Verfahren nach Anspruch 6, wobei: jeder von dem einen oder den mehreren Parametern einer Transformation des zugeordneten Umrisses des Elementes zugeordnet ist.
  8. Verfahren nach Anspruch 7, wobei Transformationen Auswirkungen auf die Form des Umrisses haben und eines oder mehrere von dem Nachfolgenden beinhalten: Höhe, Breite, Drehung, Dicke, Verjüngung, Erweiterung, Radius und Krümmung.
  9. Verfahren nach Anspruch 8, wobei: jede Transformation Auswirkungen auf die Form eines Abschnittes des Umrisses hat.
  10. Verfahren nach Anspruch 6, wobei: der Wert von Parametern in dem Verweis unter Verwendung von Versätzen relativ zu dem Wert eines vorherigen codierten Verweises codiert werden bzw. wird.
  11. Verfahren nach Anspruch 6, wobei das Codieren der Glyphe beinhaltet: Bestimmen des kleinsten Absolutwertes jedes Parameters.
  12. Verfahren nach Anspruch 6, wobei das Codieren einer Glyphe beinhaltet: Codieren einer Mehrzahl von Verweisen mit Bezug auf ein bestimmtes Element durch Spezifizieren von Werten für die Parameter des bestimmten Elementes für jeden aus der Mehrzahl von Verweisen und lediglich einmal erfolgendes Identifizieren des bestimmten Elementes.
  13. Verfahren nach Anspruch 6, wobei das Codieren einer Glyphe beinhaltet: Codieren von Werten unter Verwendung einer variablen Bytecodierung.
  14. Computerlesbares Medium, umfassend eine Datenstruktur zum Speichern einer Glyphe, wobei die Datenstruktur umfasst: einen oder mehrere Verweise auf ein Element in einer Bibliothek von Elementen, wobei jedes Element in der Bibliothek von Elementen einem Umriss zugeordnet ist; und eine Mehrzahl von Werten für jeden von dem einen oder den mehreren Verweisen, wobei der eine oder die mehreren Werte die Form des Umrisses mit einer Zuordnung zu dem jeweiligen Element des einen oder der mehreren Verweise beschreibt.
  15. Computerprogrammerzeugnis, das auf einem computerlesbaren Medium codiert ist und dafür betrieben werden kann, Datenverarbeitungsvorrichtungen zu veranlassen, Operationen auszuführen, umfassend: Identifizieren einer Bibliothek von Elementen, wobei jedes Element in der Bibliothek von Elementen einem Umriss sowie einem oder mehreren Parametern zugeordnet ist; Identifizieren einer Glyphe, die einen oder mehrere Verweise auf ein jeweiliges Element in der Bibliothek von Elementen aufweist, wobei jeder Verweis einen Wert für einen oder mehrere der Parameter mit einer Zuordnung zu dem jeweiligen Element spezifiziert; und Erstellen der Glyphe auf Grundlage jedes jeweiligen Elementes, auf das durch die Glyphe verwiesen wird, wobei der Wert des einen oder der mehreren Parameter aus der Spezifizierung durch jeden Verweis Auswirkungen auf das Aussehen des erstellten Elementes hat.
  16. Erzeugnis nach Anspruch 15, wobei das Erstellen der Glyphe des Weiteren umfasst: Erstellen jedes Umrisses mit einer Zuordnung zu jedem jeweiligen Element, auf das durch die Glyphe verwiesen wird, auf Grundlage des Wertes des zugeordneten ei nen oder der zugeordneten mehreren Parameter, wobei der Wert jedes von dem einen oder den mehreren Parametern Auswirkungen auf eine Form des Umrisses hat.
  17. Computerprogrammerzeugnis, das auf einem computerlesbaren Medium codiert ist und dafür betrieben werden kann, Datenverarbeitungsvorrichtungen zu veranlassen, Operationen auszuführen, umfassend: Codieren einer Bibliothek von Elementen, wobei jedes Element in der Bibliothek von Elementen einem Umriss sowie einem oder mehreren Parametern zugeordnet ist, wobei jedes Element in der Bibliothek von Elementen von allen anderen Elementen in der Bibliothek verschieden ist; und Codieren eine Glyphe auf Grundlage einer Mehrzahl von Verweisen auf jeweilige Elemente in der Bibliothek von Elementen, wobei jeder Verweis einen Wert für einen oder mehrere von dem zugeordneten einen oder den zugeordneten mehreren Parametern aufweist.
  18. Erzeugnis nach Anspruch 17, wobei das Erstellen der Glyphe des Weiteren umfasst: Erstellen jedes Umrisses mit einer Zuordnung zu jedem jeweiligen Element, auf das durch die Glyphe verwiesen wird, auf Grundlage des Wertes des zugeordneten einen oder der zugeordneten mehreren Parameter, wobei der Wert jedes von dem einen oder den mehreren Parametern Auswirkungen auf eine Form des Umrisses hat.
  19. System, umfassend: Mittel zum Identifizieren einer Bibliothek von Elementen, wobei jedes Element in der Bibliothek von Elementen einem Umriss sowie einem oder mehreren Parametern zugeordnet ist; Mittel zum Identifizieren einer Glyphe, die einen oder mehrere Verweise auf ein jeweiliges Element in der Bibliothek von Elementen aufweist, wobei jeder Verweis einen Wert für einen oder mehrere der Parameter mit einer Zuordnung zu dem jeweiligen Element aufweist; und Mittel zum Erstellen der Glyphe auf Grundlage jedes jeweiligen Elementes, auf das durch die Glyphe verwiesen wird, wobei der Wert des einen oder der mehreren Parameter aus der Spezifizierung durch jeden Verweis Auswirkungen auf das Aussehen des erstellten Elementes hat.
  20. System, umfassend: Mittel zum Codieren einer Bibliothek von Elementen, wobei jedes Element in der Bibliothek von Elementen einem Umriss sowie einem oder mehreren Parametern zugeordnet ist, wobei jedes Element in der Bibliothek von Elementen von allen anderen Elementen in der Bibliothek verschieden ist; und Mittel zum Codieren einer Glyphe auf Grundlage einer Mehrzahl von Verweisen auf jeweilige Elemente in der Bibliothek von Elementen, wobei jeder Verweis einen Wert für einen oder mehrere von dem zugeordneten einen oder den zugeordneten mehreren Parametern aufweist.
DE112007002225T 2006-09-20 2007-09-19 Erstellen und Codieren von Glyphen Expired - Fee Related DE112007002225B4 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US82637206P 2006-09-20 2006-09-20
US60/826,372 2006-09-20
US11/563,596 2006-11-27
US11/563,596 US20080068383A1 (en) 2006-09-20 2006-11-27 Rendering and encoding glyphs
PCT/US2007/078943 WO2008036771A2 (en) 2006-09-20 2007-09-19 Rendering and encoding glyphs

Publications (2)

Publication Number Publication Date
DE112007002225T5 true DE112007002225T5 (de) 2009-07-23
DE112007002225B4 DE112007002225B4 (de) 2010-06-17

Family

ID=39201841

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112007002225T Expired - Fee Related DE112007002225B4 (de) 2006-09-20 2007-09-19 Erstellen und Codieren von Glyphen

Country Status (7)

Country Link
US (1) US20080068383A1 (de)
JP (1) JP2010504559A (de)
KR (1) KR20090075693A (de)
CN (1) CN101536037B (de)
DE (1) DE112007002225B4 (de)
GB (1) GB2455258B (de)
WO (1) WO2008036771A2 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6563502B1 (en) 1999-08-19 2003-05-13 Adobe Systems Incorporated Device dependent rendering
US7719536B2 (en) 2004-03-31 2010-05-18 Adobe Systems Incorporated Glyph adjustment in high resolution raster while rendering
US7639258B1 (en) 2004-03-31 2009-12-29 Adobe Systems Incorporated Winding order test for digital fonts
US8687004B2 (en) * 2010-11-01 2014-04-01 Apple Inc. Font file with graphic images
US8836699B2 (en) * 2011-02-04 2014-09-16 Chiung Yu Chen Generation of landmark architecture and sculpture based on chinese characters
US9323726B1 (en) * 2012-06-27 2016-04-26 Amazon Technologies, Inc. Optimizing a glyph-based file
CN103903247A (zh) * 2012-12-26 2014-07-02 北京谊安医疗系统股份有限公司 一种图像绘制方法及系统
US20140320527A1 (en) * 2013-04-30 2014-10-30 Microsoft Corporation Hardware glyph cache
US20140362104A1 (en) * 2013-06-11 2014-12-11 Microsoft Corporation Layered z-order and hinted color fonts with dynamic palettes
GB2530103B (en) * 2014-09-15 2018-10-17 Samsung Electronics Co Ltd Rendering geometric shapes
EP3018630A3 (de) 2014-09-15 2018-05-16 Samsung Electronics Co., Ltd. Darstellungsvorrichtung und verfahren zur wiedergabe von wiederholten geomtrischen formen
US9881395B2 (en) 2015-08-21 2018-01-30 Sap Se Rendering multi-part glyphs
US10115374B2 (en) * 2016-05-18 2018-10-30 Blackberry Limited Variable glyph encoding
CN107292936B (zh) * 2017-05-18 2020-08-11 湖南大学 一种汉字字体矢量化方法
WO2018224152A1 (en) * 2017-06-08 2018-12-13 Huawei Technologies Co., Ltd. Devices and methods for displaying characters
US10984173B2 (en) * 2019-02-26 2021-04-20 Adobe Inc. Vector-based glyph style transfer
US11281742B2 (en) * 2019-08-08 2022-03-22 Adobe Inc. Interactive and selective coloring of digital vector glyphs

Family Cites Families (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4200861A (en) * 1978-09-01 1980-04-29 View Engineering, Inc. Pattern recognition apparatus and method
US4580231A (en) * 1978-09-15 1986-04-01 Alphatype Corporation Ultrahigh resolution photocomposition system employing electronic character generation from magnetically stored data
US4331955A (en) * 1980-08-07 1982-05-25 Eltra Corporation Method and apparatus for smoothing outlines
US4486785A (en) * 1982-09-30 1984-12-04 International Business Machines Corporation Enhancement of video images by selective introduction of gray-scale pels
US4591844A (en) * 1982-12-27 1986-05-27 General Electric Company Line smoothing for a raster display
EP0132456B1 (de) * 1983-07-29 1988-02-03 DR.-ING. RUDOLF HELL GmbH Verfahren und Vorrichtung zur Prüfung der Satzqualität von Druckerzeugnissen, insbesondere Zeitungen
US4672369A (en) * 1983-11-07 1987-06-09 Tektronix, Inc. System and method for smoothing the lines and edges of an image on a raster-scan display
US4675830A (en) * 1984-07-06 1987-06-23 Compugraphic Corporation Method for producing a scaleable typeface data
US4780711A (en) * 1985-04-12 1988-10-25 International Business Machines Corporation Anti-aliasing of raster images using assumed boundary lines
US4827255A (en) * 1985-05-31 1989-05-02 Ascii Corporation Display control system which produces varying patterns to reduce flickering
US4720705A (en) * 1985-09-13 1988-01-19 International Business Machines Corporation Virtual resolution displays
IE852259L (en) * 1985-09-13 1987-03-13 Scottish & Newcastle Breweries A method and apparatus for constructing, storing and¹displaying characters
US4783652A (en) * 1986-08-25 1988-11-08 International Business Machines Corporation Raster display controller with variable spatial resolution and pixel data depth
US4851825A (en) * 1987-07-24 1989-07-25 Naiman Abraham C Grayscale character generator and method
EP0313332B1 (de) * 1987-10-22 1994-12-14 Rockwell International Corporation Verfahren und Einrichtung zum Zeichnen von Linien von hoher Qualität auf einer Matrixanzeige mit Farben
JPH023091A (ja) * 1988-01-19 1990-01-08 Du Pont Pixel Syst Ltd 文字生成装置および方法
US5280577A (en) * 1988-01-19 1994-01-18 E. I. Du Pont De Nemours & Co., Inc. Character generation using graphical primitives
US4945351A (en) * 1988-05-23 1990-07-31 Hewlett-Packard Company Technique for optimizing grayscale character displays
US4908780A (en) * 1988-10-14 1990-03-13 Sun Microsystems, Inc. Anti-aliasing raster operations utilizing sub-pixel crossing information to control pixel shading
AU629210B2 (en) * 1988-10-26 1992-10-01 Sun Microsystems, Inc. Method and apparatus for minimizing the visual degradation of digital typefaces
US5099435A (en) * 1989-03-31 1992-03-24 Bitstream, Inc. Method and apparatus for conversion of outline characters to bitmap characters
US5155805A (en) * 1989-05-08 1992-10-13 Apple Computer, Inc. Method and apparatus for moving control points in displaying digital typeface on raster output devices
US5299308A (en) * 1990-02-28 1994-03-29 Ricoh Company, Ltd. Graphic data processing apparatus for producing a tone for an edge pixel and reducing aliasing effects
US5241653A (en) * 1990-04-12 1993-08-31 Adobe Systems Incorporated Apparatus and method for adjusting and displaying scaled, rasterized characters
US5459828A (en) * 1990-08-01 1995-10-17 Xerox Corporation Optimized scaling and production of raster fonts from contour master fonts
JPH04246690A (ja) * 1990-08-29 1992-09-02 Xerox Corp 高品質のイメージを並みの解像度で表示する方法
CN1048342C (zh) * 1991-05-31 2000-01-12 李润生 首母码汉字输入法
US5301267A (en) * 1991-09-27 1994-04-05 Adobe Systems Incorporated Intelligent font rendering co-processor
JPH05127648A (ja) * 1991-10-31 1993-05-25 Ricoh Co Ltd アウトラインフオントデータの圧縮装置
JP3082491B2 (ja) * 1992-01-27 2000-08-28 松下電器産業株式会社 文字フォントデータ出力装置
US5416898A (en) * 1992-05-12 1995-05-16 Apple Computer, Inc. Apparatus and method for generating textual lines layouts
JP3382265B2 (ja) * 1992-07-29 2003-03-04 キヤノン株式会社 文字パターン作成方法及び装置
US5398306A (en) * 1992-07-31 1995-03-14 Urw Software & Type Gmbh Generation of multitype fonts on high resolution output devices
EP0604685A1 (de) * 1992-12-28 1994-07-06 Océ-Nederland B.V. Methode zur Modifizierung des Fettdruckens von Buchstaben
US5664086A (en) * 1993-04-16 1997-09-02 Adobe Systems Incorporated Method and apparatus for generating digital type font, and resulting fonts using generic font and descriptor file
CN1045227C (zh) * 1993-04-24 1999-09-22 付子宁 字形数据的压缩复原方法和有关产品
JP2967014B2 (ja) * 1993-05-24 1999-10-25 キヤノン株式会社 画像処理装置
JP3021278B2 (ja) * 1993-08-30 2000-03-15 シャープ株式会社 均一幅線の生成装置及び均一幅線の生成方法
US5959634A (en) * 1993-12-09 1999-09-28 Canon Kabushiki Kaisha Character generating system employing thickening or narrowing of characters
US5519824A (en) * 1994-03-18 1996-05-21 Timex Corporation System and method for storing and displaying font data representing fixed-width and compressed characters
US5734388A (en) * 1994-05-16 1998-03-31 Agfa Division, Bayer Corporation Method and apparatus for data compression of digital data to produce a scaleable font database
US5754187A (en) * 1994-05-16 1998-05-19 Agfa Division, Bayer Corporation Method for data compression of digital data to produce a scaleable font database
US5684510A (en) * 1994-07-19 1997-11-04 Microsoft Corporation Method of font rendering employing grayscale processing of grid fitted fonts
EP0701242A3 (de) * 1994-08-16 1996-12-27 Adobe Systems Inc Verbessertes Verfahren zum Generieren von Mehrmaster-Schrifttypen
US5517601A (en) * 1994-09-30 1996-05-14 Hewlett-Packard Company High speed apparatus and method for rasterization of font glyphs
JP3119805B2 (ja) * 1994-12-20 2000-12-25 松下電器産業株式会社 多階調データ生成装置
JP3268160B2 (ja) * 1995-04-14 2002-03-25 シャープ株式会社 文字パターン発生装置
JP3317817B2 (ja) * 1995-07-14 2002-08-26 シャープ株式会社 文字生成装置
US5943063A (en) * 1995-10-23 1999-08-24 Adobe Systems, Inc. Method and apparatus for rendering characters
JPH09134158A (ja) * 1995-11-09 1997-05-20 Fujitsu Ltd 文字処理方法及び処理装置
JPH09152857A (ja) * 1995-11-29 1997-06-10 Toshiba Corp 文字出力装置及び文字描画方法
JPH09179542A (ja) * 1995-12-26 1997-07-11 Brother Ind Ltd キャラクタイメージデータ出力方法および装置
US5910805A (en) * 1996-01-11 1999-06-08 Oclc Online Computer Library Center Method for displaying bitmap derived text at a display having limited pixel-to-pixel spacing resolution
US5929866A (en) * 1996-01-25 1999-07-27 Adobe Systems, Inc Adjusting contrast in anti-aliasing
US6128415A (en) * 1996-09-06 2000-10-03 Polaroid Corporation Device profiles for use in a digital image processing system
US5940080A (en) * 1996-09-12 1999-08-17 Macromedia, Inc. Method and apparatus for displaying anti-aliased text
US5852448A (en) * 1996-09-20 1998-12-22 Dynalab Inc. Stroke-based font generation independent of resolution
US6408109B1 (en) * 1996-10-07 2002-06-18 Cognex Corporation Apparatus and method for detecting and sub-pixel location of edges in a digital image
US6266444B1 (en) * 1996-10-11 2001-07-24 Canon Kabushiki Kaisha Character processing apparatus and method therefor
JPH10124028A (ja) * 1996-10-24 1998-05-15 Nec Off Syst Ltd 文字パターン作成装置
US6005588A (en) * 1996-11-06 1999-12-21 Apple Computer, Inc. System and method for rapidly displaying text in a graphical user interface
US6950986B1 (en) * 1996-12-10 2005-09-27 North River Consulting, Inc. Simultaneous display of a coded message together with its translation
US6288725B1 (en) * 1997-02-24 2001-09-11 Zining Fu Representation and restoration method of font information
US6229521B1 (en) * 1997-04-10 2001-05-08 Sun Microsystems, Inc. Method for antialiasing fonts for television display
US6288726B1 (en) * 1997-06-27 2001-09-11 Microsoft Corporation Method for rendering glyphs using a layout services library
US6952210B1 (en) * 1997-12-05 2005-10-04 Adobe Systems Incorporated Method of generating multiple master typefaces containing kanji characters
US6091505A (en) * 1998-01-30 2000-07-18 Apple Computer, Inc. Method and system for achieving enhanced glyphs in a font
US6323879B1 (en) * 1998-05-14 2001-11-27 Autodesk, Inc. Method and system for determining the spacing of objects
AUPP557998A0 (en) * 1998-08-28 1998-09-24 Canon Kabushiki Kaisha Method and apparatus for orientating a set of finite N-dimensional space curves
US6141441A (en) * 1998-09-28 2000-10-31 Xerox Corporation Decoding data from patterned color modulated image regions in a color image
US6356278B1 (en) * 1998-10-07 2002-03-12 Microsoft Corporation Methods and systems for asymmeteric supersampling rasterization of image data
US6236390B1 (en) * 1998-10-07 2001-05-22 Microsoft Corporation Methods and apparatus for positioning displayed characters
US6278434B1 (en) * 1998-10-07 2001-08-21 Microsoft Corporation Non-square scaling of image data to be mapped to pixel sub-components
US6393145B2 (en) * 1999-01-12 2002-05-21 Microsoft Corporation Methods apparatus and data structures for enhancing the resolution of images to be rendered on patterned display devices
US6342890B1 (en) * 1999-03-19 2002-01-29 Microsoft Corporation Methods, apparatus, and data structures for accessing sub-pixel data having left side bearing information
US6438576B1 (en) * 1999-03-29 2002-08-20 International Business Machines Corporation Method and apparatus of a collaborative proxy system for distributed deployment of object rendering
US6614432B1 (en) * 1999-04-16 2003-09-02 Adobe Systems Incorporated Image rendering technique
US6282327B1 (en) * 1999-07-30 2001-08-28 Microsoft Corporation Maintaining advance widths of existing characters that have been resolution enhanced
US6330003B1 (en) * 1999-07-30 2001-12-11 Microsoft Corporation Transformable graphical regions
US6563502B1 (en) * 1999-08-19 2003-05-13 Adobe Systems Incorporated Device dependent rendering
US6384839B1 (en) * 1999-09-21 2002-05-07 Agfa Monotype Corporation Method and apparatus for rendering sub-pixel anti-aliased graphics on stripe topology color displays
US6725779B2 (en) * 2000-10-17 2004-04-27 Agfa-Gevaert Multi-level printing process reducing aliasing in graphics
JP2002215126A (ja) * 2001-01-15 2002-07-31 Sharp Corp 文字表示装置、文字表示方法および記録媒体
US6633680B2 (en) * 2001-03-09 2003-10-14 Morisawa & Co., Ltd. System, method and computer program product for small-font compression
US6738071B2 (en) * 2001-10-25 2004-05-18 Hewlett-Packard Development Company, L.P. Dynamically anti-aliased graphics
US6897879B2 (en) * 2002-03-14 2005-05-24 Microsoft Corporation Hardware-enhanced graphics acceleration of pixel sub-component-oriented images
US6894701B2 (en) * 2002-05-14 2005-05-17 Microsoft Corporation Type size dependent anti-aliasing in sub-pixel precision rendering systems
US6943805B2 (en) * 2002-06-28 2005-09-13 Microsoft Corporation Systems and methods for providing image rendering using variable rate source sampling
US7251365B2 (en) * 2002-07-03 2007-07-31 Vadim Fux Scalable stroke font system and method
US7639257B2 (en) * 2002-07-31 2009-12-29 Adobe Systems Incorporated Glyphlets
US7190367B2 (en) * 2003-03-25 2007-03-13 Mitsubishi Electric Research Laboratories, Inc. Method, apparatus, and system for rendering using a progressive cache
US7002598B2 (en) * 2003-03-25 2006-02-21 Mitsubishi Electric Research Labs., Inc. Method for generating a composite glyph and rendering a region of the composite glyph in object-order
US7006107B2 (en) * 2003-05-16 2006-02-28 Adobe Systems Incorporated Anisotropic anti-aliasing
US7002597B2 (en) * 2003-05-16 2006-02-21 Adobe Systems Incorporated Dynamic selection of anti-aliasing procedures
EP1496475B1 (de) * 2003-07-07 2013-06-26 STMicroelectronics Srl Geometrische Verarbeitungsstufe für einen pipelineförmiges, grafisches Anzeigesystem, Verfahren und Rechnerprogramm dafür
US7333110B2 (en) * 2004-03-31 2008-02-19 Adobe Systems Incorporated Adjusted stroke rendering
US7602390B2 (en) * 2004-03-31 2009-10-13 Adobe Systems Incorporated Edge detection based stroke adjustment
US7710422B2 (en) * 2004-07-26 2010-05-04 Microsoft Corporation Font representations
US7408556B2 (en) * 2005-01-31 2008-08-05 Microsoft Corporation System and method for using device dependent fonts in a graphical display interface

Also Published As

Publication number Publication date
JP2010504559A (ja) 2010-02-12
DE112007002225B4 (de) 2010-06-17
CN101536037A (zh) 2009-09-16
CN101536037B (zh) 2011-10-12
US20080068383A1 (en) 2008-03-20
GB2455258B (en) 2011-08-24
KR20090075693A (ko) 2009-07-08
GB2455258A (en) 2009-06-10
WO2008036771A2 (en) 2008-03-27
WO2008036771A3 (en) 2008-11-13
GB0905185D0 (en) 2009-05-06

Similar Documents

Publication Publication Date Title
DE112007002225B4 (de) Erstellen und Codieren von Glyphen
DE102019008221A1 (de) Interaktives Bildmattieren unter Verwendung neuronaler Netze
DE602004002393T2 (de) Antialiasing-verfahren und -vorrichtung zur darstellung einer region eines zweidimensionalen distanzfeldes, das ein objekt darstellt
DE60031664T2 (de) Computerverfahren und vorrichtung zum schaffen von sichtbarer graphik unter verwendung von graph algebra
DE69434405T2 (de) Verfahren zur Erzeugung eines visuellen Entwurfs
DE102017124573A1 (de) Systeme und verfahren zum beschneiden von neuronalen netzen für eine betriebsmitteleffiziente folgerung
DE102018130924A1 (de) Systeme und Verfahren zur dynamischen Gesichtsanalyse mittels eines rekurrenten neuronalen Netzes
DE19610759C2 (de) Verfahren zum Codieren eines Dokumentes und Verfahren zum Senden eines Dokumentes von einem Sendecomputersystem zu einem Empfangscomputersystem
DE102015009981A1 (de) Verfahren und Vorrichtung zur Bildsynthese
DE19713654B4 (de) Progressiv darstellbare Umrissschrift und Verfahren zum Erzeugen, Übertragen und Darstellen derselben
DE4341304A1 (de) Verfahren und Vorrichtung zur Verwendung eines Videopuffers
DE102017005964A1 (de) Techniken zum Auswählen von Objekten in Bildern
EP0654778A1 (de) Verfahren zur Textdarstellung auf Bildschirmgeräten
DE202016107451U1 (de) Systeme zur interaktiven Darstellung eines sichtbaren Teils einer Rendering-Oberfläche auf einem Benutzergerät
DE102014006549B4 (de) Technik zur Verarbeitung einer Zeichenfolge zur graphischen Darstellung an einer Mensch-Maschine-Schnittstelle
DE202016009145U1 (de) Deep-Learning-basierte funktionale Korrelation von volumetrischen Designs
DE602004002291T2 (de) Verfahren zur erzeugung eines zweidimensionalen distanzfeldes innerhalb einer zelle, die eine ecke eines zweidimensionalen objektes beinhaltet
EP2092465B1 (de) Verfahren und system zum automatischen aufbereiten von druckdaten für einen druckvorgang
DE112013006968T5 (de) Dynamische Beschriftungsanordnungsvorrichtung, Anzeigevorrichtung, dynamisches Beschriftungsanordnungsverfahren und Anzeigeverfahren
DE102017006557A1 (de) Verwenden von Markierungen zum Verfolgen von hochfrequenten Offsets für Patchabgleichsalgorithmen
DE102013021709A1 (de) Schablonieren-dann-abdecken- pfadbilderzeugung mit gemeinsamen kanten
DE60211210T2 (de) Vorrichtung und verfahren zur bildskalierung
DE112010006047T5 (de) Umformungsschnittstellen unter Verwendung von inhaltsbewahrenden Verformungen
EP3163430A1 (de) Verfahren zur erstellung von vorstufendaten für druckaufträge durch ein layout-programm
EP2893510B1 (de) Verfahren und bildverarbeitungsanlage zum entfernen eines visuellen objektes aus einem bild

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20150401