-
HINTERGRUND
-
Webdokumente, wie Webseiten, sind dazu konzipiert, auf Computerbildschirmen dargestellt zu werden. Webbrowser sind deshalb speziell dafür konzipiert, Elemente eines Webdokuments (z. B. Text, Bilder usw.) für eine korrekte Formatierung und Anzeige auf einem Computerbildschirm darzustellen. Zum Beispiel kann ein Webbrowser einen Testdarstellungsalgorithmus aufweisen, der verwendet wird, um Text in einem Webdokument zur Anzeige auf einem Computerbildschirm darzulegen. Der Webbrowser kann ferner eine Druckfunktion aufweisen, die es dem Webdokument ermöglicht, ein Druckdokument aus dem Webdokument zu erstellen. Die Erstellung solcher Druckdokumente kann für einen Benutzer einer Rechenvorrichtung nützlich sein, um eine physische Kopie des Webdokuments durch Ausdrucken des Webdokuments zu erstellen.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Verschiedene Merkmale und Vorteile der vorliegenden Erfindung sind aus der folgenden ausführlichen Beschreibung ersichtlich, wobei die beigefügten Zeichnungen berücksichtigt werden, die gemeinsam lediglich beispielhaft Merkmale der vorliegenden Offenbarung veranschaulichen, und wobei:
-
1 ein Beispiel des ungleichmäßigen Abstands zeigt, der durch Verwenden von Darstellungskoordinaten auf dem Bildschirm für ein Druckdokument verursacht wird.
-
2 ein Beispiel einer Vorrichtung zum Formatieren von Text zum Erzeugen eines Druckdokuments aus einem Webdokument zeigt.
-
3 ein Beispiel eines Verfahrens zum Formatieren von Text zum Erzeugen eines Druckdokuments aus einem Webdokument zeigt.
-
4 ein Beispiel eines Verfahrens zum Formatieren von Text zum Erzeugen eines Druckdokuments aus einem Webdokument mit Hilfe von Supersampling zeigt.
-
5 eine schematische Darstellung ist, die eine Verarbeitungsvorrichtung gemäß einem Beispiel zeigt.
-
DETAILLIERTE BESCHREIBUNG
-
In der folgenden Beschreibung werden zu Zwecken der Erläuterung zahlreiche spezifische Details bestimmter Beispiele dargelegt. Bezugnahme in der Patentschrift auf „ein Beispiel” oder ähnliche Begriffe bedeutet, dass eine bestimmte Funktion, eine bestimmte Struktur oder ein bestimmtes Merkmal, die/das in Verbindung mit dem Beispiel beschrieben wird, in mindestens diesem einen Beispiel enthalten ist, aber nicht notwendigerweise in anderen Beispielen.
-
Bestimmte hierin beschriebene Beispiele betreffen Systeme und Verfahren zum Formatieren von Text. Diese Beispiele können verwendet werden, um Druckdokumente aus Webdokumenten zu erzeugen. Insbesondere betreffen bestimmte Beispiele Systeme und Verfahren zum Hüllen einer Teilmenge von Zeichen (z. B. Text, wie etwa ein einzelnes Zeichen oder Wort) eines Elements eines Webdokuments in ein anderes Element, um eine Position der Teilmenge auf dem Bildschirm (auch als „Koordinaten auf dem Bildschirm” bezeichnet) zu bestimmen. Die Position der Teilmenge auf dem Bildschirm kann dann verwendet werden, um eine Position der Teilmenge auf einem Druckdokument (auch als „Druckdokument-Koordinaten” bezeichnet) zu bestimmen.
-
In bestimmten Beispielen werden hierin zusätzliche Systeme und Verfahren zum Formatieren von Text beschrieben. Insbesondere betreffen bestimmte Beispiele Systeme und Verfahren zum Supersampling eines Attributs oder mehrerer Attribute (z. B. CSS-Attribute, wie etwa Schriftgröße, Zeilenabstand usw.) von Elementen (z. B. ein Element, das eine Teilmenge umhüllt, wie hierin erörtert), wie etwa Multiplizieren des Attributs mit einem bekannten Skalierungsfaktor (z. B. 4), bevor die Position des Texts des Elements auf dem Bildschirm bestimmt wird. Ferner kann die Position des Texts der Elemente auf einem Druckdokument auf der Grundlage der Position auf dem Bildschirm bestimmt werden, wie hierin erörtert, und die Position kann dann mit dem bekannten Skalierungsfaktor wieder verkleinert werden. Einige solcher Beispiele können in Verbindung mit Verfahren zum Bestimmen der Zeichenposition von Zeichen eines Webdokuments auf dem Bildschirm verwendet werden (z. B. wie etwa hierin unter Bezugnahme auf 3 unten beschrieben). Die hierin beschriebenen Verfahren und Systeme können eine dedizierte Vorrichtung umfassen und/oder als ein Computerprogramm (z. B. ein Skript in einer Programmiersprache, ein Plugin in einem Webbrowser, ein Druckertreiber usw.), das auf einem Computer läuft, oder eine andere Software und/oder Hardware umgesetzt werden.
-
Beim Generieren eines Dokuments, sei es ein Webdokument oder ein Druckdokument, wird das Layout des Dokuments bestimmt, um sicherzustellen, dass Text, Bilder oder andere Objekte im Dokument in einer geordneten Art und Weise dargestellt werden. Eine Fehlausrichtung solcher Objekte, wie etwa Textspalten, oder andere Fehler, wie etwa falsche Größe oder falscher Abstand von Text, kann zu einer schlechten Erfahrung eines Benutzers, der mit dem Dokument interagiert, führen. Dementsprechend kann es nützlich sein, sicherzustellen, dass ein Druckdokument, das aus einem Webdokument generiert wurde, gut dargestellt wird und keine solchen Fehler enthält.
-
Um Text in einem Druckdokument korrekt darzustellen, berücksichtigen einige hierin enthaltene Beispiele, wie viel Platz der Text auf der Seite einnehmen wird. Es ist ferner anzumerken, dass vergleichende Techniken zum Generieren von Druckdokumenten aus Webdokumenten oftmals zu Fehlern bei den generierten Druckdokumenten führen, da sie nicht adäquat bestimmen oder berücksichtigen, wie viel Platz der Text auf dem Druckdokument einnehmen wird.
-
Insbesondere ist anzumerken, dass in einem vergleichenden Fall, wenn beispielsweise ein Webdokument aus einem Webbrowser heraus gedruckt wird, die Texteinstellung für das generierte Druckdokument von der vom Webbrowser verwendeten Texteinstellung verändert wird, um den Text auf dem Bildschirm eines Computerdisplays einer Rechenvorrichtung, die den Webbrowser ausführt, darzustellen. Dies tritt selbst dann auf, wenn das Webdokument mit einem Cascading Style Sheet (CSS) verbunden ist, das festlegt, dass Attribute, wie etwa Formatierung und Spaltenbreite, gleich bleiben, wenn sie dargestellt werden, wie etwa, wenn sie auf einem Druckdokument dargestellt werden. Dementsprechend können Attribute auf dem Druckdokument, wie etwa Position von Zeilenumbrüchen, Breite von Spalten mit Text, Höhe von Spalten mit Text usw. von dem geändert werden, was auf dem Bildschirm dargestellt wird.
-
Bei der Berücksichtigung dieser vergleichenden Fälle ist anzumerken, dass Abweichungen bei den Attributen auf einem Druckdokument, das aus einem Webdokument generiert wurde, aufgrund der Breiten einzelner Zeichen (und ähnlicher Wörter), die in Bezug auf die Punktgröße der Zeichen bei den kleinen Pixelgrößen, die typischerweise verwendet werden, um Text auf dem Bildschirm darzustellen, auftreten können. Dies kann aufgrund von Pixelrundungsfehlern und Font-Hinting, was die Optimierung von Zeichenformen für eine bessere Darstellung auf dem Bildschirm bei geringen Auflösungen ist, auftreten. Deshalb kann die Verwendung von Zeichenkoordinaten, wie durch den Webbrowser für eine Darstellung auf dem Bildschirm bestimmt, um ein Druckdokument zu generieren, zu Fehlern führen. Zum Beispiel zeigt 1 ein Beispiel des ungleichmäßigen Abstands, der durch Verwenden von Darstellungskoordinaten auf dem Bildschirm für ein Druckdokument verursacht wird. Insbesondere gibt es eine übermäßige Lücke nach den „w”-Zeichen und eine übermäßig enge Passform zwischen den „l”- und „t”-Zeichen, wie durch die Pfeile in 1 hervorgehoben. Somit werden hierin Beispiele von Systemen und Verfahren zum Generieren von Druckdokumenten aus Webdokumenten beschrieben, sodass das Layout der Druckdokumente besser mit dem Layout eines Webdokuments auf dem Bildschirm, wie es durch einen Webbrowser dargestellt wird, übereinstimmt. Zum Beispiel können Systeme und Verfahren zum Supersampling, die hierin beschrieben werden, solche Abweichungen reduzieren, da sie Text und eine höhere Größe und dadurch eine größere Auflösung darstellen. Obwohl die hierin beschriebenen Systeme und Verfahren zum Supersampling in Bezug auf Browser angewandt werden, können sie auch auf andere pixelbasierte Darstellungsvorrichtungen angewandt werden.
-
2 zeigt ein Beispiel einer Vorrichtung 200 zum Formatieren von Text zum Generieren eines Druckdokuments (z. B. Portable-Document-Format-(PDF)-Datei) aus einem Webdokument (z. B. ein HyperText-Markup-Language-(HTML)-Dokument). Die Vorrichtung 200 empfängt ein Webdokument 205, wie etwa in einem Webbrowser 210, der auf der Vorrichtung 200 ausgeführt wird. Die Vorrichtung 200 kann ferner über einen Druckdokumenten-Generator 215 verfügen, der auf der Vorrichtung 200 ausgeführt wird, um Druckdokumente aus dem Webdokument 205 zu generieren. In einigen Beispielen kann der Druckdokumenten-Generator 215 ein Plugin sein, das als Teil des Webbrowsers 210 ausgeführt wird. Der Webbrowser 210 kann das Webdokument auf dem Bildschirm darstellen, wie etwa auf einer Anzeigevorrichtung 220 (z. B. Monitor, Bildschirm usw.) der Vorrichtung 200. Der Druckdokumenten-Generator 215 kann die Position für Text im Webdokument auf dem Bildschirm bestimmen, wie er von dem Webbrowser 210 dargestellt wird. Der Druckdokumenten-Generator 215 kann ferner die Position auf einem Druckdokument für den Text auf der Grundlage der bestimmten Position auf dem Bildschirm bestimmen und dementsprechend ein Druckdokument generieren.
-
3 zeigt ein Beispiel eines Verfahrens 300 zum Formatieren von Text zum Generieren eines Druckdokuments (z. B. Portable-Document-Format-(PDF)-Datei) aus einem Webdokument (z. B. HTML-Dokument). Bei einem Block 305 wird ein Element (z. B. ein HTML-Element, wie etwa <p>) eines Webdokuments ausgewählt, um die Zeichenposition des Textes im Element zu bestimmen. Bei einem Block 310 wird eine Teilmenge von Zeichen (z. B. ein einzelnes Zeichen oder ein Wort) des ausgewählten Elements in ein anderes Element gehüllt, wie etwa ein <span>-Element. Bei einem Block 315 wird bestimmt, ob es zusätzliche Teilmengen von Zeichen im ausgewählten Element gibt, für das die Zeichenposition zu bestimmen ist.
-
Wenn es beim Block 315 zusätzliche Teilmengen von Zeichen im ausgewählten Element, für das die Zeichenposition zu bestimmen ist, gibt, kehrt das Verfahren zum Block 310 zurück, wo eine andere Teilmenge von Zeichen umhüllt wird. Wenn es beim Block 315 keine zusätzlichen Teilmengen von Zeichen im ausgewählten Element, für das die Zeichenposition zu bestimmen ist, gibt, fährt das Verfahren bei einem Block 320 fort.
-
Beim Block 320 wird bestimmt, ob es zusätzliche Elemente des Webdokuments gibt, für die die Zeichenposition des Textes im Element zu bestimmen ist. Wenn es beim Block 320 zusätzliche Elemente des Webdokuments gibt, für die die Zeichenposition des Textes im Element zu bestimmen ist, kehrt das Verfahren zum Block 305 zurück, wo ein anderes Element ausgewählt wird. Wenn es beim Block 320 keine zusätzlichen Elemente des Webdokuments gibt, für die die Zeichenposition des Textes im Element zu bestimmen ist, fährt das Verfahren bei einem Block 325 fort.
-
Beim Block 325 wird die Position auf dem Bildschirm für jede der Teilmengen bestimmt, die bei Block 310 in ein Element gehüllt sind. Zum Beispiel kann die Position auf dem Bildschirm durch Aufrufen einer getBoundingClientRect()-Funktion auf jedem Element bestimmt werden, das eine Teilmenge umhüllt, die dann die Koordinaten eines Elements auf dem Bildschirm zurückgibt, wie etwa die Teilmenge. Zum Beispiel können die Koordinaten ein Begrenzungsrechteck für das Element beinhalten, einschließlich einer beginnenden x-Koordinate „x1”, einer endenden x-Koordinate „x2”, einer beginnenden y-Koordinate „y1”, einer endenden y-Koordinate „y2”.
-
Ferner bedeutet in einigen Beispielen Bestimmen der Position der Teilmengen auf dem Bildschirm Bestimmen der einzelnen Positionen jeder der Teilmengen auf dem Bildschirm sowie wo Zeilenumbrüche im Webdokument auftreten. Bestimmen, wo Zeilenumbrüche auftreten, kann für die Textauswahl, eine genaue Druckvorschau, die in HTML dargestellt wird, usw. nützlich sein. In einigen Beispielen, in denen Zeilenumbrüche im Webdokument auftreten, kann durch Vergleichen der y-Koordinaten benachbarter Wörter im Text bestimmt werden, wo, wenn sich die y-Koordinaten zwischen benachbarten Wörtern verändern, es zu einer neuen Zeile kam.
-
Wenn die Silbentrennung für das Webdokument aktiviert ist, gibt getBoundingClientRect() für ein Wort mit Bindestrich in einigen Beispielen ferner ein Rechteck mit einer Höhe, die der Höhe beider Zeilen gleicht, einschließlich eines Teils des Worts mit Bindestrich, und einer Breite, die dem gesamten Abschnitt gleicht (d. h. die Breite eines Rechtecks, das beide Abschnitt des Wortes mit Bindestrich umfasst), zurück. Aus diesem Grund wird die Position des Zeilenumbruchs wie folgt berücksichtigt, um die richtigen Koordinaten des Wortes mit Bindestrich auf dem Bildschirm zu finden. Die Koordinaten des Elements auf dem Bildschirm vor dem Wort mit Bindestrich werden teilweise verwendet, um die Koordinaten des Wortes mit Bindestrich auf dem Bildschirm zu bestimmen. Insbesondere wird die x2-Koordinate des Elements vor dem Wort mit Bindestrich als die x1-Koordinate des Wortes mit Bindestrich verwendet. Ferner wird der Punkt, an dem das Wort auf die nächste Zeile umgebrochen wird, bestimmt. Zum Beispiel wird eine Liste gültiger Trennstellen (Zeilenumbruchpunkte) (z. B. am Ende von Silben (das Silbentrennwerkzeug des Browsers führt diese Informationen zum Textfluss hinzu)) erhalten. Der größte (d. h. breiteste) Abschnitt des Wortes mit Bindestrich, einschließlich der Breite des Bindestrichs, der auf die Zeile bis zur gültigen Trennstelle (z. B. (Koordinate der Trennstelle) – (x2-Koordinate des Elements vor dem Wort mit Bindestrich)) auf dieser Zeile passt, ist der Abschnitt des Wortes mit Bindestrich, der auf der aktuellen Zeile dargestellt wird. Der Rest des Wortes mit Bindestrich wird auf der nächsten Zeile dargestellt.
-
Ferner wird die Position jeder der Teilmengen auf dem Bildschirm bei einem Block 330 verwendet, um eine Position auf einem Druckdokument für jede der Teilmengen zu bestimmen. Zum Beispiel können Webbrowser-native Darstellungsalgorithmen verwendet werden, um den Text der zu druckenden Teilmengen in einem Offscreen-Puffer darzustellen. Der Offscreen-Puffer kann über Attribute (z. B. Größe, Auflösung, Abmessungen, Ränder usw.) verfügen, die dem Druckdokument gleichen.
-
Fortsetzend bei einem Block 335 wird das Druckdokument mit den Teilmengen auf der bestimmten Position auf dem Druckdokument generiert. Zum Beispiel kann eine Portable-Document-Format-(PDF)-Datei oder eine Datei in einem anderen druckbaren Dokumentformat des Druckdokuments generiert werden, oder das Druckdokument kann direkt als Daten an einen physischen Drucker in einem angemessenen Format zum Drucken gesendet werden (z. B. mit Hilfe eines angemessenen Druckertreibers). Zum Beispiel kann der Offscreen-Puffer als die Druckdokumentdatei formatiert und gespeichert werden oder Daten vom Offscreen-Puffer können formatiert und an den physischen Drucker gesendet werden.
-
Die Ergebnisse des Verfahrens 300 können zu einer Verbesserung gegenüber vergleichender Techniken zum Generieren eines Druckdokuments aus einem Webdokument führen. In einigen Fällen allerdings können die Ergebnisse des Verfahrens 300 nicht immer Unterschiede bei der relativen Zeichenbreite zwischen verschiedenen Zeichen, die im Webdokument verwendet werden, berücksichtigen, was zu einer suboptimalen Generierung des Druckdokuments führt (z. B. siehe 1). Dementsprechend kann Supersampling in Verbindung mit Verfahren zum Bestimmen der Zeichenposition von Zeichen eines Webdokuments auf dem Bildschirm verwendet werden (z. B. wie etwa unter Bezugnahme auf das Verfahren 300 beschrieben).
-
4 zeigt ein Beispiel eines Verfahrens 400 zum Formatieren von Text zum Generieren eines Druckdokuments (z. B. PDF-Datei) aus einem Webdokument (z. B. HTML-Dokument) mit Hilfe von Supersampling. Bei einem Block 405 werden die Attribute des Webdokuments mit einem bekannten Skalierungsfaktor multipliziert, um ein skaliertes Webdokument zu generieren. Bei einem Block 410 wird die Position von Objekten (z. B. Teilmengen, Text, Zeichen und/oder Wörter usw.) des skalierten Webdokuments bestimmt. Zum Beispiel können die in Bezug auf das Verfahren 300 besprochenen Techniken, die Hüllen von Teilmengen in Elemente und Aufrufen der getBoundingClientRect()-Funktion betreffen, für das skalierte Webdokument verwendet werden.
-
Ferner wird die Position jedes der Objekte des skalierten Webdokuments auf dem Bildschirm bei einem Block 415 verwendet, um eine Position auf einem skalierten Druckdokument (z. B. ein gewünschtes Format des Druckdokuments, das durch den bekannten Skalierungsfaktor vergrößert wird) für jedes der Objekte zu bestimmen. Zum Beispiel können Webbrowsernative Darstellungsalgorithmen verwendet werden, um den Text der zu druckenden Objekte in einem Offscreen-Puffer darzustellen. Der Offscreen-Puffer kann über Attribute (z. B. Größe, Auflösung, Abmessungen, Ränder usw.) verfügen, die dem skalierten Druckdokument gleichen.
-
Fortsetzend bei einem Block 420 wird die Position auf dem skalierten Druckdokument für jedes der Objekte wieder verkleinert, indem die Position durch den bekannten Skalierungsfaktor dividiert wird, um die Position auf dem gewünschten Druckdokument für jedes der Objekte zu generieren. Ferner wird bei einem Block 425 das Druckdokument mit den Objekten auf der bestimmten Position auf dem Druckdokument generiert. Zum Beispiel kann eine Portable-Document-Format-(PDF)-Datei oder eine Datei in einem anderen druckbaren Dokumentformat des Druckdokuments generiert werden, oder das Druckdokument kann direkt als Daten an einen physischen Drucker in einem angemessenen Format zum Drucken gesendet werden (z. B. mit Hilfe eines angemessenen Druckertreibers). Zum Beispiel kann der Offscreen-Puffer als die Druckdokumentdatei formatiert und gespeichert werden oder Daten vom Offscreen-Puffer können formatiert und an den physischen Drucker gesendet werden.
-
Es ist anzumerken, dass, obwohl die Verfahren 300 und 400 mit bestimmen Blöcken in einer bestimmten Reihenfolge beschrieben werden, andere ähnliche Verfahren zum Formatieren von Text verwendet werden können, wie es der Fachmann verstehen würde. Zum Beispiel ist es nicht notwendig, dass die Teilmengen von Zeichen auf einer elementweisen Basis umhüllt werden müssen, stattdessen können Teilmengen in jeder beliebigen Reihenfolge umhüllt werden.
-
Bestimmte Verfahren und Systeme, wie sie hierin beschrieben werden, können von einem Prozessor umgesetzt werden, der einen Computerprogrammcode verarbeitet, der von einem nichtflüchtigen Speichermedium abgerufen wird. 5 zeigt ein Beispiel 500 einer Rechenvorrichtung 510, umfassend ein maschinenlesbares Speichermedium 540, das an einen Prozessor 520 gekoppelt ist. In einem bestimmten Fall kann die Rechenvorrichtung 510 einen Computer umfassen; in anderen Fällen kann die Rechenvorrichtung einen Drucker, Scanner, eine Anzeigevorrichtung oder dergleichen umfassen. Maschinenlesbare Medien 540 können alle beliebigen nichtflüchtigen Medien sein, die Programme und Daten zur Verwendung durch ein oder in Verbindung mit einem Anweisungsausführungssystem enthalten, speichern oder verwalten können. Maschinenlesbare Medien können ein beliebiges vieler physischen Medien umfassen, zum Beispiel elektronische, magnetische, optische, elektromagnetische oder Halbleiter-Medien. Spezifischere Beispiele geeigneter maschinenlesbarer Medien beinhalten eine Festplatte, einen Direkzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Festwertspeicher oder einen tragbaren Datenträger, sind aber nicht darauf beschränkt. In 5 umfasst das maschinenlesbare Speichermedium einen Programmcode, um eine Textformatierung 550 umzusetzen, wie etwa die Verfahren zum Formatieren von Text zum Generieren eines Druckdokuments aus einem Webdokument (z. B. die Verfahren 300, 400 und dergleichen). Ähnlich hierzu versteht es sich, dass die Vorrichtung 200, das Verfahren 300 oder das Verfahren 400 in der Praxis durch einen einzelnen Chip oder integrierten Schaltkreis oder mehrere Chips oder integrierte Schaltkreise bereitgestellt werden können, optional als ein Chipsatz, einen anwendungsspezifischen integrierten Schaltkreis (ASIC), ein feldprogrammiertes Gate-Array (FPGA) usw. bereitgestellt. Der Chip oder die Chips können eine Schaltung (sowie mögliche Firmware) zum Nutzen mindestens eines Bildfilters, wie oben beschrieben, umfassen. Diesbezüglich können die beschriebenen Beispiele mindestens teilweise durch einen Computerprogrammcode, der in einem (nichtflüchtigen) Speicher gespeichert und durch den Prozessor ausführbar ist, oder durch Hardware oder durch eine Kombination aus greifbare gespeichertem Code und Hardware (und greifbar gespeicherter Firmware) umgesetzt werden.
-
Zum Beispiel veranlassen die computerlesbaren Anweisungen in einem Fall, wenn sie von einem Verarbeitungssystem ausgeführt werden, das Verarbeitungssystem dazu, eine Teilmenge von Zeichen eines ersten Elements eines Webdokuments in ein zweites Element zu hüllen. Die computerlesbaren Anweisungen, wenn sie von einem Verarbeitungssystem ausgeführt werden, veranlassen ferner das Verarbeitungssystem dazu, eine Position der Teilmenge auf dem Bildschirm auf der Grundlage des Hüllens zu bestimmen. Die computerlesbaren Anweisungen, wenn sie von einem Verarbeitungssystem ausgeführt werden, veranlassen ferner das Verarbeitungssystem dazu, eine Position auf einem Druckdokument für die Teilmenge auf der Grundlage der bestimmten Position auf dem Bildschirm zu bestimmen. In einem anderen Fall veranlassen die computerlesbaren Anweisungen, wenn sie von einem Verarbeitungssystem ausgeführt werden, ferner das Verarbeitungssystem dazu, ein Attribut der Teilmenge zu bestimmen und das Attribut zu skalieren, wobei Bestimmen der Position auf dem Druckdokument ferner auf dem Skalieren basiert.
-
Die vorhergehende Beschreibung wurde präsentiert, um Beispiele der beschriebenen Prinzipien zu veranschaulichen und zu beschreiben. Diese Beschreibung erhebt keinerlei Anspruch auf Vollständigkeit und soll diese Prinzipien nicht auf eine beliebige offenbarte Form beschränken. Viele Modifikationen und Variationen sind in Anbetracht der vorstehenden Lehren möglich.