[This text is German only. Sorry. - tm]

   Font-Protokoll Revision 4
  ===========================

     Allgemein
    -----------

    Eine minimale Untersttzung dieses Protokolls besteht in der Aus-
    wertung der Nachricht FONT_CHANGED. Programme, die eines der (GDOS-)
    Attribute Textwinkel, -breite, -kerning, -neigung oder -gre in
    1/65536-Punkt untersttzen, sollten auch die Nachricht XFONT_CHANGED,
    die zustzliche Informationen anbietet, untersttzen.
    ber die Nachricht FONT_SELECT kann der Fontselector auch von der Appli-
    kation aufgerufen werden. Dabei knnen auch die aktuell eingestellten
    Attribute bergeben werden.
    Untersttzt die Anwendung auch das XAcc-2-Protokoll, so kann sie auch
    leicht die Untersttzung der Besttigungsnachricht FONT_ACK offenlegen
    und ohne Environment-Variable nach Fontselektoren im Speicher suchen.

     Nachrichten
    -------------

    FONT_CHANGED-Nachricht:
      -> Nachricht des Fontselektors an eine Applikation, da der
         Zeichensatz und/oder die Zeichenattribute (Gre, Farbe und
         Effekte) in einem oder mehreren Fenstern der Applikation ge-
         wechselt werden sollen. Besitzt die Zielapplikation im er-
         weiterten XAcc-Namen die Kennung 'XFontAck', so mu diese
         Nachricht mit der Nachricht FONT_ACK beantwortet werden. An-
         sonsten ist die Untersttzung dieser Nachricht optional.

      -> negative Werte in msg[6/7] bzw. Null in msg[4/5] stehen fr
         keine Vernderung

         msg[0]   = FONT_CHANGED (0x7a18)
         msg[1]   = apID
         msg[2]   = 0
         msg[3]   = Fenster-Handle oder negativer Wert, falls
                    Font in allen Fenstern gewechselt werden soll
         msg[4]   = Font-ID oder Null
         msg[5]   = Font-Gre in Punkt (>0) oder Pixel (<0) bzw. Null fr
                    keine Vernderung
         msg[6]   = Font-Farbe
         msg[7]   = Effekte:
                     Bit 0: Fett
                     Bit 1: Hell
                     Bit 2: Kursiv
                     Bit 3: Unterstrichen
                     Bit 4: Umrandet
                     Bit 5: Schattiert
                     Bit 6: Invers
                     (restliche Bits sind reserviert)

    XFONT_CHANGED-Nachricht:
      -> Erweiterte (GDOS-) Attribute bermitteln. Diese Nachricht ist
         optional und wird VOR der Nachricht FONT_CHANGED verschickt,
         d.h. erst wenn die Nachricht FONT_CHANGED eintrifft und den
         gleichen Absender (msg[1] vergleichen!) hat, sollten diese Werte
         gesetzt werden! Dadurch werden doppelte Redraws und/oder Fehler
         vermieden.

         Die Nachricht FONT_CHANGED enthlt die auf Punkt gerundete Gre,
         d.h. Programme, die XFONT_CHANGED nicht untersttzen, knnen
         diesen Wert benutzen.

         Fontselektoren versenden idR diese Nachricht nur, wenn einer der
         bermittelten Attribute vom Normalwert abweicht!

         msg[0]   = XFONT_CHANGED (0x7a1b)
         msg[1]   = apID
         msg[2]   = 0
         msg[3/4] = Gre in 1/65536-Punkt (fix31)
         msg[5]   = Rotationswinkel in 1/10-Grad (0-3599)
         msg[6]   = Neigung in 1/10-Grad (-1800 - 1800)
         msg[7]   = Breite und Kerning:
                    Bit 15:    Paar-Kerning
                    Bit 13/14: Track-Kerningmodus (0-3)
                    Bit 0-12:  Breite in Punkt

                    in C:

                    typedef struct
                    {
                        unsigned int  pair  : 1;
                        unsigned int  track : 2;
                        unsigned int  width : 13;
                    } VECTOR_INFO;

    FONT_SELECT-Nachricht:
      -> Mit dieser Nachricht kann ein evtl. im Speicher vorhandener
         Fontselektor, der im erweiterten XAcc-Namen die Kennung
         'XFontSelect' besitzt, aufgerufen werden.
         Untersttzt die Anwendung und/oder der Fontselector kein XAcc-
         2-Protokoll, so kann noch nach dem Inhalt der (AES-) Environ-
         ment-Variablen 'FONTSELECT' gesucht werden. Diese Variable
         kann gegebenenfalls auch mehrere Namen (getrennt durch Semiko-
         lon) enthalten, wobei die Namen optional auch Pfad und Datei-
         erweiterung besitzen knnen, so da man den Fontselector unter
         MultiTasking bei Bedarf PARALLEL nachladen kann.

         Beispiele:

         setenv FONTSELECT=FONT_PAL;FONT_SEL

         oder

         setenv FONTSELECT=C:\FONTSEL\FONT_SEL.APP;C:\FONTSEL\FONT_PAL.APP

         Zur passiven Untersttzung des Font-Protokolls gengt aber die
         Auswertung der o.g. Nachrichten FONT_CHANGED und XFONT_CHANGED.

      -> negative Werte in msg[6/7] oder eine Null msg[4/5] bedeuten, da
         dieser Parameter nicht bentigt wird, nicht eingestellt werden
         soll oder noch nicht gesetzt wurde

         msg[0]   = FONT_SELECT (0x7a19)
         msg[1]   = apID
         msg[2]   = 0
         msg[3]   = Handle des Fensters, dessen Zeichensatz eingestellt
                    werden soll, oder ein negativer Wert, wenn der
                    Zeichensatz in allen Fenstern der Applikation ge-
                    wechselt werden soll
         msg[4]   = Font-ID oder Null
         msg[5]   = Font-Gre in Punkt (>0) oder Pixel (<0) bzw. Null,
                    falls Parameter nicht bentigt wird (s.o.)
         msg[6]   = Farbe
         msg[7]   = Effekte (s.o.)

    FONT_ACK-Nachricht:
      -> Fontselector darber informieren, ob die FONT_CHANGED-Nachricht
         ausgewertet bzw. der Zeichensatz/die Attribute eingestellt
         werden konnten.

         msg[0]   = FONT_ACK (0x7a1a)
         msg[1]   = apID
         msg[2]   = 0
         msg[3]   = TRUE (1):  Nachricht wurde ausgewertet
                    FALSE (0): Nachricht wurde ignoriert
         msg[4-7] = 0 (reserviert)

