DE3686982T2 - Testverarbeitungsrandausgleichsverfahren. - Google Patents

Testverarbeitungsrandausgleichsverfahren.

Info

Publication number
DE3686982T2
DE3686982T2 DE8686107534T DE3686982T DE3686982T2 DE 3686982 T2 DE3686982 T2 DE 3686982T2 DE 8686107534 T DE8686107534 T DE 8686107534T DE 3686982 T DE3686982 T DE 3686982T DE 3686982 T2 DE3686982 T2 DE 3686982T2
Authority
DE
Germany
Prior art keywords
character
line
text
expansion
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE8686107534T
Other languages
English (en)
Other versions
DE3686982D1 (de
Inventor
Robert M Carosso
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.)
Bull HN Information Systems Inc
Original Assignee
Bull HN Information 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 Bull HN Information Systems Inc filed Critical Bull HN Information Systems Inc
Publication of DE3686982D1 publication Critical patent/DE3686982D1/de
Application granted granted Critical
Publication of DE3686982T2 publication Critical patent/DE3686982T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/189Automatic justification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Record Information Processing For Printing (AREA)

Description

  • Die vorliegende Erfindung betrifft ein Verfahren zum Durchführen einer Textverarbeitung und insbesondere ein Verfahren zum Durchführen einer Einstellung eines Textes in Zeilen, der zu drucken ist, um einheitliche Ränder zu erzeugen.
  • Im Stand der Technik ist es wohlbekannt, ein Textverarbeitungsprogramm eines Wortprozessors zu schaffen mit der Fähigkeit, eine Rechtsausrichtung zu der Zeit durchzuführen, zu der der Text gedruckt wird. Eine Rechtsausrichtung ist eine Operation, bei der die Worte bei jeder Zeile positioniert werden, um ein Dokument mit einem bündigen rechten Rand zusätzlich zu einem bündigen linken Rand zu erzeugen. Wenn eine Rechtsausrichtung benutzt wird, erzeugt dies einen geraden rechten Rand, so daß Zeilen eines gedruckten Textes gleich lang sind und nicht in einer ungleichen Anzahl von Abständen enden.
  • Derzeitige Textverarbeitungsprogramme weisen einige Probleme bezüglich der Verfahren auf, die sie zum Durchführen einer Einstellung im Text benutzen. Ein Problem ist, daß die Aufteilung des Abstands zwischen Worten so ist, daß die Worte eine Zeile bis zu dem rechten Rand völlig füllen, was in dem Auftreten von Leerraumflüssen in dem Text resultieren kann. Ein Leerraumsteg besteht aus dem Zusammenfallen von Lücken zwischen Worten an aufeinanderfolgenden Zeilen des Textes, was als eine meanderförmige weiße vertikale Linie auf einer gedruckten Seite erscheint. Obwohl Leerraumflüsse natürlich dadurch auftreten können, daß Worte die gleiche Länge oder nahezu die gleiche Länge haben, die in Mustern in dem Text auftreten, kann das Auftreten von Leerraumflüssen durch das Einführen von Abständen zwischen Worten zu Beginn oder am Ende der Zeile verhindert werden, und zwar verursacht durch die Expansion einer Zeile während der Einstellung. Diese Expansion kann diese Lücken dazu bringen, sich vertikal oder mehr oder weniger vertikal auszurichten.
  • Ein zweites Problem, das derzeitige Verfahren zum Durchführen einer Texteinstellung in Textverarbeitungsprogrammen begleitet, ist, daß eine separate Einstellungsroutine für jede Druckervorrichtung erforderlich sein kann, auf der das Dokument zu drucken ist. Beispielsweise waren bei einem Textverarbeitungsprogramm nach dem Stand der Technik, das mit einem Zeilendrucker und einem Briefqualitätsdrucker umgehen kann, drei separate Einstellungsprogramme erforderlich. Ein Einstellungsprogramm war erforderlich, um mit dem Zeilendrucker umzugehen, und ein zweites Einstellungsprogramm war erforderlich, um mit dem Briefqualitätsdrucker umzugehen, der mit einem Modus für Zeichen fester Breite arbeitet, und ein drittes Einstellungsprogramm war erforderlich, um mit dem Qualitätsdrucker umzugehen, der in einem Modus für proportionale Zeichen arbeitet. Dieses Problem, daß viele Einstellungsprogramme erforderlich sind, um mit vielen Ausgangsvorrichtungen umzugehen, kann verbunden sein mit der zusätzlichen Schwierigkeit, zu versuchen, etwas von der Expansion zwischen Worten und etwas von ihr zwischen Zeichen in Worten zu verteilen.
  • Texteinstellungssysteme nach dem Stand der Technik sind beispielsweise in den Patentbeschreibungen EP-A 93 857 und EP-A 42 045 beschrieben, die das Einstellen von Zeilen eines Textes durch Expandieren nur der expandierbaren Abstände (Zwischenwortpositionen) betreffen. Bei dem letzteren System wird die Expansion der Abstände durch Hinzufügen minimaler (Schaltschloß-) Hemmeinheiten zu den Wortabständen bewirkt.
  • Ein weiterer Artikel (IBM Techn. Discl. Bull. Juni 1984, Seiten 126-128) betrifft Steuerungen für den rechten Rand, die Gebrauch von einer Tabelle machen, die jeweilige Kompressions- und Expansionswerte der Textteile aufweist. Zuerst wird die Textzeile unter Benutzung der Werte in der Tabelle komprimiert. Wenn die Kompression in einer Zeile resultiert, die in die Ränder paßt, wird darauffolgend die komprimierte Zeile proportional expandiert, bis sie die gesamte Zeile füllt. Wenn die Kompression noch nicht in einer Zeile resultiert, die in die Ränder paßt, wird bestimmt, ob das letzte Wort des Textes zu der nächsten Zeile bewegt werden kann.
  • Demgemäß ist es eine Aufgabe der vorliegenden Erfindung, ein Texteinstellungsverfahren zu schaffen, das Textzeilen expandieren wird, und zwar vorzugsweise durch Expandieren zwischen Zeichen in Worten und durch Expandieren der Abstände zwischen Worten, um eine einheitlichere Expansion zu schaffen, was in einer ästhetisch gefallenden Textzeile resultiert.
  • Es ist auch eine Aufgabe der vorliegenden Erfindung, ein Texteinstellungsverfahren zu schaffen, das das Auftreten von Leerraumflüssen minimiert, die durch eine Zeilenexpansion verursacht sind.
  • Es ist eine weitere Aufgabe der vorliegenden Erfindung, ein Texteinstellungsverfahren zu schaffen, das unabhängig von der Ausgabevorrichtung ist.
  • Diese Aufgaben werden durch ein Texteinstellungsverfahren gelöst, wie es im Anspruch 1 gekennzeichnet ist, und es wird klarer werden, wenn es in Verbindung mit der folgenden Beschreibung und angehängten Zeichnungsseiten genommen wird, die ein bevorzugtes Ausführungsbeispiel der Erfindung zeigen.
  • Die vorliegende Erfindung enthält ein Bestimmen der Anzahl expandierbarer Zwischenwortpositionen in der einzustellenden Textzeile, zusammen mit der Anzahl expandierbarer Zwischenzeichenpositionen in der Zeile. Die Bestimmung wird dann gemacht, um den Betrag der Expansion zu bestimmen, die erforderlich ist, um einen eingestellten Rand zu erzeugen. Die Zeile enthält sowohl expandierbare Zwischenzeichenpositionen als auch expandierbare Zwischenwortpositionen. Ein vorbestimmtes Verhältnis wird benutzt, um den Betrag der Zwischenzeichenexpansion zu wählen, die stattfinden soll, und jener Expansionsbetrag wird dann in den Zwischenzeichenpositionen durchgeführt. Dann werden die Zwischenwortpositionen expandiert, wobei irgendein Rest in die Zwischenwortpositionen verteilt wird, und zwar eine Einheit zu einer Zeit, bis der Rest ausgeschöpft ist. Wenn die Anzahl expandierbarer Zwischenwortpositionen gleich 0 ist, muß irgendeine erlaubte Expansion in den Zwischenzeichenpositionen auftreten, und eine Prüfung wird durchgeführt, um zu sehen, ob die Zwischenzeichenpositionsexpansion eine Grenze überschreiten wird, und wenn nicht, wird die gesamte Expansion in den Zwischenzeichenpositionen durchgeführt, die den Rest, eine Einheit zu einer Zeit, verteilen, wenn ihre Verteilung nicht erkennbar sein wird. Wenn der Betrag der Zwischenzeichenexpansion die zuvor definierte Grenze definieren würde, dann wird die Zwischenzeichenpositonsexpansion gleich der Grenze gesetzt und die Expansion in den Zwischenzeichenpositionen durchgeführt. Dieses Verfahren verwendet granulare Einheiten, die es dem Verfahren erlauben, unabhängig von der bestimmten Ausgabevorrichtung zu sein, die zum Erzeugen des gedruckten Textes des Dokuments benutzt werden wird. Das Einstellverfahren ändert auch die Verteilung von irgendeinem Expansionsrest, um das Auftreten von Leerraumflüssen in dem Text des gedruckten Dokuments zu reduzieren.
  • Die Art, in der das Verfahren der vorliegenden Erfindung durchgeführt, und die Art, in der das Gerät der vorliegenden Erfindung aufgebaut ist, und sein Betriebsmodus können am besten anhand der folgenden detaillierten Beschreibung zusammen mit den beigefügten Zeichnungsseiten verstanden werden, wobei gleiche Bezugszeichen gleiche Elemente in den verschiedenen Figuren bezeichnen, und wobei:
  • Fig. 1 ein Diagramm eines Hardwaresystems nach dem Stand der Technik ist, das ein Textverarbeitungsprogramm ausführen kann,
  • Fig. 2 ein Flußdiagramm der Druckroutine eines Textverarbeitungsprogramms ist,
  • Fig. 3 ein Flußdiagramm der Lückenroutine ist, die durch die Druckroutine der Fig. 2 benutzt wird,
  • Fig. 4 ein Flußdiagramm der Einstellroutine ist, die durch die Lückenroutine der Fig. 3 benutzt wird,
  • Fig. 5 ein Flußdiagramm der Expansionsverteilungsroutine ist, die durch die Einstellroutine der Fig. 4 benutzt wird,
  • Fig. 6 ein Blockdiagramm der Zeichen-Zuordnungstabelle ist, die durch die Druckroutine der Fig. 2 benutzt wird,
  • Fig. 7 ein Blockdiagramm von verketteten Lückeninformationsblöcken (CIB) ist, die durch die Druckroutine der Fig. 2 benutzt werden,
  • Fig. 8 ein Beispiel eines zu druckenden Textes und seines entsprechenden Dokument-Textpuffers ist,
  • Fig. 9 eine Zeichenaufzeichnungskette ist, die dem Beispiel in Fig. 8 vor der Einstellung entspricht,
  • Fig. 10 die Zeichenaufzeichnungskette des Beispiels der Fig. 9 nach der Einstellung ist, und
  • Fig. 11 die in einer Warteschlange verbundenen Ausgabeinformationsblöcke sind, die der Zeichenkette des Beispiels in Fig. 10 entsprechen.
  • Moderne Wortprozessoren versorgen den Benutzer mit einem sehr leistungsfähigen, doch leicht zu benutzenden Werkzeug. Mit ihm kann ein Benutzer irgendeine Art von getippter Kommunikation oder ein Dokument erzeugen, überarbeiten, speichern und drucken.
  • Fig. 1 stellt einen typischen Hardwareaufbau nach dem Stand der Technik dar, an dem ein Textverarbeitungsprogramm, das die vorliegende Erfindung enthält, ausgeführt werden kann. Das Hardwaresystem der Fig. 1 kann ein Personal Computer, ein Mini-Computer oder ein großer Zentralcomputer sein, ohne daß dies eine Auswirkung auf die vorliegende Erfindung hätte. Das Hardwaresystem der Fig. 1 kann zum Erzeugen und zum Drucken eines Dokuments benutzt werden.
  • Zum Erzeugen eines Dokuments benutzt der Bediener eine Tastatur 103, die gleich jener einer Schreibmaschine ist. Jede Seite des Dokuments wird auf einem TV-ähnlichen Bildschirm oder einem Monitor 101 angezeigt, was dem Bediener erlaubt, zu sehen, was getippt ist, bevor es auf Papier übertragen wird. Wenn der Bediener einen Fehler macht, kann der Bediener zurückgehen und übertippen und muß kein Korrekturband oder einen Radierer zum Korrigieren des Fehlers benutzen. Das Textverarbeitungssystem richtet automatisch den gesamten Text der Dokumente aus. Wenn der Text genau wie gewünscht ist, wird das Textverarbeitungssystem zum Drucken des Dokuments auf einem Drucker 109 benutzt. Vor dem Drucken wird das Dokument als Textverarbeitungsdatei auf einer Platte 107 behalten, wo es gespeichert werden kann und zu einem späteren Zeitpunkt gedruckt werden kann, wenn es gewünscht ist, oder es kann überarbeitet und dann gedruckt werden. Das Textverarbeitungsprogramm selbst läuft in einer CPU 105, die sowohl eine arithmetische Logikeinheit als auch einen Hauptspeicher enthält.
  • Ein typisches Textverarbeitungssystem wird eine Vielzahl von Druckern unterstützen. Das Textverarbeitungssystem des bevorzugten Ausführungsbeispiels wird Zeilendrucker, Matrixdrucker und Briefqualitätsdrucker unterstützen, was dem Bediener erlaubt, verschiedene Schriftarten zum Drucken von Dokumenten in einem Zehner-, einem Zwölfer- oder einem Fünfzehner-Abstand oder einer proportioniert beabstandeten Art zu wählen. Zusätzlich können diese Drucker typischerweise mit verschiedenen Papiergrößen umgehen, entweder Einzelblättern oder kontinuierlichen Arten und Umschlägen.
  • Das typische Textverarbeitungssystem bietet eine Vielzahl von Operationen und Merkmalen zum Erzeugen und Steuern eines Dokumenteintrags und eines Druckens. Das Textverarbeitungssystem des bevorzugten Ausführungsbeispiels führt den Bediener durch die Verwendung von Menüs durch die Textverarbeitungsoperationen. Ein Menü zeigt eine Liste von Auswahlen auf dem Monitor 101 an. Das Textverarbeitungssystem ermöglicht dem Bediener, zu entscheiden, welche Operation gewünscht ist, und läßt den Bediener durch Verwendung der Tastatur 103 auf geeignete Weise antworten. Mit diesen Menüs führt der Bediener ein Dokument von anfänglichen Erzeugungs- und Überarbeitungsstufen zu der gedruckten Kopie am Ende. Bei dem Textverarbeitungssystem des bevorzugten Ausführungsbeispiels nimmt eine Druckroutine, die die vorliegende Erfindung verwendet, das Textverarbeitungsdokument, das auf der Platte 107 gespeichert ist, und setzt es bevor es auf den Drucker 109 ausgegeben wird zusammen.
  • EDITIER- UND DRUCKFUNKTIONEN
  • Das Textverarbeitungssystem des bevorzugten Ausführungsbeispiels kann in zwei Grundfunktionen aufgeteilt werden, nämlich die Editierfunktion und die Druckfunktion. Die Editierfunktion wird durch die Editierroutine durchgeführt, und die Druckfunktion wird durch die Druckroutine durchgeführt. Wenn die Editierroutine gestartet wird, zeigt sie ein Menü an, das dem Bediener ermöglicht, die Erzeugung, das Editieren oder ein Überarbeiten eines Dokuments zu beginnen. Wenn die Druckroutine gestartet wird, zeigt sie ein Menü an, das dem Bediener ermöglicht, verschiedene Druckfunktionen auszuwählen.
  • Bei dem bevorzugten Ausführungsbeispiel ist jede Funktion in einem Menü numeriert. Ein blinkender Cursor ist in dem Auswahlfeld am unteren Ende des Menüs positioniert. Der Cursor zeigt immer den laufenden Ort auf dem Schirm, ob der Bediener gerade in einem Menü auswählt oder nur einen Text tippt. Wenn ein Bediener tippt, zeigt die Cursorposition an, wo das nächste Zeichen auf dem Bildschirm (d. h. dem Monitor 101) angezeigt werden wird. In dem Auswahlfeld an den Menüs tippt der Bediener einfach die Nummer der Funktion, die der Bediener durchführen möchte.
  • Jedesmal, wenn der Bediener ein Textverarbeitungsmenü anzeigt, enthalten die meisten der Antwortfelder, die auf dem Bildschirm erscheinen, nichterscheinende Antworten. Dies spart dem Bediener Zeit, die andererseits benötigt wird, um die Felder aufzufüllen. Jedes Nichterscheinen wird als die gewöhnlichste Benutzerantwort auf jedem Antwortfeld betrachtet. Der Bediener kann die nichterscheinende Antwort akzeptieren oder sie ändern, wenn es nötig ist.
  • EDITIERROUTINE
  • Der Bediener benutzt die Editierroutine, um ein Dokument zu erzeugen oder zu bearbeiten. Ein Dokument ist eine oder mehrere Seiten eines Textes, dem der Bediener einen Namen gegeben hat. Der Bediener muß das Dokument benennen, so daß später, wenn der Bediener es für ein weiteres Editieren oder Drucken wieder aufrufen möchte, das Textverarbeitungssystem weiß, welches Dokument hervorzuholen ist.
  • Für jedes neue an dem System erzeugtes Dokument wird eine Dokumentenzusammenfassung hergestellt. Die Dokumentenzusammenfassung wird benutzt, um weiterhin das neue Dokument zu identifizieren, das der Bediener gerade tippt. Die meisten der Antwortfelder in der Dokumentenzusammenfassung sind mit nichterscheinenden Werten voreingestellt. Diese Antwortfelder enthalten spezifische Vorschriften für das Drucken von Dokumenten. Diese Antwortfelder können zu der Zeit geändert werden, zu der das Dokument erzeugt oder überarbeitet wird, wenn das Drucken des Dokuments begonnen wird.
  • Zustands- und Formatzeilen
  • Bei dem Textverarbeitungssystem des bevorzugten Ausführungsbeispiels gibt es zwei Zeilen, die ganz oben auf dem Bildschirm angezeigt werden, die die Zustands- und Formatzeilen sind. Sie werden immer auf dem Bildschirm angezeigt, wann immer der Bediener ein Dokument tippt oder editiert. Die Zustandszeile zeigt den Namen des Dokuments an, das der Bediener anschaut und berichtet dem Bediener, wo der Cursor in dem Dokument lokalisiert ist, die Seitennummer, die Zeilennummer und die Spaltenposition auf der Zeile.
  • Unter der Zustandszeile ist eine Formatzeile. Diese Zeile zeigt an, wo der Bediener die Tabulatoren gesetzt hat, und zeigt die Zeilenlänge für den Text der Seite an, ähnlich wie es bei einer Schreibmaschine getan wird. Die Formatzeile bestimmt den Ort der Tabulatoren, der Entscheidungstafeln und des rechten Randes (mit der rechten Einstellung, wenn sie benötigt ist), und einen bestimmten Zeilenabstand zum Drucken. Die Formatzeile wird unter der Zustandszeile angezeigt. Das Zeilenabstandszeichen zeigt den Abstand zwischen Zeilen mit einer 1, die einen einzelnen Abstand anzeigt, und mit einer 2, die einen doppelten Abstand anzeigt, etc. Das Tabulatorzeichen zeigt an, wo Tabulatoren bei verschiedenen Spaltenpositionen gesetzt sind. Der rechte Rand kann durch ein Rücklaufzeichen oder den Buchstaben J bezeichnet sein. Der Buchstabe J wird benutzt, um eine rechte Einstellung des Textes unter der Formatzeile während eines Druckens zu bestimmen, ungeachtet, ob eine Einstellung an der Dokumentenzusammenfassung oder dem Druckmenü ausgewählt worden ist.
  • Dokumentendateien
  • Wann immer ein Dokument unter Verwendung des Textverarbeitungssystems des bevorzugten Ausführungsbeispiels erzeugt wird, wird eine Dokumentendatei auf der Platte 107 erzeugt. Diese Dokumentendatei enthält drei Informationsarten. Sie enthält eine Dokumentenzusammenfassungsinformation, die unter anderen Dingen eine Information enthält, die benutzt wird, um das Drucken des Dokuments durch die Druckroutine zu stoppen. Sie enthält den Text des Dokuments selbst, das verschiedene eingebettete Formatinformationen in ihm enthalten kann, die ein Einrücken von Zeilen, ein Hoch- oder Tiefschreiben verschiedener Teile des Textes, das Zentrieren des Textes, etc. anzeigen. Die Dokumentendatei enthält auch Formataufzeichnungen (Zeilen), die das Format anzeigen, das zum Ausrichten des Textes in Seiten benutzen soll.
  • Formatzeilen
  • Wenn der Bediener ein Dokument erzeugt, wird eine voreingestellte, nichterscheinende Formatzeile in die Dokumentendatei kopiert. Diese Anfangs-Formatzeile enthält Einstellungen, die als die gewöhnlichsten Einstellungen für die Einrichtung bestimmt sind. Der Bediener kann jedoch diese Formate ändern, um ihre einzelnen Notwendigkeiten für jedes ihrer Dokumente anzupassen. Der Bediener kann auch neue Formatzeilen erzeugen, wo auch immer er sie in dem Text wünscht, wenn er ein Dokument schreibt oder editiert. Formate können zwischen irgendwelchen zwei Zeilen auf einer Seite oder vor der ersten Zeile einer Seite erzeugt werden. Irgendwelche Formatänderungen wirken nur bei dem bestimmten Dokument, dem sie zugeordnet sind. Ein Ändern einer Formatzeile in dem Text beeinflußt nur den Text, der der Formatzeile folgt, und zwar bis zu der nächsten Formatzeile, der in dem Text begegnet wird.
  • Wie oben gezeigt ist, ermöglicht die Formatzeile das Beabstanden des zu steuernden Dokuments. Bei dem Textverarbeitungssystem des bevorzugten Ausführungsbeispiels kann der Zeilenabstand entweder zu einem Vierer-Abstand, einem halben Abstand, keinem Abstand (Überschreiben), einem einzelnen Abstand, einem 1.5-Abstand, einem doppelten Abstand oder einem dreifachen Abstand spezifiziert sein. Der Zeilenabstand wirkt auch auf das Dokument zu der Zeit, wenn es gedruckt wird. Das Anzeigen auf dem Bildschirm erscheint immer mit einem einzelnen Abstand.
  • Die Tabulatoreinstellungen der Formatzeile können benutzt werden, um auf die horizontale Position des Textes in einer Zeile zu wirken. Die Ausrichtung des rechten Rands in der Formatzeile kann benutzt werden, um die erwünschte Spaltenposition des Zeichens ganz rechts in einer Zeile zu setzen. Die Formatzeile kann auch benutzt werden, um eine rechte Ausrichtung zu bestimmen, die benutzt werden wird, um einen bündigen rechten Rand herzustellen, wenn das Dokument ausgedruckt wird. Während des Ausdruckens wird irgendein Text, der durch eine Formatzeile gesteuert wird, die den Rechts-Ausricht-Zeiger enthält, mit dem eingestellten rechten und dem eingestellten linken Rand gedruckt. Die Formatzeile kann auch benutzt werden, um Spalten von Zahlen oder Namen auszurichten, und zwar durch Verwenden des Entscheidungstafel- Ausricht-Zeichens, das entweder ein Dezimal-Punkt, ein Komma oder ein Doppelpunkt sein kann.
  • Der Bediener kann eine neue Formatzeile irgendwo in dem Text eines Dokuments erzeugen. Wenn der Bediener beispielsweise eine Tabelle schreibt, die spezielle Tabulatoreinstellungen erfordert, und er die Einstellungen der laufenden Formatzeile lieber nicht ändern würde, kann der Bediener ein neues Format für die Tabelle erzeugen, und wenn die Tabelle beendet ist, eine weitere Formatzeile erzeugen, um zu den ursprünglichen Einstellungen zurückzukehren.
  • Zeilenumbruch
  • Das Textverarbeitungssystem des bevorzugten Ausführungsbeispiels hat eine Zeilenumbruchseigenschaft, die dem Bediener ermöglicht, weiter zu tippen, ohne sich um das Ende der laufenden Zeile zu kümmern. Wenn der Bediener das Ende einer Zeile erreicht, bewegt das System automatisch den Cursor und das Wort, das gerade getippt wird (das nicht in die Zeile paßt) zu dem linken Rand der nächstunteren Zeile.
  • Erforderliche Abstände
  • Ein erforderlicher Abstand ist ein spezielles Abstandszeichen, das außerhalb der Grenzen des Zeilenumbruchs liegt. Die Worte oder Zeichen, die an jeder Seite des erforderlichen Abstands positioniert sind, werden durch die Zeilenumbruchseigenschaft nicht an dem rechten Rand aufgeteilt. Durch ein Tippen erforderlicher Abstände kann der Bediener sicherstellen, daß irgendwelche zwei oder mehrere spezifische Worte (oder Zeichen) in dem Text auf der gleichen Zeile bleiben. Beispielsweise kann das Datum 19. November 1985 durch den Zeilenumbruch zwischen "19." und "November" aufgeteilt werden. Wenn der Bediener das Abstandszeichen zwischen den zwei erforderlichen Zeichen macht, dann kann der Zeilenumbruch "19." und "November" niemals auf zwei Zeilen aufteilen. Wenn der Bediener diesen Schutz auf "1985" ausdehnen möchte, tippt er einen weiteren erforderlichen Abstand zwischen "November" und "1985".
  • Wenn die Expansion während einer Rechtsausrichtung auftritt, wird ein erforderlicher Abstand behandelt, als ob er ein normales Nichtabstandszeichen wäre. Wenn die Expansion zwischen Zeichen stattfindet, wird der erforderliche Abstand zusammen mit dem Rest der Zeichen expandiert werden. Wenn die Expansion zwischen Worten stattfindet (d. h. an Abständen), wird der erforderliche Abstand nicht zu jener Zeit expandiert werden.
  • Textformatieren beim Eingeben
  • Beim Tippen eines Textes kann die Tabulatortaste bei der Tastatur 103 wie bei einer Schreibmaschine benutzt werden. Jedesmal, wenn der Bediener die Tabulatortaste drückt, wird ein Tabulatorzeichen in dem Text angeordnet, und es erscheint auf dem Bildschirm zu der Zeit, zu der es getippt wurde. Der Cursor bewegt sich auf der laufenden Formatzeile über die Zeile zu der nächsten Tabulatoreinstellung. Wenn die Tabulatortaste gedrückt wird, wenn es keinen Tabulatorstop gibt, der zwischen der Cursorposition und dem rechten Rand bleibt, wird das Tabulatorzeichen in der ersten Spalte der nächsten Zeile positioniert, und der Cursor bewegt sich zu dem ersten Tabulatorstop auf jener Zeile. Beim Eingeben von Text benutzt der Bediener die Zentriertaste, um einen Text auf einer Zeile zu zentrieren, wie beispielsweise bei Überschriften und Titeln. Das System berechnet die Mitte der Zeile unter Benutzung des Randes, der in der Formatzeile spezifiziert ist. Wenn die Zentriertaste gedrückt wird, wird das Zentrierzeichen in dem Text angeordnet, und es erscheint auf dem Bildschirm. Das Ende des Textes, der zwischen den Rändern zu zentrieren ist, wird durch Benutzen der Rücklauftaste spezifiziert.
  • Beim Tippen von Spalten von Zahlen wird die Entscheidungstafeltaste durch den Bediener benutzt, um das dezimale Tabulatorzeichen einzupegeln, wenn beispielsweise Dezimalpunkte benutzt werden. Dezimalpunkte werden mit den geeigneten Tabulatoreinstellungen in der Formatzeile ausgerichtet. Wenn eine Zahl keinen Dezimalpunkt hat, nimmt das System an, daß der Dezimalpunkt rechts von der Zahl existiert und pegelt die Zahl ein, als ob ein Dezimalpunkt tatsächlich getippt wäre.
  • Beim Eingeben von Text benutzt der Bediener die Hoch-/Tief-Taste, um anzuzeigen, wo ein Hoch- oder Tiefschreiben in dem Text zu drucken ist. Die Hochschreib- und Tiefschreibzeichen werden getippt und erscheinen in dem Text auf dem Bildschirm bei dem Punkt, wo die Operation auftreten soll. Diese werden benutzt, um den Drucker zu instruieren, sich um ein Drittel einer Zeile von der gerade gedruckten laufenden Zeile aus nach oben oder nach unten zu bewegen, und somit erzeugt er ein Hochschreiben oder Tiefschreiben in dem gedruckten Dokument. Jedes Auftreten eines hochgeschriebenen Textes muß von einem Tiefschreibzeichen gefolgt werden und umgekehrt. Dies stellt sicher, daß der übrige Text zu der Hauptdruckzeile zurückkehrt. Ein Text wird nur während des Druckens hoch- oder tiefgeschrieben, und es wird nicht als solches auf dem Bildschirm angezeigt. Ein Tippen aufeinanderfolgender Tiefschreibzeichen auf dem Bildschirm bewegt den Drucker auf dem Papier um ein Drittel einer Zeile nach oben. Jedem getippten Hochschreibzeichen muß im Text die gleiche Anzahl von Tiefschreibzeichen folgen.
  • Vielspaltendrucken
  • Das Textverarbeitungssystem des bevorzugten Ausführungsbeispiels läßt ein Durchführen eines Vielfachspaltendruckens zu. Vielfachspaltendrucken ermöglicht dem Bediener, zwei oder mehrere Spalten von Text Seite für Seite auf einer gedruckten Seite zu drucken. Wenn ein Dokument in einem Vielspaltenformat gedruckt wird, wird jede Seite des Dokuments eine Spalte auf einer gedruckten Seite. Jedes Dokument kann in einem Vielspaltenformat gedruckt werden. Der Vielspalteneffekt wird jedoch durch Anordnen zweier oder mehrerer (theoretischer) Dokumentenseiten auf einer (physikalischen) gedruckten Seite. Wenn beispielsweise ein Bediener Seiten 1 bis 4 eines Dokuments in einem Zweispaltenformat druckt, werden nur zwei Papierblätter tatsächlich gedruckt. Die Seiten 1 und 2 des Dokuments werden auf der ersten Zweispaltenseite gedruckt (Seite 1 ist die linke Spalte und Seite 2 ist die rechte Spalte). Die Seiten 3 und 4 des Dokuments werden auf der zweiten Zweispaltenseite gedruckt (Seite 3 ist die linke Spalte und Seite 4 ist die rechte Spalte).
  • Wenn der rechte Rand in der Formatzeile auf jeder Seite des Dokuments nicht eingestellt ist (enggemacht ist), um zu passen, können die Ergebnisse unvorhersagbar sein. Ein Dokument muß daher entsprechend eingestellt werden, bevor es auf Vielspaltenseiten gedruckt wird. Der Bediener muß die folgenden Regeln beachten, wenn er ein Dokument für ein Vielspaltendrucken vorbereitet:
  • 1. Einstellen der rechten Ränder in der Formatzeile auf die Breite der Spalte. Jede Seite des Dokuments wird nur eine Spalte auf der aktuellen gedruckten Seite.
  • 2. Die Anzahl von Zeilen auf jeder Seite des Dokuments muß nicht die gleiche sein. Während eines Vielspaltendruckens, wenn ein Seitenzeichen in einer Spalte (theoretische Seite) getroffen wird, wird nichts mehr in jener Spalte gedruckt. Andere Spalten drucken weiter. Wenn dem Seitenzeichen in der längsten Spalte begegnet wird, dann wird das Drucken jener Vielspaltenseite beendet, und die nächste Vielspaltenseite beginnt zu drucken.
  • 3. Die Formatzeile, die eine bestimmte Seite in einem Dokument steuert, steuert auch das Format jener entsprechenden Spalte.
  • 4. Das Drucken von Vielspaltenseiten kann mit Einzelspaltenseiten gemischt sein. Dies kann durch Erweitern des rechten Rands in der Formatzeile in der Seite durchgeführt werden, die die Spalte ganz links darstellt, und durch Leerlassen der Seiten, die die anderen Spalten darstellen.
  • 5. Die Breite von Kopf- und Fußzeilenseiten sollte zu der Papierbreite passen.
  • Eine Absatz- und Ausrichteigenschaft ermöglicht dem Bediener spezielle Codes in einem Dokument zu tippen, das vielspaltig zu drucken ist, so daß, wenn das Dokument gedruckt wird, Absätze oder andere Textblöcke auf der Seite horizontal ausgerichtet sind.
  • Kopf- und Fußzeilen
  • Abhängig von dem Typ des Dokuments gibt es oft eine Notwendigkeit, daß eine Standardinformation oben oder unten an jeder gedruckten Seite herzustellen ist. Durch Verwenden von Kopf- und Fußzeilen kann der Bediener automatisch auf jeder Seite ausdrucken, oder auf ausgewählten aufeinanderfolgenden Seiten eines Dokuments, nämlich eine derartige Information wie: Kapitel- oder Abschnittstitel, Zeilen, eigene Anmerkungen und Seitennummern. Das Textverarbeitungssystem des bevorzugten Ausführungsbeispiels läßt eine Kopfzeile und eine Fußzeile pro Dokument zu.
  • Fußnoten
  • Das Textverarbeitungssystem des bevorzugten Ausführungsbeispiels hat eine Eigenschaft, die die Notwendigkeit zum Tippen von Fußnoten an dem unteren Ende der Seiten eliminiert, wenn auf sie Bezug genommen wird. Statt dessen werden sie alle auf einer separaten Referenzseite getippt und die Fußnoten werden beim Drucken automatisch an dem unteren Ende der richtigen Seite gedruckt. Eine Fußnotenreferenz kann aus einem bis drei alphanumerischen Zeichen bestehen, die den mit einer Fußnote zu versehenden Text identifizieren. Wenn das Dokument gedruckt wird, werden die Fußnotenreferenzen und die Identifizierer des Fußnotentextes als Nummern gedruckt.
  • Andere Druckoptionen
  • Zusätzlich zu den Befehlen, die dem Bediener ermöglichen, das Drucken des Dokuments in einem Vielspaltenformat zu steuern, sind spezielle Tastenfolgen verfügbar, die zu benutzen sind, wenn das Dokument eingegeben wird, die als Formatinformation in dem Dokumententext erscheinen, um ein spezielles Drucken von Zeichen während der Druckoperation aufzurufen. Diese speziellen Druckoptionen enthalten einen Fettdruck, der veranlaßt, daß jedes Zeichen zweimal gedruckt wird, um ein dunkles Auftreten zu veranlassen. Ein Offset-Drucken, das ein Schattendrucken veranlaßt, wobei ein Zeichen zweimal in etwas versetzten Positionen gedruckt wird, ein Durchstreichen, das ein Schrägstrichzeichen veranlaßt, über irgendein Zeichen gedruckt zu werden, und ein Unterstreichen, was eine schnelle Art zum Unterstreichen eines existierenden Textes ist, so daß der Bediener es nicht manuell tun muß.
  • DRUCKROUTINE
  • Wenn der Bediener einmal ein Dokument erzeugt hat oder ein existierendes Dokument editiert hat, kann der Bediener aus der Editierroutine aussteigen und in die Druckroutine eintreten, um das Dokument zu drucken.
  • Wenn ein Dokument erzeugt worden ist, so daß eine Textverarbeitungsdatei auf der Platte 107 existiert, kann der Bediener das Drucken des Dokuments auf dem Drucker 109 durch Verwenden der Druckroutine des Textverarbeitungssystems initiieren. Abhängig von der bestimmten Ausrüstung, die bei dem Textverarbeitungsplatz verfügbar ist, kann der Bediener das Dokument entweder auf einem Briefqualitätsdrucker, einem Hochgeschwindigkeitszeilendrucker, oder einem Matrixdrucker ausdrucken.
  • Druckmenü
  • Wenn die Druckoperation initiiert ist, wird ein Druckmenü auf dem Monitor 101 angezeigt, was dem Bediener ermöglicht, die Druckinstruktionen auf die spezifischen Bedürfnisse des zu druckenden Dokuments abzustimmen. Das Druckmenü ermöglicht dem Bediener die folgende Information zu spezifizieren: Zu benutzender Drucker, Anzahl von Kopien von jeder Seite, Seitennummern, wo das Textseitendrucken zu beginnen und zu enden hat, Seitennummer, wo ein Umschlagdrucken zu beginnen und zu enden hat, die Anzahl von Spalten, die linken Spaltenränder, die erste Seitennummer zum Seitennummerndrucken, Papierlänge, Kopfzeilen- und Fußzeilendruckorte, Startnummer aufeinanderfolgender Fußnotendrucke, Abstand (10, 12 oder 15 Zeichen pro Inch), Papiervorschubauswahl, Zeilen-pro-Inch-Auswahl, Rechtsausrichtung, Entwurfskopie- Drucken, in den Text getippte Drucknotizen, Drucken der Dokumentenzusammenfassung und Mischdrucken. Der Name der zu druckenden Dokumentendatei erscheint an der Spitze des Druckmenüs. Die Felder in dem Druckmenü enthalten nichterscheinende Werte, die dem Bediener ermöglichen, das Druckmenü auf dem Bildschirm zu akzeptieren wie es ist, oder die obige Liste von Parametern zu ändern.
  • Druckroutinefluß
  • Der allgemeine Fluß der Druckroutine ist der von Eingabe-Verarbeiten- Ausgabe. Zuerst akzeptiert die Druckroutine den Dokumententext und die Information über den Text von der Textverarbeitungsdatei, die auf der Platte 107 gespeichert ist. Als zweites wandelt die Druckroutine den Text in eine anerkannte oder standardmäßige Form um, so daß er durch die gleiche innere Verarbeitungsroutine verarbeitet werden kann, unabhängig von der Textquelle und der Ausgabezielorte, d. h. dem speziellen Druckertyp, auf dem er zu drucken ist. Schließlich führt die Druckroutine die vollständig verarbeitete anerkannte Form zu einem geeigneten vom Bestimmungsort abhängigen Ausgaberoutineaufbau, um die anerkannte Form in die Form umzuwandeln, die von der speziellen Ausgabevorrichtung (dem Drucker) gefordert wird.
  • Die Hauptroutinen des in Fig. 2 dargestellten Druckprogramms, die den allgemeinen Fluß durch das Druckprogramm steuern, sind wie folgt: Allgemeine Initialisierung, Initialisieren mit einem Druckerprofil, Initialisieren von Zeichen-Zuordnungstabellen, Erzeugen eines Formularvorschubs, eines Dokumentenzusammenfassungsdrucks, einer Kopierschleife, eines Mischdrucks, von Ausgangsroutinen, ein Reinigen und Aussteigen mit einer Zustandsroutine.
  • Während der allgemeinen Initialisierung werden verschiedene Fehler- und Zustandsindikatoren initialisiert, und die Eingabedatei und die Ausgabevorrichtung werden initialisiert. Die Eingabedatei spezifiziert, welches Textverarbeitungsdokument zu drucken ist, und die Ausgabevorrichtung spezifiziert, auf welcher Ausgabevorrichtung das Dokument zu drucken ist. Die Eingabedatei und die Ausgabevorrichtung werden durch eine Interaktion mit dem Bediener durch Verwenden des Druckmenüs bestimmt. Wenn die Ausgabevorrichtung einmal bestimmt ist, können die Zeichen-Zuordnungstabellen (CMT) für den bestimmten zu benutzenden Drucker von einer Zeichen-Zuordnungsdatei geladen werden. Die Zeichen-Zuordnungsdateien enthalten Tabellen für jeden der in diesem System verfügbaren verschiedenen Drucker. Während der Initialisierung wird ein Drucksteuerungsblock (PCB) aufgebaut, der von der Druckroutine benutzt wird, um das Drucken des Dokuments zu steuern. Etwas von der Information in dem Drucksteuerblock, der in Tabelle 1 gezeigt ist, wird von der Dokumentenzusammenfassung erhalten, die in der Textverarbeitungsdatei enthalten ist, die erzeugt ist, wenn das Dokument in das System getippt wurde. Diese Information kann geändert werden, wenn es von dem Bediener gewünscht wird, und zwar durch die Verwendung des Druckmenüs.
  • TABELLE 1 DRUCKSTEUERBLOCK (PCB):
  • Logische Hilfsmittel (LRN) der Ausgabevorrichtung
  • Anzahl von Kopien
  • Anzahl von Lücken
  • Erste zu druckende Seite
  • Letzte zu druckende Seite
  • Letzte Mischseite
  • Erste zu druckende Umschlagseite
  • Letzte zu druckende Umschlagseite
  • Gesamtanzahl von Seiten im Dokument
  • Gesamte Mischseiten
  • Beginnen der Seitennumerierung
  • Anordnung der Lücken am linken Rand
  • Papierlänge
  • Kopfzeilenbeginn auf einer Seite
  • Kopfzeilenbeginn in einer Zeile
  • Fußzeilenbeginn auf einer Seite
  • Fußzeilenbeginn in einer Zeile
  • Beginnen der Fußnotennummer
  • Horizontalbewegungsindex (HMI)
  • Vertikaler Bewegungsindex (VMI)
  • TABELLE 1 - (Fortsetzung) DRUCKSTEUERBLOCK (PCB):
  • Druckertyp
  • Vorschubsequenz
  • Schriftart
  • Proportionales Druck-Flag
  • Rechtsausrichtungs-Flag
  • Entwurfskopie-Flag
  • Drucknotizen-Flag
  • Flag für das Drucken der Dokumentenzusammenfassung
  • Mischdruck-Flag
  • Aufzeichnungen, die ein Formdokument-Flag verarbeiten
  • Aufzeichnungen, die ein Flag über die Existenz eines Listendokuments verarbeiten Abkürzungsdokument-Flag
  • Textverarbeitungs-Flag für ein zeitweises Dokument
  • DRUCKMENÜ
  • Die verschiedenen Parameter in dem Drucksteuerblock können durch den Bediener durch Verwenden des Druckmenüs verändert werden. Die Eingaben in dem Druckmenü des bevorzugten Ausführungsbeispiels ermöglichen dem Bediener folgendes zu spezifizieren:
  • Name der Druckwarteschlange
  • Es gibt einen spezifischen Warteschlangennamen, der zu jedem der Drucker in einem Textverarbeitungssystem gehört. Die nichterscheinende Druckwarteschlange wird während eines Bedienereintrags definiert. Der Name des Druckwarteschlangenfelds spezifiziert die Warteschlange (Ausgabevorrichtung), wo das Dokument zu drucken ist. Der Bediener kann die nichterscheinende Druckwarteschlange durch Überschreiben von ihr mit dem Namen einer anderen gültigen Druckwarteschlange ändern. Das zu druckende Dokument kann in einer Leitung warten, wenn andere Dokumente gerade für die gleiche Ausgabevorrichtung in einer Warteschlange stehen.
  • Anzahl von Kopien
  • Dieses Feld zeigt die Anzahl von Kopien an, die der Bediener für jede Seite des Dokuments drucken möchte, das spezifiziert wurde, gedruckt zu werden. Der Bediener kann für 1 bis 63 Kopien eine Anfrage bilden.
  • Textdrucken erfolgt von einer Seite
  • Dieses dreiziffrige Feld spezifiziert die Seitennummer in dem Dokument, wo ein Drucken zu beginnen und zu enden hat. Wenn der Bediener ein Drucken von der Seite 0 bis zu der Seite 999 spezifizierte, sind alle Seiten zu drucken. Wenn der Bediener beispielsweise das Drucken von Seite 3 bis Seite 3 spezifiziert, wird nur Seite 3 gedruckt.
  • Umschlagdrucken erfolgt von einer Seite
  • Dieses dreiziffrige Feld spezifiziert die Umschlagsseitennummern, wo ein Drucken zu beginnen und zu enden hat, wie in dem Fall eines Textdruckens.
  • Anzahl von Spalten
  • Dieses Feld ermöglicht dem Bediener, die Anzahl von Spalten zu spezifizieren (tatsächlich die Anzahl von Dokumentenseiten), die auf der gleichen Seite zu drucken sind. Bis zu 9 Spalten können spezifiziert werden.
  • Einstellungen des linken Randes
  • Diese Werte bestimmen die Entfernung von der linken Kante des Papiers und den Punkt, wo jede Spalte auf der gedruckten Seite beginnen wird. Bis zu 9 Felder des linken Randes können spezifiziert werden. Dies erlaubt dem Bediener, bis zu 9 Spalten auf einer Seite zu drucken und zu spezifizieren, wo jede der Spalten zu beginnen hat.
  • Erste Seitennummer
  • Dieses Feld wird zur automatischen Seitennumerierung benutzt. Es spezifiziert die Seitennumerierung, mit der das System eine Numerierung der Seiten in der Fußzeile und/oder der Kopfzeile beginnen sollte.
  • Papierlänge (Zahl von Zeilen)
  • Dieser Wert spezifiziert die Größe des Papiers, auf dem das Dokument zu drucken ist. Der Drucker tippt sechs einzelabständige Zeilen pro Inch (66 Zeilen pro 11-Inch-Seite) oder acht Zeilen pro Inch (88 Zeilen pro 11-Inch-Seite).
  • Kopfzeile beginnt auf der Seite/Fußzeile beginnt auf der Seite
  • Diese Felder spezifizieren die erste Seite des Dokuments, wo die Kopfund/oder Fußzeile gedruckt werden sollte, und die Zeile, wo sie auf jeder Seite beginnen sollte.
  • Beginnen der Fußzeilennummer
  • Dieses Feld ermöglicht dem Bediener, eine Start-Fußnotennummer für sequentiell numerierte Fußnoten im Dokument zu spezifizieren.
  • Abstand (Pitch)
  • Eins bezeichnet 10 Zeichen pro Inch, 2 bezeichnet 12 Zeichen pro Inch und 3 bezeichnet 15 Zeichen pro Inch.
  • Papiervorschubsequenz
  • Ein Tippen einer S-Antwort in dieses Feld stoppt den Drucker, nachdem jede Seite gedruckt ist, und erlaubt dem Bediener, ein neues Papierblatt einzufügen. Die S-Antwort wird für Drucker mit manueller Einzelblattzufuhr benutzt. Ein Tippen eines C in dieses Feld informiert den Drucker, daß er weiterhin Seiten auf einer kontinuierlichen Papierform drucken soll, oder von einer Blattschneidezuführvorrichtung. Die folgenden Antworten (L, 1 und 2) in diesem Feld betreffen Zweifach- oder Dreifach-Fachpapierzuführvorrichtungen, die einzelne Papierblätter, eins zu einer Zeit, ohne anzuhalten zuführen, und zwar von einem Fach oder von zwei Fächern. Eine L-Antwort instruiert das System, die erste Seite von einem Fach 1 und die übrigen Blätter von einem Fach 2 zuzuführen. Eine 1-Antwort instruiert das System, von dem hinteren Fach zuzuführen, und eine 2-Antwort instruiert das System, von dem vorderen Fach zuzuführen.
  • Zeilen pro Inch (6 oder 8)
  • Dieses Feld erlaubt dem Bediener, die Anzahl von zu druckenden Zeilen für jedes Inch des Papiers zu spezifizieren.
  • Rechtsausrichtung
  • Wenn der Bediener eine Rechtsausrichtung spezifiziert, werden die Worte in jeder Zeile beabstandet, um ein Dokument mit einem bündigen rechten Rand zu erzeugen, zusätzlich zu einem bündigen linken Rand. Mit der Rechtsausricht-Option, wenn die letzte Zeile einer Seite mit einem Seitenzeichen (kein Rücklauf) abgeschlossen ist, ist jene Zeile für den Rand ausgerichtet (beabstandet). Irgendwelche Zeilen des Textes unter einer Formatzeile, die eine Rechtsausrichtung anzeigt, werden während eines Druckens rechts ausgerichtet, ob in dem Druckmenü die Rechtsausrichtung ausgewählt worden ist oder nicht.
  • Entwurfskopie
  • Dieses Feld ermöglicht dem Bediener, ein Dokument als Entwurfs- oder Schlußkopie drucken zu lassen. Wenn der Bediener eine Entwurfskopie auswählt, wird der Zeilenabstand, der in der Formatzeile des Dokuments angezeigt wird, verdoppelt. Beispielsweise druckt eine Formatzeile, die einen Einzelabstand spezifiziert, als Entwurfskopie doppelabständig aus.
  • Drucken von Bemerkungen
  • Dieses Feld zeigt an, ob der Ausdruck die in das Dokument getippten Notizen enthalten wird oder nicht.
  • Drucken einer Dokumentenzusammenfassung
  • Dieses Feld spezifiziert, ob der Bediener eine Kopie der Dokumentenzusammenfassung zusammen mit dem Dokument gedruckt haben möchte oder nicht.
  • Eingeben eines Mischdokumentennamens
  • Beim Mischdrucken eines formalen Dokuments wird dieses Feld zum Spezifizieren des Namens des zu benutzenden Mischdokuments. Ein Mischdrucken ermöglicht dem Bediener, ein wiederholtes Briefschreiben automatisch durchzuführen. Um dies zu tun, erzeugt der Bediener zwei Dokumente, die zu "vermischen" sind, wenn sie gedruckt werden, und zwar durch einmaliges Tippen eines standardmäßigen Formbriefes. Dieser wird das Formdokument genannt. Dann werden alle Namen, Adressen und andere variable Informationen in ein Dokument getippt, das das Mischdokument genannt wird. Wenn der Aufbau die Fähigkeit zum Drucken von Umschlagseiten hat, kann der Bediener auch Druckadressen auf den Umschlägen mischen. Wenn diese zwei Dokumente vermischt gedruckt sind, wird die variable Information in das Formdokument eingefügt. Das Formdokument druckt wiederholt aus, bis alle variable Information in dem Mischdokument benutzt worden ist.
  • DRUCKROUTINENFLUSS
  • Ein großpegeliges Blockdiagramm-Flußdiagramm der Druckroutine ist in Fig. 2 gezeigt. Die Druckroutine wird in Block 201 eingegeben, nachdem sie durch das Textverarbeitungssystem mit einem Zeiger zu der Textverarbeitungsdatei aufgerufen worden ist, die zu verarbeiten ist. Der Block 201 tritt zu Block 203 aus, der eine allgemeine Initialisierung der Druckroutine durchführt.
  • In dem Block 203 wird eine unterschiedliche Initialisierung durchgeführt, und zwar ein Setzen von Datenstrukturen und Öffnen eines Zugriffs zu der Textverarbeitungsdatei. Diese Initialisierung enthält auch ein Setzen des Programmsteuerblocks (PCB), der in Tabelle 1 gezeigt ist, und zwar mit Parametern von der Dokumentenzusammenfassung und Druckzusammenfassungsaufzeichnungen in der Textverarbeitungsdatei des zu verarbeitenden Dokuments.
  • Dann wird Block 205 eingegeben, um das Druckmenü zu verarbeiten. Durch Interaktion mit dem Druckmenü kann der Bediener verschiedene Parameter spezifizieren oder ändern, die benutzt werden würden, um das Textverarbeitungsdokument auszudrucken. In dem Block 205 wird eine Überprüfung durchgeführt, um zu sehen, ob ein Mischdokument gedruckt worden ist, und wenn es so ist, wird die Mischdatei geöffnet und die Zusammenfassungsaufzeichnungen werden gelesen. Eine ähnliche Überprüfung wird durchgeführt, um zu sehen, ob Umschlagsseiten zu drucken sind, und wenn es so ist, werden relevante Eingaben in dem PCB gesetzt. Zu diesem Zeitpunkt werden auch die verschiedenen Operationen, die zu dem Initialisieren der Ausgabevorrichtung gehören, durchgeführt. Diese Parameterinitialisierungsfunktionen enthalten ein Entscheiden in bezug auf eine Vorschubsequenz, einen Proportionaldruck und eine Typenschriftart, und die Ergebnisse werden in dem Drucksteuerblock für einen späteren Gebrauch aufbewahrt.
  • Der in Tabelle 1 gezeigte Drucksteuerblock wird mit einer Information von der Textverarbeitungsdokumentendatei initialisiert, die zu drucken ist, und die mit Parametern von dem Bediener in das Druckmenü eintritt, und es enthält das meiste der Information, die zum Steuern des Druckens dient, wie beispielsweise die Schriftart, linke Ränder, die Anzahl von Spalten, welche Seiten zu drucken sind, einen Abstand, Zeilen pro Inch, Dokumententyp, etc. Einmal initialisiert bleibt die meiste Information in dem PCB während des Druckens eines Dokuments unverändert.
  • Zwei wichtige Parameter, die in dem PCB gefunden werden, sind der horizontale Bewegungsindex und der vertikale Bewegungsindex. Der horizontale Bewegungsindex (HMI) und der vertikale Bewegungsindex (VMI) werden in dem Block 205 für eine spätere Verwendung beim Umwandeln der Papierlänge, der Kopfzeilenzeile, der Fußzeilenzeile, und des linken Randes in granulare Einheiten berechnet. Eine granulare Einheit ist als die kleinste horizontale oder vertikale Entfernung definiert, um die sich der Ausgabevorrichtungsdruckkopf oder ein anderes Ausgabemedium unter Softwaresteuerung bewegen kann. Der HMI ist als die Anzahl horizontaler granularer Einheiten in der Breite eines Standardzeichens in der bestimmten Ausgabevorrichtung definiert. Der VMI ist als die Anzahl vertikaler granularer Einheiten in der Höhe einer Standardzeile für die bestimmte Ausgabevorrichtung definiert. Sowohl der HMI als auch der VMI sind in dem PCB gespeichert und leicht verfügbar für eine Verwendung durch die Druckroutine.
  • Drucker-Granulareinheiten werden benutzt, weil sie die einzigen Einheiten sind, die allen Druckern gemeinsam sind und somit Unterroutinen in der Druckroutine erlauben, unabhängig von dem bestimmten Drucker zu sein, auf dem das Dokument gedruckt werden wird. Bei dem bevorzugten Ausführungsbeispiel hat der Zeilendrucker eine horizontale Granularität von 1/10 Inch und eine vertikale Granularität von 1/6 Inch. Ein Matrixdrucker hat eine horizontale Granularität von 1/15 Inch, wenn er in dem 15-Pitch-Modus benutzt wird, 1/12 Inch, wenn er in einem 12- Pitch-Modus benutzt wird, 1/10 Inch, wenn er in dem 10-Pitch-Modus benutzt wird, und eine vertikale Granularität von 1/48 Inch. Ein Briefqualitätsdrucker hat eine Granularität von 1/120 Inch, wenn er entweder in einem proportionalen oder einem nichtproportionalen Modus benutzt wird, unabhängig von dem Abstand, und hat eine vertikale Granularität von 1/48 Inch. Drucker mit feiner Granularität erzeugen eine Ausgabe höherer Qualität als Drucker mit grober Granularität. Dies ist der Fall, weil es mehr mögliche Plätze zum Setzen von Zeichen auf das Papier und somit Funktionen (wie beispielsweise eine Rechtsausrichtung, ein Zentrieren und ein Ausgeben zusammengesetzter Zeichen) gibt, und vertikale Positonierfunktionen (beispielsweise Hochschreiben, Tiefschreiben und Ausgeben zusammengesetzter Zeichen), können genauer durchgeführt werden. Ein zusammengesetztes Zeichen ist ein Zeichen, das durch mehrfaches Einsetzen zweier oder mehrerer Zeichen auf demselben Zeichenfeld mit möglicherweise etwas horizontalem oder vertikalem Platz zwischen Zeicheneinsätzen erzeugt wird.
  • Ein Vorrichtungsinformationsblock (DIB) wird auch zu dieser Zeit im Block 205 aufgebaut. Der DIB enthält Information, die spezifisch für den Ausgabedrucker ist. Solche Dinge wie die laufende Position auf der Seite (vertikal und horizontal), eine Liste von Zeilen, die in einer Warteschlange zu der Vorrichtung gewesen ist, aber noch nicht gedruckt ist, die maximale vertikale Position, die auf dem Drucker erreichbar ist (kann sich mit verschiedenen Vorschub-/Papierkonfigurationen ändern), die Anzahl von Seiten, die seit dem letzten Schreiben durchgeführt wurden, die Anzahl von durchgeführten Schreiben, und verschiedene Flags. Ein Anfangsflag zeigt an, ob die Vorrichtung initialisiert worden ist, ein TFED-Flag zeigt an, ob es Papier unter dem Druckkopf gibt, ein RECON-Flag zeigt an, daß die Vorrichtung gerade wieder angeschlossen worden ist, ein YESREC-Flag zeigt an, daß es zugelassen ist, diese Vorrichtung mehr als einmal wieder anzuschließen, ein SHFT-Flag zeigt an, ob der Drucker in dem Ausschiebezustand ist und ein ENDFLI-Flag zeigt an, ob einem Ende einer Datei begegnet worden ist.
  • Block 207 initialisiert die Zeichen-Zuordnungstabellen (CMT). Die Zeichen-Zuordnungstabellen, von denen ein Beispiel in Fig. 6 gezeigt ist, werden von einer Zeichen-Zuordnungsdatei erzeugt und geladen. Es gibt eine Zeichen-Zuordnungsdatei pro Schriftart pro Drucker. Die Zeichen- Zuordnungstabelle wird benutzt, um die codierten Textzeichen von ihrer jeweiligen Darstellung, wie sie in der Dokumentendatei gespeichert sind, in Zeichencodes zu übersetzen, die erforderlich sind zum Aktivieren der entsprechenden Zeichengrafik auf der bestimmten Ausgabevorrichtung, die zu benutzen ist, um das Dokument zu drucken. Der Name der Schriftart wie auch der Druckertyp wird von dem Drucksteuerblock erhalten. Die Zeichen-Zuordnungsdateien werden durch ein Benutzerprogramm erzeugt, das Zeichen-Zuordnungsdokumente in einem einfach zu benutzenden Textverarbeitungsdokumentenformat liest und sie in Tabellen übersetzt, auf die das Druckprogramm direkter zugreifen kann. Es braucht Hunderte von Ablesungen von Aufzeichnungen für das Benutzerprogramm, um die Zeichen-Zuordnungsdokumente zu verarbeiten, aber nur einige Lesungen von der Zeichen-Zuordnungsdatei, um die Zeichen- Zuordnungstabellen zu laden. Somit wird durch ein Durchführen dieser Funktion extern von der Druckroutine die Majorität der Verarbeitung einmal pro Schriftart durchgeführt, anstatt einmal pro gedrucktem Dokument.
  • Die Zeichen-Zuordnungstabellen, wie sie in Fig. 6 gezeigt sind, bestehen aus zwei Gruppen von Tabellen. Die erste Tabellengruppe ordnet den internen Dokumentenzeichencode dem Druckerausgabezeichencode, dem vertikalen Versatz und dem horizontalen Versatz zu, in dem das Zeichen zu drucken ist. Die zweite Tabellengruppe ordnet den Ausgabe-Zeichencode einer Hammer-Intensität und einer Ausgabe-Zeichenbreite zu. Die Zeichen-Zuordnungstabellen sehen vor, daß ein einziges Zeichen in einem Dokument, das durch die Editierroutine eingegeben ist, in dem Drucken vieler Zeichen in dem gedruckten Dokument durch Verwendung zusammengesetzter Zeichen resultieren kann, wobei es ein Zeichen gibt, das für jeden Pegel der Zusammensetzung in dem Zeichen gedruckt wird. Wie es unten in größerem Detail gesehen werden wird, kann ein Zeichen, daß in dem Dokument als ein Buchstabe A mit einem Akzent darüber codiert ist, durch zuerst ein Drucken des Zeichens A und darauffolgendes Drucken des Akzents darüber ausgedruckt werden, wobei der Akzent vertikal versetzt ist, in Abhängigkeit davon, ob er über einem großen A oder einem kleinen a gedruckt wird.
  • Wie in Fig. 6 zu sehen ist, gibt es drei Tabellen für jeden Pegel zusammengesetzter Zeichen, der in der Schriftart definiert ist. Die Zeichen-Zuordnungstabelle des Dokumentzeichens zu der Druckausgabe (Tabellen 603, 609 und 615) übersetzt den Zeichencode, der benutzt wird, um das durch den Bediener eingegebene Zeichen zu spezifizieren, in den Zeichencode, der durch den bestimmten Drucker erkannt wird, um die erwünschte Graphik zu erzeugen. Die zweite Tabelle für jeden Pegel zusammengesetzter Zeichen (Tabelle 605, 611, 617) ist die optionale Zeichen-Vertikal-Versatz-Zuordnungstabelle, die, wenn sie vorhanden ist, den vertikalen Versatz anzeigt, den der Druckkopf vor einem Drucken der gewünschten Graphik nach oben oder nach unten zu bewegen ist. Die dritte Tabelle für jeden Pegel zusammengesetzter Zeichen (Tabellen 607, 613 und 619) ist die optionale Zeichen-Horizontal-Versatz-Zuornungstabelle, die, wenn sie vorhanden ist, den horizontalen Versatz anzeigt, um den der Druckkopf vor einem Drucken der gewünschten Graphik nach links oder nach rechts zu bewegen ist.
  • Fig. 6 zeigt einen Zeichen-Zuordnungstabellen-Zeigerblock 601, der drei Pegel einer Zusammensetzung spezifiziert. Pegel 1 hat eine Ausgabe- Zeichencodetabelle 603, eine Vertikal-Versatz-Tabelle 605 und eine Horizontal-Versatz-Tabelle 607. Pegel 2 hat eine Ausgabe-Zeichencodetabelle 601, eine Vertikal-Versatz-Tabelle 611 und eine Horizontal-Versatz- Tabelle 613. Pegel N hat eine Ausgabezeichentabelle 615, eine Vertikal- Versatz-Tabelle 617 und eine Horizontal-Versatz-Tabelle 619. Die in Fig. 6 dargestellte beispielhafte Zeichen-Zuordnungstabelle hat die Fähigkeit Tastaturcodes von 0 bis 254 einem Ausgabezeichen mit einem Zeichencode 255 zuzuordnen, der dafür reserviert ist, anzuzeigen, daß der Tastaturcode keinem Zeichen zuzuordnen ist. Beispielsweise wird dieser 255-Code beim Eintrag 254 in die Tabelle 603 benutzt, um anzuzeigen, daß der Tastaturcode 254 kein Zeichen drucken wird. Dieser 255-Code wird auch in zusammengesetzten Pegeln 2 bis N benutzt, um anzuzeigen, daß keine zusammengesetzten Zeichen bei jenem Pegel existieren. Beispielsweise hat der Tastaturcode 44, der ein ASCII-Komma ist, keine Zusammensetzung im Pegel 2 (Tabelle 609) oder dem Pegel N (Tabelle 615), währenddessen der Code 4 eine Zusammensetzung im Pegel 2 (Tabelle 609) hat, aber keine Zusammensetzung im Pegel N (Tabelle 615) hat, und währenddessen der Tastaturcode 5 einen Eintrag bei sowohl dem Pegel 2 (Tabelle 609) als auch dem Pegel N (Tabelle 617) hat.
  • Wenn die bestimmte Ausgabevorrichtung, die zum Drucken des Dokuments benutzt wird, einen regulären Zeichensatz und einen Umschaltungszeichensatz hat, kann ein Bit in der Ausgabezeichencodetabelle benutzt werden, um anzuzeigen, ob es ein reguläres Zeichen oder ein Umschaltungszeichen ist. Wenn die bestimmte Ausgabevorrichtung, die zum Drucken des Dokuments benutzt wird, nicht die Fähigkeit hat, einen vertikalen Versatz durchzuführen, kann die Vertikal-Versatz-Tabelle nicht vorhanden sein. Ahnlich dazu kann, wenn die bestimmte Ausgabevorrichtung nicht die Fähigkeit hat, einen horizontalen Versatz durchzuführen, die Horizontal-Versatz-Tabelle nicht vorhanden sein.
  • Der CMT-Zeigerblock zeigt zusätzlich zum Zeigen auf die Zeichen-zu- Zeichen-Zuordnungstabellen, die die Ausgabecodes und die vertikalen und horizontalen Versätze spezifiziert, auch auf die Ausgabezeichencodetabellen, die eine Tabelle enthalten, die die Hammer-Intensität spezifiziert, bei der das Ausgabezeichen zu treffen ist, und die Breite des Ausgabezeichens.
  • Die Verarbeitung zum Übersetzen des Zeichencodes von dem in dem Textverarbeitungsdokument gespeicherten Code in den Code, der durch den Drucker benutzt wird, besteht zuerst aus einem Benutzen des Dokument-(Tastatur-)-Zeichencodes als einen Index in die Ausgabe-Zeichencodetabelle, die Ausgabezeichen-Vertikal-Versatz-Tabelle und die Ausgabezeichen-Horizontal-Versatz-Tabelle, um den Ausgabezeichencode, den vertikalen Versatz und den horizontalen Versatz für einen zusammengesetzten Pegel hervorzuholen. Der Ausgabezeichencode kann dann benutzt werden, um in die Ausgabezeichen-Hammer-Intensitäts-Tabelle (Tabelle 621) zu induzieren, um die Intensität zu erhalten, bei der das Ausgabezeichen zu treffen ist, und wird auch als der Index in die Ausgabezeichen-Breiten-Tabelle (Tabelle 623) benutzt, um die Breite des Ausgabezeichens hervorzuholen. Dieses Verfahren wird für jeden zusammengesetzten Pegel wiederholt, der für den Dokumentencode existiert.
  • Wenn beispielsweise der Dokumentencode 5, der benutzt wird, um einen Großbuchstaben C mit einem Akzent darüber und einem Komma darunter darzustellen, wird dies in einem Ausgabecode von 67 von Tabelle 603, einem vertikalen Versatz von 0 von Tabelle 605 und einem horizontalen Versatz von 0 von Tabelle 607 für einen zusammengesetzten Pegel 1 resultieren, der, wenn der Ausgabezeichencode als ein Index in die Hammer-Intensitäts-Tabelle benutzt wird, in einer Hammer-Intensität von 3 und einer Zeichenbreite von 10 granularen Einheiten von Tabelle 623 resultiert, und ein zusammengesetzter Pegel 2 wird in einem Ausgabezeichencode 96 (ein Akzent von Tabelle 609, ein vertikaler Versatz von 2 von Tabelle 611 und ein horizontaler Versatz von 0 von Tabelle 613) in einer Hammer-Intensität von 1 und einer Zeichenbreite von 6 resultieren. Ein zusammengesetzter Pegel N wird in einem Ausgabezeichencode 44 (ein Komma) mit einem vertikalen Versatz von -1 und einem horizontalen Versatz von 1, einer Hammer-Intensität von 0 und einer Zeichenbreite von 2 resultieren.
  • Der Dokumentencode wird übersetzt und die von jedem zusammengesetzten Pegel hervorgeholte Information wird in einer Zeichenaufzeichnung (CR) gespeichert, die eine doppeltverbundene Liste von Zeichen wird. Die in der Zeichenaufzeichnung enthaltene Information ist in Tabelle 2 spezifiziert.
  • TABELLE 2 SPALTENINFORMATIONSBLOCK (CIB):
  • Zeiger zum nächsten CIB
  • Spaltennummer
  • Logische Seitennummer
  • Seitenaufzeichnungstaste
  • Zeiger zur laufenden Textaufzeichnung
  • Versatz in laufender Textaufzeichnung
  • Zeiger zu laufender Formataufzeichnung
  • (Zeilenbreite, Tabulatorstops, welcher laufende Zeilenabstand besteht)
  • Zeiger zum Beginn der Zeichenliste
  • Zeiger zur letzten Umbruch-Punkt-Zeichenaufzeichnung
  • Zeichen zum Ende der Zeichenliste
  • Laufende vertikale Position
  • Laufende horizontale Position
  • Unterstreich-Flag
  • Fettdruck-Flag
  • Schattendruck-Flag
  • Überschreib-Flag
  • Ende des logischen Zeilen-Flags
  • Absatzausricht-Warte-Flag
  • Ende des logischen Seiten-Flags
  • Eine Zeichenaufzeichnung in einer Zeichenkette enthält einen Zeiger zu der nächsten Zeichenaufzeichnung in der Kette, außer für die letzte Zeichenaufzeichnung in der Kette, die nach vorn zu NIL zeigt. Eine Zeichenaufzeichnung enthält auch einen Zeiger zu der vorherigen Zeichenaufzeichnung in der Kette, außer für die erste Zeichenaufzeichnung in der Kette, die zu NIL zeigt. Eine Zeichenaufzeichnung enthält die vertikale Position des Zeichens, relativ zu der Hauptzeile, der laufenden horizontalen Position des Zeichens, relativ zu dem linken Rand, irgendeinen vertikalen Versatz, der von den Zeichen-Zuordnungstabellen erhalten wurde, und irgendeinen horizontalen Versatz, der von den Zeichen- Zuordnungstabellen erhalten wurde.
  • Das Ausgabezeichen selbst wird in der Zeichenaufzeichnung zusammen mit dem Zeichensatz gespeichert (z. B. ein reguläres Zeichen oder ein Umschaltungszeichen). Eine Zeichenaufzeichnung enthält ein Flag, das anzeigt, daß es Umbruchpunkte hat. Wenn dieses Flag wahr ist (gesetzt oder EIN), dann kann die Zeile bei diesem Zeichen unterbrochen werden, und jenes Zeichen und alle Zeichen nach ihm können zu dem neuen Beginn der nächsten Zeile umgebrochen werden.
  • Wenn in dem Dokument einem Stopzeichen genau vor diesem Zeichen begegnet wurde, dann würde das Stop-Flag wahr sein und die Routinen werden den Drucker darauf richten, vor dem Drucken dieses Zeichens zu stoppen.
  • Die Zeichenaufzeichnung enthält das Ausricht-Flag, das, wenn es wahr gesetzt ist, bedeutet, daß dieses Zeichen für eine Rechtsausrichtung expandiert werden kann. Wenn das Zeichen selbst ein Abstand ist und das erforderliche Flag EIN ist, dann bedeutet dies, daß das Zeichen zu behandeln ist, als ob es ein normales Nichtabstandszeichen wäre, und zwar für Zwecke einer Rechtsausrichtung und eines Zeilenumbruchs, eher als daß es als ein Abstand zu behandeln ist.
  • Wenn ein Zeichen ein zusammengesetztes Flag hat, dann ist es eine nichtprimäre Komponente eines zusammengesetzten Zeichens. Wenn das Unterstreich-, das Fettdruck-, das Schattendruck- oder Überschreib-Flag EIN ist, dann sind diese Attribute diesem laufenden Zeichen anzulegen. Wenn das laufende Unterstreichen zu einem nächsten Zeichenflag EIN ist, dann sollte zusätzlich irgendein Abstand in der Zeile zwischen diesem Zeichen und dem nächsten Zeichen unterstrichen werden.
  • Block 209 wird eingegeben, um das Drucken einer ersten Kopie des Textverarbeitungsdokuments zu starten. Nach einem Initialisieren von Variablen, die das Drucken der Kopien von dem PCB steuern, beginnt die Kopierschleife.
  • Block 211 druckt eine Dokumentenzusammenfassung, wenn es durch den Bediener gefragt wird. Die Dokumentenzusammenfassungsseiten werden einmal pro Kopie gedruckt. Die Information, die in der Dokumentenzusammenfassung zu drucken ist, wird von den Zusammenfassungsaufzeichnungen gelesen, die in dem Textverarbeitungsdokument gespeichert sind.
  • Block 213 initialisiert ein Mischdrucken. Diese Initialisierung besteht aus einem Initialisieren von Datenstrukturen, die zum Implementieren von einer Aufzeichnungsverarbeitung während eines Mischdruckens benötigt werden.
  • Block 215 führt eine Initialisierung durch, die notwendig ist zum Drucken von Fußnoten, wobei diese Initialisierung nur während des Druckens der ersten Kopie des Dokuments erfolgt.
  • Block 217 startet die Mischdruckschleife. Im Block 217 werden eine Information von den Spalteninformationsblöcken, die zum Mischdrucken notwendig sind, wie beispielsweise die Aufzeichnungstaste und der Index für das Mischdokument, in den Datenstrukturen gespeichert, die RIBs genannt werden. Zu Beginn jeder Form wird die Information von der RIB in den Spalteninformationsblock (CIB) eingegeben, der unten beschrieben ist. Zu Beginn jeder Seite wird die CIB-Information in dem RIB aufbewahrt. Wenn einem Abbruch begegnet wird, werden die CIBs dann wieder von den RIBs gespeichert, um zu dem rechten Platz in dem Mischdokument zurückzugelangen.
  • Block 219 ist der Start der physikalischen Seitenschleife. Dieser Block führt die Initialisierung durch, die erforderlich ist zum Steuern des Druckens einer physikalischen Seite auf dem Drucker.
  • In Block 221 wird der Formblattvorschub durchgeführt. Formblattvorschübe werden zu dem Drucker gesendet und, wenn es zwei von drei Vorschubbehältern an dem Drucker gibt, wird die geeignete Befehlssequenz vor dem Formblattvorschub gesendet, um den richtigen Behälter auszuwählen. Die Initialisierung des Druckers wird vor dem ersten Formblattvorschub durchgeführt, oder vor dem Formblattvorschub, der einem Abbruch folgt. Einige Drucker erfordern, daß ein linker Rand, ein Abstand und Zeilen pro Inch und auswählbare Schriftarten auch zu diesem Zeitpunkt initialisiert werden.
  • Block 223 baut die Kopfzeile auf und druckt sie in der Seite, und zwar durch Anwendung der Spaltenaufbauroutine, die in Fig. 3 gezeigt ist und unten beschrieben ist.
  • Block 225 initialisiert die Fußnotennummer vor einem Starten des Druckens irgendwelcher Spalten des Textes in der Seite.
  • Block 227 baut die Textspalten auf und druckt sie unter Verwendung der Spaltenaufbauroutine der Fig. 3.
  • Block 229 druckt irgendwelche Fußnoten, die sich während des Druckens der Textseite angehäuft haben.
  • Block 231 baut die Seitenfußzeile auf und druckt sie unter Verwendung der Spaltenaufbauroutine der Fig. 3.
  • Block 233 behandelt irgendwelche Abbrüche in der Seite, die durch eine Unterbrechung der Druckoperation durch den Bediener oder einen Vorrichtungsfehler verursacht sind, wie beispielsweise eine Anzeige eines Fehlens von Papier oder eines verbrauchten Farbbandes.
  • Block 235 prüft dann, um zu sehen, ob alle Textseiten gedruckt worden sind, und wenn nicht, kehrt er zu Block 221 zurück, um die nächste Textseite zu drucken. Wenn alle Textseiten gedruckt worden sind, wird Block 237 eingegeben, um Umschlagseiten aufzubauen und zu drucken.
  • Block 239 wird dann eingegeben, um zu bestimmen, ob das gesamte Mischdrucken durchgeführt ist, und wenn nicht, kehrt er zu Block 219 zurück, um das nächste Mischdokument zu drucken. Wenn das gesamte Mischdrucken beendet worden ist, wird Block 241 eingegeben, um zu sehen, ob alle Kopien gedruckt worden sind, und wenn mehr Kopien erforderlich sind, kehrt er zu Block 211 zurück, um das Drucken der nächsten Kopie des Dokuments zu starten. Wenn alle Kopien gedruckt worden sind, wird Block 243 eingegeben und ein Aufräumen der Druckroutine wird durch Ausgeben zu Block 245 durchgeführt, der die Druckroutine beendet.
  • SPALTENROUTINE
  • Fig. 3 stellt die Spaltenaufbau- und -druckroutine des bevorzugten Ausführungsbeispiels dar. Die Spaltenroutine baut eine logische Zeile dadurch auf, daß sie den Zeichenhervorholer aufruft, ein Zeichen von der Texteingabequelle zu bekommen, und ruft dann einen Zeichenprozessor auf, entweder das druckbare Zeichen zu speichern oder eine geeignete Handlung vorzunehmen, wenn es ein Steuerzeichen ist. Wenn ein Vielspaltendokument gedruckt wird, muß der Spaltenaufbauer mehrere Male aufgerufen werden, um viele logische Zeilen zu erzeugen, so daß die gesamte gedruckte Zeile über der Seite beendet werden kann, bevor sie physikalisch zu dem Drucker ausgegeben wird.
  • Die Routine wird in Block 301 eingegeben. Dann wird Block 303 eingegeben, um die Spalteninformationsblöcke (GIB) für jenen Teil der physikalischen Seite zu initialisieren, die gerade gedruckt wird. Die CIB ist ein Datenaufbau, der den gesamten relevanten zu einer logischen Seite gehörigen Zusammenhang enthält, wie beispielsweise eine Textseite, eine Umschlagseite, Kopfzeilen- oder Fußzeilenseiten, etc. Die Inhalte des Spalteninformationsblocks sind in Tabelle 3 gezeigt.
  • TABELLE 3 ZEICHENAUFZEICHNUNG (CR):
  • Zeiger zur nächsten Zeichenaufzeichnung
  • Zeiger zur vorherigen Zeichenaufzeichnung
  • Vertikale Position
  • Horizontale Position
  • Vertikaler Versatz
  • Horizontaler Versatz
  • Zeichenausgabecode
  • TABELLE 3 (Fortsetzung) ZEICHENAUFZEICHNUNG (CR):
  • Zeichensatz (z. B. regulär oder umschalten)
  • Umbruchpunkt-Flag
  • Stop-Flag
  • Ausricht-Flag
  • Erforderliches Flag
  • Zusammengesetztes Flag
  • Unterstreich-Flag
  • Flag zum kontinuierlichen Unterstreichen bis zum nächsten Zeichen
  • Fettdruck-Flag
  • Schattendruck-Flag
  • Überschreib-Flag
  • Für den Vielspaltendruck werden viele CIBs in einem Ring verbunden, der durchquert werden kann, um einen Zugriff auf den Zusammenhang jeder logischen Seite (Spalte) zu erlangen, die den Textteil der laufenden physikalischen Seite umfaßt. Somit kann der Spaltenaufbauer aufgerufen werden, um eine Zeile in einer Spalte aufzubauen, wieder aufgerufen werden, um eine Zeile in einer anderen Spalte aufzubauen, und kann immer fortfahren, wo er in einer gegebenen Spalte ausgelassen ist. Für eine Kopfzeile, eine Fußzeile und Einzelspaltentextseiten gibt es nur einen GIB und er zeigt auf sich selbst. Fig. 7 stellt vier verbundene CIBs dar, wie sie während des Druckens eines Vierspaltenteils einer physikalischen Seite erscheinen würden.
  • In Block 305 wird eine Überprüfung durchgeführt, um zu bestimmen, ob alle Spalten an dem Ende der Seite sind, und wenn es so ist, wird eine Rückkehr in Block 329 durchgeführt. Wenn alle Spalten nicht an dem Ende der Seite sind, dann wird Block 307 eingegeben und eine Bestimmung wird durchgeführt, welche Spalte aufgebaut werden muß. Wenn einmal bestimmt ist, welche Spalte aufgebaut werden muß, wird Block 309 eingegeben, um einen Aufbau einer Spalte zu beginnen. In Block 309 wird das nächste Zeichen von dem Dokumenteneingabepuffer hervorgeholt.
  • Block 309 holt ein Zeichen von dem Text der Dokumentendatei durch Verwenden von Zeigern zu der Dokumentendatei hervor, das in dem Spalteninformationsblock gespeichert ist. Der GIB enthält Zeiger zu den Eingabepuffern, die den laufenden Text enthalten, und die Aufzeichnungen, die von dem Eingabedokument gelesen sind. Er hat auch einen Zeiger zu dem Eingabepuffer, der die laufende Textaufzeichnung von dem Mischdokument enthält, und zwar bei einem Mischdrucken. Er hat die laufenden Indizes zu irgendwelchen Textaufzeichnungspuffern, die benutzt werden, und alle zugehörigen Aufzeichnungstasten und Seitennummern. Er überprüft den Aufzeichnungspufferzeiger auf NIL. Er überprüft das Indizieren in die Aufzeichnung, um zu sehen, ob jedes Zeichen von jener Aufzeichnung schon hervorgeholt worden ist, und ob eine neue Aufzeichnung gelesen werden muß. Er bringt die Zeiger zu dem laufenden Zeichen in dem Puffer auf den neuesten Stand, und wenn es notwendig ist, beschäftigt er sich mit Übergängen zwischen Aufzeichnungen.
  • Eingegebene Textzeichen werden normalerweise von den Textpuffern von einer Textseite hervorgeholt, die vorwärts von ihrem Beginn zum Ende durchquert ist. Es gibt auch andere Fälle, wenn ein Zeichenhervorholen speziell behandelt werden muß, wie beispielsweise wenn ein Text von einer Fußnotenreferenzseite oder einem Dummy-Puffer kommt, der die Textfolge einer Seite oder eine Fußnotennummer oder Dokumentenzusammenfassungsbotschaften enthält. In allen Fällen wird ein Puffer, der dem für den normalen Fall identisch ist, für diese Verwendung erzeugt und wird geeignet für die Textlänge, etc. gesetzt. Dies minimiert die Anzahl von Überprüfungen, die auf einer Zeichen-für-Zeichen-Basis erfolgen, und ein Ausnahmecode wird nur ausgeführt, wenn die laufende Aufzeichnung ausgeschöpft ist und eine neue gebraucht wird.
  • Nachdem das Zeichen hervorgeholt ist, wird Block 311 eingegeben, um die Art zu bestimmen, in der das hervorgeholte Zeichen verarbeitet werden muß. Wenn das Zeichen, das aus dem Text der Dokumentendatei hervorgeholt ist, ein druckbares Zeichen ist, wird Block 313 eingegeben. Wenn das Zeichen, das aus der Dokumentendatei hervorgeholt ist, kein druckbares Zeichen ist, wird Block 327 eingegeben, um irgendeine spezielle Handlung durchzuführen, die erforderlich ist. Block 327 beschäftigt sich mit speziellen Zeichen, die horizontale Positionierungsfunktionen, wie beispielsweise Tabulator, dezimale Tabulatoren, Zentrieren oder Einrücken anzeigen, und vertikale Positionierungsfunktionen, wie beispiels Hoch- oder Tiefschreiben, und auch, Merk-, Verstecksequenz- und Spaltenausrichtfunktionen.
  • Eine horizontale Positionierungsfunktion wird als ein Tabulator, ein Dezimaltabulator, ein Zentrieren oder Einrücken definiert. Die Folge von Ereignissen zum Behandeln von horizontalen Positionierungsfunktionen ist allgemein wie folgt. Ein Flag wird in dem CIB gesetzt, um anzuzeigen, daß einer Horizontalpositionierungsfunktion begegnet worden ist und eine Verarbeitung andauert. Dann, wenn das nächste Zeichen, das aus der Dokumentendatei hervorgeholt ist, eine weitere Horizontalpositionierunsfunktion ist, wird die vorherige Horizontalpositionierungsfunktion geeignet beendet, und das neue Horizontalpositionierungsfunktions-Flag in dem CIB wird gesetzt. Wenn das nächste Zeichen ein druckbares Zeichen ist, wird das Horizontalpositionierungsfunktions-Flag in dem CIB rückgesetzt und der CIB-Zeiger wird auf jene Zeichenaufzeichnung (CR) des Zeichens gerichtet. Wenn die Horizontalpositionierungsfunktion eine Einstellung der horizontalen Position erforderte, wie beispielsweise ein Tabulator, dann wird dies auch durchgeführt. Wenn die Horizontalpositionierungsfunktion der letzte Umbruchpunkt in der Zeile war, erfolgt schließlich ein Zeilenumbruch unter Verwendung jenes Zeigers als der Platz, die Zeile abzubrechen. Horizontalpositionsfunktionen, die aufgrund des Fehlens gültiger Tabulatorstops fehlerhaft sind, zentrieren Zeichen nach dem Text oder eine anders zentrierte Spaltenkopfzeile, die fehlerhaft ist, kann veranlassen, daß eine Zeile abgeschlossen und in eine Warteschlange gestellt wird, oder daß sie wie bei einem Wagenrücklauf abgeschlossen wird.
  • Wenn einer Vertikalpositionsfunktion, wie beispielsweise einem Hochschreib- oder Tiefschreibzeichen, begegnet wird, wird die laufende vertikale Position in dem CIB geeignet eingestellt. Wenn einem Zeichen, das eine Absatzausrichtung anzeigt, begegnet wird, wird das Warte-Flag in dem CIB gesetzt, um anzuzeigen, daß die Verarbeitung dieser Spalte warten sollte, bis das Warte-Flag in jedem der CIBs eingeschaltet worden ist, die zu den anderen Spalten gehören, oder bis einem Seitenumbruchzeichen in jeder der anderen Spalte begegnet worden ist. Nach einem Abarbeiten der speziellen Zeichen tritt Block 327 zu Block 317 aus.
  • Block 313 wird eingegeben, wann immer einem druckbaren Zeichen in der Dokumentendatei begegnet wird. Block 313 übersetzt das druckbare eingegebene Textzeichen von der Dokumentendatei in den Ausgabezeichencode, der zu der Ausgabevorrichtung gehört, die das Zeichen drucken muß, und erzeugt eine Zeichenaufzeichnung bei dem Ende der laufenden Zeile und speichert die laufende Zeicheninformation in der Zeichenaufzeichnung. Diese Übersetzung der druckbaren Zeichen enthält das Abarbeiten zusammengesetzter Zeichen und mögliche vertikale und horizontale Positionierungsversätze. Wenn die Zeichen-Zuordnungstabellen beispielsweise mehrere Pegel von Zusammensetzungen enthalten, dann werden jene vielen Zeichenaufzeichnungen (CR) erzeugt und jede Zeichenaufzeichnung nach der ersten Zeichenaufzeichnung hat das Zusammensetzungs-Flag gesetzt.
  • Eine laufende Eigenschafteninformation von dem Spalteninformationsblock (CIB) wird in jeder CR gespeichert, und auch die laufende relative vertikale Position (von Hoch-/Tiefschreibungen), die eingestellt werden können, wenn es einen vertikalen Positionsversatz von der Zeichen-Zuordnungstabelle gibt. Die laufende horizontale Position von dem CIB wird in der ersten Teilzeichenaufzeichnung der Zusammensetzungen gespeichert (d. h. es wird angenommen, daß es das breiteste Zeichen ist), und die horizontale Position in dem GIB wird durch Addieren jener Zeichenbreite zu ihr auf den neuesten Stand gebracht. Allen zusammengesetzten Pegeln nach diesem ersten Pegel werden horizontale Positionen gegeben, die sie über das erste (breiteste) Zeichen zentrieren. Dieses Zentrieren wird durch Addieren der Hälfte der Differenz zwischen der Breite der laufenden zusammengesetzten Komponente und der Breite des ersten Zeichens zu der horizontalen Position des ersten Zeichens durchgeführt. Um die Ausgabecodes einfach zu verarbeiten, muß die CMT so erzeugt werden, daß das breiteste Ausgangszeichen eines zusammengesetzten Zeichens in der Zusammensetzungspegel-1-Tabelle (Tabelle 603 in Fig. 6) gespeichert wird. Der Ausgabezeichencode jeder zusammengesetzten Komponente wird auch in der CMT gefunden und in der CR gespeichert. Andere laufende CIB-Information, wie beispielsweise, ob ein Tabulieren oder ein Dezimaltabulieren auftritt, eine Rechtsausrichtung, ein Stoppen, ein Zentrieren, etc. wird auch in der Zeichenaufzeichnung gespeichert oder in dem CIB durch Ausschalten eines Flags und Setzen eines Zeigers zu der laufenden Zeichenaufzeichnung auf den neuesten Stand gebracht.
  • Block 315 führt die aktuelle Kettenbildung der Zeichenaufzeichnung in die Zeichenaufzeichnungskette durch, auf die durch den CIB gezeigt wird. Zeichenaufzeichnungen werden als eine doppelt verbundene Listenstruktur verkettet, wie es in Fig. 7 gezeigt ist. Jede Zeichenaufzeichnung enthält ein druckbares Zeichen und spezifische Information über jenes Zeichen und auch Zeiger zu der nächsten und der vorherigen Zeichenaufzeichnung. Die Zeichenaufzeichnungen sind die anerkannte Form eines Ausgangszeichens und seiner zugehörigen Information. Die Inhalte der Zeichenaufzeichnung, die verschiedene Zeiger und Flags enthält, ist in Tabelle 2 gezeigt.
  • Fig. 7 stellt drei Zeichenaufzeichnungsketten dar, die zu ihren jeweiligen Spalten in einer Seite gehören, die vier Spalten enthält. Eine Kette 1 von dem CIB 701 enthält Zeichenaufzeichnungen 711 bis 727, eine Kette 2 von dem CIB 703 enthält CRs 731 bis 737, und eine Kette 3 von dem CIB 707 enthält CRs 771 bis 783. Der CIB 705 hat eine Nullkette.
  • Nach einem Verarbeiten des Zeichens wird der Block 317 eingegeben, um zu bestimmen, ob ein Zeilenende aufgetreten ist. Wenn ein Zeilenende nicht aufgetreten ist, tritt Block 317 zu Block 309 aus, um das nächste Zeichen hervorzuholen.
  • Block 317 prüft, ob die Zeilenaufbauschleife abgeschlossen werden sollte. Der Zeilenaufbau wird auf eine von mehreren Bedingungen hin abgeschlossen. Ein Wagenrücklauf, ein Seitenzeichen, eine eingebettete Formatzeile, oder ein anderer harter Abschluß veranlassen einen Austritt aus der Schleife und das sofortige Stellen in eine Warteschlange der Zeile und das sofortige Rücksetzen der Zeilenzeiger in dem CIB. Eine Zeilenlänge, die eine Bedingung überschreitet, veranlaßt auch einen Austritt aus der Schleife. Das letzte Zeichen, das gerade in der Zeile ist, wird dann das "angreifende Zeichen" genannt, weil es ein Zeichen ist, das über den rechten Rand hinausgegangen ist. Wenn eine Zeile abgeschlossen worden ist, wird Block 319 eingegeben.
  • In Block 319 wird eine Suche nach einem Umbruchpunkt durchführt, der ein Punkt ist, bei dem die Zeichen an dem Ende der Zeile zu dem Beginn der nächsten Zeile nach unten umgebrochen werden können. Wenn er kein gültiges Umbruchzeichen findet, das durch das Umbruch- Flag in den Zeichenaufzeichnungen angezeigt wird, wird das angreifende Zeichen der Umbruchpunkt. Die Umbruchpunkte in Fig. 7 treten bei Zeichenaufzeichnungen 725, 737 und 781 in Fig. 7 auf, wie durch den Umbruchzeiger in dem CIB gezeigt. Nachdem ein Umbruchpunkt bestimmt worden ist, wird die Zeichenkette bei dem Umbruchpunkt durch Entkoppeln der Verbindungsliste bei dem Umbruchpunkt unterbrochen. Abstandszeichen werden dann von dem Ende der beendeten Zeile entfernt, um mögliche Unterstreichungen davon abzuhalten, von dem Ende der Zeile abgehängt zu werden, und um eine Rechtsausrichtung zu ermöglichen. Die beendete Zeile wird dann in dem Zeileninformationsblock (LIB) in eine Warteschlange gestellt, der in Tabelle 4 gezeigt ist. Der Rest der Zeile nach dem Umbruchpunkt wird dann zu dem Beginn der nächsten Zeile in dem CIB rückgesetzt. Die horizontale Position und die vertikale Position werden in dem CIB rückgesetzt, und das nächste Mal, wenn die Lückenroutine für diese Spalte eingegeben wird, wird die logische Seite an dem Ende der Liste aufgebaut.
  • Wenn der Zeileninformationsblock (LIB) erzeugt ist, wird das Einstellungsseiten-Flag von dem CIB in ihm gespeichert. Dann wird das Einstellungsseiten-Flag in dem CIB umgeschaltet (d. h. wenn es WAHR war, wird es FALSCH, und umgekehrt). Die Länge der Zeile, wie sie durch den rechten Rand gegeben ist, und die Endbreite des Textes in der Zeile werden auch in dem LIB gespeichert.
  • TABELLE 4 ZEILENINFORMATIONSBLOCK (LIB):
  • Zeiger zum nächsten LIB
  • Zeiger zum vorherigen LIB
  • Zeiger zum Beginn der Zeichenliste
  • Zeiger zum Ende der Zeichenliste
  • Einstellungsseiten-Flag
  • Textlänge
  • Zeilenlänge
  • Ende des Seiten-Flags
  • Warten-auf-Absatzausrichtungs-Flag
  • Laufendes Zeilenabstandszeichen
  • Wenn eine logische Zeile in einer Spalte einmal beendet worden ist, wird Block 321 eingegeben, um eine Einstellung des Textes in der Zeile durchzuführen, wenn es durch die Formatzeile oder ein Einstellungszeichen in der Zeile erfordert wird. Die Verarbeitung, durch die der Text in einer Zeile durch die Einstellungsroutine eingestellt wird, wird in größeren Einzelheiten unten unter Bezugnahme auf die Fig. 4 erklärt werden.
  • Nachdem die Zeile eingestellt worden ist, wird Block 323 eingegeben. Block 323 nimmt die Liste der Zeichenaufzeichnungen, die zu der logischen Zeile gehören, die gerade abgeschlossen worden ist, und fügt sie auf Ausgabeinformationsblöcke in einer Warteschlange (QOIB) von dem CIB ein, der Hochstellungen und Tiefstellungen auf von den regulären Text separaten QOIBs anordnet. Tabelle 5 stellt die Inhalte des QOIB dar. Dies resultiert darin, daß jede horizontale Zeile, die an einer verschiedenen vertikalen Position angeordnet ist, auf ihrem eigenen QOIB ist. Dieses Befehlen durch eine vertikale Position wird so durchgeführt, daß Zeilen zu dem Drucker in der richtigen Ordnung ausgegeben werden können, und um darin zu resultieren, daß der Text in der richtigen vertikalen Position auf der Seite gedruckt wird.
  • TABELLE 5 AUSGABEINFORMATIONSBLOCK IN EINER WARTESCHLANGE (QOIB):
  • Zeiger zum nächste QOIB
  • Zeiger zum Beginn der Zeichenliste
  • Zeiger zum Ende der Zeichenliste
  • Relativer Hoch/Tiefpegel
  • Absolute vertikale Position
  • Stopzeichen in dieser Zeile
  • Wenn ein Vielspaltendrucken erfolgt, führt Block 323 auch eine Übergangsoperation durch, die die QOIBs nimmt, die bei der gleichen vertikalen Position sind, und zwar von jedem CIB, und sie miteinander verbindet. Dies erfolgt so, daß verschiedene Spalten zu dem Drucker bei den richtigen vertikalen Positionen ausgegeben werden können, und zwar durch Nehmen logischer Zeilen in der gleichen vertikalen Position von jeder Spalte und Kombinieren von ihnen in eine physikalische Zeile, die zu dem Drucker auszugeben ist. Somit werden über eine Seite alle Zeichen der gleichen vertikalen Position als eine kontinuierliche Zeile ausgegeben werden, wobei Vielfachzeilen ausgegeben werden, um den Fall zu behandeln, daß der Text an verschiedenen vertikalen Positionen angeordnet ist. Eine beispielhafte Artenliste von QOIBs ist in Fig. 10 gezeigt, die eine einzige Spaltenzeile zeigt, die durch Nehmen des Eingabepuffers des Textes in Fig. 8 und Übersetzen von ihr durch Verwendung der Zeichen-Zuordnungstabelle der Fig. 6 erzeugt ist, um die Zeichenaufzeichnungskette von 9 zu erzeugen.
  • Block 325 bestimmt, ob eine physikalische Druckzeile fertig ist, zu dem Drucker ausgegeben zu werden, und wenn nicht, kehrt er zu Block 307 zurück, um eine Zeile für die nächste Spalte aufzubauen. Wenn die Druckzeile fertig ist, zu dem Drucker ausgegeben zu werden, tritt Block 325 zu Block 327 aus.
  • Wenn die Spaltenroutine sicher ist, daß eine Zeile fertig ist, gedruckt zu werden, nimmt sie die Zeile aus dem Ausgabeinformationsblock in der Warteschlange und sendet sie zu der geeigneten Ausgaberoutine, die von dem bestimmten Drucker abhängt, mit dem das Dokument zu drucken ist. Im Block 327 wird der richtige Vorrichtungstreiber als eine Funktion der Ausgabevorrichtung aufgerufen, die in dem Drucksteuerblock spezifiziert ist. Der Vorrichtungstreiber nimmt dann die physikalische Druckzeile, die zu ihm geführt worden ist, und führt irgendeine zusätzliche erforderte Verarbeitung durch, die in Abhängigkeit von dem bestimmten Ausgabedrucker notwendig werden kann, der benutzt wird, und sendet dann die manipulierte Druckzeile zu dem Drucker.
  • In Block 327, der eingegeben wird, nachdem jede physikalische Zeile völlig aufgebaut und an dem QOIB gespeichert ist, wird der QOIB zu einer geeigneten Ausgaberoutine geführt, wo die verbundene Liste der Zeichenaufzeichnungen von dem QOIB entfernt wird. Die Zeichenaufzeichnungsliste wird dann durchlaufen und ein Ausgabepuffer wird aufgebaut, der die Zeichen von den Zeichenlisten und druckerspezifische Formatierungsinformation, wie beispielsweise Umschaltsequenzen oder Druckersteuerungen enthält, die benutzt werden, um Eigenschaftsfunktionen, wie beispielsweise Unterstreichen, Fettdrucken, Schattendrucken, Durchstreichen, horizontale Positionierung, etc. durchzuführen.
  • Die tatsächliche Horizontalpositionierung, die durch verschiedene druckerspezifische Ausgaberoutinen erreicht wird, ändert sich von Drucker zu Drucker. Beispielsweise wird bei einem Zeilendrucker ein Beabstanden zwischen Abständen in einer Zeile durch Einfügen von Abstandszeichen in einem Puffer erreicht, wohingegen bei einem Briefqualitätsdrucker ein Beabstanden durch Einfügen einer Umschaltsequenz erreicht werden kann, die einem absoluten horizontalen Tabulator in einer Zeile entspricht, bevor die Zeile zu dem Druckerausgabetreiber geführt wird.
  • Es sollte angemerkt werden, daß alle Zeichenblöcke, die verbunden sind, von einem QOIB alle die gleiche vertikale Position haben, und daß die QOIBs von der höchsten vertikalen Position zu der niedrigsten vertikalen Position verarbeitet werden, so daß jede Zeile zu dem Drucker ausgegeben werden kann, beginnend mit der höchsten vertikalen Zeile und fortschreitend zu der niedrigsten vertikalen Zeile, so daß das Papier nach oben weitergeschaltet werden kann, wenn das Dokument gedruckt wird.
  • Nachdem die Zeile ausgegeben ist, tritt Block 327 zu Block 305 aus, um die nächste Zeile in jeder der Spalten aufzubauen.
  • EINSTELLROUTINE
  • Die Einstellroutine wird in Block 401 eingegeben. Fig. 4 ist ein Blockdiagramm der Einstellroutine des bevorzugten Ausführungsbeispiels. Die Einstellroutine wird an dem Ende der Spaltenaufbauroutine aufgerufen, wenn es erforderlich ist, um eine Rechtsausrichtung durchzuführen. Sie benutzt die Information in dem Zeileninformationsblock (LIB) wie auch den Horizontalbewegungsindex (HMI) von dem Drucksteuerblock. Der LIB enthält die Zeiger zu Beginn und Ende der Zeile, die Ziel-Zeilenlänge, um die Zeile einzustellen, und die laufende Länge des Textes in der Zeile.
  • In Block 403 werden Zeiger initialisiert, um zu dem Beginn und dem Ende der Kette von Zeichenaufzeichnungen zu zeigen, die zu der Zeile gehören, die einzustellen ist. Block 405 wird dann eingegeben, um den Betrag der Expansion zu berechnen, die erforderlich ist und die die Differenz zwischen dem rechten Rand und der Textgröße ist.
  • Block 407 wird dann eingegeben und die Zeile wird rückwärts abgetastet, die Anzahl expandierbarer Abstände, expandierbarer Zeichen und zusammengesetzter Zeichenkomponenten zählend. Diese Rückwärtsabtastung dauert an, bis dem Beginn der Zeile begegnet wird, oder bis einer Zeichenaufzeichnung mit einem nichteinstellbaren Zeichen-Flag begegnet wird. Beispielsweise wird das nichteinstellbare Zeichen-Flag in einer Zeichenaufzeichnung gesetzt werden, wenn das Zeichen das erste Zeichen ist, das nach einem Tabulator eingegeben ist.
  • Wenn die Abtastung während der Rückwärtsabtastung der Zeile, die im Block 407 durchgeführt wird, an einem zusammengesetzten Zeichen gestoppt wird, wird die Vorwärtsabtastung durchgeführt, um den Zeiger nach vorn zu der letzten Zeichenaufzeichnung in der Zusammensetzung zu bewegen. Dies wird durchgeführt, weil die Zusammensetzung zusammen expandiert werden muß.
  • Wenn der Beginn der Kette durch die Rückwärtsabtastung des Blocks 407 gefunden ist, entkoppelt die Routine zeitweise die Verbindungsliste der Zeichenreferenzen dort und benutzt den Zeiger zu jenem Zeichen, als ob es der tatsächliche Beginn der Zeile wäre. Diese Struktur wird semiverbundene Liste genannt und sie wird zum Durchqueren eines Teils einer Liste benutzt, als ob sie eine ganze verbundene Liste wäre.
  • Block 409 wird dann eingegeben und die Zeichenzahl wird dann durch die zusammengesetzte Zahl eingestellt, um die Anzahl expandierbarer Zeichen in der Zeile zu erhalten. Die Anzahl zusammengesetzter Komponenten von Zeichen muß von der Gesamtanzahl expandierbarer Zeichen subtrahiert werden, weil die Zusammensetzungen expandiert werden müssen, als ob sie ein Zeichen wären, weil sie nur einen Zeichenraum benötigen, wenn sie gedruckt werden.
  • In Block 411 wird ein Zeiger zu dem Ende des ersten expandierbaren Zeichens initialisiert, um zusammengesetzte Komponenten zu überspringen. Das Abbrechen der Liste bei dem ersten expandierbaren Zeichen wird in Block 413 durchgeführt, und ein Zeiger wird vor dem Abbruch zu der Zeichenaufzeichnung bewahrt. Dieses Abbrechen der Zeichenaufzeichnungskette wird durch eine Zeichenaufzeichnung verursacht, die ihr Einstell-Flag rückgesetzt hat, was anzeigt, daß dieses Zeichen bei einem Tabulatorpunkt erscheint, so daß Zeichen, die in der Zeile früher als das Tabulatorzeichen auftreten, nicht während der Rechtsausrichtverarbeitung bewegt werden können.
  • Block 415 prüft, um zu bestimmen, ob die Anzahl expandierbarer Zeichen gleich Null ist. Wenn die Anzahl expandierbarer Zeichen nicht gleich Null ist, dann wird Block 417 eingegeben, und eine Prüfung wird durchgeführt, um zu bestimmen, ob die Anzahl expandierbarer Abstände gleich Null ist. Wenn die Anzahl expandierbarer Abstände nicht gleich Null ist, dann wird Block 419 eingegeben.
  • In Block 419 wird eine Berechnung durchgeführt, um den Teil der Expansion zu bestimmen, die zwischen Zeichen in Worten zu verteilen ist, so daß der Abstand zwischen Worten nicht zu groß wird, wenn eine Zeile eingestellt wird. Die Ausricht- bzw. Einstellroutine versucht, einen gewissen Teil der Expansion zwischen Zeichen in Worten anzuordnen und den Rest der Expansion zwischen den Worten. Der Betrag, der zwischen Zeichen in Worten zu verteilen ist, und der Betrag, der in den Abständen zwischen Worten zu verteilen ist, wird unter Verwendung eines Abstand-Zeichen-Verhältnisses (SCRATIO) bestimmt. Bei dem bevorzugten Ausführungsbeispiel wird ein 1-zu-8-Verhältnis benutzt, was bedeutet, daß für jede Einheit einer Expansion, die zwischen Zeichen eingefügt ist, 8 Einheiten einer Expansion für jedes Abstandszeichen zwischen Worten eingefügt werden wird. Daher wird im Block 419 der Gesamtbetrag der Expansion durch die Anzahl von Zeichen plus dem SCRATIO-fachen der Anzahl der Abstände, die zwischen Worten auftreten, geteilt. Es sollte angemerkt werden, daß, weil jedes Abstandszeichen einzeln expandiert wird, wenn ein Bediener zwei Abstände zwischen gleiche Worte tippt und einen Abstand zwischen andere Worte, die Expansion zwischen Worten, die durch zwei Abstände getrennt sind, zweimal so groß wie die Expansion zwischen Worten sein wird, die durch einen Abstand getrennt sind.
  • Block 421 wird dann eingegeben, um die Zwischenzeichenexpansionsgrenze zu berechnen. Die Zwischenzeichenexpansionsgrenze (ILE- CHECK) ist der maximale Betrag der Expansion, die zugelassen ist, um zwischen Zeichen eingefügt zu werden, so daß Zeichen in Worten nicht bis zu einem exzessiven Betrag geöffnet sind. Die Zwischenzeichenexpansionsgrenze wird berechnet durch Nehmen des Horizontal-Bewegungs-Index-fachen eines konstanten Verhältnisses NILEFAIL geteilt durch DILEFAIL. Bei dem bevorzugten Ausführungsbeispiel ist NILEFAIL 3 und DILEFAIL ist 2, so daß der maximale Betrag der Expansion, der zwischen Zeichen bei dem bevorzugten Ausführungsbeispiel zugelassen werden wird, drei halbe einer standardmäßigen Zeichenbreite ist.
  • Block 423 wird dann eingegeben, um zu prüfen, ob der Zwischenzeichenexpansionswert die Zwischenzeichenexpansionsgrenze überschreitet. Wenn der Expansionswert die Grenze nicht überschreitet, dann tritt Block 423 zu Block 427 aus und der berechnete Expansionswert wird benutzt, um zwischen Zeichen in einem Wort zu expandieren.
  • Wenn der Zwischenzeichenexpansionswert größer als die Zwischenzeichenexpansionsgrenze ist, dann wird Block 425 eingegeben und der Expansionswert wird gleich der Zwischenzeichenexpansionsgrenze gesetzt.
  • Dann wird Block 427 eingegeben, um den Zwischenzeichenexpansionsrest auf 0 zu setzen, so daß irgendeine Restexpansion zwischen Worten auftreten wird.
  • Dann wird Block 429 eingegeben, um die Gesamtexpansion (EXPTOT) zwischen Zeichen zu berechnen, die der Expansionswert zwischen jedem Zeichen ist, multipliziert mit der Anzahl expandierbarer Zeichen. Dann wird Block 431 eingegeben, um die Zwischenzeichenexpansion in der Zeichenkette durch Aufteilen von etwas von der Expansion zwischen Zeichen in Worten zu verteilen. Diese Verteilung wird durch die Aufteilroutine der Fig. 5 durchgeführt.
  • Dann wird Block 433 eingegeben, um die Restexpansion zu berechnen, die in den Abständen zwischen Worten zu verteilen ist. Der Rest wird berechnet durch Nehmen des Gesamtbetrags der erforderlichen Expansion und durch Subtrahieren des Betrags der Expansion von ihm, die schon zwischen den Zeichen aufgetreten ist.
  • Dann wird Block 435 eingegeben, um den Betrag der Expansion zu berechnen, der in jedem Zwischenwortabstand zwischen Paaren von Worten aufzuteilen ist. Diese Berechnung wird durchgeführt durch Nehmen des Restbetrags, der zu expandieren ist, und durch Teilen von ihm durch die Anzahl von Zeichen.
  • Dann wird Block 437 eingegeben, um den Rest der Expansion zu berechnen, die nicht glatt in die Abstände zwischen Worten aufgeteilt werden kann. Dies wird durchgeführt durch Nehmen des Restes, der auftritt, wenn eine ganzzahlige Teilungsoperation des Gesamtbetrags der Expansion durchgeführt wird, die durch die Anzahl von Abständen geteilt ist, die zwischen Worten auftreten. Dies wird durchgeführt durch Benutzen einer Modulo-Funktion (MOD).
  • Dann wird Block 439 eingegeben, um die Gesamtexpansion zu setzen, die bleibt, um zwischen Worten verteilt zu werden, was der in Block 433 berechnete Expansionswert ist.
  • Dann wird Block 441 eingegeben, um die Expansion in Zwischenwortabständen in der Zeichenkette unter Verwendung der Aufteilroutine der Fig. 5 aufzuteilen.
  • Nachdem die gesamte Expansion zwischen Zeichen und zwischen Worten erfolgt ist, wird dann Block 443 eingegeben, um die Zeichenaufzeichnungskette wieder zu verbinden, die bei einem Tabulator oder einem zusammengesetzten Zeichen unterbrochen ist, so daß jener Teil der Zeile, der eingestellt worden ist, wieder mit irgendeinem Teil der Zeile verbunden ist, der nicht eingestellt werden kann, und die vollständig eingestellte Zeile wird dann dem Aufrufprogramm in Block 445 zurückgebracht.
  • Wie es unten bei der Erörterung der Aufteilroutine gesehen werden wird, wird, wenn ein Abstand zwischen Worten in einer Zeile aufgeteilt ist, irgendein Rest, der von der Teilung des Gesamtbetrags der Expansion erhalten wird, die zwischen Worten durchzuführen ist, geteilt durch die Anzahl von Abständen, die es zwischen Worten gibt, einheitlich zwischen Worten aufgeteilt, bis er ausgeschöpft ist. In jedem Zeileninformationsblock (LIB) gibt es ein Seiten-Flag, das umgeschaltet wird, nachdem jede Zeile in eine Warteschlange gestellt ist, so daß es sich von Zeile zu Zeile ändert. Dieses Seiten-Flag bestimmt, ob der Rest, wenn es einen gibt, zu verteilen ist, und zwar beginnend bei dem linken oder rechten Ende der Zeile. Durch ein Ändern dieser Verteilung wird die Möglichkeit von Leerraumflüssen oder weiten Löchern eines Abstandes, die die Seite nach unten laufen, reduziert. Dies ist viel wichtiger für Drucker mit grober Granularität, wie beispielsweise Zeilendrucker, als für Briefqualitätsdrucker, bei denen jede Einheit des Rests nur 1/120 Inch entsprechen kann.
  • Es wird nun zu Block 415 zurückgekehrt, wo eine Überprüfung durchgeführt wird, um zu bestimmen, ob die Anzahl expandierbarer Zeichen in der Zeile, die eingestellt wird, gleich 0 ist. Wenn die Antwort ja ist, tritt Block 415 zu Block 447 aus.
  • Wenn Block 447 eingegeben ist, zeigt er an, daß die Zeile, die eingestellt wird, nicht irgendwelche fortlaufenden Zeichen enthält, zwischen denen eine Expansion in den Abständen stattfinden kann, und daß die gesamte Expansion zwischen Worten stattfinden muß. In Block 447 wird eine Überprüfung durchgeführt, um zu bestimmen, ob die Anzahl expandierbarer Abstände gleich 0 ist, und wenn es so ist, tritt Block 447 zu Block 443 aus, der aufräumt, bevor er die Einstellroutine verläßt. Wenn Block 447 zu Block 443 austritt, zeigt es an, daß die Zeile nicht irgendwelche expandierbaren Zeichen oder expandierbare Abstände zwischen Worten enthält, und daher kann keine Expansion der Zeile stattfinden und die Zeile kann nicht eingestellt werden. Wenn Block 447 bestimmt, daß es expandierbare Abstände zwischen der Zeile gibt, dann tritt er zu Block 449 aus.
  • Block 449 berechnet den Teil der Expansion, die in den Abstandszeichen zwischen Worten zu verteilen ist, und zwar durch Nehmen des Betrags der Expansion, die erforderlich ist, und Teilen von ihr durch die Anzahl expandierbarer Abstandszeichen, unter denen sie zu verteilen ist.
  • Dann wird Block 451 eingegeben, um den Expansionsrest zu berechnen, was der Betrag der erforderlichen Expansion ist, die nicht gleichmäßig unter allen Abständen verteilt werden kann. Der Rest wird berechnet durch Nehmen des Gesamtbetrags der erforderlichen Expansion und durch Durchführen einer ganzzahligen Division durch die Anzahl expandierbarer Abstände. Dies wird durchgeführt durch Benutzen einer Modulo-(MOD)-Funktion.
  • In Block 453 wird die Aufteilroutine aufgerufen, um die Expansion in die Zwischenwortabstände in der Zeichenkette aufzuteilen. Nachdem die Expansion aufgeteilt ist, geht Block 453 zu Block 443, wo die Einstellung der Zeile beendet wird.
  • Man kehrt nun zu Block 417 zurück, wo eine Überprüfung durchgeführt ist, um zu bestimmen, ob die Anzahl expandierbarer Abstände gleich 0 war, und wenn es so ist, tritt Block 417 zu Block 455 aus. Wenn diese Verzweigung genommen wird, zeigt es an, daß es expandierbare Zeichen in der Zeile gibt, die eingestellt wird, aber es keine expandierbaren Abstände zwischen den Worten in der Zeile gibt, die eingestellt wird. Somit muß die gesamte Expansion der Zeile, wenn es überhaupt eine gibt, zwischen den Zeichen in Worten auftreten und keine Expansion kann in Abständen zwischen Worten stattfinden.
  • In Block 455 wird der Betrag, der zwischen jedem Zeichen zu expandieren ist, berechnet durch Nehmen des Gesamtbetrags der erforderlichen Expansion und Teilen von ihm durch die Anzahl expandierbarer Zeichen in der Zeile.
  • In Block 457 wird der Betrag der Expansion, die nicht gleichmäßig zwischen Zeichen aufgeteilt werden kann, berechnet durch Bestimmen des Restes, wenn die Expansion insgesamt durch die Anzahl von Zeichen geteilt wird. Dies wird durchgeführt durch ein Modulo-Bilden der Gesamtexpansion, der Anzahl expandierbarer Zeichen unter Verwendung der MOD-Funktion.
  • Dann wird Block 459 eingegeben, um die Zwischenzeichenexpansionsgrenze zu berechnen, wie es oben hinsichtlich des Blocks 421 erklärt wurde. Diese Zwischenzeichenexpansionsgrenze wird berechnet, um nicht zuzulassen, daß die Expansion zwischen Zeichen in einem Wort zu groß wird.
  • In Block 461 wird eine Überprüfung durchgeführt, um zu bestimmen, ob der Rest mehr oder weniger unmerklich zwischen den Zeichen in der Zeile aufgeteilt werden kann. Dies wird durchgeführt durch Vergleichen einer Konstanten REMFAIL mit HMI, was die Breite des Standardzeichens ist. Die Breite eines Standardzeichens (HMI) wird bezogen auf die Anzahl granularer Einheiten der bestimmten Ausgabevorrichtung definiert, die benutzt werden wird, um die Zeile zu drucken, wie es oben erörtert ist.
  • Wenn beispielsweise ein Briefqualitätsdrucker in einem 12-Pitch-Modus benutzt wird und zu minimalen Bewegungen von 1/120 Inch fähig ist, ist die Standardzeichenbreite die Breite eines Abstands und wird einen HMI von 10 haben, was bedeutet, daß die Druckervorrichtung zehn ihrer minimalen Bewegungen machen könnte, um die Entfernung eines Standardzeichens zu durchlaufen. Bei dem bevorzugten Ausführungsbeispiel ist die Konstante REMFAIL als 6 definiert, so daß, wenn ein Drucker mit einer HMI von 10 benutzt wird, da 6 nicht größer als 10 ist, Block 461 nicht austreten wird und zu Block 465 gehen wird, ohne den Rest gleich 0 zu setzen. In diesem Fall kann der Rest zwischen Zeichen aufgeteilt werden, weil es bestimmt worden ist, daß eine Expansion zwischen Zeichen, die nur um 1/6 (somit der Wert von 6 für die Konstante REMFAIL) einer Zeichenbreite zwischen einigen Zeichen größer ist, von einem Leser des gedruckten Dokuments nicht bemerkt werden wird.
  • In dem Fall eines Zeilendruckers, der eine HMI von 1 hat, was bedeutet, daß die minimale Entfernung, die sich der Druckkopf bewegen kann, eine volle Standardzeichenbreite ist, wird die Überprüfung in Block 461 den Ja-Austritt nehmen, weil 6 größer als 1 ist, und Block 463 wird eingegeben werden. In diesem Fall kann der Rest nicht zwischen die Zeichen aufgeteilt werden, weil es sicherlich bemerkt wird, daß eine Expansion vergrößert um eine volle Zeilenbreite zwischen einigen Zeichen (bis der Rest ausgeschöpft ist) im Vergleich mit der Expansion zwischen den Zeichen, denen keine Einheit des Restes hinzugefügt wird. In Block 463 wird der Rest gleich 0 gesetzt, so daß er nicht zwischen Zeichen aufgeteilt werden wird.
  • Somit stellt der Vergleich, der in Block 461 durchgeführt ist, und das Einstellen des Restes in Block 463 sicher, daß, wenn die gesamte Expansion zwischen Zeichen stattfinden muß und keine davon zwischen Worten, dem Rest nur erlaubt wird, zwischen Zeichen aufgeteilt zu werden, wenn eine maximal um 1/6 einer Zeichenbreite vergrößerte Expansion zwischen Zeichen auftreten wird, in denen ein Teil des Rests verteilt wird, verglichen mit dem Auftreten von Expansion zwischen den anderen Zeichen, nachdem eine Aufteilung des gesamten Restes ausgeschöpft worden ist.
  • Dann wird Block 465 eingegeben, um zu bestimmen, ob der Betrag der Expansion, die zwischen Zeichen stattzufinden hat, größer als oder gleich der Zwischenzeichenexpansionsgrenze ist, die in Block 459 berechnet ist. Wenn Block 465 bestimmt, daß die Zwischenzeichenexpansion die Grenze nicht überschreitet, dann tritt er zu Block 469 aus. Wenn der Zwischenzeichenexpansionswert die Grenze überschreitet, tritt Block 465 zu Block 467 aus.
  • In Block 467 wird der Expansionswert zwischen Zeichen zu einer Zwischenzeichenexpansionsgrenze gesetzt und der Rest wird gleich 0 gesetzt, so daß keine Aufteilung des Restes zwischen Zeichen stattfindet, weil jene Expansionen, die eine zusätzliche Einheit des Restes enthalten, die Zwischenzeichenexpansionsgrenze überschreiten würden.
  • In Block 469 wird eine Berechnung der Gesamtexpansion durchgeführt, die auftreten wird, die die Expansion zwischen jedem Zeichen mal der Anzahl expandierbarer Zeichen plus des Rests ist.
  • Dann wird Block 471 eingegeben und ein Anruf zu der Aufteilroutine wird durchgeführt, um die Expansion zwischen den Zeichen in den Worten aufzuteilen. Nachdem die Expansion zwischen den Zeichen aufgeteilt worden ist, wird die Einstellung der Zeile beendet, und Block 471 geht zu Block 443 vor einem Zurückkehren zum Aufrufer der Einstellungsroutine.
  • AUFTEIL-ABSTANDS-ROUTINE
  • Die Expansionsaufteilroutine ist in Fig. 5 dargestellt. Die Aufteil-Abstands-Routine wird durch die Einstellroutine aufgerufen, um die Expansion zwischen Zeichen in Worten oder in dem Abstand zwischen Worten aufzuteilen, wenn eine Zeile expandiert wird, um den rechten Rand einzustellen. Die Aufteilroutine wird in Block 501 eingegeben. In Block 503 wird eine Überprüfung durchgeführt, um zu bestimmen, ob eine Expansionsaufteilung von links nach rechts (von dem Beginn der Zeichenaufzeichnungskette) oder von rechts nach links (von dem Ende der Zeichenaufzeichnungskette) durchzuführen ist. Diese Überprüfung wird durchgeführt durch Untersuchen des Seiten-Flags in dem Zeileninformationsblock (LIB), um zu bestimmen, ob irgendein Rest an dem Beginn oder dem Ende der Zeile aufzuteilen ist. Das Umschalten des Seiten- Flags, wenn jede Zeile erzeugt ist, hilft die Möglichkeit von Leerraumflüssen des Bildens eines weißen Abstands bei entweder dem Beginn oder dem Ende einer Zeile zu reduzieren, und zwar durch Alternieren, wo der Expansionsrest, der nicht einheitlich aufgeteilt werden kann, verteilt ist.
  • Wenn eine Aufteilung von links nach rechts durchzuführen ist, wird Block 505 eingegeben, und der Zeiger zu dem ersten zu expandierenden Zeichen wird gesetzt, um zu dem Beginn der Kette der Zeichenaufzeichnungen zu zeigen. Wenn eine Expansion von rechts nach links durchzuführen ist, dann wird der Zeiger zu dem letzten Zeichen bei dem Ende der Zeichenaufzeichnungskette in Block 507 gesetzt.
  • In Block 509 wird eine Überprüfung durchgeführt, um zu bestimmen, ob der Zeiger zu der laufenden Zeichenaufzeichnung in der Zeichenaufzeichnungskette gleich NIL ist. Wenn er NIL ist, zeigt es an, daß das Ende der Kette erreicht worden ist, und die Expansionsaufteilung wird durchgeführt und Block 509 tritt zu Block 511 aus, der zu dem Aufrufer der Aufteilroutine zurückkehrt. Wenn der Zeichenzeiger nicht NIL ist, dann wird Block 513 eingegeben.
  • In Block 513 wird eine Überprüfung durchgeführt, um zu sehen, ob das laufende Zeichen expandierbar ist. Das laufende Zeichen ist nicht expandierbar, wenn das nächste Zeichen ein zusammengesetzter Teil des laufenden Zeichens ist, das laufende Zeichen ein Abstand ist und eine Zwischenwortexpansion nicht durchgeführt wird, oder das laufende Zeichen und das nächste Zeichen beide keine Abstände sind und eine Zwischenbuchstabenexpansion nicht durchgeführt wird. Wenn das laufende Zeichen nicht expandierbar ist, wird Block 515 eingegeben und das nächste Zeichen wird nach rechts bewegt, und zwar durch Vergrößern seiner horizontalen Position in seiner Zeichenaufzeichnung um den laufenden Wert der Gesamtexpansion (EXPTOT).
  • Wenn das laufende Zeichen expandierbar ist, tritt Block 513 zu Block 517 aus, der überprüft, ob ein Verteilen von links nach rechts oder von rechts nach links ausgeführt wird. Wenn ein Verteilen der Expansion von links nach rechts erfolgt, wird Block 519 eingegeben und der Gesamt-Expansionswert wird um den Expansionswert inkrementiert. Wenn ein Verteilen von rechts nach links erfolgt, tritt Block 517 zu Block 533 aus.
  • Block 519 tritt zu Block 521 aus, der eine Überprüfung durchführt, um zu bestimmen, ob der Rest gleich 0 ist. Wenn der Rest gleich 0 ist, dann ist die gesamte Expansion, die nicht einheitlich aufgeteilt werden konnte, aufgeteilt worden, und es gibt nichts mehr, das mit dem Rest getan werden muß. Wenn es einen Rest gab und er nicht ganz aufgeteilt worden ist (d. h. ausgeschöpft, durch Aufteilen einer 1-Granulareinheit, jedesmal, wenn ein Zeichen expandiert ist), dann wird Block 523 eingegeben und der kumulative Expansionswert wird um 1 inkrementiert und der Rest wird um 1 dekrementiert. Block 523 tritt dann zu Block 525 aus.
  • Block 525 stellt die horizontale Position des nächsten Zeichens nach rechts durch den kumulativen Expansionswert (EXPTOT) ein. Dies wird durchgeführt durch Nehmen der horizontalen Position des nächsten Zeichens nach rechts, wie sie in der Zeichenaufzeichnung gefunden wird, die zu ihm gehört, und durch Addieren des kumulativen Expansionswertes (EXPTOT) dazu.
  • Dann wird Block 527 eingegeben und eine Überprüfung wird durchgeführt, um zu bestimmen, ob die Aufteilung der Expansion von links nach rechts oder von rechts nach links durchgeführt wird. Wenn sie von links nach rechts durchgeführt wird, wird Block 529 eingegeben und der laufende Zeichenzeiger wird bewegt, um zu dem nächsten Zeichen rechts zu zeigen. Wenn ein Expandieren von rechts nach links erfolgt, wird Block 531 eingegeben und der laufende Zeichenzeiger wird zu dem vorherigen Zeichen nach links bewegt. Nach einem Einstellen des laufenden Zeichenzeigers in entweder dem Block 529 oder dem Block 531 kehrt die Routine zu Block 509 zurück, der dann prüft, ob das Ende der Zeichenaufzeichnungskette erreicht worden ist.
  • Man kehrt nun zu Block 533 zurück, der eingegeben wird, wenn eine Expansion von rechts nach links stattfindet, nachdem es bestimmt ist, daß das laufende Zeichen ein expandierbares Zeichen ist. In Block 533 wird die horizontale Position des nächsten Zeichens nach rechts eingestellt, und zwar durch den kumulativen Expansionswert (EXPTOT).
  • Dann wird Block 535 eingegeben und der kumulative Expansionswert wird um den Expansionswert dekrementiert. Dies wird durchgeführt, weil, wenn ein Expandieren von rechts nach links erfolgt, das Zeichen an dem rechten Ende der Zeile um den Gesamtbetrag bewegt wird, um expandiert zu werden, und jedes nachfolgende Zeichen um immer abnehmende Beträge bewegt wird, wobei der Betrag der Abnahme gleich dem individuellen Expansionswert (EXPVAL) ist.
  • In Block 537 wird eine Überprüfung durchgeführt, um zu bestimmen, ob der Rest gleich 0 ist, und wenn es so ist, tritt er zu Block 527 aus. Wenn der Rest nicht 0 ist, dann wird der kumulative Expansionswert um 1 dekrementiert und der Rest wird auch um 1 dekrementiert. Somit kann eingeschätzt werden, daß, wenn ein Aufteilen von rechts nach links erfolgt, eher der Rest aufgeteilt wird, und zwar eine Einheit zu einem Zeitpunkt an jedem Platz, dann eine Expansion durchgeführt wird, bis der Rest ausgeschöpft ist. Block 539 geht dann zu Block 527.
  • Quellencodeprogrammauflistungen der Einstellroutine und der Aufteilroutine sind an dieser Anmeldung im Anhang angebracht. Diese Programme sind in der Programmiersprache PASCAL geschrieben, die auf den Computern von Honeywell Information Systems Inc. DPS 6-Linie verfügbar ist. Diese Sprache ist in Einzelheiten in dem Honeywell Information Systems Inc. Handbuch mit dem Titel DPS 6 and Level 6 GCOS 6 Pascal User's Guide, Bestellnr. CZ40, beschrieben, das hierin durch Bezugnahme enthalten ist.
  • Von der obigen Erörterung der Einstellroutine und der Aufteilroutine kann es eingeschätzt werden, daß ein Einstellen einer Zeile durch ein erstes Versuchen auftritt, einen Teil der Expansion zwischen Zeichen in Worten bis zu einer gewissen Grenze aufzuteilen, so daß die Zeichen nicht übermäßig voneinander beabstandet sind, und daß der Rest der erforderlichen Expansion in Abständen zwischen Worten aufgeteilt wird. Es kann weiterhin eingeschätzt werden, daß, weil der Betrag der Expansion zwischen Zeichen und zwischen Worten nicht immer einheitlich sein kann, die Aufteilung des nichteinheitlichen oder Rest-Teils der Expansion zwischen dem linken und dem rechten Ende der Zeile geändert wird, um so viel wie möglich das Auftreten von Leerraumflüssen zu reduzieren, oder eines übermäßigen weißen Abstands, der andererseits entlang des Endes der Zeile auftreten könnte, wenn der Rest immer entlang einer Seite aufgeteilt wird. Es kann weiter eingeschätzt werden, daß durch Verwenden des Horizontal-Bewegungsindex (HMI) und von Druckergranularitätseinheiten eine Standard-Einstellverarbeitung für alle Ausgabevorrichtungen benutzt werden kann.
  • BEISPIEL EINER EINSTELLUNG MIT EINEM ZUSAMMENGESETZ- TEN ZEICHEN
  • Fig. 8 zeigt ein Beispiel einer Zeile eines gedruckten Textes und ihren entsprechenden Eingangspuffer, der der Druckroutine präsentiert werden würde, um an einer Ausgabevorrichtung gedruckt zu werden. Die erste Reihe in Fig. 8 zeigt die verschiedenen Lücken über einer Seite mit einer Anzeige, daß es wünschenswert ist, einen Tabulator zwischen einem Tabulatorsatz zwischen Lücken 4 und 5 zu haben, und eine Einstellung eines rechten Rands wird zwischen Lücken 23 und 24 auftreten. Die gedruckte Textreihe in Fig. 8 zeigt, daß es gewünscht ist, daß die Zeile des Textes ein Hochstellen von "1" an dem Wort "SUP" und ein Tiefstellen von "2" an dem Wort "SUB" enthält. Es wird auch bemerkt werden, daß das Zeichen in Spalte 15 ein zusammengesetztes Zeichen sein soll, das aus einem Akzent über einem Großbuchstaben "C" mit einem Komma unter dem Buchstaben besteht (beispielsweise gebraucht, um den französischen Akzent Cedille zu simulieren). Die Eingabepufferreihe in Fig. 8 zeigt die entsprechenden Zeichen, die der Druckroutine präsentiert werden würden, um an der Ausgabevorrichtung gedruckt zu werden.
  • In dem Eingabepuffer der Fig. 8 wird der rechte Pfeil benutzt, um anzuzeigen, daß eine Tabulatortaste gedrückt wurde, ein nach oben gerichteter Pfeil wird benutzt, um anzuzeigen, daß die Hochstelltaste gedrückt wurde, der nach unten gerichtete Pfeil wird benutzt, um anzuzeigen, daß eine Tiefstelltaste gedrückt wurde, und das Delta wird benutzt, um anzuzeigen, daß ein Abstandszeichen gedrückt wurde. Es wird bemerkt werden, daß das zusammengesetzte Zeichen "C" mit einem Akzent darüber und einem Komma darunter durch ein einziges Zeichen in dem Eingabepuffer angezeigt wird. Dies setzt voraus, daß die Tastatur, auf der das Dokument eingegeben wurde, eine Taste hatte, die diesem zusammengesetzten Zeichen entsprach. Tatsächlich kann das zusammengesetzte Zeichen durch eine Vielfach-Zeichen-Sequenz in dem Eingabepuffer angezeigt werden, der anzeigt, daß der Zeichencode für dieses Zeichen ein spezieller Zeichencode ist.
  • Fig. 9 stellt die Zeichenaufzeichnungskette dar, die dem Eingabepuffer der Fig. 8 entspricht, und zwar nachdem der Eingabepuffer durch das Druckprogramm durch Verwenden der Zeichen-Zuordnungstabelle übersetzt worden ist, die in Fig. 6 gezeigt ist. In Fig. 9 werden die Zeiger zwischen Zeichenaufzeichnungen durch die Bögen angezeigt, die Pfeile als Köpfe haben, die zu der nächsten Zeichenaufzeichnung und zu der vorherigen Zeichenaufzeichnung in der Kette zeigen. In Fig. 9 zeigt das Symbol in Klammern an der Spitze der Blöcke, die den Zeichenaufzeichnungen entsprechen, die Ausgabezeichengraphik an, die auf der Seite erscheinen wird, wenn das Dokument gedruckt wird. In den Zeichenaufzeichnungen wird diese Zeichengraphik durch einen Viel-Bit-Code dargestellt, der, wenn er zu der Ausgabevorrichtung ausgegeben wird, veranlassen wird, daß die Zeichengraphik zu erzeugen ist. Die zweite Reihe in den Zeichenaufzeichnungsblöcken der Fig. 9 hält die horizontale Position und den horizontalen Versatz, von denen beide in horizontalen granularen Einheiten der Ausgabevorrichtung sind, die benutzt werden wird, um das Dokument zu drucken. Bei diesem Beispiel wird angenommen, daß alle Zeichen, mit der Ausnahme des Akzent- und Kommazeichens, eine Standardbreite von 10 granularen Einheiten haben, so daß das Zeichen in der ersten Spalte bei der Position 0 beginnt und das Zeichen in der zweiten Spalte bei der horizontalen Position 10 beginnt, etc. Bei diesem Beispiel hat das Akzentzeichen eine Breite von 6 granularen Einheiten und das Kommazeichen hat eine Breite von 4 granularen Einheiten. Die horizontale Position des Akzent- und des Kommazeichens reflektiert das Zentrieren dieser Zeichen über dem "C", basierend auf ihren Breiten, wie es oben beschrieben ist. Das Komma ist zusätzlich um eine granulare Einheit nach rechts von seiner zentralen Position bewegt worden, weil ein horizontaler Versatz von 1 in der Zeichen-Zuordnungstabelle spezifiziert wurde (siehe Fig. 6, Tabelle 619).
  • Die dritte Reihe in den Zeichenaufzeichnungsblöcken der Fig. 9 enthält die vertikale Position und den vertikalen Versatz des Zeichens in vertikalen granularen Einheiten der Ausgabevorrichtung, die zu benutzen ist, um das Dokument zu drucken. Für dieses Beispiel wird angenommen, daß die Ausgabevorrichtung 48 vertikale Bewegungen pro Inch durchführen kann, und das Dokument ist bei 8 Zeilen pro Inch zu drucken. Dies bedeutet, daß die Ausgabevorrichtung fähig ist, 6 vertikale Bewegungen pro Zeile durchzuführen, und daß ein Hochstellen und ein Tiefstellen durch eine Verschiebung um ein Drittel nach oben oder um ein Drittel nach unten für jeden Pegel des Hochstellens bzw. des Tiefstellens durchgeführt wird, und daher wird ein Tiefstellen von Pegel 1 in einer vertikalen Bewegung von -2 resultieren und zwei Pegel eines Hochstellens wird in einer vertikalen Bewegung von +4 resultieren.
  • Die untere Zeile der Zeichenaufzeichnungsblöcke, die in Fig. 9 dargestellt sind, enthält den Zeilenumbruch, das zusammengesetzte Zeichen und Einstell-Flags. Wenn das Zeilenumbruch-Flag gleich 1 ist, bedeutet es, daß dieses Zeichen der Beginn des Umbruchpunktes ist. Das Umbruch-Flag ist in den Zeichenaufzeichnungen eine 1, die horizontale Positionen 90, 140, 142, 145 und 190 haben. Diese Zeichen entsprechen dem Beginn der Worte in der Zeile des Textes. Die Zeichenaufzeichnungen mit horizontalen Positionen von 140, 142 und 145 haben jeweils das Umbruch-Flag gesetzt, weil sie die Anfangszeichen eines Wortes dadurch sind, daß sie zusammen ein zusammengesetztes Zeichen bilden.
  • Das Zusammensetzungs-Flag, das das mittlere Flag in der unteren Zeile ist, ist eine 1, wenn die Zeichenaufzeichnung das zweite bis N-Zeichen in einem zusammengesetzten Zeichen ist. Das Zusammensetzungs-Flag ist eine 1 in den Zeichenaufzeichnungen, die den Zeichenaufzeichnungen mit horizontalen Positionen 142 und 145 entsprechen.
  • Das Einstell-Flag, das das rechte Flag in der unteren Zeile ist, ist eine 1, wenn das Zeichen während der Einstellverarbeitung bewegt werden kann. Dieses Flag ist eine 1 in allen Zeichenaufzeichnungen in Fig. 9, mit der Ausnahme der Zeichenaufzeichnung, die dem Zeichen mit einer horizontalen Position 40 entspricht, was das "S" in dem Wort "SUP" ist, das nicht bewegt werden kann, weil es das erste Zeichen war, das in der Zeile auftritt, nachdem die Tabulatortaste gedrückt wurde.
  • Fig. 10 stellt das Ergebnis der Einstellung der Zeichenaufzeichnungskette des in Fig. 9 gezeigten Beispiels dar. Wie in Fig. 8 dargestellt ist, wurde der rechte Rand zwischen Lücken 23 und 24 eingestellt, so daß der rechte Rand bei einer horizontalen Position 230 eingestellt ist. Wenn die Zeichenaufzeichnungskette von dem Ende der Kette rückwärts abgetastet wird, um einen Umbruchpunkt zu finden, ist der erste Umbruchpunkt, der gefunden wird, für die Zeichenaufzeichnung des Buchstabens "E" in dem Wort "EXAMPLE", der eine horizontale Position von 190 hat. Daher wird die Zeichenaufzeichnungskette bei diesem Punkt unterbrochen und die zu den Zeichenaufzeichnungen in der Kette unterhalb dieses Punktes gehörigen Zeichenaufzeichnungen werden die nächste Zeile des Textes, und ihre horizontalen Positionen sind entsprechend eingestellt, so daß in Fig. 10 die zu dem Wort "EXAMPLE" gehörigen Zeichenaufzeichnungen in einer horizontalen Position 0 beginnen und zu einer horizontalen Position 70 weiterlaufen. Das Abstandszeichen nach dem Wort "COMP" wird auch gelöscht, und daher enthält die Zeichenaufzeichnungskette, die einzustellen ist, das Zeichen "1", das bei der horizontalen Position 0 beginnt, bis zu dem Zeichen "P", das in der horizontalen Position 170 beginnt.
  • Um den Betrag zu bestimmen, der in eine Zeile während der Einstellverarbeitung zu expandieren ist, wird die Länge der Zeile, die 180 horizontale granulare Einheiten breit ist, von der rechten Randposition subtrahiert, die eine horizontale Position 230 ist, um den Betrag der erforderlichen Expansion zu erzeugen, die 50 horizontale granulare Einheiten beträgt. Wenn die Zeile rückwärts abgetastet wird, wird gefunden, daß das "S" in der horizontalen Position 40 nicht einstellbar ist, so daß irgendwelchen Zeichen, die in der Kette vor dieser Zeichenaufzeichnung auftreten, während der Einstellverarbeitung nicht wieder positioniert werden können. Wenn die Anzahl expandierbarer Zeichen in dem Segment der Zeile, die wie gezählt eingestellt werden kann, wird bestimmt, daß die Anzahl expandierbarer Zeichen (CHARS) gleich 11 ist, und die Anzahl zusammengesetzter Zeichen (COMPS) gleich 2 ist. Daher ist die Anzahl expandierbarer Zeichen, die für zusammengesetzte Komponenten eingestellt werden 11-2, was ein Ergebnis von 9 ergibt. Die Anzahl expandierbarer Abstände an jenem Teil der Zeile, die expandiert werden kann, ist 2. Diese Abstandszeichen sind jene, die in Fig. 9 in horizontalen Positionen 80 und 130 erscheinen.
  • Wenn die Einstellroutine den Betrag bestimmt, um den jedes expandierbare Zeichen zu expandieren ist, wird der Betrag der Expansion (50) durch die Anzahl expandierbarer Zeichen (9) geteilt, plus dem Abstand- Zeichen-Verhältnis (8-zu-1)-fachen der Anzahl der expandierbaren Abstände (2), was darin resultiert, daß 50 durch 9 geteilt wird, plus 8·2, was gleich 50 über 25 ist, was einen Zwischenzeichenexpansionswert (EXPVAL) von 2 ergibt. Diese Einstellroutine würde dann die Aufteilroutine aufrufen, um jedes expandierbare Zeichen um zwei horizontale granulare Einheiten zu expandieren.
  • Die Einstellroutine bestimmt dann den Betrag der Expansion, der bleibt, um in den Abständen zwischen Worten durchgeführt zu werden. Dieses wird durch Nehmen des Gesamtbetrags der erforderlichen Expansion berechnet, der 50 ist, und Subtrahieren von ihm den Betrag der Zwischenzeichenexpansion, die durchgeführt wurde, was 2·9 ist, so daß 50- 18 gleich einer Gesamtheit von 32 granularen Einheiten einer Expansion ist, die erforderlich ist, um unter den Abständen aufgeteilt zu werden, die in der Zeichenaufzeichnungskette auftreten. Der Expansionswert für jeden Zwischenwortabstand wird berechnet durch Nehmen des Betrags der Expansion (32) und Dividieren von ihm durch die Anzahl von Abständen (2), um einen Zwischenwortexpansionswert von 16 horizontalen granularen Einheiten zu erzeugen. Die Aufteilroutine wird dann mit einem Expansionswert von 16 aufgerufen, der benutzt wird, jedes Abstandszeichen zu expandieren und irgendwelche benachbarten Zeichen wieder zu positionieren.
  • Das obige Beispiel einer Einstellung hat keine Reste, die auftreten, wenn entweder die Zwischenzeichen- oder Zwischenwortexpansionswerte berechnet wurden. Wenn ein Rest aufgetreten war, wenn der Zwischenzeichenexpansionswert berechnet worden war, würde er gleich 0 gesetzt worden sein und nicht zwischen die Zeichen aufgeteilt worden sein, weil es Abstände in der Zeile gibt, in denen er aufgeteilt werden kann.
  • Wenn ein Rest aufgetreten war, wenn die Zwischenwortabstandsexpansion berechnet wurde, würde er um eine granulare Einheit zu einer Zeit zusätzlich zu den 16 Einheiten verteilt worden sein, um die jeder Abstand expandiert wird, bis er ausgeschöpft worden ist. Dieser Rest würde verteilt worden sein, beginnend von entweder dem linken oder dem rechten Ende der Zeile, in Abhängigkeit davon, wo der Wert des Seiten-Flags in dem Zeileninformationsblock, der zu der Zeile gehört, eingestellt wird. An dem Ende der Einstellroutine würde die zu der Zeichenaufzeichnungskette der Fig. 9 gehörigen Zeichenaufzeichnungskette sein, wie es in Fig. 10 gezeigt ist, und zwar mit horizontalen Positionen, die auf den neuesten Stand gebracht sind, wie es mit der Zeichenaufzeichnung gezeigt ist, die eine horizontale Position von 220 hat, was das "P" an dem rechten Ende der Zeile ist, vorwärtszeigend zu NIL, und wobei die Zeichenaufzeichnung das "P"-Zeichen des Wortes "EXAMPLE" mit einer horizontalen Position von 0 hat, rückwärtszeigend zu NIL, weil diese Zeichenaufzeichnung der Beginn der nächsten Druckzeile ist.
  • Fig. 11 stellt das Ergebnis des Sortierens der Zeichenaufzeichnungen in einer Ausgabezeile durch ihre vertikale Position dar, bevor die Ausgabezeilen zu dem physikalischen Ausgabevorrichtungstreiber geführt sind, der die Zeilen tatsächlich drucken wird. Wie zuvor gezeigt ist, werden die Ausgabezeilen sortiert, so daß jene, die höher auf der Seite positioniert werden müssen, zuerst ausgegeben werden, und dann die nächstuntere Zeile ausgegeben wird, so daß das Papier in der Ausgabevorrichtung nach oben fortschreiten kann. In Fig. 10 gibt es vier in einer Warteschlange stehende Ausgabeinformationsblöcke (QOIB), die Blöcke 1101, 1103, 1105 und 1107 sind.
  • Die vier QOIBs in Fig. 11 sind durch einen nächsten-(NEXTQO)-Zeiger verbunden, der zu dem nächsten QOIB zeigt, außer für den letzten, der zu NIL zeigt. QOIB 1101 hat eine Zeichenaufzeichnungskette von zwei Zeichenaufzeichnungen darin, die bei der vertikalen Position 2 zu drucken sind. Diese Zeichenaufzeichnungen entsprechen dem Zeichen "1", das als ein Hochstellzeichen zu drucken ist, und dem Akzent, der über dem zusammengesetzten Zeichen "C" zu drucken ist. QOIB 1103 enthält 14 Zeichenaufzeichnungen, die der Hauptzeile des gedruckten Textes entsprechen. QOIB 1105 enthält eine einzelne Zeichenaufzeichnung, die das Komma ist, das an einer relativen vertikalen Position von -1 unter dem zusammengesetzten Zeichen "C" zu drucken ist, und QOIB 1107 enthält auch eine Zeichenaufzeichnung, die dem Zeichen ',2" entspricht, das als ein Tiefstellzeichen zu erscheinen hat. Es hat eine relative vertikale Position von -2.
  • Wenn diese Zeichenketten tatsächlich zu der Ausgabevorrichtung durch eine vertikale Position ausgegeben werden, wird jede Zeichenaufzeichnungskette in einer Zeile eines Textes resultieren, der an der Ausgabevorrichtung gedruckt wird, so daß die Zeile des Textes, der in dem in Fig. 8 dargestellten Beispiel gezeigt ist, in vier separaten Zeilen eines Textes resultieren wird, der zu dem Drucker ausgegeben wird.
  • Aus der obigen Erörterung kann eingeschätzt werden, daß das Einstellverfahren und das Verfahren zum Handhaben zusammengesetzter Zeichen der vorliegenden Erfindung einen weiten Bereich von Flexibilität zum Einstellen eines Textes in Zeilen und zum Zusammensetzen zusammengesetzter Zeichen zulassen wird, so daß zusammengesetzte Zeichen durch Vielfachüberschreiben individueller Zeichen zusammengesetzt werden können, wobei jedes individuelle Zeichen entweder einen vertikalen oder einen horizontalen Versatz aufweisen kann.
  • Obwohl das bevorzugte Ausführungsbeispiel bezogen auf eine Rechtsausrichtung an einer Zeile beschrieben worden ist, ist dieses Verfahren gleichermaßen auf ein Durchführen einer Linkseinstellung anwendbar.
  • Obwohl das bevorzugte Ausführungsbeispiel bezogen auf ein Ändern der Verwendung des Rests zwischen aufeinanderfolgenden Zeilen mit der Verwendung des Restes, beginnend bei entweder dem rechten oder dem linken Ende der Zeile, beschrieben worden ist, ist es klar, daß es eine Erweiterung wäre, den Rest durch Abarbeiten von der Mitte jeder dritten Zeile auszuschöpfen.
  • Obwohl das bevorzugte Ausführungsbeispiel bezogen auf eine Verwendung eines Druckers als der Ausgabevorrichtung beschrieben worden ist, ist die Erfindung gleichermaßen auf andere Arten von Ausgabevorrichtungen anwendbar.

Claims (10)

1. Verfahren zum Durchführen einer Texteinstellung einer Zeile eines Textes, der in einem Informationsverarbeitungssystem erzeugt ist, um einen derartigen Text in der Zeile zu expandieren, damit er benachbart zu dem linken und dem rechten Rand einer vorbestimmten Zeilenlänge eines Ausgabemediums liegt, wobei eine derartige Textzeile anzuzeigen ist, wobei
(a) die Zeilenlänge durch die Anzahl granularer Einheiten in der Zeilenlänge der Vorrichtung dargestellt wird, die die eingestellte Zeile des Textes erzeugen muß,
(b) die Differenz (EXPAND) zwischen der Anzahl der granularen Einheiten in der Zeilenlänge und der Anzahl granularer Einheiten, die durch die Textzeile dargestellt wird, bestimmt wird, und
(c) die Anzahl erweiterbarer Zwischenwortpositionen (SPACES) in der Textzeile bestimmt wird,
wobei das Verfahren gekennzeichnet ist durch:
(d) Bestimmen der Anzahl expandierbarer Zwischenzeichenpositionen (CHARS) in der Textzeile,
(e) Berechnen des Teils von EXPAND, der den expandierbaren Zwischenzeichenpositionen zugeordnet werden kann,
(f) Berechnen des Teils von EXPAND, der den expandierbaren Zwischenwortpositionen zugeordnet werden kann,
(g) Verteilen des Teils, der im Schritt (e) unter den expandierbaren Zwischenzeichenpositionen berechnet ist, und
(h) Verteilen des Teils, der im Schritt (f) unter den expandierbaren Zwischenwortpositionen berechnet ist.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß das Bestimmen expandierbarer Zwischenwortpositionen (Schritt c) durch Zählen expandierbarer Raumzeichen in der Zeile durchgeführt wird.
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß das Bestimmen expandierbarer Zwischenzeichenpositionen (Schritt d) durch Zählen der Anzahl von Nicht-Raumzeichen durchgeführt wird, die nicht an dem Ende eines Wortes sind und die Anzahl von Zeichen subtrahieren, die einen zusammengesetzten Flag-Satz haben.
4. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die EX- PAND-Differenz (Schritt b) durch Subtrahieren der Breite des Textes von der gesamten Zeilenbreite bestimmt wird, womit der Betrag einer erforderlichen Expansion gegeben ist.
5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß die Breite des Textes und die gesamte Zeilenbreite in Ausdrücken horizontaler, granularer Einheiten ausgedrückt werden, die der kleinsten horizontalen Entfernung entsprechen, die der Druckkopf der Ausgabevorrichtung entlang einer Zeile unter der Steuerung des Einstellverfahrens überqueren kann.
6. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß ein definiertes Verhältnis benutzt wird, um den Teil der gesamten Expansion zu bestimmen, die durch eine Zwischenzeichenexpansion (CHARS) durchgeführt werden muß, und dem Teil der gesamten Expansion, die durch eine Zwischenwortexpansion (SPACES) durchzuführen ist.
7. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Zwischenzeichenexpansion (CHARS) auf ein gewisses definiertes Maximum beschränkt ist, so daß eine zu große Expansion zwischen Zeichen innerhalb eines Wortes nicht auftritt.
8. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß in bezug auf die Schritte (e) und (f) irgendein Expansionsrest, der nicht einheitlich in einer Zeile verteilt werden kann, auf alternierende Enden nachfolgender Zeilen verteilt wird, um das Auftreten von ungedruckten Streifen am Innenrand in dem eingestellten Text zu reduzieren.
9. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß in bezug auf die Schritte (g) und (h) eine Verteilung der Expansion durch Vergrößern einer Zahl einer horizontalen Position durchgeführt wird, die jedem Zeichen zugeteilt ist, das während des Einstellverfahrens zu bewegen ist.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß die Zahl der horizontalen Position in den horizontalen granularen Einheiten beibehalten wird.
DE8686107534T 1985-06-03 1986-06-03 Testverarbeitungsrandausgleichsverfahren. Expired - Fee Related DE3686982T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/740,700 US4783760A (en) 1985-06-03 1985-06-03 Word processing text justification method

Publications (2)

Publication Number Publication Date
DE3686982D1 DE3686982D1 (de) 1992-11-26
DE3686982T2 true DE3686982T2 (de) 1993-03-04

Family

ID=24977671

Family Applications (1)

Application Number Title Priority Date Filing Date
DE8686107534T Expired - Fee Related DE3686982T2 (de) 1985-06-03 1986-06-03 Testverarbeitungsrandausgleichsverfahren.

Country Status (5)

Country Link
US (1) US4783760A (de)
EP (1) EP0205082B1 (de)
AU (1) AU591129B2 (de)
CA (1) CA1264860A (de)
DE (1) DE3686982T2 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3682880D1 (de) * 1985-11-28 1992-01-23 Canon Kk Dokumentverarbeitungssystem.
DE3750135T2 (de) * 1987-04-23 1994-12-08 Oce Nederland Bv Textverarbeitungssystem und -verfahren zur Prüfung des richtigen und folgerichtigen Gebrauchs von Einheiten und chemischen Formeln in einem Textverarbeitungssystem.
JP2703907B2 (ja) * 1987-10-23 1998-01-26 キヤノン株式会社 文書処理方法
JPH01244569A (ja) * 1988-03-25 1989-09-28 Brother Ind Ltd 文書作成装置
JP3105895B2 (ja) * 1989-04-12 2000-11-06 キヤノン株式会社 文書処理装置
US5467447A (en) * 1990-07-24 1995-11-14 Vogel; Peter S. Document marking system employing context-sensitive embedded marking codes
US5490243A (en) * 1990-12-13 1996-02-06 F3 Software Corporation Data processing system for multi-platform print control and electronic data fill
JPH0512287A (ja) * 1991-07-09 1993-01-22 Canon Inc 文書処理装置
JP2556233B2 (ja) * 1992-01-07 1996-11-20 ブラザー工業株式会社 テープ印字装置
JPH061000A (ja) * 1992-06-17 1994-01-11 Brother Ind Ltd 印字装置
US5724498A (en) * 1995-06-07 1998-03-03 Adobe Systems Incorporated Method and apparatus for concealing character modifications made for text composition purposes
US5937420A (en) * 1996-07-23 1999-08-10 Adobe Systems Incorporated Pointsize-variable character spacing
US5895478A (en) * 1996-08-08 1999-04-20 U S West, Inc. Right and center font justification for a document system library
US7444586B1 (en) 2000-09-27 2008-10-28 Adobe Systems Incorporated Inhibiting space compression or expansion in automated paragraph layouts
WO2002042929A1 (en) * 2000-11-22 2002-05-30 Adobe Systems Incorporated Automated paragraph layout
US7953891B2 (en) 2003-03-18 2011-05-31 Microsoft Corporation Systems and methods for scheduling data flow execution based on an arbitrary graph describing the desired data flow
US7860916B2 (en) * 2003-03-18 2010-12-28 Microsoft Corporation Systems and methods for transforming data in buffer memory without unnecessarily copying data to additional memory locations
US7315396B2 (en) * 2003-06-18 2008-01-01 Hewlett-Packard Development Company, L.P. Systems and methods for generating banner pages
US7930432B2 (en) * 2004-05-24 2011-04-19 Microsoft Corporation Systems and methods for distributing a workplan for data flow execution based on an arbitrary graph describing the desired data flow
US8650482B2 (en) * 2005-12-14 2014-02-11 Microsoft Corporation Dynamic positioning and aligning tabs relative to margins indent and column width
US8306356B1 (en) 2007-09-28 2012-11-06 Language Technologies, Inc. System, plug-in, and method for improving text composition by modifying character prominence according to assigned character information measures
US9141768B2 (en) * 2009-06-10 2015-09-22 Lg Electronics Inc. Terminal and control method thereof
KR101588242B1 (ko) * 2009-07-13 2016-01-25 삼성전자주식회사 휴대 단말기의 스크롤 방법 및 장치
US9734132B1 (en) * 2011-12-20 2017-08-15 Amazon Technologies, Inc. Alignment and reflow of displayed character images
JP6136568B2 (ja) * 2013-05-23 2017-05-31 富士通株式会社 情報処理装置および入力制御プログラム
CN113487696B (zh) * 2021-07-09 2023-09-22 北京百度网讯科技有限公司 电子地图生成方法、装置、电子设备及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2678713A (en) * 1945-06-02 1954-05-18 Graphic Arts Res Foundation In Apparatus for justifying lines
US3757921A (en) * 1970-12-23 1973-09-11 Ibm Right hand margin control system
US4005772A (en) * 1972-10-12 1977-02-01 Harris Corporation Automatic justifying typewriter having pitch changing and line spacing apparatus
GB1530444A (en) * 1974-11-11 1978-11-01 Xerox Corp Automatic writing system and methods of word processing therefor
US4348738A (en) * 1977-08-01 1982-09-07 R & I Patent Corporation Electronic typographical display device with justification feature
US4265554A (en) * 1978-05-22 1981-05-05 International Business Machines Corporation Paragraph indent
US4298290A (en) * 1980-06-16 1981-11-03 International Business Machines Corporation System and printer justification system
US4689764A (en) * 1981-10-26 1987-08-25 International Business Machines Corporation Method and apparatus for formatting a line of text containing a complex character prior to text justification
US4462701A (en) * 1982-05-11 1984-07-31 International Business Machines Corporation Printing system wherein justification determination is shared between a host processor and a printer
US4523294A (en) * 1982-05-27 1985-06-11 Southwest Research Institute Character spaced justification method and apparatus
US4574363A (en) * 1982-07-13 1986-03-04 International Business Machines Corporation Mixed mode enhanced resolution hyphenation function for a text processing system
US4573138A (en) * 1982-11-09 1986-02-25 International Business Machines Corp. Justifying with printer level data stream which accommodates footers and headers

Also Published As

Publication number Publication date
AU591129B2 (en) 1989-11-30
CA1264860A (en) 1990-01-23
EP0205082A2 (de) 1986-12-17
DE3686982D1 (de) 1992-11-26
US4783760A (en) 1988-11-08
AU5806086A (en) 1986-12-11
EP0205082A3 (en) 1988-07-27
EP0205082B1 (de) 1992-10-21

Similar Documents

Publication Publication Date Title
DE3686982T2 (de) Testverarbeitungsrandausgleichsverfahren.
DE2823965C3 (de) Anordnung in kraftgetriebenen, speichergesteuerten Schreibmaschinen mit proportionalem Zeichenabstand z ur Verbesserung der Lesbarkeit des Schriftbildes
DE3382752T2 (de) Verfahren zur Umwandlung einer ersten editierbaren Dokumentenform, vorbereitet von einem Stapeltextverarbeitungssystem, in eine zweite editierbare Dokumentenform, die für ein Interaktiv- oder Stapeltextverarbeitungssystem brauchbar ist.
DE3121503C2 (de) Dokumenten-Verarbeitungssystem
DE3587105T2 (de) Wechselwirkende bedienerauswahl von alternativen ausfuehrungen von druckerfunktionen.
DE68922116T2 (de) Dokumentverarbeitungssystem und Verfahren zur Verwendung darin.
DE1961173C3 (de) Steuereinrichtung zum Festlegen bzw. Verändern der Textaufteilung einer Textdatenfolge mit Hilfe eines Bildanzeigegerätes
DE602005002473T2 (de) Verfahren zum Erkennen von semantischen Einheiten in einem elektronischen Dokument
DE3586308T2 (de) Verfahren zur steuerung der position einer auf papier zu druckenden dokumentenabbildung bei einem interaktiven textverarbeitungssystem.
DE2458098C2 (de) Schreibmaschine
DE3786871T2 (de) Drucksystem zur Steuerung der Bewegungsgeschwindigkeit des Druckkopfes.
DE3382758T2 (de) Verfahren zur Umwandlung einer ersten editierbaren Dokumentenform, vorbereitet von einem interaktiven Textverarbeitungssystem, in eine zweite editierbare Dokumentenform, die für ein Interaktiv- oder Stapeltextverarbeitungssystem brauchbar ist.
DE2417923A1 (de) Videovorrichtung zur textgestaltung
DE3786427T2 (de) Vorrichtung zur Eingabesteuerung.
DE69028645T2 (de) Desk-Top-Publishing-System
DE3855063T2 (de) Datenverarbeitungseinheit und Verfahren zur Anzeige von graphischen Symbolen
DE3851742T2 (de) Textverarbeitungsgerät.
DE3687011T2 (de) Maschinenuebersetzungssystem.
DE2906883A1 (de) Verfahren und anordnung zum feststellen von tabulatoreinstellungen und indexparametern fuer eine wiedergabe in einem textverarbeitungssystem
DE3138733C2 (de)
DE3151357C2 (de) Einrichtung zum Steuern der Bewegung eines Cursors
DE3234892C2 (de)
DE3852606T2 (de) Textverarbeitungsapparat.
DE3046037A1 (de) Textbearbeitungsgeraet
DE3128360C2 (de) Elektrischer Matrixdrucker

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: BULL HN INFORMATION SYSTEMS INC., BILLERICA, MASS.

8339 Ceased/non-payment of the annual fee