Es gibt 5 verschiedene Fonttypen innerhalb der Japilib 5.1. Dies sind:
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); } :
|
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).
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.