•  Back 
  •  Protokolle 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
Topic       : TOS - das Betriebssystem
Author      : 
Version     : tos.hyp (5. März 2013)
Subject     : Programmieren/Atari
Nodes       : 3001
Index Size  : 93602
HCP-Version : 5
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : Titel
@help       : 
@options    : +g -i -s +x +zz -t4
@width      : 70
View Ref-File15.5  Font-Protokoll                                               TOS

Beschreibung des Font-Protokolls, Revision 5

Eine minimale Unterstützung dieses Protokolls besteht in der Auswer- 
tung der Nachricht FONT_CHANGED. Programme, die eines der (GDOS-) At- 
tribute Textwinkel, -breite, -kerning, -neigung oder die Angabe der 
Textgröße in 1/65536 Punkt unterstützen, sollten auch die Nachricht 
XFONT_CHANGED, die zusätzliche Informationen anbietet, unterstützen.

Über die Nachricht FONT_SELECT kann der Fontselektor auch von der 
Applikation aufgerufen werden. Dabei können auch die aktuell einge- 
stellten Attribute übergeben werden.

Unterstützt die Anwendung auch das XAcc-2-Protokoll, so kann sie auch 
leicht die Unterstützung der Bestätigungsnachricht FONT_ACK offenlegen 
und ohne Environment-Variable nach Fontselektoren im Speicher suchen.

   ∙ FONT_CHANGED-Nachricht:
     Nachricht des Fontselektors an eine Applikation, daß der 
     Zeichensatz und/oder die Zeichenattribute (Größe, Farbe und 
     Effekte) in einem oder mehreren Fenstern der Applikation 
     gewechselt werden sollen. Besitzt die Zielapplikation im 
     erweiterten XAcc-Namen die Kennung "XFontAck", so muß diese 
     Nachricht mit der Nachricht FONT_ACK beantwortet werden. 
     Ansonsten ist die Unterstützung dieser Nachricht optional.

     Negative Werte in msg[6/7] bzw. Null in msg[4/5] stehen für keine 
     Veränderung

          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-Größe in Punkt (>0) oder Pixel (<0)
                    bzw. Null für keine Veränderung
          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
                    Bit 12: 1=Font ist monospaced; 0=unbekannt
                    (restliche Bits sind reserviert)

     Bit 12 ist mit der Revision 5 eingeführt worden.

   ∙ XFONT_CHANGED-Nachricht:
     Erweiterte (GDOS-)Attribute übermitteln. Diese Nachricht ist op- 
     tional 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 vermie- 
     den.

     Die Nachricht FONT_CHANGED enthält die auf Punkt gerundete Größe, 
     d.h. Programme, die XFONT_CHANGED nicht unterstützen, können 
     diesen Wert benutzen.

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

          msg[0]   = XFONT_CHANGED (0x7a1b)
          msg[1]   = apID
          msg[2]   = 0
          msg[3/4] = Größe 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-(!nolink [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 im Speicher vorhandener 
     Fontselektor, der im erweiterten XAcc-Namen die Kennung 
     "XFontSelect" besitzt, aufgerufen werden. Unterstützt die Anwen- 
     dung und/oder der Fontselektor kein XAcc-2-Protokoll, so kann 
     noch nach dem Inhalt der (AES-)Environment-Variablen "FONTSELECT" 
     gesucht werden. Diese Variable kann gegebenenfalls auch mehrere 
     Namen (getrennt durch Semikolon) enthalten, wobei die Namen 
     optional auch Pfad und Dateierweiterung besitzen können, so daß 
     man den Fontselektor unter Multitasking bei Bedarf parallel 
     nachladen kann.

     Beispiele:

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

     Zur passiven Unterstützung des Font-Protokolls genügt 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 benötigt 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 ein-
                     gestellt werden soll, oder ein negativer
                     Wert, wenn der Zeichensatz in allen Fenstern
                     der Applikation gewechselt werden soll
          msg[4]   = Font-ID oder Null
          msg[5]   = Font-Größe in Punkt (>0) oder Pixel (<0) bzw.
                     Null, falls der Parameter nicht benötigt wird
                     (s.o.)
          msg[6]   = Farbe
          msg[7]   = Effekte (s.o.)

   ∙ FONT_ACK-Nachricht:
     Fontselektor darüber informieren, ob die FONT_CHANGED-Nachricht 
     ausgewertet bzw. die Zeichensatz-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)

Querverweis: xFSL-Schnittstelle   Zeichensatzauswahl von MagiC