Annotation of researchv10dc/man/adm/man9/font.9, revision 1.1.1.1

1.1       root        1: .TH FONT 9.5
                      2: .CT 2 comm_term
                      3: .SH NAME
                      4: font \- jerq font layouts
                      5: .SH SYNOPSIS
                      6: .B #include <jerq.h>
                      7: .br
                      8: .B #include <font.h>
                      9: .PP
                     10: .B typedef struct Fontchar Fontchar;
                     11: .br
                     12: .B typedef struct Font Font;
                     13: .PP
                     14: .B extern Font defont;
                     15: .SH DESCRIPTION
                     16: A
                     17: .I Font
                     18: is  a character set, stored as a single
                     19: Bitmap
                     20: with the characters
                     21: placed side-by-side.
                     22: It is described by the following data structures.
                     23: .IP
                     24: .EX
                     25: .ta +.5i +\w'unsigned char bottom;  'u
                     26: typedef struct Fontchar {
                     27:        short x;                /* left edge of bits */
                     28:        unsigned char top;      /* first non-zero scan-line */
                     29:        unsigned char bottom;   /* last non-zero scan-line */
                     30:        char left;              /* offset of baseline */
                     31:        unsigned char width;    /* width of baseline */
                     32: } Fontchar;
                     33: typedef struct Font {
                     34:        short n;                /* number of chars in font */
                     35:        char height;    /* height of bitmap */
                     36:        char ascent;    /* top of bitmap to baseline */
                     37:        long unused;
                     38:        Bitmap *bits;   /* where the characters are */
                     39:        Fontchar info[n+1];     /* n+1 character descriptors */
                     40: } Font;
                     41: .EE
                     42: .PP
                     43: Characters in
                     44: .L bits
                     45: abut exactly, so the displayed width of the character
                     46: .I c
                     47: is
                     48: .BI Font.info[ c +1].x\ -\ Font.info[ c ].x .
                     49: The first
                     50: .L left
                     51: columns of pixels in a character overlap the previous character.
                     52: The upper left corner of the nonempty columns appears at
                     53: .RB ( x, 0)
                     54: in the bitmap.
                     55: .L Width
                     56: is the distance to move horizontally after drawing a character.
                     57: The font bitmap has a fixed
                     58: .LR height ;
                     59: parameters
                     60: .L top
                     61: and
                     62: .L bottom
                     63: may speed up the copying of a character.
                     64: .PP
                     65: Characters are positioned by their upper left corners.
                     66: .PP
                     67: Fonts are stored on disk in binary with byte
                     68: order that of the terminal.
                     69: First in the file is the Font structure
                     70: with
                     71: .B bits
                     72: elided.
                     73: The data for the bitmap follows.
                     74: The header for the bitmap must be inferred from
                     75: .B Font.height
                     76: and
                     77: .BR Font.info[Font.n].x .
                     78: .SH EXAMPLES
                     79: .EX
                     80: Fontchar *i = f->info + c;
                     81: bitblt(f->bits, Rect(i->x, i->top, (i+1)->x, i->bottom),
                     82:        &display, Pt(p.x+i->left, p.y+i->top), fc);
                     83: p.x += i->width;
                     84: .EE
                     85: .ns
                     86: .IP
                     87: Copy character
                     88: .I c
                     89: from font
                     90: .I f
                     91: to point
                     92: .I p
                     93: with Code
                     94: .B F_XOR
                     95: or
                     96: .BR F_OR .
                     97: .PP
                     98: For Code
                     99: .LR F_STORE ,
                    100: use
                    101: .LR "Rect(i->x, 0, (i+1)->x, f->height)" .
                    102: .SH SEE ALSO
                    103: .IR jf (9.1),
                    104: .IR string (9.3),
                    105: .IR getfont (9.1)
                    106: .SH BUGS
                    107: The
                    108: .L unused
                    109: field is used, by
                    110: .IR getfont (9.1).

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.