/* Examples: font3.c*/
/* Define a font with three characters -- a lower-case j, * an arrow, and a Greek sigma. Use ASCII values 1 and 2 * (\001 and \002) for the arrow and sigma. Use the * ASCII value of j (= \152) for the j character. */
#include <gl/gl.h>
#define EXAMPLEFONT 1 #define efont_ht 16 #define efont_nc 127
unsigned short efont_bits[] = { /* lower-case j */ 0x7000, 0xd800, 0x8c00, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x1c00, 0x0000, 0x0000, 0x0c00, 0x0c00, /* arrow */ 0x0200, 0x0300, 0x0380, 0xafc0, 0xafe0, 0xaff0, 0xafe0, 0xafc0, 0x0380, 0x0300, 0x0200, /* sigma */ 0xffc0, 0xc0c0, 0x6000, 0x3000, 0x1800, 0x0c00, 0x0600, 0x0c00, 0x1800, 0x3000, 0x6000, 0xc180, 0xff80, };
#define efont_nr (sizeof efont_bits) #define ASSIGN(fontch, of, wi, he, xof, yof, wid) \ fontch.offset = of; \ fontch.w = wi; \ fontch.h = he; \ fontch.xoff = xof; \ fontch.yoff = yof; \ fontch.width = wid
Fontchar efont_chars[127];
main () {
ASSIGN(efont_chars['j'], 0, 6, 14, 0, -2, 8); ASSIGN(efont_chars['\001'],14, 12, 11, 0, 0, 14); ASSIGN(efont_chars['\002'],25, 10, 13, 0, 0, 12); prefsize (200,200); winopen("font"); color(BLACK); clear(); defrasterfont (EXAMPLEFONT, efont_ht, efont_nc, efont_chars, efont_nr, efont_bits); font (EXAMPLEFONT); color(RED); cmov2i(100, 100); charstr ("j\001\002\001jj\002"); cmov2i(100, 84); charstr("ajb\001c\002d"); sleep(10);
}
The charstr subroutine, defrasterfont subroutine, font subroutine.
Fonts in GL3.2 Version 4 for AIX: Programming Concepts describes font assignment in GL, and discusses relevant subroutines.