next up previous contents
Nächste Seite: Cursor Aufwärts: Grafik in JAPI Vorherige Seite: Grafikbefehle   Inhalt


Fonts

Es gibt 5 verschiedene Fonttypen innerhalb der Japilib 5.1. Dies sind:

  1. Courier (Monospaced)
  2. Helvetia (Sans Serif)
  3. Times (Serif)
  4. Dialoginput
  5. Dialogoutput

Neben dem Fonttyp sind weitere Attribute vorhanden. Ein Font kann Normal, Fett, Kursiv und Fett-Kursiv dargestellt werden. Auch die Fontgröße muss angegeben werden. Somit besitzt die Funktion zur Auswahl eines Fonts 4 Parameter:


    j_setfont(component,typ,style,height)

Der Parameter typ kann dabei folgende Werte annehmen:

Für den Parameter style sind folgende Werte möglich:

Die Größe height wird als Integerzahl übergeben. Sie kann prinzipiel beliebige positive Zahlen annehmen.

Es ist jedoch nicht immer nötig einen Font komplett zu spezifiezieren. Die Attribute eines Fonts können auch getrennt manipuliert werden. Dazu stellt die Japilib folgende Funktionen zur Verfügung:


    j_setfontname(component, typ);
    j_setfontstyle(component, style);
    j_setfontsize(component, height);

Die Parameter entsprechnen dabei genau den drei Fontparameter der j_setfont() Funktion.

Das folgende Beipiel realisiert eine dynamische Fontauswahl mit Preview-Funktion:


    /* Example font.c */
	
    :
    frame    = j_frame("Font Demo");
    menubar  = j_menubar(frame);
    file     = j_menu(menubar,"File");
    quit     = j_menuitem(file,"Quit");

    font     = j_menu(menubar,"Font");
    courier  = j_menuitem(font,"Courier");
    helvetia = j_menuitem(font,"Helvetia");
    times    = j_menuitem(font,"Times");
    dialog   = j_menuitem(font,"Dialog");
    dialogin = j_menuitem(font,"Dialog Input");

    style    = j_menu(menubar,"Style");
    normal   = j_menuitem(style,"Plain");
    bold     = j_checkmenuitem(style,"Bold");
    italic   = j_checkmenuitem(style,"Italic");

    size     = j_menu(menubar,"Size");
    f10      = j_menuitem(size,"10 pt");
    f12      = j_menuitem(size,"12 pt");
    f14      = j_menuitem(size,"14 pt");
    f18      = j_menuitem(size,"18 pt");

    label    = j_label(frame,"abcdefghijklmnopqrstuvwxyz");
    j_setsize(label,400,120);
    j_setpos(label,5,60);

    fontstyle = J_PLAIN;

    j_setfont(frame,J_HELVETIA,J_PLAIN,12);

    j_pack(frame);
    j_show(frame);

    obj = -1;
    while((obj!=quit) && (obj != frame))
    {
        obj=j_nextaction();

        if(obj==courier)  j_setfontname(label,J_COURIER);
        if(obj==helvetia) j_setfontname(label,J_HELVETIA);
        if(obj==times)    j_setfontname(label,J_TIMES);
        if(obj==dialog)   j_setfontname(label,J_DIALOG);
        if(obj==dialogin) j_setfontname(label,J_DIALOGINPUT);

        if(obj==normal)
        {
            fontstyle=J_PLAIN;
            j_setstate(bold,J_FALSE);
            j_setstate(italic,J_FALSE);
            j_setfontstyle(label,fontstyle);
        }
        if(obj==bold)
        {
            if(j_getstate(bold)==J_TRUE)
                fontstyle+=J_BOLD;
            else
                fontstyle-=J_BOLD;
            j_setfontstyle(label,fontstyle);
        }
        if(obj==italic)
        {
            if(j_getstate(italic)==J_TRUE)
                fontstyle+=J_ITALIC;
            else
                fontstyle-=J_ITALIC;
            j_setfontstyle(label,fontstyle);
        }

        if(obj==f10)     j_setfontsize(label,10);
        if(obj==f12)     j_setfontsize(label,12);
        if(obj==f14)     j_setfontsize(label,14);
        if(obj==f18)     j_setfontsize(label,18);

        sprintf(str,"StringWidth = %d FontHeight = %d Font  Ascent = %d",
            j_stringwidth(label,"abcdefghijklmnopqrstuvwxyz"),
            j_fontheight(label),j_fontascent(label));
        j_settext(frame,str);

    }
    :

Abbildung: Eine dynamische Fontauswahl mit Previewfunktion. Dargestellt wird der String in Times, fett und kursiv mit einer Fontgröße von 18 Pixeln.
font.eps

Das Beispiel bietet in der Menuleiste die Manipulationen des Fonttyps, des Fontstils, und der Fontgröße. Sobald ein Parameter verändert wurde, wird im Fenter ein String mit den entsprechenden Attributen dargestellt (siehe Abbildung 5.4).

Gleichzeitig wird in der Kopfzeile des Frames Größeninformationen über den String ausgegeben. Die beiden ersten Ausgabewerte definieren die Größe des Rechtecks, das den String umschließt. Der Ascent ist die Höhe des Fonts, gemessen von der Grundlinie bis zur Oberlängenlinie (Siehe Abbildung 5.5).

Abbildung 5.5: Die Metric eines Fonts.
metric.eps

Die vorhandenen Funktionen zur Bestimmung von Stingabmessungen sind:


    j_stringwidth(component,str);
    j_fontheight(component);
    j_fontascent(component);

Die Funktion j_stringwidth(component,str) liefert die Breite des Strings str zurück, die dieser haben würde, wenn er in der Komponente component dargestellt werden würde. Die Funktion j_fontheight(component) liefert die Gesamthöhe des Fonts zurück, die der Font der Komponente component hat. Analog liefert j_fontascent(component) den Ascent des Fonts zurück.


next up previous contents
Nächste Seite: Cursor Aufwärts: Grafik in JAPI Vorherige Seite: Grafikbefehle   Inhalt
Merten Joost 2003-02-26