-
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 250–260)
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 650–690)
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.