
    *********************************************************************
    *                                                                   *
    *                   FONT - CONVERTER Version 1.2                    *
    *                            Anleitung                              *
    *                                                                   *
    *********************************************************************

Der Font-Converter ist ein einfach zu bedienendes Hilfsprogramm,das jeder
Druckerbesitzer (vorzugsweise NEC P6,P7,CP6,CP7 ,COMMODORE MPS 2000 oder
EPSON LQ 1500) gut brauchen können wird.
Zweck des Programms ist es,die gesamte Palette der Amiga-Fonts auch dem
Drucker zugängig zu machen. Bisher ging das nur z.B. mit NotePad als
Hardcopy vom Bildschirm,wobei meistens der Ausdruck erheblich an Qualität zu
wünschen ließ. Da aber viele Drucker die Möglichkeit bieten,optionale
Zeichensätze zu laden,bot sich die Idee an,ein Programm zu schreiben,das die
Amiga-Zeichensätze in Drucker-Zeichensätze umformt.
Nun können Sie mit Hilfe dieses Programmes
   1. die gelieferten Workbench-Fonts
   2. andere Fonts wie z.B. Zuma-Fonts etc.
   3. selbst mit dem Fed oder einem besseren Font-Editor erstellte Fonts
in Drucker-Fonts konvertieren lassen.Dies dauert nur wenige Sekunden.
Ein weiterer Vorteil des Programms ist die Möglichkeit,ohne Probleme das
Programm für andere 24-Nadeldrucker umzuschreiben,die keine zum NEC
kompatiblen Steuercodes haben.Voraussetzungen dafür sind:
   - Der Drucker muß in der Lage sein,Proportionalfonts als benutzerdefi-
     nierte Fonts zu verarbeiten.
   - Er muß die Möglichkeit bieten,den Zeilenvorschub zumindest in 1/60
     Zoll-Schritten frei zu wählen.
   - Der Aufbau eines Zeichens im Drucker muß gleich sein wie beim NEC.
     (siehe weiter unten bei TECH INFO )

BEDIENUNG DES PROGRAMMS

Aufruf : Von der WorkBench : Das FontCon-Icon zweimal kurz anklicken
         Aus dem CLI       : "FontCon" oder "run FontCon" eingeben und RETURN
                           drücken.

Beschreibung der Gadgets :

Font-Name : Hier geben Sie den Namen des gewünschten Font (ohne .font) ein.
Fontgröße : Hier die Größe des Fonts. Achtung: Es können nur Fonts mit bis
            zu 24 Punkten verarbeitet werden,da der NEC nur 24 Nadeln hat.
            Das Programm sollte aber leicht für 48-Nadler umzuschreiben
            sein. Bei Problemen damit (oder generell beim Umschreiben)
            können Sie sich brieflich gerne an mich wenden. Adresse steht
            weiter unten.
Lade Font!: Bei Betätigung dieses Gadgets wird der spezifizierte Font
            geladen. Zumindest wird's versucht... Wenn etwas nicht klappt,
            meldet sich das Programm mit einer Fehlermeldung.

x-Vergrößerung : Da die meisten Fonts recht klein und unvergrößert kaum zu
       lesen sind, kann man mit diesen Schaltern den Font auf bis zu
       neunfache Größe vergrößern lassen. Bis zu dreifacher Größe
       geht das immer; wenn der Font schmal genug ist, kann man ihn
       auch weiter vergrößern.
       ACHTUNG: Ein hierbei auftretendes Problem wird im Abschnitt
            PROBLEME besprochen (siehe unten !)

y-Vergrößerung : Dasselbe für die Höhe des Fonts. Stufen 1 und 2 sind immer
       möglich. Allerdings ist noch eine kleine Besonderheit zu 
       beachten: Es kann vorkommen, daß Vergrößerungsstufe 3 nicht
       wählbar ist, wohl aber Stufe 4. Ausprobieren schadet nicht.
       Wer wissen will, wie es dazu kommt, der lese den Abschnitt
       TECH INFO.

Zeilenabstand: Wenn das Default-Gadget an,d.h. weiß unterlegt (highlighted)
               ist,wählt der Computer einen passenden Zeilenvorschub für
               den Zeichensatz aus.Wer die Höhe des Zeilenvorschubs wählen
               möchte,kann sie in das kleine Gadget links eingeben (Werte
               sind in 1/60 Zoll;eine 24-Nadel-Druckzeile belegt 8/60 Zoll,
               das ist ca. 1/8 Zoll. Erlaubte Werte : alles von 1-128.
               Sinnvolle Werte :mindestens Fonthöhe*vert.Vergrößerung/3;
               mehr als 20 wird wohl selten gebraucht werden (Ausnahmen siehe
               unter TECH INFO).

Ausgabe geht zu: Beim Start des Programms ist der Drucker als Empfänger der
                 Daten voreingestellt.Man kann aber auch die Ausgabe auf ein
                 File lenken,indem man das Datei-Gadget anwählt und einen
                 gültigen Pfadnamen nach AmigaDOS-Konvention in das String-
                 gadget daneben eingibt.Selbstverständlich kann man die
                 Ausgabe sowohl zum Drucker als auch zum File schicken.
                 Um ein Font-File später einmal zum Drucker zu schicken,
                 müssen Sie nur im CLI 'copy FONTNAME to PAR:' eingeben,
                 wobei Sie natürlich FONTNAME durch den Namen (samt Pfad)
                 Ihres Files ersetzen müssen.
Start !       : Durch Betätigung dieses Gadget wird der Umwandlungsprozeß
                gestartet.Wenn alles klappt,sehen Sie in dem blau unterleg-
                ten Quadrat (mitte unten) den soeben bearbeiteten Buchsta-
                ben. Wenn etwas fehlt (z.B. kein Font geladen) bricht die
                Routine mit einer Fehlermeldung ab.Wenn Ausgabe zum Printer
                geschickt werden soll,muß dieser selbstverständlich ange-
                schaltet und Online sein (bei NEC : es leuchten POWER und
                SLCT/ALERT ,ohne zu blinken ).
Statuszeile   : Das lange Rechteck unter dem Startgadget ist die Status-
                zeile,in die das Programm seine Fehler- und sonstigen
                Meldungen ausgibt.
TESTE DEN FONT: Wenn ein Font zum Printer gesendet wurde,kann hiermit der
                gesamte Zeichensatz ausgedruckt werden,um sich einen ersten
                Eindruck zu verschaffen.
ENDE          : Durch Druck auf dieses Gadget wird das Programm (nach vor-
                hergehender Sicherheitsabfrage) beendet.
Deutsch       : Wenn der Zeichensatz es erlaubt,werden bei gewählten Gadget
                die Zeichen [,\,],{,|,} und ~ durch ÄÖÜäöüß ersetzt,um
                deutsche Texte ausdrucken zu können.Für den Ausdruck von
                deutschen Texten muß PRT: als Ausgabekanal gewählt werden!
                Da z.B. C-Programme die oben gezeigten Zeichen aber
                brauchen,ist diese Option abschaltbar.
                ACHTUNG: Einige Fonts (z.B. ZUMA-FONTS enthalten keine
                         Umlaute. FontCon bemerkt dies jedoch selbständig.

WIE BENUTZE ICH MEINE NEUEN DRUCKERFONTS ?

a) Ich habe FontCon gestartet und direkt den Font zum Drucker geschickt.

   - FontCon beenden,sofern kein Task mehr frei ist.
   - mit "Copy FILENAME to PRT:" das File FILENAME ausgeben lassen oder
   - das Textprogramm o.ä. starten, das dann den Text ausgibt
 
b) Ich habe seit dem letzten Reset FontCon mindestens einmal gestartet,habe
   aber nun den Font als File vorliegen, das ich zum Drucker schicken möchte.

   - mit "Copy DRUCKERFONT to PAR:" den Font zum Drucker schicken
   - weitermachen wie bei a)

c) Ich habe seit dem letzten Reset FontCon noch nicht gestartet, habe aber
   ein File vorliegen.

   - mit "Copy * to PRT:"(RETURN)(RETURN)(Ctrl-c)(RETURN) das Printer Device
      initialisieren
   - mit "Copy DRUCKERFONT to PAR:" den Font zum Drucker schicken
   - weitermachen wie bei a)

PROBLEME :

? - Ich weiß nicht alle Fontgrößen auswendig.
! - Macht nichts, das Programm sucht nach der Größe,die der eingegebenen am
    nächsten kommt, von allein. Bei Eingabe von sapphire 18 findet FontCon
    sapphire 19 selbstständig.

? - Wie bringe ich den Computer dazu,die Fonts auf einer anderen Diskette zu
    suchen?
! - Vor Start von FontCon im CLI die Zeile "Assign FONTS: PFADNAME"
    eingeben, wobei für PFADNAME der Name des Font-Directory einzusetzen
    ist. Beispiel: Das Font-Dir ist das Unterverzeichnis Fonts im Verzeichnis
    Extras auf der Diskette MyDisk. Das Kommando heißt dann :
      Assign FONTS: MyDisk:Extras/Fonts

? - Ich habe den Font zum Drucker geschickt,aber kaum lasse ich einen Text
    ausdrucken,ist der alte Font wieder da.
! - Wahrscheinlich haben Sie vergessen,vorher das Printer Device laden zu
    lassen. Beim Ausdruck über PRT: hat der Amiga es deshalb selbst geladen
    und den Drucker danach eingestellt. Dadurch wird der benutzerdefinierte
    Zeichensatz ausgeschaltet. Abhilfe : Drucker durch Betätigen der SLCT-Taste
    vom Computer abmelden (Fachsprache : OFFLINE schalten) und solange die
    FONT-Taste drücken, bis in der Leuchtanzeige der Buchstabe A erscheint
    (A bedeutet Ladbarer Zeichensatz AN). Danach den Computer wiederum durch
    Drücken der SLCT-Taste für den Computer ansprechbar (ONLINE) machen.
    Siehe dazu noch Abschnitt WIE BENUTZE ICH MEINE ... c) .

? - Die Zeichen sind so klein!
! - Sie haben noch nicht versucht, die Vergrößerungs-Schalter zu betätigen!

? - Die Zeichen hängen viel zu dicht aufeinander, der Abstand zwischen ihnen 
    ist zu gering!
! - Bis jetzt wurde verschwiegen, daß man FontCon noch mit einem optionalen
    Argument aufrufen kann. Tippt man z.B. "FontCon 3", so wird FontCon
    normal gestartet; bei der Umwandlung der Zeichen wird es aber hinter jedem
    Zeichen einen Zwischenraum von 3 Druckzeilen frei lassen. Es sind Werte von 
    1 bis 9 möglich; 0 ist die Standardeinstellung.

ACHTUNG : Heute (29.4.1989) habe ich ein Problem bemerkt, das in Verbindung mit
=======   den x-Vergrößerungs-Gadgets auftritt: FontCon liest die Fontstruktur
     Font->tf_XSize aus, um festzustellen, wie breit das breiteste Zeichen
     dieses Fonts ist. Problem: Die mitgelieferten Workbench-Fonts halten
     sich an die Konvention, die Breite des breitesten Zeichens in dieser
     Variable festzuhalten. Manche (z.B. die neuen Fonts der Workbench 1.3)
     tun dies jedoch nicht. Folge: Vergrößerungsstufen sind wählbar, 
     obwohl Vergrößerung gar nicht möglich ist -> Der Drucker STÜRZT AB!
     (tja, zumindest kann man mit ihm nicht mehr weiterarbeiten). Abhilfe:
     Mit Vergrößerungsstufe 1 (horizontal) und beliebiger vertikaler Stufe
     FontCon den Font bearbeiten lassen (Ausgabe in Datei schicken!!).
     Dann die Datei mit folgendem BASIC-Programm bearbeiten:

      INPUT "Geben Sie den Namen des Druckerfont-Files ein :",n$
      INPUT "Vergrößerung doppelt (1) oder dreifach (2) ";v
      OPEN n$ FOR APPEND AS 1  
      PRINT #1,CHR$(28);CHR$(69);CHR$(v);
      CLOSE 1

     Falsche Eingaben fängt dieses Programm natürlich nicht ab. Es erfüllt
     aber seinen Zweck.

==== ACHTUNG :  Der folgende Abschnitt ist für Leute gedacht, die programmieren
====      können. "Normale" Benutzer benötigen die hier zu findenden
====      Informationen nicht.

TECH INFO:

1. Warum wird PAR: angesprochen (und nicht,wie üblich, PRT:) ?
   Tja,das Printer Device (PRT:) ist eine sehr praktische Sache,da es
   Programmkompatibilität unter fast allen Druckern gewährleistet. Da aber
   der NEC ein besonders leistungsfähiger Drucker ist,gibt es einige Sachen,
   die er kann,aber andere Drucker nicht.Dazu gehört die Fähigkeit,einen
   benutzerdefinierten Zeichensatz zu laden. Diese Möglichkeit bietet einem
   das Printer Device nicht. Wenn wir jetzt versuchen würden,diese Daten
   über PRT: zum Drucker zu schicken,würde rein gar nichts passieren,da PRT:
   diese Steuercodes einfach verschluckt. Daher müssen wir die Daten zu PAR:
   schicken.

2. Aufbau eines Druckerzeichens

   Zuerst wird der Drucker initialisiert,auf LQ-Prop.schrift geschaltet,der
   interne Zeichensatz in den Bereich des Userzeichensatzes kopiert ,und
   Start- und Endzeichen (normal 32 und 127) übermittelt.Dann folgen die
   Zeichen byteweise : die ersten drei Bytes beschreiben den Aufbau des
   Zeichens :  1.: Anzahl Druckspalten vor dem Zeichen
               2.: Breite des Zeichens in Druckspalten
               3.: Anzahl Druckspalten nach dem Zeichen .
   Dann kommen die Daten,eine Spalte=3 Bytes;von oben nach unten,MSB zuerst.

3. Im Gegensatz zur Version 1.1d sind nun viel mehr Vergrößerungsstufen 
   möglich. Dies wird folgendermaßen erreicht: Der NEC kann den Font, in dem
   er gerade druckt, intern (hardwaremäßig) auf zwei- und dreifache Breite und
   auf zweifache Höhe vergrößern. Somit sind die Vergrößerungsstufen 1,2,3 
   (horiz.) bzw. 1,2 (vert.) immer anwählbar. Manche Fonts sind so klein, daß
   FontCon sie softwaremäßig ebenfalls vergrößern kann. Kombiniert man beides,
   so erhält man Vergrößerungsstufen 1,2,3,4,6 und 9. In vertikaler Richtung 
   ist jedoch die 9fache Vergrößerung nicht möglich. Da es mehrere Möglich-
   keiten gibt, die einzelnen Stufen zu erreichen, wird hier kurz dargestellt,
   wie FontCon dabei vorgeht:

   HORIZONTALE VERGRÖSSERUNG:

   - FontCon versucht immer zuerst, 2-/3-fache Vergrößerung softwaremäßig zu
     erreichen. Geht das nicht, wird dies hardwaremäßig getan.
   - 4-/6-fache Vergr. sind möglich, wenn das breiteste Zeichen des Fonts
     schmaler als 19 Punkte ist. Grund: Maximale Zeichenbreite 37 Punkte.
   - 9-fache Vergr. ist möglich, wenn das breiteste Zeichen schmaler als 13
     Punkte ist.

   VERTIKALE VERGRÖSSERUNG:

   - 2-fache Vergrößerung wird möglichst softwaremäßig vorgenommen; dies geht,
     wenn die Fontgröße kleiner als 13 ist. Sonst wird die hardwaremäßige
     Vergrößerung eingeschaltet.
   - 3-fache Vergr. geht nur, wenn die Fontgröße kleiner als 9 Punkte ist.
   - 4-fache Vergr. geht, wenn die Fontgr.<13 ist.
   - 6-fache Vergr. geht, wenn dreifache Vergr. geht.

   Da der von FontCon eingestellte Zeilenvorschub mitvergrößert wird, wenn eine
   hardwaremäßige Vergrößerung eingeschaltet ist (ist auch gut so), stimmt die 
   Formel zur Handnachregelung des Zeilenabstandes nicht immer. Im Notfall muß
   man halt ein wenig probieren.

4. Dieses Programm wurde mit dem Aztec C-Compiler V3.6a geschrieben. Um auf
   die lästige +l -Option beim Compilieren verzichten zu können,habe ich im
   Programm alle Bibliotheksfunktionen,die ein Ergebnis zurückgeben,
   deklariert und außerdem viele Casts verwendet. Dadurch ergeben sich
   folgende Compileraufrufe :

   cc FontCon
   ln FontCon -lc

   Ob das Programm so schon Lattice-kompatibel ist,weiß ich nicht,da ich
   nur Aztec C besitze; wenn nicht, reicht es vielleicht, die Funktions-
   deklarationen wie
      struct Library *OpenLibrary();
   zu löschen ( nicht aber z.B. char *strcat(); oder FILE *fopen(); ).
   In der OpenWindow-Zeile muß dann hinter dem einfachen = noch eingeschoben
   werden : (struct Window *)

===== Ab hier "dürfen" wieder alle weiterlesen ...
=====
=====

Ich kann keine Garantie für die Kompatibilität dieses Programms übernehmen.
Wenn aber Probleme auftauchen sollten,die mir bei meiner gründlichen 
Fehlersuche durch die Lappen gegangen sind ,wenn Sie Wünsche und Anregungen 
für Verbesserungen haben oder wenn Sie das Programm gerne für Ihren Drucker 
umgeschrieben haben möchten,können Sie mit mir gerne brieflich Kontakt 
aufnehmen .

Meine Adresse :

   Tim Pietzcker
   Schwarzwaldstr. 52
   D-7819 Denzlingen

Der Quellcode des Programms ist durchweg ausführlich kommentiert.Wer Teile
davon gebrauchen kann, der soll sich bedienen.Ich hoffe,der Code kann
jemandem von Nutzen sein,so wie mir viele Public-Domain-Programme eine Menge
Stress bei der Fehlersuche in meinen Programmen erspart haben.
Die Routine zur Mutual Exclusion der Gadgets habe ich von FISH 52. Autor: Willy
Langeveld. Ich danke ihm hiermit herzlich für die Erlaubnis, diese Routine zu
übernehmen. Mögen viele weitere davon profitieren.
