Plattformübergreifend interessant sind die Teile über Fonttechnologien und Copyrights und Fonts.
Version 3.3 vom 10.05.1998
Im WWW ist die deutsche Version (hoffentlich) immer unter http://www.s-line.de/homepages/gerd_castan/ zu finden.
Dieses Dokument darf frei kopiert und in Mailboxen geladen werden.
Die Verteilung auf CD-ROM und ähnlichen Medien ist nur zulässig, wenn ich per EMail davon in Kenntnis
gesetzt werde.
Der Ausdruck ist nur auf Umweltschutzpapier gestattet. Staubfreies Umweltschutzpapier, das den Druckmechanismus nicht schädigt, ist problemlos erhältlich.
Und nun viel Spaß...
Gerd Castan
Wer vorhat, ein Programm mit Druckausgabe zu schreiben, tut gut daran, sich um die eigentlichen Aufgaben seines Programms zu kümmern.
Niemand ist bereit, für Druckertreiber mitzubezahlen, wenn es ein Konkurrenzprogramm gibt, dessen Programmierer keinen Aufwand mit Druckertreibern haben und das Programm damit einfach billiger (und wahrscheinlich besser) ist.
Der Anwender hat neben dem Preisvorteil noch einen weiteren: Wenn er mehrere Programme hat, nehmen die Druckertreiber und Fonts nur einmal Platz auf der Platte weg. Praktisch alle aktuell gepflegten Atari-Programme, die drucken, unterstützen GDOS.
2.4: 09.01.1995
2.5: 21.02.1995
2.6: 29.05.1995
2.7: 17.08.1995
2.8: 09.01.1996
2.9: 06.05.1996
3.0: 09.02.1997
3.1: 01.05.1998
3.2: 10.05.1998
Name | Datum | Länge | Vertrieb | Fehler | Sonst. | Fonts | |
1 | 2 | ||||||
HP_LJET | 22.02.89 | 45512 | BELA | ? | ? | n.g. | LS |
HP_LASER | 25.09.89 | 36928 | Atari,I | ? | ? | LS | |
LASERJET | 06.03.91 | 54517 | Atari | ? | ? | LS | |
LASERJET | 27.01.92 | 60194 | FontGDOS,I | ? | n | LS, OTL | |
LASERJET | 28.01.93 | 61907 | SGDOS 4.0 | ? | n | LS, SPD | |
LASERJET | 02.07.93 | 64408 | SGDOS 4.2 | ? | n | LS,SPD,TT,T1 | |
HPL150 | 12.04.86 | 51541 | wt | ? | ? | 150dpi | LL |
HPL300 | 24.04.86 | 51541 | CL,wt | ? | ? | LS | |
DESKJET | 13.05.92 | 45637 | BELA | ? | ? | g. | LS? |
DESKJET | 14.05.91 | 46040 | CL,WT | ? | ? | g. | 300x600 |
DESKJET | 06.03.91 | 54285 | Atari,I | ? | ? | LS? | |
DESKJET | ? | 45618 | ? | ? | ? | g. | LS |
DESKJET | ? | 45285 | ? | ? | ? | g. | LS |
DESKJET5 | 14.05.91 | 46040 | CL,WT | ? | ? | delta | LS |
DJ5 | 27.01.92 | 60600 | FontGDOS,I | ? | n | OTL | |
DJ5 | ? | 60538 | ? | ? | ? | ? | |
DJ5 | 28.01.93 | 62251 | SGDOS 4.0 | ? | n | SPD | |
DJ5 | 02.07.93 | 64319 | SGDOS 4.2 | ? | n | SPD,TT,T1 | |
DJ550C | 11.10.93 | 68870 | SGDOS 5.0 | ? | n | LS,SPD,TT,T1 | |
DJ550C | 11.10.93 | 68870 | T.R. | ? | n | LS,SPD,TT,T1 | |
DJ_550C2 | 14.04.94 | 68746 | SGDOS 5.0 | ? | n | LS,SPD,TT,T1 | |
DJ_500C | 14.04.94 | 68761 | SGDOS 5.0 | ? | n | LS,SPD,TT,T1 | |
DJ_510 | 17.05.94 | 61921 | SGDOS 5.0 | ? | n | LS,SPD,TT,T1 | |
DJ_510T | 17.05.94 | 61925 | SGDOS 5.0 | ? | n | LS,SPD,TT,T1 |
Name | Datum | Länge | Vertrieb | Fehler | Sonst. | Fonts | |
1 | 2 | ||||||
BJ10E | 20.11.90 | 45917 | WT | ? | ? | NC | |
BJ10 | 20.11.85 | 45919 | CL | ? | ? | NC | |
BJ10 | 28.08.91 | 45660 | BELA | ? | ? | NC | |
BJ10 | 27.01.92 | 59715 | FontGDOS,I | ? | n | NC, OTL | |
BJ10 | 28.01.93 | 61428 | SGDOS 4.0 | ? | n | NC, SPD | |
BJ10 | 02.07.93 | 63496 | SGDOS 4.2 | ? | n | NC,SPD,TT,T1 | |
STYLUS | 25.04.94 | 60848 | SGDOS 5.0 | ? | n | NC,SPD,TT,T1 | |
MT90 | 21.12.90 | 44881 | BELA | ? | ? | 180dpi | SP |
PAINTJET | 27.01.92 | 60005 | FontGDOS | ? | n | SP, OTL | |
PAINTJET | ? | 60173 | ? | ? | ? | SP | |
PAINTJET | 28.01.93 | 61648 | SGDOS 4.0 | ? | n | SP, SPD | |
PAINTJET | 02.07.93 | 63642 | SGDOS 4.2 | ? | n | SP,SPD,TT,T1 | |
PAINTJET | 14.08.92 | 60173 | I | ? | ? | SP, OTL | |
PAINTJET | 13.10.91 | 45934 | WT | ? | ? | SP |
Name | Datum | Länge | Vertrieb | Fehler | Sonst. | Fonts | |
1 | 2 | ||||||
FX240DPI | 22.12.89 | 45396 | BELA | j | ? | SR | |
FX80 | 22.12.89 | 45396 | BELA,wt | n | ? | EP | |
FX80_2 | 12.06.91 | 45396 | I | ? | ? | EP | |
FX80 | 24.09.91 | 45525 | CL | ? | ? | EP | |
FX80 | 16.12.87 | 45396 | Atari | n | ? | EP | |
FX80 | 27.01.92 | 59236 | FontGDOS,I | n | n | FF | EP, OTL |
FX80 | 28.01.93 | 61111 | SGDOS 4.0 | ? | n | EP, SPD | |
FX80 | 02.07.93 | 63177 | SGDOS 4.2 | ? | n | EP,SPD,TT,T1 | |
FX80HIGH | 22.01.89 | 44730 | Atari,I | n | ? | SR | |
FX80_QD | 24.09.91 | 45525 | WT | ? | ? | EP | |
NX1000 | 27.01.92 | 58719 | FontGDOS | n | n | EP, OTL | |
NX1000 | 28.01.93 | 60723 | SGDOS 4.0 | ? | n | EP, SPD | |
NX1000 | 02.07.93 | 62717 | SGDOS 4.2 | ? | n | EP,SPD,TT,T1 | |
NX1000 | 14.08.92 | 58887 | I | ? | ? | EP, OTL | |
OKI20 | 27.01.92 | 58491 | FontGDOS | n | n | EP, OTL | |
OKI20 | 28.01.93 | 60495 | SGDOS 4.0 | ? | n | EP, SPD | |
OKI20 | 17.03.93 | 60511 | SGDOS 4.2 | ? | n | EP,SPD,TT,T1 | |
OKI20 | 14.08.92 | 58659 | I | ? | ? | EP, OTL | |
SMM804 | 16.12.87 | 44801 | Atari | ? | ? | LB | |
SMM804_2 | 16.06.91 | 44801 | I | ? | ? | LB | |
SMM804 | 27.01.92 | 59201 | FontGDOS,I | ? | n | LB, OTL | |
SMM804 | 28.01.93 | 61076 | SGDOS 4.0 | ? | n | LB, SPD | |
SMM804 | 02.07.93 | 63142 | SGDOS 4.2 | ? | n | LB,SPD,TT,T1 |
Name | Datum | Länge | Vertrieb | Fehler | Sonst. | Fonts | |
1 | 2 | ||||||
EPSON360 | 04.04.90 | 45619 | BELA | j | ? | NC | |
EPSON360 | 16.09.92 | 45547 | WT | ? | ? | 180x360 | ? |
EPSLQPAR | 14.02.91 | 44939 | I | ? | ? | ? | |
LQ_500 | 15.11.93 | 68068 | T.R. | ? | n | SP,SPD,TT,T1 | |
LQ570 | 28.01.93 | 62051 | SGDOS 4.0 | ? | n | SPD | |
LQ570 | 02.07.93 | 64228 | SGDOS 4.2 | ? | n | SPD,TT,T1 | |
LQ_800 | 15.11.93 | 68068 | T.R. | ? | n | SP,SPD,TT,T1 | |
LQ_850 | 15.11.93 | 68068 | SGDOS 5.0 | ? | n | SP,SPD,TT,T1 | |
LQ_850 | 15.11.93 | 68068 | T.R. | ? | n | SP,SPD,TT,T1 | |
LQ_1000 | 15.11.93 | 68068 | T.R. | ? | n | SP,SPD,TT,T1 | |
LQ_1050 | 15.11.93 | 68068 | T.R. | ? | n | SP,SPD,TT,T1 | |
LX800 | 14.11.93 | 67989 | T.R. | ? | n | SP,SPD,TT,T1 | |
NB15 | 22.12.89 | 44881 | BELA,wt | n | ? | SP | |
NB15 | 16.12.87 | 44881 | Atari,CL | n | ? | SP | |
NB15_2 | 12.06.91 | 44881 | I | ? | ? | SP | |
NB15 | 27.01.92 | 59121 | FontGDOS,I | n | n | SP, OTL | |
NB15 | 28.01.93 | 60989 | SGDOS 4.0 | n | n | SP, SPD | |
NB15 | 02.07.93 | 63055 | SGDOS 4.2 | n | n | SP,SPD,TT,T1 | |
NECP6 | 12.04.80 | 45199 | wt | ? | ? | NC | |
NECP6 | 10.04.91 | 45619 | BELA | j | ? | NC | |
NECP6 | 06.02.86 | 44906 | Atari,I | j | ? | NC | |
NECP6_2 | 28.06.91 | 46557 | I | ? | ? | NC | |
NECP | 27.01.92 | 59516 | FontGDOS | j | n | NC, OTL | |
NECP | 28.01.93 | 61229 | SGDOS 4.0 | ? | n | NC, SPD | |
NECP | 02.07.93 | 63297 | SGDOS 4.2 | ? | n | NC,SPD,TT,T1 | |
NEC_P | 14.08.92 | 59516 | I | ? | ? | NC, OTL | |
P24M | 08.04.89 | 47104 | I | ? | ? | ? | |
P24ML | 08.04.89 | 47104 | I | ? | ? | ? | |
P24MWID | 08.04.89 | 47104 | I | ? | ? | ? | |
P24MWIDL | 08.04.89 | 47104 | I | ? | ? | ? |
Name | Datum | Länge | Vertrieb | Fehler | Sonst. | Fonts | |
1 | 2 | ||||||
RICOH12 | 23.06.92 | 45438 | WT | ? | ? | 400dpi | ? |
HP_LJET | 22.02.89 | 45512 | BELA | ? | ? | n.g. | LS |
HP_LASER | 25.09.89 | 36928 | Atari,I | ? | ? | LS | |
LASERJET | 06.03.91 | 54517 | Atari | ? | ? | LS | |
LASERJET | 27.01.92 | 60194 | FontGDOS,I | ? | n | LS, OTL | |
LASERJET | 28.01.93 | 61907 | SGDOS 4.0 | ? | n | LS, SPD | |
LASERJET | 02.07.93 | 64408 | SGDOS 4.2 | ? | n | LS,SPD,TT,T1 | |
HPL150 | 12.04.86 | 51541 | wt | ? | ? | 150dpi | LL |
HPL300 | 24.04.86 | 51541 | CL,wt | ? | ? | LS | |
LJ4_300 | 12.01.94 | 61910 | SGDOS 5.0 | ? | n | LS,SPD,TT,T1 | |
LJ4_600 | 12.01.94 | 61910 | SGDOS 5.0 | ? | n | SPD,TT,T1 | |
DESKJET | 13.05.92 | 45637 | BELA | ? | ? | g. | LS |
DESKJET | 14.05.91 | 46040 | CL | ? | ? | LS | |
DESKJET | 06.03.91 | 54285 | Atari,I | ? | ? | LS | |
CANONLBP | 26.09.89 | 36980 | Atari,I | ? | ? | LS | |
LBP | 13.01.92 | 45453 | WT | ? | ? | LS |
Name | Datum | Länge | Vertrieb | Fehler | Sonst. | Fonts | |
1 | 2 | ||||||
SLM804 | 12.04.91 | 47496 | BELA | ? | n | LS | |
SLM804 | 16.12.87 | 45788 | Atari,I,CL,wt | ? | j | LS | |
SLM | 12.12.90 | 48399 | Language | ? | ? | LS | |
SLM | 27.01.92 | 60036 | FontGDOS,I | ? | n | LS, OTL | |
SLM | 28.01.93 | 61911 | SGDOS 4.0 | ? | n | LS, SPD | |
SLM | 02.07.93 | 63987 | SGDOS 4.2 | ? | n | LS,SPD,TT,T1 | |
SLM_HS | 17.01.94 | 63663 | ROM | ? | n | LS, SPD |
Hat man sich erst einmal daran gewöhnt, will man nie wieder ohne leben: die Benutzeroberfläche kommt einem sonst zäh wie Honig vor. Ich will nie wieder ohne NVDI an einem Atari arbeiten. Andere behaupten dasselbe von WARP 9. WARP 9 hat inzwischen keine Bedeutung mehr.
Bei NVDI werden die Treiber für die ST- und TT- und Falcon-Auflösungen durch stark optimierte Treiber ersetzt. Welche Treiber WARP 9 ersetzt, weiß ich leider nicht.
NVDI gibt es bei Behne&Behne und enthält neben den Treibern auch ein GDOS und ein Handbuch, das alle VDI-Aufrufe genau beschreibt. Seit Version 3.0 sind die VDI-Aufrufe nicht mehr im Handbuch enthalten. Dafür gibt es jetzt den frei kopierbaren ascii-Text nvdiguid.
WARP 9 gibt es bei CodeHead. NVDI ist vor allem in Deutschland verbreitet, WARP 9 vor allem in den USA.
Im Gegensatz zu NVDI beschleunigt WARP 9 nur die Textausgabe. Graphik bleibt mit WARP 9 also fast so zäh wie vorher. WARP 9 arbeitet inzwischen auch mit MultiTOS zusammen. Es läuft auch auf dem Falcon, ich weiß aber nicht, ob es dabei auch alle Auflösungen unterstützt.
Name | Datum | Länge | Vertrieb | Fehler | Sonst. | Fonts | |
1 | 2 | ||||||
META | 11.04.89 | 5644 | I | ? | ? | MF | |
META | 08.10.88 | 9325 | BELA | ? | ? | MF | |
META | 16.12.87 | 9325 | Atari | ? | ? | MF | |
META_2 | 14.06.91 | 9325 | I | ? | ? | MF | |
META | 27.01.92 | 9718 | FontGDOS | ? | n | MF, OTL | |
META | 28.01.93 | 9733 | SGDOS 4.0 | ? | n | MF, SPD | |
META | 02.07.93 | 11174 | SGDOS 4.2 | ? | n | MF,SPD,TT,T1 | |
MEMORY | 27.01.92 | 58397 | FontGDOS | ? | n | LS, OTL | |
MEMORY | 28.01.93 | 60265 | SGDOS 4.0 | ? | n | LS, SPD | |
MEMORY | 02.07.93 | 62331 | SGDOS 4.2 | ? | n | LS,SPD,TT,T1 | |
MEMORY_2 | 10.10.94 | 67274 | T.R. | ? | n | LS,SPD,TT,T1 | |
CYPRESS | ? | ? | ? | ? | ? | MEMORY | ? |
PSCRIPT | 14.10.92 | 33016 | WT | ? | ? | ? | |
HPGL | 08.07.91 | 48885 | ST458 | ? | ? | V 1.4r2 | ? |
ZEBRA | 07.12.91 | 45746 | WT | ? | ? | ? | |
T_OFFICE | ? | ? | wt | ? | ? | 98/196dpi | ? |
T_OFFICE | ? | ? | wt | ? | ? | 98/196dpi | SPD |
IMG-0300 | ? | ? | Reschke,wt | n | ? | LS |
v_openwk
Binding hat nicht alle nötigen Parameter, um
diesen Treiber zu öffnen. Falls nicht mit der Programmiersprache
mitgeliefert, muß man dieses Binding selbst schreiben. Ein Listing
dazu findet sich in [Pru93c].
Die oben aufgeführten Memory-Treiber können nur schwarz/weiß ausgeben
und haben eine logische Auflösung von 300 dpi.
Die von mir getesteten (Matrix-) Treiber verkraften es problemlos, wenn
man Fonts anmeldet, die eigentlich für andere Treiber sind. Der
Memory-Treiber
sollte deshalb trotz der logischen Auflösung von 300 dpi auch mit
Bildschirm-Fonts zurechtkommen.
Problematisch ist aber, daß die Aspect-Ratio (das Verhältnis von
Pixelbreite zu Pixelhöhe) im allgemeinen nicht mit der
Bildschirmauflösung übereinstimmt. Das hat zur Folge, daß
beispielsweise
Kreise als Ellipsen dargestellt werden.
Mit NVDI ab Version 2.5 kann man die Ausgaben auch auf offscreen-Bitmaps
machen. Man kann dort beliebige GDOS-Ausgaben machen und das Ergebnis dann
gegebenenfalls in die Fenster des Bildschirms kopieren.
Treiber | Datum |
PINPRN.SYS | 19.10.94 |
PAGEPRN.SYS | 19.10.94 |
IMG.SYS | 30.10.94 |
MEMORY.SYS | 18.10.94 |
META.SYS | 18.10.94 |
ATARILS.SYS | 18.10.94 |
Treiber | Datum | Farben |
OFF002.NOD | 06.11.94 | 2 |
OFF004IP.NOD | 06.11.94 | 4 |
OFF016IP.NOD | 06.11.94 | 16 |
OFF256IP.NOD | 06.11.94 | 256 |
OFF32KFL.NOD | 06.11.94 | 32768 |
Diese Steuercodes werden in den .INF-Dateien der jeweiligen Treiber gespeichert. Ein Wermutstropfen: man kann die Druckeranpassungen nicht einfach austauschen, da weder das Format der .INF-Dateien dokumentiert ist, noch ein Programm existiert, mit dem man die Anpassungen extrahieren oder hinzufügen kann. Lediglich ein kompletter Austausch der .INF-Dateien ist möglich. Einzige Lösung zur Zeit: die komplette .INF-Datei an 2B schicken.
Ein weiteres Problem, das im Handbuch nicht einmal erwähnt ist, besteht beim Anmelden von Bitmap-Fonts in der ASSIGN.SYS. Nehmen wir an, es seien für den PINPRN.SYS 180 dpi-Fonts angemeldet. Jetzt kann man leicht mit Hilfe des CPX auf 360 dpi schalten. Der Ausdruck wird dann aber katastrofürchterlich.
Des Rätsels Lösung: Es ist die Datei PINPRN.SYS ein zweites Mal unter anderem Namen (z.B. PINPRN2.SYS) in den GEMSYS-Ordner zu kopieren. Dieser Treiber kann dann auch in der ASSIGN.SYS angemeldet werden, diesmal aber mit Fonts anderer Auflösung. Fazit: Die Treiber sind konzeptionell wesentlich besser als die von SpeedoGDOS 5.0.
vq_extnd
) liefert
teilweise nicht die Werte zurück, wie sie beispielsweise
im Profibuch dokumentiert sind.
Er war in den Libraries der Treiber-Sourcen von Atari und ist damit wahrscheinlich in allen Treibern bis auf NVDI und SpeedoGDOS enthalten.
Ein weiterer Grund, der gegen die Verwendung der Attributs outlined spricht, ist folgender: Wenn man einen Treiber dazu zwingt, einen outlined- Font aus einem normalen Font zu berechnen, wird er grob gesagt um zwei Pixel breiter. Da ein Pixel (im Gegensatz zu einem angepaßten Font) eine auflösungsabhängige Breite hat, ist ein Text in jeder Auflösung unterschiedlich breit. Es ist aber völlig unerwünscht, wenn ein Text auf unterschiedlichen Druckern eine unterschiedliche Breite hat. Die einzige Methode, dem entgegenzuwirken, wäre Letterspacing. Das aber ist typographischer Pfusch.
Um diese Verwirrung aufzulösen, definiere ich für dieses FAQ:
Macintosh TrueType-Format in der Macintosh-Darstellung,
Macintosh TrueType-Format in der Windows-Darstellung,
TrueType für Windows-Format in der Macintosh-Darstellung,
TrueType für Windows-Format in der Windows-Darstellung.
Es läßt sich dann auch einfacher ausdrücken, daß SpeedoGDOS 5.0 und NVDI 3.0 die Windows-Darstellung brauchen, unabhängig davon, ob es das Windows- oder Macintosh-Format ist. Wenn man die Fonts auf einem Mac (in Mac-Darstellung) installiert, dann stehen sie unter MagiCMac mit NVDI für MagiCMac auch zur Verfügung.
Bei den GDOS-Bitmap-Fonts sind die Breiteninformationen sowohl im Bildschirmzeichensatz als auch in den Druckerzeichensätzen definiert. Leider waren die Fontdesigner etwas übereifrig und haben die Breite der Bildschirmzeichen vieler Fonts so angepaßt, daß sie besonders schön aussehen. Damit sind sie zwar schön, stimmen aber nicht mit den Druckerzeichensätzen überein und erlauben kein WYSIWYG.
Im Internet kursieren jede Menge Fonts, die nur für den Bildschirm und vielleicht noch für einen Drucker geeignet sind. Jeder, der diese Fonts verwendet, muß sich darüber im klaren sein, daß er Dokumente mit diesen Fonts niemals sauber über GDOS ausdrucken können wird.
Dagegen werden im Atari - und im BELA-Paket die jeweiligen Fonts für alle Druckertreiber des jeweiligen Pakets mitgeliefert (Im Atari -Paket fehlen die 360x360dpi-Fonts). Man kann dann - ein geeignetes Programm vorausgesetzt - jedes Dokument mit jedem Druckertreiber ausdrucken.
Im folgenden kommt einiges an Hintergrundwissen über Vektorformate. Weshalb sollte sich aber der geneigte Leser die Mühe machen, das zu verinnerlichen? Schließlich kaufen wir für ein paar Mark eine Font-CD, wählen die 17 interessantesten Fonts für unser erstes Plakat aus und drucken das Ergebnis dann aus.
Die Probleme sind: Ich habe ein und denselben Schnitt in mehreren Formaten. Welchen soll ich nehmen? Manchmal habe ich nur beim Drucken, manchmal nur auf dem Bildschirm und manchmal nur bei bestimmten Größen Probleme. Warum?
Wer allerdings 17 Garamond-Schnitte von 17 Herstellern hat, sollte eher Zeitschriften wie die Page lesen, um zu wissen, welche er nehmen soll.
Manche Schnitte von Bitstream haben "BT" im Namen, andere "SWA". BT steht für "Bitstream Type", "SWA" für "Set Width Adjusted". Die SWA-Schnitte unterscheiden sich im Design der Zeichen nicht von den korresponierenden Schnitten ohne SWA. Lediglich der Zeichenabstand ist verändert, damit die Bildschirmdarstellung mit den eingebauten Schnitten spezieller Drucker übereinstimmt. Es ist also sinnvoll, die SWA-Schnitte nur dann zu verwenden, wenn man tatsächlich einen solchen Drucker hat und weiß, daß der Schnitt von dem Drucker mit dem druckereigenen Zeichensatz gedruckt wird. Das ist unter GDOS aber nie der Fall.
Es ist ein Irrtum anzunehmen, PS-Interpreter würden Type 1-Fonts verwenden, nur weil der Original PS-Interpreter von Adobe dies tut. Ein PS-Interpreter verwendet das Fontformat, das der Hersteller des Interpreters will. Nur auf eines kann man sich ziemlich sicher verlassen: ein PS-Dokument sieht auf dem Bildschirm anders aus als auf dem Drucker.
Genau.
Unter Windows kann ich jetzt MM Fonts verwenden, aber was mache ich mit meinem alten Postscript-Drucker?
Kein Problem, der kann das trotzdem.
Wie das?
Ich habe doch schon erwähnt, daß Vektorfonts eigentlich Algorithmen darstellen. Adobe hat einfach einen neuen Operator definiert.
Den beherrscht mein alter Postscript-Drucker doch nicht.
Richtig. Man kann die Definition des Operators aber auch im Font selbst mitliefern. So wird das zur Zeit auch gemacht. Deshalb können das auch die alten Postscript-Drucker.
Dann kann das aber auch der Scaler meines SpeedoGDOS, oder?
Eben. Man müßte nur die Programmierschnittstelle anpassen. Aus diesem Grund gibt es auch für Windows eine neue ATM-Version.
Super! Dann bräuchte ich auch nicht mehr 50 Schnitte pro Font kaufen.
Und für ein Eis reicht dein Geld dann auch noch ;-)
Die MM-Technologie ist insofern nicht der Weisheit letzter Schluß, als nur ein linearer Übergang zwischen extremschnitten möglich ist. Ein nichtlinearer Übergang wäre noch interessanter.
Der erste MM-Font überhaupt ist die Groteskschrift Myriad von Carol Twombly und Robert Slimbach.
Der Unterschied zwischen dem Apple-Format und dem Microsoft-Format ist also lediglich, daß Microsoft mehr Tabellen als zwingend notwendig erklärt hat. Außerdem ist beim Vorhandensein bestimmter Flags die Reihenfolge der Glyphen fest vorgeschrieben. Eine Definition des Microsoft-Formats findet sich in [Mic].
Informationen gibt es von der APDA, der Apple developer support organization
(EMail: apda@applelink.apple.com). Dort gibt es das TrueType Book, das TrueType 1.0 beschreibt, und das QuickDraw GX Font Formats book, das die GX-Erweiterungen enthält.
Da TrueType 2.0 neue Tabellen enthält, müssen (im Gegensatz zu Multiple Master Fonts) die Scaler umgeschrieben werden, um diese Technologie zu verwenden.
Was aber macht eine Umwandlung so schwierig? Anders gefragt: Welche Informationen werden wie gespeichert?
Damit alle Fontformate für eine Applikation gleich aussehen, wandelt
SpeedoGDOS auch TrueType-Zeichen für v_getoutline
in kubische
Bézier-Kurven. Mir wäre es lieber, in diesem Fall optional quadratische
Bézier-Kurven zurückzubekommen, die v_bez_fill
dann auch verarbeiten
sollte.
Quadratische Bézier-Kurven sind zwar deutlich schneller als kubische Bézier-Kurven, es werden aber ca. 4 mal soviele Punkte benötigt.
Dagegen habe ich TrueType-Fonts gefunden, die auf dem Bildschirm an Häßlichkeit kaum zu überbieten sind. Das drückt sich beispielsweise darin aus, daß die beiden senkrechten Striche eines n unterschiedliche Dicken haben, einmal 1 Pixel und einmal 2 Pixel.
Die Methode zur Vermeidung solcher Rundungsfehler sind Hints. Hints haben je nach Hersteller unterschiedliche Namen: Hints bei Adobe, instructions bei Apple oder switches bei URW.
Dieses Verfahren wird von Speedo, Type 1 und TrueType beherrscht (nicht aber von Type 3 und CFN). Wenn Hints vom Format her möglich sind, heißt das noch lange nicht, daß sie auch verwendet werden (deshalb haben andere auch umgekehrte Erfahrungen mit den Formaten gemacht wie ich).
Also: Speedo-, Type 1- und TrueType-Fonts können auf dem Bildschirm sehr gut aussehen, während das bei Type 3 und CFN nicht möglich ist.
Bis jetzt ist angedeutet, was Hints machen und in welchen Formaten sie vorkommen. Aber wie machen sie das? Bestimmte Teile von Schriftzeichen haben eine Bedeutung, wie Serife, Bogen etc. Diese Bedeutung wird neben den Umrissen der Zeichen mitgespeichert. Mit dieser Information kann dann der Scaler dafür sorgen, daß beispielsweise alle senkrechten Striche im 'n' auf dem Bildschirm gleich dick sind. Näheres siehe [Kar92a].
Type 1 zeichnet sich gegenüber anderen Formaten dadurch aus, daß es besonders wenig verschiedene Hints beherrscht. Durch die neue Multiple Master-Technologie hat Type 1 aber wieder deutliche Vorteile.
Anmerkung: v_getoutline
liefert die Umrisse in der Größe, die für
die Workstation aktuell eingestellt ist. Es ist darauf zu achten, daß
je nach Größe die Hints zuschlagen oder auch nicht. Es ist geplant,
v_getoutline
von der aktuellen Fontgröße unabhängig zu machen.
Zur Darstellung eines Fonts in einem Vektorformat muß zunächst ein internes Koordinatensystem gewählt werden. Dazu wird das Geviert (engl: em-Space; ein Quadrat, in das alle Buchstaben einer Schrift passen) unterteilt. Bei CFN geht dieses Geviert von 0 bis 16000, bei Type 1 (das entwickelt wurde, als es noch keine hochauflösenden Drucker gab) von 0 bis 1000. Das führt dazu, daß man mit Type 1-Fonts bei großen Buchstaben oder hoher Auflösung (also im Profibereich) Ecken sieht, wo keine hingehören (Laut [Kar92a] kann die interne Auflösung allerdings durch den DIV-Operator verbessert werden. Der Fonteditor muß das allerdings unterstützen. Wird dies regelmäßig gemacht? Und wird der Scaler dadurch viel langsamer?). CFN spielt hier seine Qualität voll aus.
Bei TrueType kann der Fontdesigner die Auflösung bis zu 16768 frei wählen, wobei Potenzen von zwei aufgrund der höheren Geschwindigkeit bevorzugt werden.
Bei Speedo geht das Geviert von 0 bis 4000 (nur ganze Zahlen?). (Welche interne Auflösung hat OTL? Ist das Bitstream-Format, das in [Kar92a] erwähnt wird, identisch mit dem Speedo-Format?)
Ein Font, der für 16pt designt ist, sieht ganz anders aus, als ein um das 2-fache vergrößerter 8pt-Font (Siehe z.B in Knuth: The METAFONT Book; Kopka: LaTeX, [Kar92a], Page vom Mai 1996 Seite 34 etc.). Ein gut designter Font ist nicht linear skalierbar.
Bei großen Fonts sind die senkrechten Striche im Vergleich zu den Zwischenräumen viel breiter als bei kleinen Fonts. Diese Information zur optischen Skalierung kann man aber auch in einem Font speichern.
Deshalb sollte auch ein Font, der auf dem Bildschirm 20 Pixel hoch ist, anders aussehen (d.h. andere Pixel gesetzt sein) als einer, der auf einem Laserdrucker 20 Pixel hoch ist.
Den Rest dieses Abschnittes haben schon zu viele mißverstanden. Ich bin überhaupt der einzige mir bekannte, der hier ein Problem sieht. Das kann mindestens 3 Ursachen haben:
Vektorfontformate geben dem Fontdesigner die Möglichkeit zu entscheiden, daß ein Schnitt unterhalb einer bestimmten Größe in Punkten oder in Pixeln anders aussieht. Es ist beispielsweise sinnvoll, einen Schnitt bei kleiner Größe in Punkten breiter werden zu lassen [Kar92a], und zwar unabhängig davon, wie gut der Drucker ist.
Stellen wir also einen kleinen Text in einem Fenster dar, sagen wir mit einer Größe von 8pt. Und der Fontdesigner hat entschieden, daß der verwendete Schnitt bei 8pt oder kleiner etwas breiter wird.
Ein zweites Fenster verwenden wir nun als Lupe, um den selben Text um den Faktor 2 vergrößert darzustellen. Fast jede Textverarbeitung hat eine solche Lupenfunktion.
Dieser zweite Text im Lupenfenster müßte jetzt eigentlich immer noch automatisch wie eine 8pt-Schrift verbreitert werden, ohne daß der Programmierer der Textverarbeitung etwas davon merkt.
Leider muß aber der Programmierer im Lupenfenster die Schrift in 16pt ausgeben, was dazu führt, daß die Entscheidung des Fontdesigners, diese 8pt-Schrift breiter darzustellen, ignoriert wird!
zur Lösung dieses Problems gibt es mehrere Wege:
v_getbitmap_info
sowohl die lineare als auch die
optische Skalierung frei wählen könnte.
Sollen dagegen verschiedene optische Skalierungen in einem Dokument auftauchen, muß nachträglich die logische Pixelgröße geändert werden, oder man muß bei der Fontgröße die lineare und die optische Skalierung angeben.
Siehe auch Kapitel Pixelfonts. Hat das irgend jemand verstanden?
Im einzelnen:
Hersteller | Drucker | Passende Treiber |
NEC | P6+, P7+, | NECP... |
NEC | P60, P70 | NB15 (FX..., NX1000) |
HP | LaserJet II | HP_LJET |
HP | DeskJet, LaserJet III, IV | DESKJET (HP_LJET) |
CANON | BJ10E | BJ10 |
CANON | LBP 4/8 | CANONLBP, LBP |
Mannesmann-Tally | MT 90 | MT90 |
Epson | Stylus 800 | STYLUS |
Mit manchen DeskJet-Treibern soll es Probleme geben. Versuchen Sie es in diesem Fall mit einem LaserJet-Treiber. Der Ausdruck dauert dann aufgrund des größeren Datenvolumens etwas länger, die Probleme sollten aber behoben sein.
Die BJ10-Treiber bauen auf die Proprinter-Emulation auf. Der Drucker darf mit diesen Treibern nicht im Epson-Modus betrieben werden.
Beim Stylus sollte kein Treiber für 24-Nadler verwendet werden. Die einzelnen Nadeln der 24-Nadel-Drucker überlappen (im Gegensatz zum Stylus), weshalb die Treiber manche Punkte herausoptimieren und gar nicht erst drucken.
Was kompatibel heißt, bestimmen normalerweise nur die Hersteller der kompatiblen Drucker.
Anmerkungen:
CAN CR ESC "@"schickt jeden BJ, der auf "Emulation Autodetect" steht, in den Epson-Modus. Die korrekte Startsequenz ist
CAN CR ESC "[K" $02 $00 $00 "$"(Set initial Condition: BJ emulation mode), sowohl für 180 dpi als auch für 360 dpi.
Programmart | Programm | Vertrieb | Speedo |
Chart/Meßwertanalyse | Xact | SciLab | ja |
MM-Graph | Overscan | ||
Off-Axis | ByTech | Ja | |
DATA Professional 4 | Ralf Wirtz | ||
MessPlot | Michael Siek (Shareware) | (ja) | |
DPE | MAXON Sonderdisk | ||
GRAPH | Hans-C Ostendorf (Shareware) | ja | |
IMAGIN 3.2 | Reinhard Maier | ja | |
rho-Analyse | rhotron GmbH | ja | |
BStat | ja | ||
Graphik | Xact Draw | SciLab | ja |
KandinskY | U. Roßgoderer (Shareware) | ja | |
TRIPLE_D | U. Roßgoderer (Postcard) | ja* | |
Chagall | Trade-iT | ja* | |
Easydraw | MIGRAPH | ||
TouchUp | MIGRAPH | ||
GEM-View | D. Fiebelkorn (Shareware) | ja* | |
CHARLY IMAGE | Wilhelm Mikroel. | ja* | |
STELLA | Thomas Künneth | ja | |
GPCLIENT für GNUPLOT | ja | ||
ASH-ArtWorx | ASH | ja | |
Tarkus 3.0 | Eickmann Computer | ja | |
Tabellenkalkulation | LDW Power Calc 2 | COMPO | |
K_Spread_4 | Omikron | ||
Graal Calc 3 | Editions Profil | ||
Atari Works | Atari Corp. | ja | |
OPUS | Doug Harrison (PD) | nein | |
BASiChart | Dr. Ackermann | ja | |
TEXEL | ASH | ja | |
Text/DTP | Calligrapher | Working Title | |
Wordflair II | H3 | ||
Timeworks Publisher | GST/H3 | ||
G&D Text II | Hard & Soft | ||
Cypress | (Gregor Duchalski) | ||
papyrus (Gold) S | R.O.M. | ja | |
Infinity | ByTech GbR | ||
Atari Works | Atari Corp. | ja | |
7Up | ja | ||
1st Word Plus 4 | GST/ICP | ja | |
Tempus Word | CCD | ja | |
Gut'nberg | BlowUp | ja | |
JAnE | DeltaLabs | ja | |
QED | Quellenberg/Felsch (PD) | ja | |
Signum!4 | ASH | ja | |
TWIST 3 Office | MAXON | ja | |
Script | ja | ||
Calamus | |||
HYP2GDOS | Martin Osieka (Freeware) | ja | |
Fax | Junior Office | TKR | ja |
Tele Office | TKR | ja | |
CoMa | SoftBär GbR | ja | |
Straight Fax! | Toad Computer | ja | |
Simulation dyn. Syst. | Dynasys | Digital Systems & Consulting | |
Text/Listendruck | IdeaList | Chr. Bartholme (Shareware) | ja |
ProList | Richstein & Dick | ja | |
Chem. Darstellung | Monoklin 2.0 | MAXON Sonderdisk | |
Chemograph Plus | DigiLab | ||
Platinenlayout | Route iT! \& Circu iT! | Think! | ja |
Platon | VHS | ja* | |
Vektorisierung | Convector Zwei | ZYN / TEAM | |
Hardcopy | rhocopy | rhotron | |
Disk-Inhaltsverzeich. | TreeView 2.4 | Stephan Gerle | |
Fraktale | Fractals V | Harald+Martin Hansen | |
PS-Interpreter | Postman | SILICON Technology | |
Konkordanz | Concordance | SPIRIT WARE* | |
Packershell f. MTOS | MARC 4.0 | Think! | ja |
Logikanalysator | CLA v2r1 | Craig Graham (Shareware) | ja |
Adreßverwaltung | Pegasus | Pergamon Software | ja |
Symbolische Mathematik | Riemann II | Begemann & Niemeyer | |
Solutions | Elan Software | ||
Datenbank | Atari Works | Atari Corp. | ja |
TWIST 3 Office | MAXON | ja | |
Notendruck | MIDI File Printer | ST 677 (PD) | |
CASE (Nassi-Shneider.) | UpToCase | Michael Nolte | ja |
Fakturierung | Kundendirektor Plus | Autor: Michael Kammerlander Vertrieb: DeltaLabs | ja |
Desktop | EASE ab V.3.1 | ASH | |
Othello (Spiel) | Stello | Claus J. Pedersen | ja |
Telefonbuch-CD | Teleinfo | R.O.M | ja |
Scan-Kopierer | Scancopy | Axel Steffens @ B | ja |
IMG-Drucker | Image-Print | Lorenz Bartelsen @ KI | ja |
html-Browser | CAB | Alexander Clauss (Freeware) | ja |
ftp://ftp.cs.tu-berlin.de/pub/atari/Graphic/kand251
Apropos TEXEL: Nimmt man zu jedem Buchstaben des Namen MUCH den Folgebuchstaben, so kommt NVDI raus ;-))))) (genau wie HAL zu IBM und VMS zu WNT wird)
Das Programm fontfix ist im Internet an folgenden Orten zu finden:
ftp://ftp.uni-muenster.de/pub/atari/Applications/Dtp/Fonts/Gdos
ftp://ftp.cs.tu-berlin.de /pub/atari/utils
Dateiname: OUTLINE.PRG alias OUTLINE.ACC, 67644 Bytes
SpeedoGDOS 5.0: 49254 Bytes Wird bei SpeedoGDOS mitgeliefert. Warum hat es Atari eigentlich nicht geschafft, die Programme mit einer Versionsnummer auszustatten?
SpeedoGDOS 5.0: DRIVER.PRG, 41592 Bytes
Bevor man dieses Programm startet, sollte eine Sicherheitskopie der ASSIGN.SYS angelegt werden! Dafür gibt es (mindestens) zwei Gründe. Erstens werden die Informationen über die Bitmap-Fonts kommentarlos hinausgeworfen und zweitens wird - falls man unter Benutzereigen den Knopf Hinzufügen drückt - die ASSIGN.SYS überschrieben, ohne daß man das mit Abbruch im Hauptmenu wieder rückgängig machen kann. An alle Programmierer: macht so etwas bloß nicht nach.
Sollte das Programm einmal keine Treiber anzeigen, ohne aber eine Fehlermeldung zu bringen, hilft es, ASSIGN.PRG laufen zu lassen.
Von meinen vielen Treibern zeigt dieses Programm nur die Speedo-Treiber an. Weiß jemand, wie das Programm das macht? Außerdem zeigt das Programm nicht den Filenamen an, sondern einen Namen, der als String im Treiber hinterlegt ist. Wie kommt man da dran?
Man kann sich also einen Überblick verschaffen, wenn man gerade kein Programm mit Fontselektor zur Hand hat oder dieses die Font-ID nicht anzeigt.
Eigentlich wollte R.O.M. dieses Programm gratis auf die SpeedoGDOS 4.2-Disketten packen. Das ging aber nicht, weil Helli die MagicLib verwendet hat und das Programm deshalb zu groß wurde. R.O.M. hat es daher separat für 25 DM verkauft, was Helli, obwohl er von R.O.M. für die Auftragsarbeit bezahlt wurde, zu rechtlichen Schritten veranlaßte. Ulli Ramps von R.O.M. wurde das zu bunt, und er erklärte X4U zu einem PD-Programm, was Helli wiederum zu rechtlichen Schritten veranlasste. (Fortsetzung im nächsten Abschnitt)
Charmap heißt aber auch Peter Hellingers Weiterentwicklung von X4U, die in der Version 0.9 als Freeware frei kopiert werden darf. Läuft nur mit der mitgelieferten MagicLib.
GDOS-Font 1.12 (22.08.94) von Holger Weets @ OL.
Zeigt und bearbeitet GDOS-Fonts und meldet sie in der ASSIGN.SYS an oder ab! => Nie mehr von Hand die ASSIGN.SYS ändern, das erledigt alles GDOSFONT.
Von Christoph Bartholme @ KA2
Dieser Hinweis ist aber von beschränktem Wert, da die meisten Anwender (beim Kauf) gar nicht wissen, wozu sie ihren Rechner eigentlich nutzen wollen. Aber dann ist es eh egal, welchen Fehler sie machen.
Dhrystones gibt vor, die Integerleistung eines Prozessors zu messen. Richtig daran ist, daß die Fließkommaleistung, die Graphikgeschwindigkeit und der Plattendurchsatz nicht gemessen wird.
Der Haken an diesem Programm ist, daß sowohl der Code als auch die bearbeiteten Daten in 64 kB passen, was heutzutage fern jeglicher Realität ist. Heute ist nur interessant, wie schnell ein System ist, wenn sowohl Code, als auch Daten deutlich über dieser Grenze liegen.
Insbesondere bei einer Reihe von Intel-Prozessoren zeigt dieser Benchmark (im (un)geeigneten Modus) einen deutlich besseren Wert an, als in der Praxis bei marktüblichen Applikationen beim Anwender ankommt.
Die Einheit MIPS, mit der oft geworben wird, ist schon länger als Faktor mal Dhrystones definiert, und damit ebenso Praxisfern, wie Dhrystones.
Eine normierte Schnittstelle fehlt bei Fontselektoren, sie bieten ihre Dienste üblicherweise über Cookies an. Selbst der Aufwand, mehrere Fontselektoren über Cookies zu unterstützen, ist aber wesentlich geringer, als selbst einen solchen zu schreiben. Wäre da nicht... aber schauen wir uns zunächst die Kandidaten an.
Bei den Fontselektoren gab es in den letzten Monaten eine rasante Entwicklung, die sich noch nicht im FAQ niedergeschlagen hat. Die Beschreibung der einzelnen Selektoren ist also nicht mehr aktuell und es gibt neue Selektoren, die hier noch nicht aufgeführt sind. Der Abschnitt über WDIALOG ist allerdings aktuell.
In einem Buch von Martin Gardner (falls mich die Erinnerung nicht trügt) habe ich eine ganze Reihe von deutschen und englischen Sätzen mit dieser Eigenschaft gefunden. Leider weiß ich nicht mehr, in welchem meiner 18 Bücher von Martin Gardner das war. Für Hinweise auf diese Sätze in allen Sprachen bin ich dankbar.
Hier einige Beispiele aus der PAGE 1/96:
The quick brown fox jumps over the lazy dog
I pack my box with five dozen liquor jugs
Wolves exit quickly as fanges zoo chimps jabber
Victors flank gyp who mixed job quiz
Six big devils from Japan quickly forgot how to waltz
Oozing quivering jelly fish expectorated by mad hawk
Zwei Boxkämpfer jagen Eva quer durch Sylt
Sylvia wagt quick den Jux bei Pforzheim
Fixquark vom weibtyp geschlejnzt
Oh, welch Zynismus, quiekte Xavers jadegrüne Bratpfanne
Ähnliche Aufgaben hat das Wort OHamburgefons. Dieses Wort enthält zwar nicht alle Buchstaben, aber alle wesentlichen Designelemente, aus denen die Buchstaben eines Alphabets zusammengesetzt sind. Beim Design einer neuen Schrift wird oft in der Reihenfolge der Buchstaben dieses Wortes vorgegangen.
Und für die Poeten unter den Fontselektorautoren (aus The Siege of
Belgrade):
An Austrian Army, awfully arrayed,
Boldly by battery besieged Belgrade;
Cossack commanders cannonading come,
Dealing destruction's devastating doom;
...
Fonts und Größe lassen sich angenehm auswählen. Nach freier Eingabe wird der Font nach einem Doppelklick auf die freie Eingabe angezeigt. Intuitiver fände ich einen Doppelklick auf das Beispiel. Es fehlen die Attribute, und der Selektor steht nur als modaler Dialog zur Verfügung. UFSL wird leider nicht weiterentwickelt.
Dieser Fontselektor gefällt mir ganz ausgezeichnet. Die große Informationsvielfalt wird durch einen gut aufgeteilten Karteikartendialog sehr übersichtlich dargestellt. Auch daß die Schnitte in einem Popup ausgewählt werden, stört nicht mehr wie die vielen Popups in der Version 1.03.
Der Fontselektor zeigt alle wissenswerten Informationen zum ausgewählten Schnitt an; ebenso zeigt er den kompletten Ascii-Zeichensatz an. (Wenn man den jetzt auch noch ausdrucken könnte und auch noch der komplette 16 Bit-Zeichensatz zugänglich wäre...; aber so etwas wage ich von den anderen Fontselektoren noch gar nicht zu wünschen.) XUFSL ist inzwischen von HuGo abgelöst.
Angenehm an diesem Selektor ist, daß er nichtmodal in einem Fenster zur Verfügung steht, wahlweise auch als FlyDial oder normaler Dialog. Der Fontselektor läßt sich nur verwenden, wenn man die Eventverwaltung komplett Magic überläßt, was dem Programmierer eine feste Programmstruktur aufzwingt (funktionierendes muß neugeschrieben werden, anderes geht gar nicht mehr) und weitere Fehler nach sich zieht.
Alles in allem sehr gelungen. Der Fontselektor hat ziemlich genau die Funktionalität (und das Aussehen) wie der von papyrus.
Besonders zu beachten ist die Implementierung der ..._evnt
-Funktionen.
Hier ist verwirklicht, was ich schon lange predige: Systemerweiterungen,
die fertige Dialoge zur Verfügung stellen, dürfen selbst keinen
evnt_multi
-Aufruf machen, sondern müssen die Events vom Hauptprogramm
bekommen. Nachmachen!
Ein Wermutstropfen: WDIALOG verfälscht den appl_getinfo
-Aufruf
unter alternativen Betriebssystemen. Dadurch werden allen Programmen
falsche bzw fehlende Eigenschaften des Betriebssystems vorgespiegelt.
(Dank an Peter Hellinger für diesen Hinweis.)
Dies ist mit Version 1.96 behoben.
Nicht jedes Programm kann mit jedem Font etwas anfangen. Deshalb sollte jedes Programm bestimmen können, welche Schnitte gar nicht angezeigt oder disabled angezeigt werden. Einige Programme können beispielsweise nur mit nichtproportionalen Schriften etwas anfangen. Zusätzlich (aber wegen BASIC nicht ausschließlich) sollte dem Fontselektor eine Prozedurvariable übergeben werden können, die für jeden einzelnen Schnitt aufgerufen zurückmeldet, ob und wie er angezeigt werden soll.
Der Fontselektor öffnet im Namen der Applikation ein Fenster und gibt das Fensterhandle an die Applikation zurück. Die Applikation verwaltet weiter die Events und wenn eines davon das Fenster des Fontselektors betrifft, wird die Information durch einen Prozeduraufruf an den Fontselektor weitergegeben. Durch diesen sehr einfachen Mechanismus können sogar mehrere (systemweite) Fontselektoren, Colorpicker etc. verschiedener Hersteller gleichzeitig in Fenstern auf dem Bildschirm sein.
Dieses Nebeneinander ist nur möglich, wenn die einzelnen
Selektoren (optional) auf eine eigene evnt_multi
-Schleife verzichten.
Praktisch alle Autoren von Utilities wollen dies umgekehrt machen
(und tun dies auch). Deshalb will ich detailliert ausmalen, was passiert,
wenn Utilities den evnt_multi
-Aufruf selbst machen und nicht bearbeitete
Events an die Applikation weitergeben:
In diesem Fall gibt es für eine Applikation mehrere Utilities, die
alle darauf bestehen, den evnt_multi
-Aufruf selbst zu machen. Irgendeines
dieser Utilities führt diesen Aufruf durch, kann ihn nicht bearbeiten
und gibt den Event an die Applikation weiter.
Und nun? Was soll die Applikation machen? Sie kann den Event nicht mehr
an andere Utilities weitergeben, obwohl eines davon für den Event
zuständig ist. Aber alle weigern sich, Events von der Applikation
entgegenzunehmen.
Bei Zuwiderhandlung der Autoren der Utilities kann eine Applikation maximal ein (Fenster-)Utility verwenden.
Der Fontselektor, der mir derzeit am besten gefällt, ist der von papyrus. Leider gibt es ihn nur in papyrus eingebaut.
Ich habe mich schwer darüber gewundert, warum mir der Fontselektor in papyrus soviel besser gefällt als XUFSL 1.03. Dabei enthält doch XUFSL allen Schnickschnack, den die neuen Libraries so bieten. Und vor allem verstößt XUFSL 1.03 gegen keine Designrichtlinie, die ich explizit gelesen habe. Das jetzt folgende gilt für Dialoge im Allgemeinen und nicht speziell für XUFSL 1.03.
Ich versuche also, bewußt zu machen, was mich unbewußt stört. Andere mögen zu anderen Ergebnissen kommen.
Mich stören an solchen Dialogen am meisten die Popups (insbesondere mit Slidern)!
Zeitgemäße Benutzeroberflächen zeichnen sich dadurch aus, daß man auswählt statt einzugeben (wie bei diesen unsäglichen MS-DOS-Programmen). Zu dieser Auswahl gehört es, nachsehen zu können, was es alles gibt.
Und genau das fehlt bei Popups. Vor allem, wenn mehrere in einem Dialog auftreten: man kann nicht bei der Eingabe mal kurz nachsehen (oder noch besser: sehen statt nachsehen), was es sonst noch gibt. Zu allem Überfluß verlangt ein Popup auch noch einem Mausklick, bevor man etwas anderes machen kann.
Für die Theoretiker: damit hat man einen modalen Teil in einem nichtmodalen Dialog oder schlimmer noch in einem sowieso schon modalen Dialog. Und modale Dialoge werden als störend empfunden.
Diese Verwendung von Popups verstößt also gegen die grundlegenden Ideen hinter einer intuitiven Benutzeroberfläche. Ich weiß, Ihr seid alle stolz, Popups - sogar solche mit Slidern - zu beherrschen. Laßt es möglichst trotzdem bleiben.
(z.B. ftp://ftp.cs.tu-berlin.de/pub/atari/.
set search sub
prog speedo- Die Fonts:
font0648.spd -bitstream-charter-medium-r-normal--0-0-0-0-p-0-iso8859-1
font0649.spd -bitstream-charter-medium-i-normal--0-0-0-0-p-0-iso8859-1
font0709.spd -bitstream-charter-bold-r-normal--0-0-0-0-p-0-iso8859-1
font0710.spd -bitstream-charter-bold-i-normal--0-0-0-0-p-0-iso8859-1
font0419.spd -bitstream-courier-medium-r-normal--0-0-0-0-m-0-iso8859-1
font0582.spd -bitstream-courier-medium-i-normal--0-0-0-0-m-0-iso8859-1
font0583.spd -bitstream-courier-bold-r-normal--0-0-0-0-m-0-iso8859-1
font0611.spd -bitstream-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1
telnet archie.th-darmstadt.de
login: archie
help
In den USA z.B.: archie.ans.net Archie zeigt dann automatisch weitere Archie-Rechner an. Verwenden Sie den in Ihrer Nähe. Die Archie-Datenbanken fragen etwa einmal im Monat nacheinander die bekannten FTP-Server nach den öffentlich zugänglichen Files ab. Noch ein kleiner Tip: atari.archive.umich.edu ist immer dicht. Nicht einmal das Spiegeln auf andere Server funktioniert. Man sucht daher besser auf amiga.archive.umich.edu und tippt dort cd atari. Dieser Rechner hat die gleiche Platte gemountet. Aber: Bitte zuerst in der eigenen Umgebung suchen!
Viele Schriften von Bitstream sind auf dieser CD enthalten (eben auch die Zapf Humanist 601). Außerdem sind zwei ITC-Schnitte enthalten. Zu bekommen sind diese CD-ROMs und ein Booklet mit einer Übersicht zumindest bei Vobis (Preis: 69.-DM)
ftp://hensa.micro.ac.uk/atari/tos/n/n196/
Ausnahme: MEMORY_2 befindet sich in
ftp://ftp.cs.tu-berlin.de/pub/atari/GDOS/
Ein Vergleich verschiedener TrueType-CDs findet sich in [Hil95]. Wer ansonsten diese billig-CDs verwendet (jeweils 500 TT-Schnitte für 15 DM), sollte nicht auf Umlaute, Kerning oder ein ausgewogenes Schriftbild bestehen. Dann macht es auch nichts mehr aus, 20 Fonts auf einem Plakat zu verwenden. (Seufz!)
vqt_devinfo
in ptsout
geliefert wird.
Es läuft nur auf 68000ern, weil wahrscheinlich der Interupt-Level
manipuliert wird.
ABC-GDOS kommt aus Holland und hat praktisch
keinerlei Verbreitung gefunden.
ABC hat einige Programme, die von Digital Research geschrieben
wurden, auf Ataris portiert. Leider weigern sich diese Programme mit
anderen Versionen als GEM 2.2 (ABC-GDOS) zusammenzuarbeiten.
Deshalb sind die Programme nur hier aufgeführt:
WordChart, Graph, Paint und Draw
vqt_name
, INQUIRE FACE NAME AND INDEX,
VDI 130). Ist es 0, handelt es sich um einen Bitmap-Font, bei 1 um einen
FSM- oder Speedo-Font.
Auf einige Probleme ist dringend hinzuweisen: Als Programmierer kann man nicht herausfinden, ob ein Treiber Speedo-Fonts verträgt oder nicht (vergleiche aber letzte Frage in Kapitel Druckertreiber).
Einige Font-IDs werden leider sowohl von Bitmap- als auch von Speedo-Fonts verwendet, obwohl verschiedene Fonts mit gleicher ID niemals gleichzeitig installiert sein dürfen. Zuwiderhandlung gegen die genannten Punkte werden mit Bomben bestraft.
Es liegt also am Anwender, daß die richtigen Treiber und Fonts installiert sind. Der Programmierer hat keine Chance, hier helfend einzugreifen und Fehler abzufangen. Am besten installiert man nur Bitmapfonts mit den entprechenden Treibern oder verwendet ein reines Speedo-System. Der mitgelieferte Monospace-Font der Version 4.0 enthält keine Umlaute. Entgegen den Aussagen in [Pru93c] wird SpeedoGDOS zur Zeit weiterentwickelt.
Zur Installation und Programmierung empfehle ich dringend [Dic93a], [Dic93b] und [Dic93c]. Es ist darauf zu achten, daß NVDI vor SpeedoGDOS im Autoordner steht. Wer SpeedoGDOS einzeln gekauft hat, hat Version 4.0 bekommen, den Falcons lag 4.1 bei.
Spezialeffekte wie fett oder kursiv sind jetzt auch in gedrehten Texten einsetzbar; ebenso hell; fett und hell zusammen gehen nur in 90 Grad Schritten.
Für Programme, die die Font ID-Nummern lesen, ist wichtig, daß Speedo 4.2 den Wert 5000 zu den Font ID-Nummern addiert, um Konflikte mit den ID-Nummern von GDOS Pixelfonts zu vermeiden.
Aus Druckertreibern wird von SpeedoGDOS 4.2 die Info für den '_FSM_HDR' cookie geprüft. Wenn dieser cookie nicht gefunden wird, wird das Laden von Fonts unterbunden und dieser (offensichtlich ältere) Treiber kann nur für nicht-Text-Ausgaben genutzt werden. Treiber-Header müssen für diese und zukünftige Versionen immer an einer Word Grenze beginnen.
Vst_load_fonts()
ist in zwei Punkten optimiert worden: 1. wird beim
load_font
call nachgesehen, ob das EXTEND.SYS
modifiziert wurde und
führt nur noch dann ein Neuladen der Fonts durch. Durch Wegfall des
scratch Puffers besteht keine Notwendigkeit mehr für ein ständiges
Neuladen.
Weiter wird die globale Fontliste nicht jedesmal deallociert, was
Programmstarts enorm beschleunigt. Als Nebeneffekt wird allerdings das
miscellaneous cache bzgl. der Font Header Infos erst beim nächsten Booten
gelöscht.
MEMORY.SYS öffnet nicht mehr irrtümlich einen Druckerhandle.
Der vst_height()
wird jetzt nicht mehr bis zu einer maximalen Punktgröße
größer und dann irrtümlich wieder kleiner.
Die Postscript-Tabelle ist jetzt nutzbar.
vrt_copyfm()
in den Treibern ist repariert.
9) When in 'bicsmode', character 0 was not passed through to the font
engine. ???
[Anmerkung GC: Speedo kann pro Font mit zwei verschiedenen Charactersets
arbeiten, einmal sortiert wie bei einem normalen Atari-Font und einmal
wie ein Bitstream-Font. Im Bitstream-Modus ist character 0 ein Leerzeichen.
Deshalb ist es auch unsinn, wenn in [San94] vorgeschlagen wird,
auch 16-bit-Zeichen nullterminiert zu übergeben.]
Die Behandlung negativer Punktgrößen wurde konsistent zum originalen
Handling im alten FSM gemacht.
Die Treiber behandeln jetzt auch gebrochene Zahlen für Schriftweiten
korrekt.
Das v_ftext()
der Treiber kann nun die offsets benutzen, die an das ptsin
array gegeben wurden.
Bildschirm-Treiber können nun korrekt als device 10 geladen werden.
Der memory Treiber kann nun auch resident geladen werden.
vqt_devinfo() - vqt_devinfo()
geben nun eine Rückmeldung, je nachdem, ob
die device geöffnet ist oder nicht.
Weiterhin wird der Treibername der device, zu finden im driver header, in
das ptsout array abgelegt, der Name ist 26 bytes lang.
Achtung: Wenn der Treiber nicht SpeedoGDOS-kompatibel ist, wird ein Null
String zurückgegeben; bei einem Fehler gibt es eine -1 in ptsout[1].
Neuer Aufruf vst_width()
: Dieser call ist identisch mit vst_height()
, nur
daß er die Weite setzt. Die Einbindung ist identisch, nur der opcode ist
231.
Achtung: Wie bei vst_arbpt()
und vst_setsize()
muß erst der generelle
Aufruf vst_arbpt()
oder vst_height()
getätigt werden, bevor man die
Weiten-Aufrufe vst_setsize()
und vst_width()
nutzen kann. Die generellen
Aufrufe setzen immer die Weiten zurück!
Nun ich wieder:
Das Installationsprogramm zu Speedo 4.2 hatte bisher einen kleinen Fehler. Wenn ein NEC P-Drucker ausgewählt wird, schreibt es NEC_P.SYS in die ASSIGN.SYS, obwohl der mitgelieferte Druckertreiber NECP.SYS heißt. R.O.M. hat das inzwischen verbessert.
Es werden nur 9 Druckertreiber mitgeliefert, und zwar die neuen. Da es sich um ein Upgrade handelt, ist man ja im Besitz der alten Treiber. Aber: welches sind die alten Treiber? Die Treiber vor 4.1 funktionieren laut Handbuch nicht (und 4.1 hat nur, wer sich des Besitzes eines Falcon 030 erfreut; wer Speedo in der Anfangszeit über COMPO gekauft hat, hat Speedo 4.0)
Also habe ich gleich mit Speedo 5.0, NECP.SYS (Speedo 4.2) und ProList einen Text ausgedruckt. Und siehe da: es funktioniert. Und das, obwohl ProList (und mein eigenes Programm) mit genau diesem Treiber und Speedo 4.2 Probleme hatte.
Der Ausdruck mit den Treibern von Speedo 4.0 dürfte schon deshalb nicht funktionieren, weil sich seit 4.2 die Aufgabenverteilung zwischen SpeedoGDOS selbst und den Treibern grundlegend verändert hat. (Könnte mal jemand die 4.1- Treiber mit SpeedoGDOS 5.0 testen? Ich kann es noch nicht so recht glauben, daß das tut.)
Ich stelle mir ein Upgrade jetzt so vor (Achtung, Satire):
Aber: Speedo 4.2 ist keine offizielle Version. Sie ist speziell für Papyrus gemacht und mit anderen Programmen nicht sinnvoll. Andererseits...dennoch...so betrachtet...eigentlich...vielleicht eventuell...Jedenfalls brauchen Sie die Treiber von Speedo 4.2. Diese vertreiben wir aber prinzipiell nicht. Sie können sich aber an R.O.M. wenden.
Erste vertriebene Version. Speedo 5.0b vom 8.8.94
Ab dieser Version funktioniert das Laden von T1- und TT-Fonts schneller.
Bekannter Bug: Nach dem Aufruf von vqt_headerinfo()
werden die Files
nicht mehr geschlossen. Bei Programmen, die diese Funktion für alle Fonts
aufrufen, kann das dazu führen, daß die Filehandles ausgehen, von denen
je nach TOS-Version unterschiedlich viele zur Verfügung stehen.
Seit SpeedoGDOS 4.2 funktioniert das Attribut Outline nur unter gewissen Umständen. Ob es funktioniert, hängt ab vom verwendeten Font, der SpeedoGDOS-Version, der Punktgröße und davon, welche Formeln man bei Vollmond murmelt.
Speedo 5.0c vom ??.8.94
Ab dieser Version funktioniert LOWMEM=0 wie im Handbuch beschrieben. Bekannte Fehler:
vqt_name
liefert, nach der 16. Stelle,
um wie dokumentiert Name und Style zu erhalten, dann liefert
ausgerechnet der Font mit der ID 1 (System) Schrott. An der
Trennstelle wurde die 0 vergessen.
vqt_fontheader
oder mit mit vqt_s_info
erfragt.
vqt_fontheader
würfelt die Copyright-Information verschiedener
Schnitte durcheinander; manchmal ist diese Info auch gelöscht -
was etwas besser ist.
vqt_fontheader
auf 0 gesetzt werden
(außer natürlich bei Speedo-Fonts) ließe sich verkraften.
Aber NVDI kann's doch auch.
Die verbesserte Konfigurationsmöglichkeiten haben zur Folge, daß die Konfiguration der EXTENT.SYS nicht mehr mit OUTLINE.PRG geschehen darf, sondern mit einem Editor (ist aber ziemlich einfach).
Leider ist es das erste GDOS, das abstürzt, wenn ein Programm ein nicht vorhandenes Zeichen anspricht (was eigentlich ziemlich normal ist). Workaround: wer die mitgelieferten oder andere sehr vollständige Zeichensätze verwendet, sollte nichts davon merken.
Bei LOWMEM=1 in der EXTENT.SYS zeigt SpeedoGDOS 5.5 bei mir keine Vektorzeichensätze mehr an. Diese Option braucht man normalerweise nicht. Sie wäre nur notwendig, um den Bitstream Cyberbit-Font anzuzeigen.
Eine Konversion der Formate ist zwar (im Prinzip sogar in sehr guter Qualität) möglich. Aber das ist sehr schwierig (vergl. Kapitel Konvertierung) und auf Ataris gibt es überhaupt noch kein solches Programm. Diese Entscheidung der Behnes hat also Vor- und Nachteile.
Die Druckertreiber sind in NVDI-Treiber aufgeführt. (Mir) bekannte Fehler und Probleme: Diese Liste ist nur für Programmierer, die NVDI 4.0 nicht unbedingt brauchen und den Anwendern auch die Verwendung von NVDI 3.0 ermöglichen wollen. Anwender mit Problemen sollten sich einfach die aktuelle Version besorgen.
v_clswrk
nach vqt_devinfo
auf eine physikalische Workstation
führt zu einer Privileg-Violation unter MultiTos.
Dieser Fehler wird mit Version 3.02 behoben werden.
vqt_fontheader
liefert bis 3.01 keinen korrekten
TDF-Pfad zurück. Mit 3.02 behoben.
vqt_info
(VDI 229) die
Variable style nur bei manchen Schnitten.
Zu dieser Version gibt es ein aktualisiertes nvdiguid [Beh95].
Für Programmierer: es gibt lediglich zwei neue Funktionen, die zunächst
recht harmlos aussehen: VDI 190 vqt_char_index()
und VDI 236 vst_map_mode()
.
Erst durch diese Funktionen aber lassen sich die kompletten
16-Bit-Zeichensätze sinnvoll nutzen, die im Prinzip schon ab SpeedoGDOS 4.0
zur Verfügung stehen.
Erweitert wurden vro_cpyfm()
und vrt_cpyfm()
.
Eine weitere neue Funktion, die der Programmierer gar nicht bemerkt (das sind die besten), ist die Gamma-Korrektur. Hier können für jeden Treiber getrennt Farbkorrekturen eingestellt werden.
Neu ist auch das Tool Fontname, mit dem Fonts verwaltet und Beispiele angezeigt werden können. Alle beiliegenden Programme nutzen WDIALOG um ihre Dialoge aufzupeppen. Dieses Programm muß in den AUTO-Ordner und stellt stellt die erweiterten Dialogfunktionen von MagiC auch unter einem normalen TOS zur Vefügung. Bei Installationsproblemen kann es sinnvoll sein, WDIALOG aus dem AUTO-Ordner zu entfernen oder seine Position zu verändern.
(Mir) bekannte Fehler und Probleme:
Für Programmierer steht diese Version unter dem Motto Graphikausgabe und Farbmanagement. Insbesondere Programmierer von Programmen, die Bilder ausgeben, haben es jetzt sehr einfach, diese von NVDI skalieren zu lassen und an verschiedene Farbräume anzupassen. Das funktioniert so gut und schnell, daß sich Anwender nicht wundern dürfen, daß derartige Programme NVDI 5.0 voraussetzen.
Der große Rückschritt dieser Version besteht darin, daß kein MAKEPRN mehr mitgeliefert wird, um sich eigene Druckertreiber zu konfigurieren.
Der Grund liegt darin, daß die Behnes für einige wenige Drucker ein NDA unterschreiben mußten, das ihnen untersagt, die Steuercodes weiterzugeben. Für mich ist allerdings nicht einzusehen, warum Anweendern anderer Drucker deshalb die Möglichkeit der Konfiguration genommen wird. Hier besteht dringender Nachbesserungsbedarf. Deshalb sollten Programmierer die Anwender auch nicht ohne Grund zu NVDI 5 zwingen. Im zweifel kaufen diese dann nämlich weder das Programm noch NVDI 5.
Aus gegebenem Anlaß noch die Anleitung, wie man Druckersteuercodes herausbekomt: man erstellt ein Dokument, das die interessanten Features enthält und druckt es. Als Drucker nimmt man einen alten Nadeldrucker, den man auf Hexdump gestellt hat.
Die Geschwindigkeit, mit der SpeedoGDOS 5.0a bis 5.0c offensichtlich ohne große Betatestphase herausgekommen sind, ist zwar ärgerlich. Es ist aber andererseits schön zu sehen, wie die Konkurrenz durch NVDI 3.0 den Programmierern Beine macht.
SpeedoGDOS 5.0 macht einigen Programmen, die mit SpeedoGDOS 4.x noch einwandfrei zusammengearbeitet haben, Probleme. Vieles liegt wohl daran, daß SpeedoGDOS 5.0 für die neuen Formate negative Handles liefert. Eigentlich sollte man mit Handles nicht rechnen, aber einige Programme machen es wohl trotzdem. Das Problem soll dadurch umgangen werden, daß die Handles in Zukunft als unsigned integer (SHORTCARD) interpretiert werden sollen.
Die vorläufige Funktionsbeschreibung zu NVDI 3 [Beh95] ist Public Domain und in FTP-Servern und Mailboxen erhältlich. COMPO hat für SpeedoGDOS dasselbe versprochen.
Beim Update auf SpeedoGDOS 5.0 konnte jeder auf Anfrage eine provisorische Programmierdoku gratis bekommen. Man mußte nur wissen, daß man danach fragen kann. Sorry, daß das so spät im FAQ stand, ich wußte es auch nicht. Auch jetzt bekommt man sie noch (in Deutschland gegen einen mit 3DM frankierten A4-Umschlag). Sie ist in 90% englisch und 10% deutsch geschrieben. So wird sie auch in englischsprachigen Ländern verschickt.
Hier noch einige Unterschiede zwischen NVDI 3.0 und SpeedoGDOS. Der Leser mag selbst seine Schlüsse daraus ziehen.
Das passiert sowohl bei direkter Ausgabe als auch mittels CENSPEED. Durch Verwendung des Spoolers VARSPOOL tritt dieser Effekt nicht mehr auf.
VARSPOOL befindet sich auf der Treiberdiskette der NEC-Drucker.
Wenn es installiert ist, sorgt es beim Druck mit einem GDOS oder vom Desktop aus für das Phänomen, daß der Ausdruck reproduzierbar und immer an der gleichen Stelle so aussieht, als sei ein TAB eingefügt. Dieses Programm ist daher Mega-Out.
Das Drucken ist - zumindest mit NVDI - einfach: Man wählt den passenden Drucker aus und als Schnittstelle eine Datei auf der Festplatte oder Diskette.
Diese Datei transportiert man zu dem anderen Rechner und druckt dort - oft Müll. Der Grund liegt darin, daß viele Betriebssysteme hier "hilfreich" unter die Arme greifen und die Daten verändern, die man doch Byte für Byte an den Drucker schicken will. Beispielsweise verändert der DOS-Befehl COPY die Daten, wenn das Zielgerät ein Drucker ist.
Folgendes verhindert bei verschiedenen Betriebsystemen das Ändern der Druckdaten:
MYFILE.PRN LPT1: /b
MYFILE.PRN LPT1:
FILE_CACHE muß mindestens 157328 Bytes groß sein, wobei die Skalierung dann aber sehr langsam ist. Ab 400 kB wird es schneller.
Da Bitsream weitere Zeichen integriert, kann es sein, daß diese Werte sich bei zukünftigen Versionen verändert werden müssen. Dank an Rainer Seitel für diesen Tip.
Hier geht es um meine Erfahrungen mit GDOS und WYSIWYG. Mein Dank gilt Ulrich Roßgoderer, der diese bestätigt hat.
Es geht im Folgenden um die Ausgabe von Vektorgraphik und Text auf Bildschirm und Drucker.
Die Größenangabe des Textes geschieht in der Einheit Punkt und ist unabhängig von der Auflösung des Ausgabegerätes immer gleich.
Die Vektorgraphik dagegen ist vor der Ausgabe in Pixel umzurechnen. Das ist an sich kein Problem, denn beim Öffnen der virtuellen/physikalischen Workstation erhält man die Pixelgröße in Mikrometern in devParm[3] und devParm[4] zurück.
Nehmen wir an, die Vektorgraphik sei intern in Mikrometern abgespeichert, dann sind bei der Ausgabe die Stützpunkte einfach durch devParm[3] bzw. devParm[4] zu teilen, um die Position in Pixeln zu erhalten. Bei der Ausgabe in Fenstern ist noch ein Offset hinzuzuaddieren, was hier aber nicht relevant ist.
Soweit die Theorie, die bisher ganz einfach ist (siehe auch [Gar93]). Nun zur Praxis.
Mit dieser Methode geben wir nun einen Text und einen Rahmen, der intern als Vektorgraphik gespeichert ist, aus. Es ist dabei irrelevant, ob der Text mit SpeedoGDOS oder als Bitmap-Font ausgegeben wird. Um besser vergleichen zu können, soll der Rahmen den Text exakt umschließen.
Ich habe nun folgende Erfahrungen gemacht. Der Text, der auf dem Bildschirm (ST-high) den Rahmen genau ausfüllt, ist beim Ausdruck im Vergleich zum Rahmen viel zu klein.
Ein Fehler bei der Umrechnung der Pixelgröße ist auszuschließen, denn ich habe den Ausdruck mit den Treibern NB15, NECP, FX80 und NX1000 gemacht, und die Ausdrucke decken sich.
Einzig mögliche Erklärung, die mir einfällt, ist, daß der Bildschirmtreiber für die Pixelgröße eine andere Auflösung annimmt, als für die Fontgröße.
Zwei Lösungen des Problems sind hier anwendbar:
Erstens kann man auf dem Bildschirm eine andere Pixelgröße annehmen, als vom Betriebssystem geliefert wird. Ich habe nach dem Öffnen der virtuellen (und nur dieser!) Workstation
devParm[3] := 282;
devParm[4] := 282;
berechnet und mit diesem Wert die Umrechnung der Vektorgraphik von Mikrometer in Pixel vorgenommen. Jetzt stimmt das Verhältnis von Graphik zu Text auf dem Bildschirm exakt mit dem Ausdruck über die verschiedenen Druckertreiber überein. Problematisch ist nur, daß eine A4-Seite in der Breite nicht mehr auf den Bildschirm paßt. Die Zahlenwerte sind experimentell bestimmt und können eventuell noch verbessert werden.
Zweitens kann man für den Bildschirm (und nur dort) einfach eine kleinere Fontgröße verwenden. Mit Speedofonts ist das ganz einfach, da man ja die Göße in Punkten mit fast beliebig vielen Nachkommastellen angeben kann.
Mit Bitmapfonts kann das aber nicht klappen, da man nicht für jeden Druckerzeichensatz einen in der 72/96 (72/91?) -fachen Größe für den Bildschirm hat.
Diese Methode ist sicher für ST-mid und evtl. noch bei anderen Auflösungen zu modifizieren.
Laut Wilfried Behne werden die Werte devParm[3] und devParm[4] der Bildschirmtreiber vom aktuellen SpeedoGDOS schlicht ignoriert. Die Werte von physikalischen Workstations werden aber übernommen.
Siehe auch Kapitel Lineare und optische Skalierung.
Die Anwender können in der ASSIGN.SYS beliebige Treiber anmelden.
Beispielsweise könnte dort
23 FX80.SYS
27 NECP.SYS
28 NB15.SYS
31 META.SYS
61 MEMORY.SYS
stehen. Wie bekommt man als Programmierer sicher heraus, welche Treiber
angemeldet (und auch bereit) sind? Und das, obwohl im Beispiel kein
Drucker 21 angemeldet ist?
Ganz einfach: Unterstützt das Programm Drucker,
so sind alle Treiber mit Nummer 21 bis 30 zu öffnen und gleich wieder
zu schließen. Ob ein Druckertreiber angemeldet ist, sieht man daran,
daß beim Öffnen ein Devicehandle>0 zurückgegeben wird. Nur bei
geöffnetem Treiber liefert v_f_devinfo
sinnvolle Werte zurück.
Werden MEMORY-Treiber unterstützt, ist mit den Treibernummern 61 bis 70 analog zu verfahren.
Die obige ASSIGN.SYS ist im übrigen sehr sinnvoll, da die NEC P irgendwas all diese Treiber unterstützen und dann in unterschiedlicher Auflösung drucken.
Das Metafile-Format ist von der Idee her ganz einfach. Es enthält die Aufzeichnung der VDI-Aufrufe samt Parameter, die ein Programm macht.
Ein Programm, das sowieso seine Ausgaben über GDOS macht, öffnet statt eines Druckertreibers einen Metafile-Treiber, und macht seine Ausgaben wie auf einen Drucker.
Das Programm, das das Metafile liest, vollzieht diese Aufzeichnungen dann nach.
Diese Einfachheit ist auch eines der Hauptprobleme dieses Formats. Es gibt nämlich verschiedene GDOS-Versionen und auch verschiedene Treiber mit unterschiedlichen Fähigkeiten. Ein Programm macht also Ausgaben, die das GDOS, unter dem es gerade läuft, versteht. Dieses File wird von einem Programm gelesen, das zufällig unter einem anderen GDOS mit geringeren oder anderen Fähigkeiten läuft. Wie soll die Aufzeichnung dann nachvollzogen werden?
Konkrete Beispiele für dieses Problem: Die Länge der ptsin- und intin-Felder ist normalerweise (für verschiedene Treiber unterschiedlich) begrenzt. Dies kann der Metafile-Treiber anders handhaben. Betroffen sind unter anderem Textausgabe, Polyline, Polymarker, Filled area etc.
Nächstes Problem: es wird ein bestimmter Schnitt verwendet, der dann auf einem anderen System nicht vorhanden ist. Wie soll das Ausgabeprogramm sagen: wenn der Schnitt schon nicht vorhanden ist, nimm wenigstens einen anderen halbfetten mit Serifen.
Der Programmierer sollte wenigstens (wenn möglich) den Schnitt durch den Namen und nicht durch die ID auswählen, weil NVDI 3.0x und SpeedoGDOS für Vektorfonts unterschiedliche IDs verwenden. Wird mit SpeedoGDOS 5.0 oder neuer ein Schnitt durch die ID ausgewählt, so schreibt der META-Treiber den Namen automatisch mit ins File.
Bei den bisherigen Problemen kann man sich auf den Standpunkt stellen, daß das ein Problem der Graphikprogramm-Programmierer ist, und die werden schon wissen, was sie tun.
Beim Schreiben des Metafile-Headers muß man allerdings wissen, was man tut. Ich weiß es nicht. Aber ich versuch's trotzdem mal.
Eine Applikation kann selbst entscheiden, mit welcher Auflösung (also mit wieviel dpi) sie in ein Metafile schreibt. Tut sie das nicht, werden 300 dpi angenommen, was einer Pixelbreite von 85 mikrometern entspricht.
Die Bildschirmtreiber beherrschen nur Rasterkoordinaten. Da zur Ausgabe über Metafile üblicherweise dieselben Routinen verwendet werden, beschränken wir uns im Folgenden auf Rasterkoordinaten (Auch wenn Metafiles auch NDCs beherrschen). Rasterkoordinaten gehen von links oben nach rechts unten.
Um ein Koordinatensystem zu definieren, wird bei Metafiles wie folgt vorgegangen:
vm_pagesize
werden Breite (W) ind Höhe (H) der Seite in
zehntel Millimeter angegeben. Dies ist die (positive) Differenz
zwischen dem Punkt rechts unten und dem Punkt links oben
(der nicht im Ursprung liegen muß).
vm_coords
das Rechteck (xmin, ymin, xmax und ymax) in Pixeln
angegeben. Wie man dieses Rechteck berechnet, steht weiter unten.
v_meta_extents
ein Rechteck in Pixeln angegeben. Dieses Rechteck hat mit der
Definition des Koordinatensystems nichts zut tun. Vielmehr ist es
eine Angabe, wie die Applikation, die das Metafile liest, clippen
kann, aber nicht muß.
Anmerkung: papyrus clipt nicht. KandinskY clipt, verschiebt aber
vorher die Graphik etwas nach rechts unten, so daß auf dem
Bildschirm ein Teil der Graphik fehlt. Es könnte deshalb sinnvoll
sein, das Rechteck für v_meta_extents
etwas größer zu wählen,
als das Rechteck für vm_coords
.
Aber die angegebenen Variablen sind nicht die, mit denen eine Applikation üblicherweise rechnet. Es folgt ein Beispiel, wie zu verfahren ist, wenn die Applikation die gewünschte Auflösung in dpi kennt, die Position des linken oberen Punktes (X1,Y1) in zehntel Millimetern (oder einem Vielfachen davon) und die Position des rechten unteren Punktes (X2,Y2) in zehntel Millimetern (oder einem Vielfachen davon).
So berechnet man aus der Auflösung die Höhe und Breite eines Pixels:
(Pixelhöhe in zehntel Millimeter) = 25400 / (vertikale Auflösung in dpi)
(Pixelbreite in zehntel Millimeter) = 25400 / (horizontale Auflösung in dpi)
Für vm_pagesize
werden Breite und Höhe in zehntel Millimetern benötigt:
W = (X2 - X1 + 1) * (Pixelbreite in zehntel Millimeter)
H = (Y2 - Y1 + 1) * (Pixelhöhe in zehntel Millimeter)
Für vm_coords
werden xmin, ymin, xmax und ymax in Pixeln gebracht:
xmin = X1 / (Pixelbreite in zehntel Millimeter)
ymin = Y1 / (Pixelhöhe in zehntel Millimeter)
xmax = X2 / (Pixelbreite in zehntel Millimeter)
ymax = Y2 / (Pixelhöhe in zehntel Millimeter)
Für v_meta_extents
wird vorgegangen, wie bei vm_coords
. Zusätzlich
können xmin und ymin etwas verkleinert und xmax und ymax etwas
vergrößert werden, damit KandinskY alles anzeigt.
Selbstverständlich muß das Koordinatensystem definiert werden, bevor weitere Ausgaben in das Metafile gemacht werden.
(Mir ist in letzter Zeit mehrfach aufgefallen, daß ich etwas so gut erklärt habe, daß ich es danach sogar selbst verstanden habe 8-)
Weitere Informationen (die aber bei den oben genannten Problemen nicht helfen) stehen im Profibuch [Jan92], im Atari Compendium [San94] und im Standardwerk über Fileformate [Bor94]. Ansonsten hilft noch jede Literatur, in der die VDI-Befehle beschrieben sind.
v_form_adv
zu verwenden, hatte zwar Kritiker, aber
keine Alternative konnte sich ernsthaft durchsetzen.
Deshalb wird hier im GDOS-FAQ definiert, daß v_form_adv
zu verwenden
ist, wenn in einem Metafile mehrere logische Seiten zu trennen sind.
v_write_meta
ins
Metafile geschrieben werden können.
Das jetzt folgende war einmal als Standard gedacht, ist aber eingeschlafen. Vielleicht war damals die Zeit nur noch nicht reif dafür (es gab noch kein SpeedoGDOS) und es fehlte das entsprechende Medium, um ihn publik zu machen.
Die nun folgende Definition sollte zumindest dahingehend unterstützt werden, als die Sub-Opcodes nicht für andere Zwecke gebraucht werden sollten. Wenn Programme diese Definition unterstützen, bitte ich um eine Meldung.
Ab hier folgt ein Auszug aus dem KandinskY-Handbuch: Wie schon öfters erwähnt, lädt und speichert KandinskY Zeichnungen im *.GEM-Standardformat (ist gleichbedeutend mit Metafile-Format). Dieses Format kann durch benutzer-definierte Sub-Opcodes nahezu beliebig erweitert werden, ohne daß Inkompatibilitäten entstehen.
KandinskY verwendet einige spezielle Sub-Opcodes, um z.B. die fein abgestuften Grautöne, Fensterpositionen etc. abzuspeichern und wieder zu laden. Daneben werden die mir bekannten standardisierten Sub-Opcodes unterstützt.
Die Speicherroutinen von KandinskY sind dabei so programmiert, daß ein Programm, das eine Zeichnung aus KandinskY importieren will, diese Sub-Opcodes nicht unbedingt verstehen muß. In der Darstellung selber sollte daher kein Unterschied zu erkennen sein. Probleme kann es dann geben, wenn ein Programm einen Sub-Opcode falsch interpretiert, weil es zu Wert"-Überschneidungen kommt.
Sollten daher Sie, verehrter Leser, auch eigene Sub-Opcodes benutzen, wäre es doch nicht schlecht, wenn Sie mir diese mit einer kurzen Beschreibung mitteilen würden. Denn die Verwendung dieser Erweiterung ist nur sinnvoll, wenn Sub-Opcodes mit gleichem Wert von allen Programmen, die Metafiles verarbeiten, gleich interpretiert werden. Mir schwebt dabei eine Liste vor, in der alle verwendeten Sub-Opcodes mit ihrer Bedeutung beschrieben sind (ähnlich der XBRA-Liste).
Zur Verwendung der Sub-Opcodes siehe auch im ST-Profibuch im Kapitel über
die VDI-Betriebssystemroutinen. Besonders zu beachten ist hier der Befehl
v_write_meta
, mit dem die Sub-Opcodes in ein Metafile geschrieben
werden können.
Name | Wert | Kurzbeschreibung |
GEM_START_GROUP | 10 | Beginn einer Gruppe |
GEM_END_GROUP | 11 | Ende einer Gruppe |
GEM_NO_LINE_STYLE | 49 | Jeglichen Linienstil ausschalten |
GEM_START_SHADOW | 50 | Beginn eines Objektschattens |
GEM_END_SHADOW | 51 | Ende des Schattens |
GEM_START_FILL | 80 | Beginn einer Füllfläche |
GEM_END_FILL | 81 | Ende derselbigen |
GEM_START_BGIF | 170 | Beginn von BGI-Vektortext |
GEM_END_BGIF | 171 | Ende des Vektortextes |
GEM_WIND | 190 | Fensterposition, Zoomstufe usw. |
GEM_GRID | 191 | Rastereinstellungen |
GEM_ALIGN | 192 | Informationen über Bezugsobjekt |
GEM_START_GREY | 193 | Beginn eines Grautons |
GEM_END_GREY | 194 | Ende desselbigen |
GEM_START_BEZIER | 195 | Beginn eines B\'{z}ier-Zuges |
GEM_END_BEZIER | 196 | Ende des Zuges |
GEM_START_JOIN | 197 | Die folgenden Blöcke gehören zusammen |
GEM_END_JOIN | 198 | ...ab hier nicht mehr |
GEM_START_GROUP
wird der Beginn einer Gruppe markiert. Eine
Gruppe ist dabei eine Menge zusammengehörender Objekte. Das Ende dieser
Gruppe wird durch GEM_END_GROUP
markiert.
GEM_START_SHADOW
wird mitgeteilt, daß die bis
GEM_END_SHADOW
folgenden VDI-Befehle dazu benutzt werden, um für
das erste Objekt nach GEM_END_SHADOW
einen Schatten zu zeichnen.
GEM_START_FILL
und GEM_END_FILL
.
Alle zwischen ihnen liegende VDI-Befehle werden dazu benutzt, um eine
ausgefüllte Fläche mit oder ohne Umrandung zu zeichnen.
Beispielhaft soll hier das schrittweise Zeichnen einer Polygonfläche mit Schatten und Umrandung gezeigt werden.
GEM_START_FILL
GEM_START_SHADOW
v_fillarea(...)
versetzt um dx
und dy
GEM_END_SHADOW
v_fillarea(...)
v_pline(...)
GEM_END_FILL
GEM_START_BGIF
wird eine Textausgabe mit BGI-
Vektorzeichensatz eingeläutet. Die VDI-Arrays sind dabei wie folgt belegt:
intin[0] | GEM_START_BGIF |
intin[1] | 0: nicht proportional |
intin[2..10] | Name, z.B. EURO: intin[2] = 69 ... |
intin[11..] | Der Text mit abschließender Null |
ptsin[0] | x-Koordinate des Textes (in 1/10mm) |
ptsin[1] | y-Koordinate des Textes (in 1/10mm) |
ptsin[2] | Buchstabenbreite in 1/10mm |
ptsin[3] | Buchstabenhöhe in 1/10mm |
ptsin[4] | Rotation in 1/10 Grad |
GEM_END_BGIF
folgen die v_pline(...)
-Befehle, die zur
Darstellung des Textes notwendig sind, falls ein Programm diese Sub-Opcodes nicht interpretieren kann.
GEM_WIND
werden Position, Zoomstufe und Format des Fensters
festgelegt.
intin[0] | GEM_WIND |
intin[1] | x-Position des Fensters in Pixel |
intin[2] | y-Position des Fensters in Pixel |
intin[3] | Fensterbreite in Pixel |
intin[4] | Fensterhöhe in Pixel |
intin[5] | x-Position des Sliders in Pixel |
intin[6] | y-Position des Sliders in Pixel |
intin[7] | Zoomstufe in Prozent |
intin[8] | 0: Hochformat, 1: Querformat |
ptsin[...] | keine Einträge |
GEM_GRID
dauerhaft gesichert.
intin[0] | GEM_GRID |
intin[1] | 0: Raster inaktiv |
intin[2] | 0: Raster nicht zeichnen |
intin[3] | Rasterbreite in 1/10mm |
intin[4] | Rasterhöhe in 1/10mm |
intin[5] | Hilfslinienabstand horizontal in 1/10mm |
intin[6] | Hilfslinienabstand vertikal in 1/10mm |
intin[7] | 0: Hilfslinien, ansonsten: Hilfspunkte |
ptsin[...] | keine Einträge |
GEM_ALIGN
wird das Bezugsobjekt beschrieben.
intin[0] | GEM_ALIGN |
intin[1] | 0: Bezugsobjekt nicht zeichnen |
intin[2] | x-Koordinate des Bezugsobjekts in 1/10mm |
intin[3] | y-Koordinate des Bezugsobjekts in 1/10mm |
intin[4] | Breite des Bezugsobjekts in 1/10mm |
intin[5] | Höhe des Bezugsobjekts in 1/10mm |
ptsin[...] | keine Einträge |
GEM_START_GREY
legt man einen Grauton als Füllfläche fest.
Abstufungen im Bereich von 0---255 (weiß---schwarz) sind möglich.
intin[0] | GEM_START_GREY |
intin[1] | Graustufe, 0---255 |
ptsin[...] | keine Einträge |
GEM_END_GREY
folgenden Befehle setzen ein
benutzerdefiniertes Muster mit dem entsprechenden Grauton. Sie dienen
wiederum nur für Programme, die mit diesen Sub-Opcodes nichts anfangen
können.
GEM_START_BEZIER
definiert man einen Bézier-Zug. Sämtliche
Information über denselbigen ist in den intin
- und ptsin
-
Feldern zu finden.
intin[0] | GEM_START_BEZIER |
intin[1] | Rekursionstiefe, kleiner als fünf!! |
intin[2..2n+2-1] | Attribute der Ankerpunkte |
Ecke: Bit 0 gesetzt | |
Verschiebt: Bit 1 gesetzt | |
Sichtbar: Bit 2 gesetzt | |
Linie statt Bézier: Bit 3 gesetzt | |
ptsin[0..4n-1] | Koordinaten der n BÇziersegmente, jedes besteht |
aus vier Punkten |
GEM_END_BEZIER
folgen dann v_pline
-Aufrufe, die einen
äquivalenten Polygonzug zeichnen, für Programme, die den Sub-Opcode nicht
unterstützen.
GEM_START_JOIN
ist es möglich, mehr Koordinaten
abzuspeichern, als der Metafile-Treiber erlaubt. Findet KandinskY nämlich
diesen Sub-Opcode, so werden die ptsin
-Felder der bis
GEM_END_JOIN
folgenden VDI-Blöcke zu einem großen Feld
zusammengefaßt.
intin[0] | GEM_START_JOIN |
intin[1] | Anzahl der gesamten Koordinatenpaare |
ptsin[...] | keine Einträge |
v_pline
, v_fillarea
und
v_pmarker
auch für v_gtext
, v_justified
,
und v_ftext
gültig. Auch mehrzeiliger Text ist über diese Umgebung
speicherbar. Dann gilt folgende Definition:
intin[0] | GEM_START_JOIN |
intin[1] | Anzahl der folgenden v_gtext -Aufrufe (pro Zeile einer) |
ptsin[...] | keine Einträge |
intin[1]
durch
den ersten VDI-Ausgabebefehl, der auf GEM_START_JOIN
folgt.
Hier endet der Auszug aus dem KandinskY -Handbuch.
Auch Fontformate sind Standards, wurden aber in den vohergehenden Abschnitten eingehend besprochen.
Ich behaupte nicht, daß dies auch bei NVDI, SpeedoGDOS oder anderen GDOSen berücksichtigt wird. Siehe http://www.sgi.com/Technology/icc_top.html.
Die Spezifikation von TIFF 6.0, früheren TIFF-Versionen und anderen Graphikformaten findet sich in ftp://ftp.funet.fi/pub/csc/graphics/format/tiff*.
ISO 646 definiert einen Zeichensatz, der nur 7 Bits verwendet und in der Praxis kaum Bedeutung hat.
Ascii ist inzwischen als die unteren 7 Bit von ISO 8859-1 bzw. von UNICODE definiert (was auf das selbe hinausläuft). Siehe auch http://www.asc-inc.com/ascii.html. Da der Begriff ascii aber viel zu lange undefiniert war, muß man damit immer noch sehr aufpassen.
8859-2 Eastern Europe
8859-3 SE Europe
8859-4 Scandinavia (mostly covered by 8859-1 also)
8859-5 Cyrillic
8859-6 Arabic
8859-7 Greek
8859-8 Hebrew
8859-9 Latin5, same as 8859-1 except for Turkish instead of Icelandic
8859-10 Latin6, for Eskimo/Scandinavian languages Die ersten 256 Zeichen von UNICODE entsprechen ISO 8859-1.
LaTeX macht aus den beiden Zeichen fl ein einziges Zeichen im Zeichensatz. Wenn ein GDOS UNICODE unterstützt, kann das Anwendungsprogramm keine Ligaturen mehr als ein einzelnes Zeichen ausgeben. Es ist also Aufgabe eines GDOS, aus bestimmten Zeichenfolgen wieder einzelne Ligaturen zu machen.
Auf der anderen Seite muß die Ligaturbildung explizit verhindert werden können; hier im FAQ beispielsweise beim Wort Auflösung. Ich tippe explizit "Auflösung", damit es nicht wie Auflösung aussieht.
In UNICODE besteht ein Zeichen aus zwei Bytes. (Stimmt es noch, daß ISO 10646 aus 4 Bytes besteht und UNICODE derjenige Teil davon ist, bei dem die ersten beiden Bytes null sind?)
UNICODE 1.0 gibt es bei Addison-Wesley. Ich habe einen Draft 1.1 vom Juni 1994 gesehen. ist der inzwischen durch?
Eine nicht vollständige Liste von UNICODE-Zeichen (dafür mit Postscript-Name) ist in [Mic]. Dort steht auch, welche Zeichen in einem TrueType-Schnitt vorhanden sein müssen, der sich Windows 3.1-Konform nennt.
The GEM list has approved the following proposal, however, there are a couple of ammendments which I wi post for a vote next week. If anyone has any of their own, please mail them to me.
Fast alle in der GEM-LIST waren sich einig, daß der so "verabschiedete" Standard ohne Nachbesserungen (amendments) nichts taugt. Die Nachbesserungen wurden in der GEM-LIST aber weder diskutiert noch verabschiedet.
Es lohnt sich also für Autoren GDOS-fähiger Programme, solche Dateiformate zu entwickeln oder zu unterstützen.
Historisch haben sich zwei Arten von Schutzrechten entwickelt: das Patentrecht und das Urheberrecht (engl: copyright). Das Patentrecht ist für technische Entwicklungen zuständig, das Urheberrecht für geistige/künstlerische Schöpfungen.
Per Definition sind Computerprogramme dem Urheberrecht unterstellt, was weitreichende Konsequenzen hat. Ausnahmen sind selten, beispielsweise die Steuerung des ABS. US-Amerikanische Softwarehersteller müssen in den USA ein Belegexemplar hinterlegen und einen Copyright-Vermerk anbringen, um ihre Rechte nicht zu verwirken. Nichtamerikaner müssen diese Bedingung nicht einhalten.
Wer Patentschutz in Anspruch nimmt, muß eine intensive und teure inhaltliche Prüfung durchlaufen. Der Patentantrag kann abgewiesen werden. Wenn das Patent erteilt wird, ist der Schutz sehr sicher. Das Urheberrecht gilt mit der Schöpfung des Werkes selbst. Bei Programmen gilt dies auch für die Entwurfsunterlagen, den Sourcecode und das Pflichtenheft. Das Urteil des Bundesverfassungsgerichts, welches eine Schöpfungshöhe verlangt, das über den Fähigkeiten eines durchschnittsprogrammierers liegt, hat sich als nicht praktikabel erwiesen und wird nicht mehr angewandt.
In Deutschland sind im UrheberrechtsG folgende Paragraphen speziell für Computerprogramme zustän-dig: ð69a ... g; ð137d. Ergänzenden Schutz bietet auch das Gesetz gegen den unlauteren Wettbewerb.
Den Vorteil des Urheberrechts gegenüber dem Patentrecht erkauft man sich damit, daß man sich dieses Rechts erst sicher sein kann, wenn man es vor Gericht erstritten hat.
Marken lassen sich nur für eng umgrenzte Warengruppen schützen.
Die konkreten Auswirkungen will ich an einem Beipiel erläutern. Ich habe mit keiner der beteiligten Parteien rücksprache gehalten.
Da gibt es ein marktbeherrschendes Programm namens EXCEL von Microsoft. Dieser Hersteller könnte sich gegen die Verwendung des Namens TEXEL für ein Tabellenkalkulationsprogramm wehren, weil der Name ähnlich klingt.
Der name TEXEL könnte von ASH ebenfalls geschützt werden um sich seinerseits gegen Nachahmungen zu wehren. Solche Schutzanträge werden nur formal geprüft.
Erst, wenn man sich das Recht vor Gericht erstritten hat, kann man sich dessen sicher sein. Vor Gericht könnte beispielsweise herauskommen, daß sich Microsoft nicht gegen ASH und ASH gegen niemanden wehren kann, weil sich Ortsnamen nicht schützen lassen (Texel liegt in Holland). Wird TEXEL ASH-TEXEL genannt, sieht die Lage völlig anders aus.
Um die Verwirrung komplett zu machen, heißt das Programm offiziell ASH-TEXEL, zeigt selbt aber nur TEXEL an.
ATARI (Europa)
Postbus 70 * NL-4130 EB Vianen * Holland
Deutsche Weiterschaltungsnummer (Auslandsgebühren zahlt ATARI): 06196-801180
Behne \& Behne Systemsoftware GbR
Lindenkamp 2 * 31515 Wunstorf
Tel./Fax.: +49 5031 8629
BELA Computer GmbH: R.I.P.
ByTech GbR
Detlef Kuhl, Frank Hieronymi
Bismarckstraße 88 * 10627 Berlin
Tel.: +49 30 3134258
CCD Dirk Beyelstein Postfach 1164 65331 Eltville Tel: 06123/1094 Fax: 06123/4389
Gerd Castan
Höhbergstr. 16 * 70327 Stuttgart
G.Castan@physik.uni-stuttgart.de
COMPO Software GmbH
Vaalster Str. 540 * 52074 Aachen
Tel.: +49 0241 830 98
Delta Labs Media
Brillerstraße 40 * 42105 Wuppertal
Tel./Fax: +49 202 308307
DigiLab GmbH
Posener Str. 18 * 24161 Dänischhagen
Digital DeskTop (DDT) ist eine Händlergemeinschaft
Adressen finden sich in Anzeigen der Atari-Zeitschriften.
Digital Systems \& Consulting
Soester Str. 306 * 59071 Hamm
Tel.: +49 2381 889413; Fax.: +49 2381 889812
Elan Software
550 Charest Est
P.O. Box 30232
Quebec, G1K 8Y2
Canada
Voice: (418) 692-0565; Fax: (418) 683-9189
Dieter Fiebelkorn
Grüner Weg 29a * 45768 Marl
Stephan Gerle
Ruthstraße 8 * 44149 Dortmund
H3 Systems
Häusserstraße 44 * 69115 Heidelberg
Tel.: +49 6221 164031; Fax.: +49 6221 184541
Harald und Martin Hansen
Weserstraße 82 * 12059 Berlin
Hard \& Soft
Obere Münsterstr. 33-35 * 44575 Castrop-Rauxel
Tel.: +49 2305 18014; Fax.: +49 2305 32463
ICP GmbH \& Co.KG
Leserservice TOS * Innere-Cramer-Klett-Straße 6 * 90403 Nürnberg 1
Konfect Corp. Vertriebsbüro A-D-CH
Postfach 1113 * D-63797 Kleinostheim
Tel. +49 6027 99941; Fax +49 6027 99942
MAXON Computer GmbH
Schwalbacher Straße 52 * 65734 Eschborn
Tel.: +49 6196 481811
Migraph Inc.
32700 Pacific Highway S.
Suite 12, Federal Way
WA 98003, USA
Tel.: 0012068384677
Michael Nolte Computersysteme
Vasters Str. 10, 50825 Köln
Tel.: +49 221 558269, Fax: +49 221 5504629
no Software GmbH Postfach 1051 54591 Prüm
OMIKRON Soft+Hardware GmbH
Sponheimerstr. 12a * 75117 Pforzheim
Tel.: +49 7231 356033
Overscan
Kurze Str. 15
12167 Berlin (Berlin-Steglitz)
Tel.: +49 30 790100 0, Fax: +49 30 790100 15
Pergamon Software * Lehmann \& Herzog
*Wegscheidestr. 29 * 60435 Frankfurt/Main
*Tel.: +49 69 5488279
Am Roten Hang 14 * 61476 Kronberg/Ts.
Tel.: +49 6173 940063
rhotron GmbH
Entenmühlstraße 57 * 66424 Homburg/Saar
Tel.: +49 6841 64067; Fax.: +49 6841 2467
Richstein \& Dick GbR (Kaktus)
Konrad-Adenauer Straße 19 * 67663 Kaiserslautern
Tel.: +49 631 22253
Richter Distributor
Hagener Str. 65 * 58285 Gevelsberg
Te.: +49 2332 2706
Thierry Rodolfo
47 rue Pierre Brossolette
92300 LEVALLOIS
France
R.O.M. Software (Neue Adresse !)
Christian Nieber \& Ullrich Ramps
Raschdorffstr. 99 * 13409 Berlin
Tel.: +49 30 4924127
RoSoft Stefan Rogel
Köhlerweg 1 * 67661 Kaiserslautern
Stefan_Rogel@LU.maus.de und Stefan_Rogel@WI2.maus.de
SciLab GmbH
Isestraße 57 * 20149 Hamburg
Tel.: +49 40 4603702
SHIFT Computer + Werbung GmbH ist aufgelöst
Michael Siek
Bohlweg 6a * 38678 Clausthal-Zellerfeld
Tel.: +49 5323 4413
SILICON Technology \& Promotion
Wilhelmshöher Allee 124 * 34119 Kassel \
Tel.: +49 561 711924
Softbär GbR
Richardstr. 60 * 12055 Bärlin
Tel.: +49 30 6226884
SPIRIT WARE
Bible Church 15211
15th Avenue NE Seattle, WA 98155 (USA)
TKR
Stadtparkweg 2 * 24106 Kiel
Tel.: +49 431 337881; Fax.: +49 431 35984
Toad Computer
570-F Ritchie Highway
Severna Park, MD 21146-2925 * USA
Tel.: +1 410 544 6943
Trade iT existiert seit April 1994 nicht mehr.
Holger Weets
Tangastr. 45 * 26121 Oldenburg
E-Mail: Holger_Weets@OL.maus.de
Dipl.-Phys.-Ing. Ralf Wirtz
Kasterstr. 30 * 52428 Jülich
Tel.: +49 2461 1255
Wilhelm Mikroelektronik
Luenen
Working Title GbR
Lilienweg 12 * 53123 Bonn
Tel.: +49 228 647020
3K Computerbild
Wevelinghoven 26 * 41334 Nettetal
Tel.: +49 2153 91860
Hier steht alles, was es an Allgemeinwissen über GDOS-Treiber gibt. (AND MORE)
[Jan92] Jankowski, Rabich, Reschke, Atari Profibuch, 10. Auflage, SYBEX, Düsseldorf (1992)
Das Standardwerk. Für Programmierer: im VDI-Teil steht, wie man Bildschirm und Druckertreiber korrekt anspricht.
[San94] Scott Sanders, The ATARI Compendium, First Revision, SDS Publishing, Long Beach (1994)
Noch ein Standardwerk. Es ist aktueller als das Profibuch (VDI-Aufrufe bis SpeedoGDOS 4.2) und sehr vollständig. Insbesondere enthält es die offiziellen GEM User Interface Guidelines. Trotzdem kann es das Profibuch nicht ersetzen. Sollte dieses FAQ einst ein Kapitel über Layout enthalten, wird dieses Buch als abschreckendes Beispiel dienen. Sehr lobend muß erwähnt werden, daß für jede Betriebssystemfunktion beschrieben ist, ab welcher Version sie vorhanden ist bzw. wie man herausbekommt, ob sie vorhanden ist.
[Gar93] Marc René Gardeya, VDI für jedermann, ST-Computer 10/93
Einführung in die saubere Programmierung von Bildschirm- und Druckerausgaben.
[Res92] Julian Reschke, Herbstgedanken, ST-Magazin 11/92
Herbstgedanken über FontGDOS und Speedo-GDOS.
[Dic93a] Erik Dick, Schön und schnell?, ST-Computer 7/93
Allgemeines über GDOS und Installation von Speedo. Im Prinzip das, was im Installationshandbuch steht, allerdings wird auf spezielle Probleme gesondert eingegangen.
[Dic93b] Erik Dick, SPEEDO-Gonzales, ST-Computer 8/93
Pflichtlektüre zur Speedo-Programmierung. Beschrieben werden die neuen Bindings und Programmierhinweise für Standardanwendungen.
[Dic93c] Erik Dick, SPEEDO-Gonzales, ST-Computer 9/93
Bedeutung der Speedo-Fehlermeldungen und Bindings der Bézier- und Cacheroutinen.
[Dic94a] Erik Dick, Mit Speedo in die Zukunft?, ST-Computer 6/94
Was bringt Speedo 4.2 neues? Beschrieben werden auch die neu hinzugekommenen Bindings.
[Dic94b] Erik Dick, Thronfolge Teil 1, ST-Computer 11/94
Vergleich zwischen NVDI 3.0 und SpeedoGDOS 5.0: Lieferumfang, Installation und Bedienung.
[Schr92] Raymond Schröder, Atari-Hotline, ST-Magazin 7/92
Wozu gibt es GDOS? Welche Programme unterstützen es? Wie installiert man es?
[Beh92] Sven Behne, Wilfried Behne, NVDI-Dokumentation, BELA / 2B
Beschreibung des VDI. Leider ist nicht aufgeführt, worin sich Bildschirmtreiber und Druckertreiber unterscheiden. Eine Dokumentation für Programmierer ist nur bis Version 2.51 dabei. Ab version 3.0 ist [Beh95] zu Rate zu ziehen.
[Beh95] Wilfried Behne, vorläufige Funktionsbeschreibung zu NVDI 3,
ftp://ftp.cs.tu-berlin/pub/atari/Gdos/nvdiguid.zip
Eine Public Domain - Dokumentation, die fast alles
enthält, was man als Programmierer so braucht.
zu nvdiguid gehört auch ein Patchprogramm, das kleinere Fehler
in NVDI 3.x und 4.x behebt.
[Beh91] Wilfried Behne, Andreas Kromke, Fallen im VDI des Atari ST und wie man sie umgeht, c't 1991, Heft 3
Es werden vor allem Fehler in den Bildschirmtreibern beschrieben.
[Pru92] Laurenz Prüßner, ... es ist alles so schön Bunt hier, ST-Magazin 5/92, 7/92, 9/92
Umgang mit mehr als 256 Farben und mit geräteabhängigen Formaten.
[Pru93a] Laurenz Prüßner, Auf ein Neues!, ST-Magazin 1/93
.OFF TOPIC. Sollte jeder, der mit Fly Dials oder ähnlichen Libraries arbeitet, gelesen haben. Problemstellung: Die neuen AES benutzen für 3D-Objekte ob_state-Bits, die bisher frei verwendbar waren und von den Libraries auch für eigene Zwecke verwendet werden.
Das Problem betrifft ausschließlich AES 3.31 (TOS 4.01) und ist inzwischen gelöst.
[Pru93b] Laurenz Prüßner, Sekt oder Selters, ST-Magazin 4/93
MEMORY.SYS: Binding, Vorgehensweise bei Farbauflösungen, Fontausgabe mit und ohne SpeedoGDOS.
[Pru93c] Laurenz Prüßner, Summertime Blues, ST-Magazin 6/93
Listing zum Öffnen des MEMORY-Treibers.
[Pru94] Laurenz Prüßner, Mehr Schub!, ST-Computer 2/94
Drucken über GDOS, speziell wird das Drucken von Bitmap-Rastern - auch in Farbe - besprochen.
[Sche93] Oliver Scheel, Erste Hilfe für MultiTOS, ST-Magazin 6/93
Allgemeines zu Installation von MultiTOS.
[Bor94] Günter Born, Referenzhandbuch Dateiformate, 3. Auflage, Addison-Wesley, Bonn (1994)
Mit den entsprechenden Treibern ist es relativ einfach, im .IMG- und im .GEM-Format auszugeben. In diesem Buch steht, wie man diese Formate wieder einliest (und mehr).
[Bor93] Günter Born, Dateiformate Programmierhandbuch, Addison-Wesley, Bonn (1993)
Sourcen (TurboC, TurboPascal) zum Laden und Speichern der Formate. Zum Auswerten der Daten benötigt man weiter das Referenzhandbuch.
[Ore85] Tim Oren, Professional GEM, (Internet, Filename: PROGEM)
Tim Oren geht zwar vor allem auf die Programmierung der AES ein, aber die Literaturliste wäre ohne ihn unvollständig.
[Walsh] Norman Walsh et al, comp.fonts FAQ
TeX DVI, PostScript, and Info versions of this FAQ are available from ftp.shsu.edu in /tex-archive/help/comp-fonts-FAQ. A Gopher server is also maintained at shsu.edu which can provide interactive access to the FAQ. Finally, an online, hypertext version of the FAQ is maintained (experimentally) on jasper.ora.com where an HTTP server runs. For example, point XMosaic (or a similar WWW browser) to http://jasper.ora.com/.
[D81] Bundestag, Lobby et al, Schriftzeichengesetz, Gesetz zum Wiener Abkommen vom 12. Juni 1973 über den Schutz typographischer Schriftzeichen und ihre internationale Hinterlegung (Schriftzeichengesetz)
Vom 6. Juli 1981 (BGBl.II S. 382)
zuletzt geändert durch G vom 18.12.1986 (BGBl.I S. 2501)
ftp://ftp.uni-stuttgart.de/pub/doc/law/german/SchriftzeichenG.
[Kar92a] Peter Karow, Schrifttechnologie, Springer (1992)
Font technology, Springer (1994)
Dieses Buch hat mich richtig begeistert (auch wenn ausgerechnet das Speedo-Format fehlt). Intelligentes Scaling: Welche Tricks (Hints etc) beherrschen die einzelnen Fontformate (T1, TT, F3, IF, II)? Viel über Fontqualität, Lesbarkeit und Copyright von Fonts.
[Kar92b] Peter Karow, Digitale Schriften, Springer (1992)
Digital typefaces, Springer (1994)
Darstellung und Formate von Vektorschriftformaten wie Type 1, TrueType, F3, Intellifont etc. (Speedo wird nur am Rande erwähnt). Dabei werden auch viele Konzepte erklärt. Anhang F ist ein kleines Wörterbuch der Schriftbegriffe (deutsch - englisch - französisch)
[Mer94] Thomas Merz, Name der Wahrheit, c't 12/1994
Fontnamen und andere Informationen aus der TrueType-Datei auslesen.
[Mic] Microsoft, Verschiedene Dokumentationen und Programme zu TrueType-Fonts,
ftp://ftp.microsoft.com/developr/drg/TrueType-Info/
Enthält eine ausführliche TrueType-Dokumentation als
Windows-Helpfile, das alleine mit Windows ohne Zusatzprogramm
ausgedruckt werden kann und als MS-Word-Dokument (MS-Draw wird zum
Anzeigen auch benötigt)
[Hil95] Ulrich Hilgefort, Fonts mit Mengenrabatt, c't 1/1995
Qualitätsvergleich einiger CD's mit TrueType-Fonts:
[Kaw95] Kenji Kawakami, 101 Unuseless Japanese Inventions: The Art of Chindogu, W. W. Norton \& Co (1995), ISBN 0-393-31369-7
Unbeschreiblich. Siehe Buchbesprechung in Whole Earth Review, Nr. 88, Winter 95