diff options
-rw-r--r-- | doc/HISTORY | 6 | ||||
-rw-r--r-- | generator/pbmtext.c | 425 | ||||
-rw-r--r-- | lib/Makefile | 3 | ||||
-rw-r--r-- | lib/libpbmfont.c | 824 | ||||
-rw-r--r-- | lib/pbmfont.h | 4 | ||||
-rw-r--r-- | lib/pbmfontdata1.c | 250 | ||||
-rw-r--r-- | lib/pbmfontdata2.c | 441 |
7 files changed, 1053 insertions, 900 deletions
diff --git a/doc/HISTORY b/doc/HISTORY index 2e7cef0b..86615c98 100644 --- a/doc/HISTORY +++ b/doc/HISTORY @@ -6,6 +6,12 @@ CHANGE HISTORY not yet BJH Release 10.75.00 + pbmtext: Add -dry-run + + pbmtext: Add -dump-sheet + + pbmtext: Speedup: renders directly in raw PBM. + pbmreduce: add -randomseed. pbmreduce: fix undefined behavior when scale factor argument is diff --git a/generator/pbmtext.c b/generator/pbmtext.c index 8ae28616..cfb858a6 100644 --- a/generator/pbmtext.c +++ b/generator/pbmtext.c @@ -20,6 +20,7 @@ #include "pm_c_util.h" #include "mallocvar.h" +#include "nstring.h" #include "shhopt.h" #include "pbm.h" #include "pbmfont.h" @@ -33,13 +34,14 @@ struct CmdlineInfo { const char * text; /* text from command line or NULL if none */ const char * font; /* -font option value or NULL if none */ const char * builtin; /* -builtin option value or NULL if none */ - unsigned int dump; - /* undocumented dump option for installing a new built-in font */ - float space; /* -space option value or default */ - unsigned int width; /* -width option value or zero */ - int lspace; /* lspace option value or default */ - unsigned int nomargins; /* -nomargins */ - unsigned int verbose; + float space; /* -space option value or default */ + int lspace; /* -lspace option value or default */ + unsigned int width; /* -width option value or zero */ + unsigned int nomargins; /* -nomargins option specified */ + unsigned int dryrun; /* -dry-run option specified */ + unsigned int verbose; /* -verbose option specified */ + /* undocumented option */ + unsigned int dumpsheet; /* font data sheet in PBM format for -font */ }; @@ -61,21 +63,22 @@ parseCommandLine(int argc, const char ** argv, MALLOCARRAY_NOFAIL(option_def, 100); option_def_index = 0; /* incremented by OPTENTRY */ - OPTENT3(0, "font", OPT_STRING, &cmdlineP->font, NULL, 0); - OPTENT3(0, "builtin", OPT_STRING, &cmdlineP->builtin, NULL, 0); - OPTENT3(0, "dump", OPT_FLAG, NULL, &cmdlineP->dump, 0); - OPTENT3(0, "space", OPT_FLOAT, &cmdlineP->space, NULL, 0); - OPTENT3(0, "width", OPT_UINT, &cmdlineP->width, NULL, 0); - OPTENT3(0, "lspace", OPT_INT, &cmdlineP->lspace, NULL, 0); - OPTENT3(0, "nomargins", OPT_FLAG, NULL, &cmdlineP->nomargins, 0); - OPTENT3(0, "verbose", OPT_FLAG, NULL, &cmdlineP->verbose, 0); + OPTENT3(0, "font", OPT_STRING, &cmdlineP->font, NULL, 0); + OPTENT3(0, "builtin", OPT_STRING, &cmdlineP->builtin, NULL, 0); + OPTENT3(0, "space", OPT_FLOAT, &cmdlineP->space, NULL, 0); + OPTENT3(0, "lspace", OPT_INT, &cmdlineP->lspace, NULL, 0); + OPTENT3(0, "width", OPT_UINT, &cmdlineP->width, NULL, 0); + OPTENT3(0, "nomargins", OPT_FLAG, NULL, &cmdlineP->nomargins, 0); + OPTENT3(0, "verbose", OPT_FLAG, NULL, &cmdlineP->verbose, 0); + OPTENT3(0, "dry-run", OPT_FLAG, NULL, &cmdlineP->dryrun, 0); + OPTENT3(0, "dump-sheet", OPT_FLAG, NULL, &cmdlineP->dumpsheet, 0); /* Set the defaults */ - cmdlineP->font = NULL; + cmdlineP->font = NULL; cmdlineP->builtin = NULL; - cmdlineP->space = 0.0; - cmdlineP->width = 0; - cmdlineP->lspace = 0; + cmdlineP->space = 0.0; + cmdlineP->width = 0; + cmdlineP->lspace = 0; opt.opt_table = option_def; opt.short_allowed = FALSE; /* We have no short (old-fashioned) options */ @@ -128,6 +131,7 @@ parseCommandLine(int argc, const char ** argv, } cmdlineP->text = text; } + free(option_def); } @@ -170,16 +174,12 @@ computeFont(struct CmdlineInfo const cmdline, if (cmdline.verbose) reportFont(fontP); - if (cmdline.dump) { - pbm_dumpfont(fontP); - exit(0); - } *fontPP = fontP; } -struct text { +struct Text { char ** textArray; /* malloc'ed */ unsigned int allocatedLineCount; unsigned int lineCount; @@ -188,7 +188,7 @@ struct text { static void -allocTextArray(struct text * const textP, +allocTextArray(struct Text * const textP, unsigned int const maxLineCount, unsigned int const maxColumnCount) { @@ -198,7 +198,7 @@ allocTextArray(struct text * const textP, MALLOCARRAY_NOFAIL(textP->textArray, maxLineCount); for (line = 0; line < maxLineCount; ++line) { - if(maxColumnCount > 0) + if (maxColumnCount > 0) MALLOCARRAY_NOFAIL(textP->textArray[line], maxColumnCount+1); else textP->textArray[line] = NULL; @@ -209,7 +209,7 @@ allocTextArray(struct text * const textP, static void -freeTextArray(struct text const text) { +freeTextArray(struct Text const text) { unsigned int line; @@ -221,10 +221,16 @@ freeTextArray(struct text const text) { +enum FixMode {SILENT, /* convert silently */ + WARN, /* output message to stderr */ + QUIT /* abort */ }; + + static void fixControlChars(const char * const input, struct font * const fontP, - const char ** const outputP) { + const char ** const outputP, + enum FixMode const fixMode) { /*---------------------------------------------------------------------------- Return a translation of input[] that can be rendered as glyphs in the font 'fontP'. Return it as newly malloced *outputP. @@ -233,9 +239,10 @@ fixControlChars(const char * const input, Remove any trailing newline. (But leave intermediate ones as line delimiters). - - Turn anything that isn't a code point in the font to a single space - (which isn't guaranteed to be in the font either, of course). + + Depending on value of fixMode, turn anything that isn't a code point + in the font to a single space (which isn't guaranteed to be in the + font either, of course). -----------------------------------------------------------------------------*/ /* We don't know in advance how big the output will be because of the tab expansions. So we make sure before processing each input @@ -281,10 +288,17 @@ fixControlChars(const char * const input, output[outCursor++] = ' '; } else if (!fontP->glyph[(unsigned char)input[inCursor]]) { /* Turn this unknown char into a single space. */ - if(fontP->glyph[(unsigned char) ' '] == NULL) + if (fontP->glyph[(unsigned char) ' '] == NULL) pm_error("space character not defined in font"); - else + else if (fixMode == QUIT) + pm_error("character %d not defined in font", + (unsigned int )input[inCursor] ); + else { + if (fixMode == WARN) + pm_message("converting character %d to space", + (unsigned int) input[inCursor] ); output[outCursor++] = ' '; + } } else output[outCursor++] = input[inCursor]; @@ -300,17 +314,16 @@ fixControlChars(const char * const input, static void -fillRect(bit** const bits, - int const height, - int const width, - bit const color) { +clearBackground(bit ** const bits, + int const cols, + int const rows) { unsigned int row; - - for (row = 0; row < height; ++row) { - unsigned int col; - for (col = 0; col < width; ++col) - bits[row][col] = color; + + for (row = 0; row < rows; ++row) { + unsigned int colChar; + for (colChar = 0; colChar < pbm_packed_bytes(cols); ++colChar) + bits[row][colChar] = 0x00; } } @@ -514,7 +527,7 @@ getCharsWithinWidth(char const line[], static void -insertCharacter(const struct glyph * const glyph, +insertCharacter(const struct glyph * const glyphP, int const toprow, int const leftcol, unsigned int const cols, @@ -526,19 +539,20 @@ insertCharacter(const struct glyph * const glyph, -----------------------------------------------------------------------------*/ unsigned int glyph_y; /* Y position within the glyph */ - if (leftcol + glyph->x < 0 || - leftcol + glyph->x + glyph->width > cols || + if (leftcol + glyphP->x < 0 || + leftcol + glyphP->x + glyphP->width > cols || toprow < 0 || - toprow + glyph->height >rows ) + toprow + glyphP->height >rows ) pm_error("internal error. Rendering out of bounds"); - for (glyph_y = 0; glyph_y < glyph->height; ++glyph_y) { + for (glyph_y = 0; glyph_y < glyphP->height; ++glyph_y) { unsigned int glyph_x; /* position within the glyph */ - for (glyph_x = 0; glyph_x < glyph->width; ++glyph_x) { - if (glyph->bmap[glyph_y * glyph->width + glyph_x]) - bits[toprow + glyph_y][leftcol + glyph->x + glyph_x] = - PBM_BLACK; + for (glyph_x = 0; glyph_x < glyphP->width; ++glyph_x) { + if (glyphP->bmap[glyph_y * glyphP->width + glyph_x]) { + unsigned int const col = leftcol + glyphP->x + glyph_x; + bits[toprow+glyph_y][col/8] |= PBM_BLACK << (7-col%8); + } } } } @@ -547,14 +561,15 @@ insertCharacter(const struct glyph * const glyph, static void insertCharacters(bit ** const bits, - struct text const lp, + struct Text const lp, struct font * const fontP, int const topmargin, int const leftmargin, float const intercharacter_space, unsigned int const cols, unsigned int const rows, - int const lspace) { + int const lspace, + bool const fixedAdvance) { /*---------------------------------------------------------------------------- Render the text 'lp' into the image 'bits' using font *fontP and putting 'intercharacter_space' pixels between characters and @@ -581,14 +596,17 @@ insertCharacters(bit ** const bits, char const currentChar = lp.textArray[line][cursor]; unsigned int const glyphIndex = (unsigned char) currentChar; struct glyph * const glyphP = fontP->glyph[glyphIndex]; - int const toprow = row + fontP->maxheight + fontP->y - - glyphP->height - glyphP->y; + int const toprow = + row + fontP->maxheight + fontP->y - glyphP->height - glyphP->y; /* row number in image of top row in glyph */ assert(glyphP != NULL); insertCharacter(glyphP, toprow, leftcol, cols, rows, bits); + if (fixedAdvance) + leftcol += fontP->maxwidth; + else advancePosition(leftcol, currentChar, glyphP, intercharacter_space, accumulatedIcs, &leftcol, &accumulatedIcs); @@ -599,11 +617,11 @@ insertCharacters(bit ** const bits, static void -flowText(struct text const inputText, +flowText(struct Text const inputText, int const targetWidth, struct font * const fontP, float const intercharacterSpace, - struct text * const outputTextP, + struct Text * const outputTextP, unsigned int * const maxleftbP) { unsigned int outputLineNum; @@ -650,7 +668,7 @@ flowText(struct text const inputText, static void -truncateText(struct text const inputText, +truncateText(struct Text const inputText, unsigned int const targetWidth, struct font * const fontP, float const intercharacterSpace, @@ -685,16 +703,17 @@ truncateText(struct text const inputText, static void getText(char const cmdlineText[], struct font * const fontP, - struct text * const inputTextP) { + struct Text * const inputTextP, + enum FixMode const fixMode) { - struct text inputText; + struct Text inputText; if (cmdlineText) { MALLOCARRAY_NOFAIL(inputText.textArray, 1); inputText.allocatedLineCount = 1; inputText.lineCount = 1; fixControlChars(cmdlineText, fontP, - (const char**)&inputText.textArray[0]); + (const char**)&inputText.textArray[0], fixMode); } else { /* Read text from stdin. */ @@ -730,7 +749,8 @@ getText(char const cmdlineText[], if (textArray == NULL) pm_error("out of memory"); } - fixControlChars(buf, fontP, (const char **)&textArray[lineCount]); + fixControlChars(buf, fontP, + (const char **)&textArray[lineCount], fixMode); if (textArray[lineCount] == NULL) pm_error("out of memory"); ++lineCount; @@ -745,7 +765,62 @@ getText(char const cmdlineText[], static void -computeImageHeight(struct text const formattedText, +computeMargins(struct CmdlineInfo const cmdline, + struct Text const inputText, + struct font * const fontP, + unsigned int * const vmarginP, + unsigned int * const hmarginP) { + + if (cmdline.nomargins) { + *vmarginP = 0; + *hmarginP = 0; + } else { + if (inputText.lineCount == 1) { + *vmarginP = fontP->maxheight / 2; + *hmarginP = fontP->maxwidth; + } else { + *vmarginP = fontP->maxheight; + *hmarginP = 2 * fontP->maxwidth; + } + } +} + + + +static void +formatText(struct CmdlineInfo const cmdline, + struct Text const inputText, + struct font * const fontP, + unsigned int const hmargin, + struct Text * const formattedTextP, + unsigned int * const maxleftb0P) { +/*---------------------------------------------------------------------------- + Flow or truncate lines to meet user's width request. +-----------------------------------------------------------------------------*/ + if (cmdline.width > 0) { + unsigned int const fontMargin = fontP->x < 0 ? -fontP->x : 0; + + if (cmdline.width > INT_MAX -10) + pm_error("-width value too large: %u", cmdline.width); + else if (cmdline.width < 2 * hmargin) + pm_error("-width value too small: %u", cmdline.width); + else if (inputText.lineCount == 1) { + flowText(inputText, cmdline.width - fontMargin, + fontP, cmdline.space, formattedTextP, maxleftb0P); + freeTextArray(inputText); + } else { + truncateText(inputText, cmdline.width - fontMargin, + fontP, cmdline.space, maxleftb0P); + *formattedTextP = inputText; + } + } else + *formattedTextP = inputText; +} + + + +static void +computeImageHeight(struct Text const formattedText, const struct font * const fontP, int const interlineSpace, unsigned int const vmargin, @@ -769,7 +844,7 @@ computeImageHeight(struct text const formattedText, static void -computeImageWidth(struct text const formattedText, +computeImageWidth(struct Text const formattedText, const struct font * const fontP, float const intercharacterSpace, unsigned int const hmargin, @@ -817,98 +892,180 @@ computeImageWidth(struct text const formattedText, -int -main(int argc, const char *argv[]) { +static void +renderText(unsigned int const cols, + unsigned int const rows, + struct font * const fontP, + unsigned int const hmargin, + unsigned int const vmargin, + struct Text const formattedText, + unsigned int const maxleftb, + float const space, + int const lspace, + bool const fixedAdvance, + FILE * const ofP) { + + bit ** const bits = pbm_allocarray(pbm_packed_bytes(cols), rows); + + /* Fill background with white */ + clearBackground(bits, cols, rows); + + /* Put the text in */ + insertCharacters(bits, formattedText, fontP, vmargin, hmargin + maxleftb, + space, cols, rows, lspace, fixedAdvance); + + { + unsigned int row; + + pbm_writepbminit(ofP, cols, rows, 0); + + for (row = 0; row < rows; ++row) + pbm_writepbmrow_packed(ofP, bits[row], cols, 0); + } + + pbm_freearray(bits, rows); +} + + + +static char const * sheetTextArray[] = { +"M \",/^_[`jpqy| M", +" ", +"/ !\"#$%&'()*+ /", +"< ,-./01234567 <", +"> 89:;<=>?@ABC >", +"@ DEFGHIJKLMNO @", +"_ PQRSTUVWXYZ[ _", +"{ \\]^_`abcdefg {", +"} hijklmnopqrs }", +"~ tuvwxyz{|}~ ~", +" ", +"M \",/^_[`jpqy| M" }; + + + +static void +validateText(const char ** const textArray, + struct font * const fontP) { +/*---------------------------------------------------------------------------- + Abort the program if there are characters in 'textArray' which cannot be + rendered in font *fontP. +-----------------------------------------------------------------------------*/ + const char * output; + unsigned int textRow; + + for (textRow = 0; textRow < 12; ++textRow) + fixControlChars(textArray[textRow], fontP, &output, QUIT); + + pm_strfree(output); +} + + + +static void +renderSheet(struct font * const fontP, + FILE * const ofP) { + + int const cols = fontP->maxwidth * 16; + int const rows = fontP->maxheight * 12; + struct Text const sheetText = { (char ** const) sheetTextArray, 12, 12}; + + validateText(sheetTextArray, fontP); + + renderText(cols, rows, fontP, 0, 0, sheetText, MAX(-(fontP->x),0), + 0.0, 0, TRUE, ofP); +} + + + +static void +dryrunOutput(unsigned int const cols, + unsigned int const rows, + FILE * const ofP) { + + fprintf(ofP, "%u %u\n", cols, rows); +} + + + +static void +pbmtext(struct CmdlineInfo const cmdline, + struct font * const fontP, + FILE * const ofP) { - struct CmdlineInfo cmdline; - bit ** bits; unsigned int rows, cols; - struct font * fontP; - unsigned int vmargin, hmargin, fontMargin; - struct text inputText; - struct text formattedText; + /* Dimensions in pixels of the output image */ + unsigned int cols0; + unsigned int vmargin, hmargin; + /* Margins in pixels we add to the output image */ + unsigned int hmargin0; + struct Text inputText; + struct Text formattedText; unsigned int maxleftb, maxleftb0; - pm_proginit(&argc, argv); + getText(cmdline.text, fontP, &inputText, + cmdline.verbose ? WARN : SILENT); - parseCommandLine(argc, argv, &cmdline); - - computeFont(cmdline, &fontP); + computeMargins(cmdline, inputText, fontP, &vmargin, &hmargin0); - getText(cmdline.text, fontP, &inputText); - - if (cmdline.nomargins) { - vmargin = 0; - hmargin = 0; - } else { - if (inputText.lineCount == 1) { - vmargin = fontP->maxheight / 2; - hmargin = fontP->maxwidth; - } else { - vmargin = fontP->maxheight; - hmargin = 2 * fontP->maxwidth; - } - } - - if (cmdline.width > 0) { - fontMargin = fontP->x < 0 ? -fontP->x : 0; + formatText(cmdline, inputText, fontP, hmargin0, + &formattedText, &maxleftb0); - if (cmdline.width > INT_MAX -10) - pm_error("-width value too large: %u", cmdline.width); - else if (cmdline.width < 2 * hmargin) - pm_error("-width value too small: %u", cmdline.width); - /* Flow or truncate lines to meet user's width request */ - else if (inputText.lineCount == 1) { - flowText(inputText, cmdline.width - fontMargin, - fontP, cmdline.space, &formattedText, &maxleftb0); - freeTextArray(inputText); - } else { - truncateText(inputText, cmdline.width - fontMargin, - fontP, cmdline.space, &maxleftb0); - formattedText = inputText; - } - } else - formattedText = inputText; - if (formattedText.lineCount == 0) pm_error("No input text"); - computeImageHeight(formattedText, fontP, cmdline.lspace, vmargin, - &rows); + computeImageHeight(formattedText, fontP, cmdline.lspace, vmargin, &rows); computeImageWidth(formattedText, fontP, cmdline.space, - cmdline.width > 0 ? 0 : hmargin, &cols, &maxleftb); + cmdline.width > 0 ? 0 : hmargin0, &cols0, &maxleftb); - if (cols == 0 || rows == 0) + if (cols0 == 0 || rows == 0) pm_error("Input is all whitespace and/or non-renderable characters."); - if (cmdline.width > 0) { - if(cmdline.width < cols) - pm_error("internal error: calculated image width (%u) exceeds " - "specified -width value: %u", - cols, cmdline.width); - else if(maxleftb0 != maxleftb) - pm_error("internal error: contradicting backup values"); - else { - hmargin = MIN(hmargin, (cmdline.width - cols) / 2); - cols = cmdline.width; - } + if (cmdline.width == 0) { + cols = cols0; + hmargin = hmargin0; + } else { + if (cmdline.width < cols0) + pm_error("internal error: calculated image width (%u) exceeds " + "specified -width value: %u", + cols0, cmdline.width); + else if (maxleftb0 != maxleftb) + pm_error("internal error: contradicting backup values"); + else { + hmargin = MIN(hmargin0, (cmdline.width - cols0) / 2); + cols = cmdline.width; + } } - bits = pbm_allocarray(cols, rows); + if (cmdline.dryrun) + dryrunOutput(cols, rows, ofP); + else + renderText(cols, rows, fontP, hmargin, vmargin, formattedText, + maxleftb, cmdline.space, cmdline.lspace, FALSE, ofP); - /* Fill background with white */ - fillRect(bits, rows, cols, PBM_WHITE); + freeTextArray(formattedText); +} - /* Put the text in */ - insertCharacters(bits, formattedText, fontP, vmargin, hmargin + maxleftb, - cmdline.space, cols, rows, cmdline.lspace); - pbm_writepbm(stdout, bits, cols, rows, 0); - pbm_freearray(bits, rows); +int +main(int argc, const char *argv[]) { + + struct CmdlineInfo cmdline; + struct font * fontP; + + pm_proginit(&argc, argv); + + parseCommandLine(argc, argv, &cmdline); + + computeFont(cmdline, &fontP); + + if (cmdline.dumpsheet) + renderSheet(fontP, stdout); + else + pbmtext(cmdline, fontP, stdout); - freeTextArray(formattedText); pm_close(stdout); return 0; diff --git a/lib/Makefile b/lib/Makefile index 0097a04e..7af07803 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -27,7 +27,8 @@ endif LIBOBJECTS = libpm.o pmfileio.o fileio.o colorname.o \ libpamd.o \ - libpbm1.o libpbm2.o libpbm3.o libpbmfont.o \ + libpbm1.o libpbm2.o libpbm3.o \ + libpbmfont.o pbmfontdata1.o pbmfontdata2.o \ libpgm1.o libpgm2.o \ libppm1.o libppm2.o libppmcmap.o libppmcolor.o libppmfuzzy.o \ libppmd.o ppmdfont.o standardppmdfont.o path.o \ diff --git a/lib/libpbmfont.c b/lib/libpbmfont.c index a90e248a..aecc6226 100644 --- a/lib/libpbmfont.c +++ b/lib/libpbmfont.c @@ -1,4 +1,4 @@ -/* libpbmfont.c - pbm utility library part 5 +/* ** ** Font routines. ** @@ -12,13 +12,6 @@ ** copyright notice and this permission notice appear in supporting ** documentation. This software is provided "as is" without express or ** implied warranty. -** -** BDF font specs available from: -** https://partners.adobe.com/public/developer/en/font/5005.BDF_Spec.pdf -** Glyph Bitmap Distribution Format (BDF) Specification -** Version 2.2 -** 22 March 1993 -** Adobe Developer Support */ #include <assert.h> @@ -32,13 +25,6 @@ #include "pbmfont.h" #include "pbm.h" -/* Constants for the built-in fixed font and fonts loaded by - pbm_loadpbmfont(). - - These values are ignored when using the built-in BDF font, - or fonts loaded from files in BDF format by pbm_loadbdffont() . - For fonts loaded from BDF files code points between 0 and 255 are valid. -*/ static unsigned int const firstCodePoint = 32; /* This is the code point of the first character in a pbmfont font. In ASCII, it is a space. @@ -49,627 +35,6 @@ static unsigned int const nCharsInFont = 96; characters at position 32 (ASCII space) through 127, so that's 96. */ -/* The default font, packed in hex so this source file doesn't get huge. -** You can replace this with your own font using pbm_dumpfont(). -*/ -#define DEFAULTFONT_ROWS 155 -#define DEFAULTFONT_COLS 112 -static unsigned long int const -defaultfont_bits[DEFAULTFONT_ROWS][(DEFAULTFONT_COLS+31)/32] = { - {0x00000000L,0x20000c00L,0x10000000L,0x00000000L}, - {0xc600a000L,0x42000810L,0x00000002L,0x00000063L}, - {0x6c00a000L,0x45000810L,0x00000002L,0x00000036L}, - {0x6c00a000L,0x88800808L,0xf2e1dee2L,0x00000036L}, - {0x54000000L,0x80000800L,0x11122442L,0x0000002aL}, - {0x54000001L,0x00000800L,0x11122442L,0x0000002aL}, - {0x54000001L,0x00000800L,0x11122282L,0x0000002aL}, - {0x44000102L,0x00000800L,0x11122382L,0x00000022L}, - {0xee000102L,0x00000800L,0x11e1e102L,0x00000077L}, - {0x00000204L,0x00000800L,0x11002102L,0x00000000L}, - {0x00000000L,0x00000c00L,0x11002102L,0x00000000L}, - {0x00000000L,0x003f8000L,0xe3807600L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x02000080L,0x00040000L,0x00120000L,0x00000001L}, - {0x04000082L,0x828e1838L,0x20210100L,0x00000002L}, - {0x04000082L,0x82912448L,0x20210100L,0x00000002L}, - {0x08000082L,0x8fd01940L,0x404087c2L,0x00000004L}, - {0x08000080L,0x050c0622L,0x00408102L,0x00000004L}, - {0x10000080L,0x05061874L,0x0040828fL,0x00008008L}, - {0x10000080L,0x1f912688L,0x00408002L,0x00000008L}, - {0x20000000L,0x0a11098cL,0x00408002L,0x00000010L}, - {0x20000080L,0x0a0e0672L,0x00210000L,0x00000010L}, - {0x40000000L,0x00040000L,0x00210000L,0x00000020L}, - {0x00000000L,0x00000000L,0x00120000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x004e0838L,0x7023e1cfL,0x00008000L}, - {0x00000000L,0x00913844L,0x88620208L,0x00008000L}, - {0x08000000L,0x00910844L,0x08a20401L,0x00000004L}, - {0x10000000L,0x01110844L,0x08a20401L,0x00000008L}, - {0x20000000L,0x01110808L,0x3123c781L,0x00000010L}, - {0x400003e0L,0x02110810L,0x0a202441L,0x00000020L}, - {0x20000000L,0x02110820L,0x0bf02442L,0x00000010L}, - {0x10008000L,0x04110844L,0x88242442L,0x00000008L}, - {0x08008002L,0x040e3e7cL,0x7073c382L,0x00000004L}, - {0x00010000L,0x08000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x0000e1c0L,0x00000000L,0x00000000L,0x00000000L}, - {0x00011220L,0x00000000L,0x70e38f87L,0x00000000L}, - {0x20011220L,0x00020020L,0x89108448L,0x00008010L}, - {0x10011220L,0x00040010L,0x09314448L,0x00008008L}, - {0x0800e221L,0x02083e08L,0x11514788L,0x00000004L}, - {0x040111e0L,0x00100004L,0x2153e448L,0x00000002L}, - {0x08011020L,0x00083e08L,0x213a2448L,0x00008004L}, - {0x10011040L,0x02040010L,0x01022448L,0x00008008L}, - {0x2000e381L,0x02020020L,0x20e77f87L,0x00000010L}, - {0x00000000L,0x04000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x3803e7efL,0xc73bbe3dL,0xdb863ce7L,0x0000001cL}, - {0x44011224L,0x48910808L,0x91036648L,0x00008022L}, - {0x4c011285L,0x48910808L,0xa1036648L,0x00008026L}, - {0x54011387L,0x081f0808L,0xc102a548L,0x0000802aL}, - {0x54011285L,0x09910808L,0xe102a548L,0x0000802aL}, - {0x4e011204L,0x08910848L,0x9112a4c8L,0x00008027L}, - {0x40011224L,0x08910848L,0x891224c8L,0x00008020L}, - {0x3803e7efL,0x073bbe31L,0xcff77e47L,0x0000001cL}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000003L,0x00000000L}, - {0x0003e1cfL,0x87bff7efL,0xdfbf77c2L,0x00000000L}, - {0x00013224L,0x48a4a244L,0x89122442L,0x00000000L}, - {0x00011224L,0x4824a244L,0xa8a14482L,0x00000000L}, - {0x00013227L,0x8e04226cL,0xa8414102L,0x00000000L}, - {0x0001e224L,0x83842228L,0xa8a08102L,0x00000000L}, - {0x00010224L,0x40842228L,0xd8a08242L,0x00000000L}, - {0x00010224L,0x48843638L,0x51108442L,0x00000000L}, - {0x0003c1ceL,0x6f1f1c10L,0x53b9c7c2L,0x00000000L}, - {0x00000060L,0x00000000L,0x00000002L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000003L,0x00000000L}, - {0xfe000000L,0x00000000L,0x00000000L,0x0000007fL}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00010180L,0x000000c0L,0x003001c0L,0x00000000L}, - {0x08008081L,0x00040040L,0x00100200L,0x00000004L}, - {0x10008082L,0x80040040L,0x00100200L,0x00000008L}, - {0x10004084L,0x40023c78L,0x70f1c7c7L,0x00004008L}, - {0x10004080L,0x00000244L,0x89122208L,0x00008008L}, - {0x20002080L,0x00001e44L,0x8113e208L,0x00008010L}, - {0x10002080L,0x00002244L,0x81120208L,0x00008008L}, - {0x10001080L,0x00002244L,0x89122208L,0x00008008L}, - {0x10001080L,0x00001db8L,0x70e9c787L,0x00008008L}, - {0x10000880L,0x00000000L,0x00000000L,0x00008008L}, - {0x08000180L,0x00000000L,0x00000000L,0x00008004L}, - {0x00000000L,0x1fc00000L,0x00000007L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00030080L,0x981c0000L,0x00000000L,0x00000000L}, - {0x20010000L,0x08040000L,0x00000000L,0x00000010L}, - {0x10010000L,0x08040000L,0x00000000L,0x00000008L}, - {0x10016387L,0x898474b8L,0x72e1d5c7L,0x00000008L}, - {0x10019080L,0x8a042a64L,0x89122208L,0x00008008L}, - {0x08011080L,0x8c042a44L,0x89122207L,0x00000004L}, - {0x10011080L,0x8a042a44L,0x89122200L,0x00008008L}, - {0x10011080L,0x89042a44L,0x89122208L,0x00008008L}, - {0x1003bbe0L,0x98dfebe6L,0x71e1e787L,0x00000008L}, - {0x10000000L,0x80000000L,0x01002000L,0x00000008L}, - {0x20000000L,0x80000000L,0x01002000L,0x00000010L}, - {0x00000007L,0x00000000L,0x03807000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00008000L,0x00000000L,0x10410000L,0x00000000L}, - {0x00008000L,0x00000000L,0x20408000L,0x00000000L}, - {0x0001f66eL,0xfdfbf77cL,0x20408000L,0x00000000L}, - {0x24008224L,0x488a2248L,0x20408240L,0x00000012L}, - {0x54008224L,0x4a842210L,0x40404540L,0x0000002aL}, - {0x48008222L,0x8a8a1420L,0x20408480L,0x00000024L}, - {0x00008a23L,0x85111c44L,0x20408000L,0x00000000L}, - {0x000071d1L,0x0531887cL,0x20408000L,0x00000000L}, - {0x00000000L,0x00000800L,0x20408000L,0x00000000L}, - {0x00000000L,0x00000800L,0x10410000L,0x00000000L}, - {0x00000000L,0x00003000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x00000000L,0x00000000L,0x00000000L}, - {0x00000000L,0x20000c00L,0x10000000L,0x00000000L}, - {0xc600a000L,0x42000810L,0x00000002L,0x00000063L}, - {0x6c00a000L,0x45000810L,0x00000002L,0x00000036L}, - {0x6c00a000L,0x88800808L,0xf2e1dee2L,0x00000036L}, - {0x54000000L,0x80000800L,0x11122442L,0x0000002aL}, - {0x54000001L,0x00000800L,0x11122442L,0x0000002aL}, - {0x54000001L,0x00000800L,0x11122282L,0x0000002aL}, - {0x44000102L,0x00000800L,0x11122382L,0x00000022L}, - {0xee000102L,0x00000800L,0x11e1e102L,0x00000077L}, - {0x00000204L,0x00000800L,0x11002102L,0x00000000L}, - {0x00000000L,0x00000c00L,0x11002102L,0x00000000L}, - {0x00000000L,0x003f8000L,0xe3807600L,0x00000000L} - }; - -/* A default BDF font */ -/* Not as nicely compacted as the PBM font, oh well. */ - -static struct glyph _g[190] = { - { 1, 1, 0, 0, 3, "\0" }, - { 1, 9, 1, 0, 3, "\1\1\1\1\1\1\1\0\1" }, - { 3, 3, 1, 6, 5, "\1\0\1\1\0\1\1\0\1" }, - { 5, 8, 0, 0, 6, "\0\1\0\1\0\0\1\0\1\0\1\1\1\1\1\0\1\0\1\0\0\1\0\1\0\1\1\1\1\1\0\1\0\1\0\0\1\0\1\0" }, - { 5, 11, 0, -1, 6, "\0\0\1\0\0\0\1\1\1\0\1\0\1\0\1\1\0\1\0\0\0\1\1\0\0\0\0\1\1\0\0\0\1\0\1\0\0\1\0\1\1\0\1\0\1\0\1\1\1\0\0\0\1\0\0" }, - { 8, 9, 0, 0, 9, "\0\1\1\0\0\0\1\1\1\0\0\1\1\1\1\0\1\0\0\1\0\1\0\0\0\1\1\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\1\0\1\1\0\0\0\1\0\1\0\0\1\0\1\0\0\1\0\0\1\0\1\0\0\0\1\1\0" }, - { 9, 9, 0, 0, 10, "\0\0\0\1\1\0\0\0\0\0\0\1\0\0\1\0\0\0\0\0\1\0\0\1\0\0\0\0\0\0\1\1\0\1\1\1\0\1\1\1\1\0\0\1\0\1\1\0\0\1\1\1\0\0\1\0\0\0\0\1\0\0\0\1\1\0\0\1\1\1\0\1\0\1\1\1\1\0\1\1\0" }, - { 2, 3, 1, 6, 4, "\1\1\0\1\1\0" }, - { 3, 12, 1, -3, 5, "\0\0\1\0\1\0\0\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1" }, - { 3, 12, 0, -3, 5, "\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\0\0\1\0\1\0\0" }, - { 5, 5, 0, 4, 6, "\0\0\1\0\0\1\0\1\0\1\0\1\1\1\0\1\0\1\0\1\0\0\1\0\0" }, - { 5, 5, 1, 1, 7, "\0\0\1\0\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\0\1\0\0" }, - { 2, 3, 0, -2, 3, "\0\1\0\1\1\0" }, - { 5, 1, 1, 3, 8, "\1\1\1\1\1" }, - { 1, 1, 1, 0, 3, "\1" }, - { 3, 9, 0, 0, 3, "\0\0\1\0\0\1\0\0\1\0\1\0\0\1\0\0\1\0\1\0\0\1\0\0\1\0\0" }, - { 5, 9, 0, 0, 6, "\0\1\1\1\0\1\1\0\1\1\1\0\0\0\1\1\0\0\0\1\1\0\0\0\1\1\0\0\0\1\1\0\0\0\1\1\1\0\1\1\0\1\1\1\0" }, - { 4, 9, 0, 0, 6, "\0\0\1\0\0\1\1\0\1\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\1\1\1" }, - { 5, 9, 0, 0, 6, "\0\1\1\1\0\1\0\0\0\1\0\0\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\1\1\1\1\1" }, - { 5, 9, 0, 0, 6, "\0\1\1\1\0\1\0\0\0\1\0\0\0\0\1\0\0\0\1\0\0\1\1\1\0\0\0\0\0\1\0\0\0\0\1\1\0\0\0\1\0\1\1\1\0" }, - { 5, 9, 0, 0, 6, "\0\0\0\1\0\0\0\1\1\0\0\0\1\1\0\0\1\0\1\0\0\1\0\1\0\1\0\0\1\0\1\1\1\1\1\0\0\0\1\0\0\0\0\1\0" }, - { 5, 9, 0, 0, 6, "\0\0\1\1\1\0\1\0\0\0\0\1\0\0\0\0\1\1\1\0\0\0\0\1\1\0\0\0\0\1\0\0\0\0\1\1\0\0\1\1\0\1\1\1\0" }, - { 5, 9, 0, 0, 6, "\0\0\0\1\1\0\1\1\0\0\0\1\0\0\0\1\1\1\1\0\1\0\0\1\1\1\0\0\0\1\1\0\0\0\1\1\1\0\0\1\0\1\1\1\0" }, - { 5, 9, 0, 0, 6, "\1\1\1\1\1\1\0\0\0\1\0\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\0\1\0\0\0\0\1\0\0\0" }, - { 5, 9, 0, 0, 6, "\0\1\1\1\0\1\0\0\0\1\1\0\0\0\1\1\1\0\0\1\0\1\1\1\0\1\0\0\1\1\1\0\0\0\1\1\0\0\0\1\0\1\1\1\0" }, - { 5, 9, 0, 0, 6, "\0\1\1\1\0\1\0\0\1\1\1\0\0\0\1\1\0\0\0\1\1\1\0\0\1\0\1\1\1\1\0\0\0\1\0\0\0\1\1\0\1\1\0\0\0" }, - { 1, 6, 1, 0, 3, "\1\0\0\0\0\1" }, - { 2, 8, 0, -2, 3, "\0\1\0\0\0\0\0\0\0\0\0\1\0\1\1\0" }, - { 6, 5, 0, 1, 8, "\0\0\0\0\1\1\0\0\1\1\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1" }, - { 5, 3, 1, 2, 7, "\1\1\1\1\1\0\0\0\0\0\1\1\1\1\1" }, - { 6, 5, 1, 1, 8, "\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\1\1\0\0\1\1\0\0\0\0" }, - { 4, 9, 0, 0, 5, "\0\1\1\0\1\0\0\1\0\0\0\1\0\0\1\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\0\0\1\0\0" }, - { 10, 11, 1, -2, 11, "\0\0\0\0\1\1\1\1\0\0\0\0\1\1\0\0\0\0\1\0\0\1\1\0\0\0\0\0\0\1\0\1\0\0\1\1\0\1\0\1\1\0\0\1\0\0\1\0\0\1\1\0\1\0\0\0\1\0\0\1\1\0\1\0\0\1\0\0\1\0\1\0\1\0\0\1\0\0\1\0\1\0\0\1\1\0\1\1\0\0\0\1\0\0\0\0\0\0\0\0\0\0\1\1\1\1\1\0\0\0" }, - { 9, 9, 0, 0, 9, "\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\1\1\0\0\0\1\1\1" }, - { 7, 9, 0, 0, 8, "\1\1\1\1\1\1\0\0\1\0\0\0\1\1\0\1\0\0\0\0\1\0\1\0\0\0\1\1\0\1\1\1\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\1\0\1\0\0\0\1\1\1\1\1\1\1\1\0" }, - { 7, 9, 0, 0, 8, "\0\0\1\1\1\0\1\0\1\1\0\0\1\1\0\1\0\0\0\0\1\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\1\0\1\1\0\0\1\1\0\0\1\1\1\1\0" }, - { 8, 9, 0, 0, 9, "\1\1\1\1\1\1\0\0\0\1\0\0\0\1\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\0\0\0\1\1\0\1\1\1\1\1\1\0\0" }, - { 7, 9, 0, 0, 8, "\1\1\1\1\1\1\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\1\1\1" }, - { 7, 9, 0, 0, 8, "\1\1\1\1\1\1\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\1\1\1\0\0\0" }, - { 8, 9, 0, 0, 9, "\0\0\1\1\1\0\1\0\0\1\1\0\0\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\0\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, - { 8, 9, 0, 0, 9, "\1\1\1\0\0\1\1\1\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\1\1\1\1\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\1\1\1\0\0\1\1\1" }, - { 3, 9, 0, 0, 4, "\1\1\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, - { 4, 9, 0, 0, 4, "\0\1\1\1\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\1\0\1\0\1\1\0\0" }, - { 8, 9, 0, 0, 8, "\1\1\1\0\1\1\1\0\0\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\1\1\1\0\0\0\0\0\1\0\1\1\0\0\0\0\1\0\0\1\1\0\0\0\1\0\0\0\1\1\0\1\1\1\0\0\1\1\1" }, - { 6, 9, 0, 0, 7, "\1\1\1\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\1\1\1\1\1\1\1" }, - { 11, 9, 0, 0, 11, "\1\1\0\0\0\0\0\0\0\1\1\0\1\1\0\0\0\0\0\1\1\0\0\1\1\0\0\0\0\0\1\1\0\0\1\0\1\0\0\0\1\0\1\0\0\1\0\1\0\0\0\1\0\1\0\0\1\0\0\1\0\1\0\0\1\0\0\1\0\0\1\0\1\0\0\1\0\0\1\0\0\0\1\0\0\0\1\0\1\1\1\0\0\1\0\0\1\1\1" }, - { 9, 9, 0, 0, 9, "\1\1\0\0\0\0\1\1\1\0\1\1\0\0\0\0\1\0\0\1\1\0\0\0\0\1\0\0\1\0\1\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\0\1\0\1\0\0\1\0\0\0\0\1\1\0\1\1\1\0\0\0\0\1\0" }, - { 8, 9, 0, 0, 9, "\0\0\1\1\1\1\0\0\0\1\1\0\0\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, - { 7, 9, 0, 0, 7, "\1\1\1\1\1\1\0\0\1\0\0\0\1\1\0\1\0\0\0\0\1\0\1\0\0\0\1\1\0\1\1\1\1\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\1\1\0\0\0\0" }, - { 8, 11, 0, -2, 9, "\0\0\1\1\1\1\0\0\0\1\1\0\0\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\0\0\1\1" }, - { 8, 9, 0, 0, 8, "\1\1\1\1\1\1\0\0\0\1\0\0\0\1\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\1\1\0\0\1\1\1\1\1\0\0\0\1\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\1\0\1\1\1\0\0\0\1\1" }, - { 6, 9, 0, 0, 7, "\0\1\1\1\0\1\1\0\0\0\1\1\1\0\0\0\0\1\0\1\1\0\0\0\0\0\1\1\1\0\0\0\0\0\1\1\1\0\0\0\0\1\1\1\0\0\1\1\1\0\1\1\1\0" }, - { 7, 9, 0, 0, 7, "\1\1\1\1\1\1\1\1\0\0\1\0\0\1\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\1\1\0\0" }, - { 8, 9, 0, 0, 8, "\1\1\1\0\0\1\1\1\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, - { 9, 9, 0, 0, 9, "\1\1\1\0\0\0\1\1\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\1\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0" }, - { 12, 9, 0, 0, 12, "\1\1\1\0\1\1\1\0\0\1\1\1\0\1\0\0\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\0\1\1\0\1\1\1\0\1\0\0\0\0\0\1\0\1\0\1\0\1\0\0\0\0\0\1\1\0\0\1\1\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0" }, - { 8, 9, 0, 0, 8, "\1\1\1\0\0\1\1\1\0\1\0\0\0\0\1\0\0\0\1\0\0\1\0\0\0\0\1\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\1\0\1\1\0\0\0\0\1\0\0\1\0\0\0\1\0\0\0\0\1\0\1\1\1\0\0\1\1\1" }, - { 9, 9, 0, 0, 9, "\1\1\1\0\0\0\1\1\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\0\1\0\0\0\0\0\1\1\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\1\1\0\0\0" }, - { 7, 9, 0, 0, 8, "\1\1\1\1\1\1\1\1\0\0\0\0\1\1\0\0\0\0\1\1\0\0\0\0\1\1\0\0\0\0\1\1\0\0\0\0\1\1\0\0\0\0\1\1\0\0\0\0\0\1\0\0\0\0\0\1\1\1\1\1\1\1\1" }, - { 3, 12, 1, -3, 5, "\1\1\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\1\1" }, - { 3, 9, 0, 0, 3, "\1\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\1" }, - { 3, 12, 0, -3, 5, "\1\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\1\1\1" }, - { 5, 5, 0, 4, 6, "\0\0\1\0\0\0\1\0\1\0\0\1\0\1\0\1\0\0\0\1\1\0\0\0\1" }, - { 6, 1, 0, -3, 6, "\1\1\1\1\1\1" }, - { 2, 3, 1, 6, 4, "\0\1\1\0\1\1" }, - { 5, 6, 1, 0, 6, "\0\1\1\0\0\1\0\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\0\1" }, - { 5, 9, 0, 0, 6, "\1\1\0\0\0\0\1\0\0\0\0\1\0\0\0\0\1\1\1\0\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\1\1\1\0" }, - { 4, 6, 1, 0, 5, "\0\1\1\0\1\0\0\1\1\0\0\0\1\0\0\0\1\0\0\1\0\1\1\0" }, - { 5, 9, 1, 0, 6, "\0\0\1\1\0\0\0\0\1\0\0\0\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\0\1" }, - { 5, 6, 1, 0, 6, "\0\1\1\0\0\1\0\0\1\0\1\1\1\1\0\1\0\0\0\0\1\1\0\0\1\0\1\1\1\0" }, - { 3, 9, 0, 0, 3, "\0\0\1\0\1\0\0\1\0\1\1\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0" }, - { 5, 9, 1, -3, 6, "\0\1\1\1\1\1\0\0\1\0\1\0\0\1\0\1\1\1\0\0\0\1\0\0\0\0\1\1\1\0\1\0\0\0\1\1\0\0\0\1\0\1\1\1\0" }, - { 6, 9, 0, 0, 6, "\1\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\1\1\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1\0\1\1" }, - { 3, 9, 0, 0, 3, "\0\1\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, - { 2, 12, 0, -3, 3, "\0\1\0\0\0\0\1\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\1\0" }, - { 6, 9, 0, 0, 6, "\1\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\1\0\0\1\0\1\0\0\0\1\1\0\0\0\0\1\0\1\0\0\0\1\0\0\1\0\0\1\0\0\1\1" }, - { 3, 9, 0, 0, 3, "\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, - { 9, 6, 0, 0, 9, "\1\0\1\1\0\1\1\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1\0\1\1\0\1\1" }, - { 6, 6, 0, 0, 6, "\1\0\1\1\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1\0\1\1" }, - { 4, 6, 1, 0, 6, "\0\1\1\0\1\0\0\1\1\0\0\1\1\0\0\1\1\0\0\1\0\1\1\0" }, - { 5, 9, 0, -3, 6, "\1\1\1\1\0\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\1\1\1\0\0\1\0\0\0\0\1\0\0\0\1\1\1\0\0" }, - { 5, 9, 1, -3, 6, "\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\1\0\0\0\0\1\0\0\0\0\1\0\0\0\1\1\1" }, - { 4, 6, 0, 0, 4, "\1\0\1\1\0\1\1\0\0\1\0\0\0\1\0\0\0\1\0\0\1\1\1\0" }, - { 4, 6, 1, 0, 6, "\0\1\1\1\1\0\0\1\1\1\0\0\0\0\1\1\1\0\0\1\1\1\1\0" }, - { 4, 7, 0, 0, 4, "\0\1\0\0\1\1\1\1\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\1\1" }, - { 6, 6, 0, 0, 6, "\1\1\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\0\1\1\0\1" }, - { 6, 6, 0, 0, 6, "\1\1\0\0\1\1\0\1\0\0\1\0\0\1\0\1\1\0\0\1\0\1\0\0\0\0\1\1\0\0\0\0\1\0\0\0" }, - { 9, 6, 0, 0, 9, "\1\1\1\0\1\1\0\1\1\0\1\0\0\1\0\0\1\0\0\1\1\0\1\0\1\1\0\0\0\1\0\1\0\1\0\0\0\0\1\1\0\1\0\0\0\0\0\1\0\0\1\0\0\0" }, - { 5, 6, 1, 0, 6, "\1\1\0\1\1\0\1\0\1\0\0\0\1\0\0\0\0\1\0\0\0\1\0\1\0\1\1\0\1\1" }, - { 6, 9, 0, -3, 6, "\1\1\0\0\1\1\0\1\0\0\1\0\0\1\0\1\1\0\0\1\0\1\0\0\0\0\1\1\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\1\0\0\0\0\1\1\0\0\0\0" }, - { 4, 6, 1, 0, 6, "\1\1\1\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\1\1\1\1" }, - { 4, 12, 1, -3, 6, "\0\0\1\1\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\1\1" }, - { 1, 9, 1, 0, 3, "\1\1\1\1\1\1\1\1\1" }, - { 4, 12, 0, -3, 6, "\1\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\1\1\0\0" }, - { 6, 2, 0, 3, 7, "\0\1\1\0\0\1\1\0\0\1\1\0" }, - { 1, 9, 1, -3, 4, "\1\0\1\1\1\1\1\1\1" }, - { 5, 8, 1, -1, 6, "\0\0\0\0\1\0\1\1\1\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\1\0\0\1\0\1\1\1\0\1\0\0\0\0" }, - { 5, 9, 0, 0, 6, "\0\0\1\1\0\0\1\0\0\1\0\1\0\0\0\0\1\0\0\0\1\1\1\1\0\0\1\0\0\0\0\1\0\0\0\1\1\1\0\1\1\1\0\1\1" }, - { 6, 7, 1, 1, 7, "\1\0\0\0\0\1\0\1\1\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\1\1\1\0\1\0\0\0\0\1" }, - { 5, 9, 0, 0, 6, "\1\0\0\0\1\1\0\0\0\1\0\1\0\1\0\0\1\0\1\0\1\1\1\1\1\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\1\1\1\0" }, - { 1, 9, 1, 0, 3, "\1\1\1\0\0\1\1\1\1" }, - { 4, 12, 1, -3, 6, "\0\1\1\1\1\0\0\1\1\1\0\0\0\1\1\0\1\0\1\1\1\0\0\1\1\0\0\1\1\1\0\1\0\1\1\0\0\0\1\1\1\0\0\1\1\1\1\0" }, - { 3, 1, 0, 7, 3, "\1\0\1" }, - { 9, 9, 1, 0, 11, "\0\0\0\1\1\1\0\0\0\0\1\1\0\0\0\1\1\0\0\1\0\1\1\1\0\1\0\1\0\1\0\0\1\0\0\1\1\0\1\0\0\0\0\0\1\1\0\1\0\0\1\0\0\1\0\1\0\1\1\1\0\1\0\0\1\1\0\0\0\1\1\0\0\0\0\1\1\1\0\0\0" }, - { 3, 6, 1, 3, 5, "\1\1\0\0\0\1\1\1\1\1\0\1\0\0\0\1\1\1" }, - { 5, 5, 1, 0, 7, "\0\0\1\0\1\0\1\0\1\0\1\0\1\0\0\0\1\0\1\0\0\0\1\0\1" }, - { 6, 4, 1, 1, 8, "\1\1\1\1\1\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1" }, - { 4, 1, 1, 3, 6, "\1\1\1\1" }, - { 9, 9, 1, 0, 11, "\0\0\0\1\1\1\0\0\0\0\1\1\0\0\0\1\1\0\0\1\0\1\1\1\0\1\0\1\0\0\1\0\0\1\0\1\1\0\0\1\1\1\0\0\1\1\0\0\1\0\1\0\0\1\1\1\0\1\0\1\0\1\0\0\1\1\0\0\0\1\1\0\0\0\1\1\1\1\0\0\0" }, - { 4, 1, 0, 7, 4, "\1\1\1\1" }, - { 4, 4, 0, 5, 5, "\0\1\1\0\1\0\0\1\1\0\0\1\0\1\1\0" }, - { 5, 7, 1, 0, 7, "\0\0\1\0\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\0\1\0\0\0\0\0\0\0\1\1\1\1\1" }, - { 4, 5, 0, 4, 4, "\0\1\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\1\1\1" }, - { 3, 5, 0, 4, 4, "\1\1\1\0\0\1\0\1\0\0\0\1\1\1\0" }, - { 2, 2, 1, 7, 4, "\0\1\1\0" }, - { 6, 9, 0, -3, 6, "\1\1\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\1\1\0\1\0\1\0\0\0\0\0\1\0\0\0\0\0\1\1\0\0\0" }, - { 6, 12, 0, -3, 7, "\0\1\1\1\1\1\1\1\1\0\1\0\1\1\1\0\1\0\1\1\1\0\1\0\1\1\1\0\1\0\0\1\1\0\1\0\0\0\1\0\1\0\0\0\1\0\1\0\0\0\1\0\1\0\0\0\1\0\1\0\0\0\1\0\1\0\0\0\1\0\1\0" }, - { 1, 1, 1, 3, 3, "\1" }, - { 3, 3, 0, -3, 3, "\0\1\0\0\0\1\1\1\1" }, - { 3, 5, 0, 4, 4, "\0\1\0\1\1\0\0\1\0\0\1\0\1\1\1" }, - { 3, 6, 1, 3, 5, "\0\1\0\1\0\1\1\0\1\0\1\0\0\0\0\1\1\1" }, - { 5, 5, 0, 0, 7, "\1\0\1\0\0\0\1\0\1\0\0\0\1\0\1\0\1\0\1\0\1\0\1\0\0" }, - { 9, 9, 0, 0, 9, "\0\1\0\0\0\0\1\0\0\1\1\0\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\1\1\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\0\0\1\0\1\0\1\0\0\0\1\0\0\1\1\1\1\0\0\1\0\0\0\0\1\0" }, - { 9, 9, 0, 0, 9, "\0\1\0\0\0\0\1\0\0\1\1\0\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\1\1\0\1\0\1\1\0\0\0\0\1\0\1\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\1\0\0\1\1\1\1" }, - { 9, 9, 0, 0, 9, "\1\1\1\0\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\0\0\0\0\1\1\0\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\0\0\1\0\1\0\1\0\0\0\1\0\0\1\1\1\1\0\0\1\0\0\0\0\1\0" }, - { 4, 9, 0, -3, 5, "\0\0\1\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\1\0\0\1\0\0\0\1\0\0\1\0\1\1\0" }, - { 9, 12, 0, 0, 9, "\0\0\0\1\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\1\1\0\0\0\1\1\1" }, - { 9, 12, 0, 0, 9, "\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\1\1\0\0\0\1\1\1" }, - { 9, 12, 0, 0, 9, "\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\1\1\0\0\0\1\1\1" }, - { 9, 12, 0, 0, 9, "\0\0\0\0\1\0\1\0\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\1\1\0\0\0\1\1\1" }, - { 9, 11, 0, 0, 9, "\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\1\1\0\0\0\1\1\1" }, - { 9, 12, 0, 0, 9, "\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\1\1\0\0\0\1\1\1" }, - { 10, 9, 0, 0, 11, "\0\0\1\1\1\1\1\1\1\1\0\0\0\1\1\0\0\0\0\1\0\0\1\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\1\0\0\1\0\0\1\1\1\1\1\0\0\1\1\1\1\0\0\0\1\0\0\1\0\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\0\1\1\1\0\0\1\1\1\1\1\1" }, - { 7, 12, 0, -3, 8, "\0\0\1\1\1\0\1\0\1\1\0\0\1\1\0\1\0\0\0\0\1\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\1\0\1\1\0\0\1\1\0\0\1\1\1\1\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\1\1\1\0\0" }, - { 7, 12, 0, 0, 8, "\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\1\1\1\1\1\1\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\1\1\1" }, - { 7, 12, 0, 0, 8, "\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\1\1\1\1\1\1\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\1\1\1" }, - { 7, 12, 0, 0, 8, "\0\0\0\1\0\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\1\1\1\1\1\1\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\1\1\1" }, - { 7, 11, 0, 0, 8, "\0\0\1\0\1\0\0\0\0\0\0\0\0\0\1\1\1\1\1\1\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\1\1\1" }, - { 3, 12, 0, 0, 4, "\1\0\0\0\1\0\0\0\0\1\1\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, - { 3, 12, 0, 0, 4, "\0\0\1\0\1\0\0\0\0\1\1\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, - { 3, 12, 0, 0, 4, "\0\1\0\1\0\1\0\0\0\1\1\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, - { 3, 11, 0, 0, 4, "\1\0\1\0\0\0\1\1\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, - { 8, 9, 0, 0, 9, "\1\1\1\1\1\1\0\0\0\1\0\0\0\1\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\0\1\1\1\1\0\0\0\0\1\0\1\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\0\0\0\1\1\0\1\1\1\1\1\1\0\0" }, - { 9, 12, 0, 0, 9, "\0\0\0\0\1\0\1\0\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\1\1\0\0\0\0\1\1\1\0\1\1\0\0\0\0\1\0\0\1\1\0\0\0\0\1\0\0\1\0\1\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\0\1\0\1\0\0\1\0\0\0\0\1\1\0\1\1\1\0\0\0\0\1\0" }, - { 8, 12, 0, 0, 9, "\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\0\0\0\1\1\0\0\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, - { 8, 12, 0, 0, 9, "\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\0\0\0\1\1\0\0\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, - { 8, 12, 0, 0, 9, "\0\0\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\0\0\0\1\1\0\0\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, - { 8, 12, 0, 0, 9, "\0\0\0\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\0\0\0\1\1\0\0\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, - { 8, 11, 0, 0, 9, "\0\0\1\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\0\0\0\1\1\0\0\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, - { 5, 5, 1, 1, 7, "\1\0\0\0\1\0\1\0\1\0\0\0\1\0\0\0\1\0\1\0\1\0\0\0\1" }, - { 9, 10, 0, 0, 9, "\0\0\0\0\0\0\0\0\1\0\0\1\1\1\1\0\1\0\0\1\1\0\0\1\1\0\0\0\1\0\0\0\1\1\0\0\1\0\0\0\1\0\0\1\0\1\0\0\0\1\0\0\1\0\1\0\0\1\0\0\0\1\0\0\1\1\0\0\0\1\0\0\0\1\1\0\0\1\1\0\0\1\0\1\1\1\1\0\0\0" }, - { 8, 12, 0, 0, 8, "\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\0\1\1\1\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, - { 8, 12, 0, 0, 8, "\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\0\1\1\1\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, - { 8, 12, 0, 0, 8, "\0\0\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\0\1\1\1\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, - { 8, 11, 0, 0, 8, "\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\0\1\1\1\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, - { 9, 12, 0, 0, 9, "\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\0\0\1\1\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\0\1\0\0\0\0\0\1\1\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\1\1\0\0\0" }, - { 7, 9, 0, 0, 7, "\1\1\1\0\0\0\0\0\1\0\0\0\0\0\0\1\1\1\1\1\0\0\1\0\0\0\1\1\0\1\0\0\0\0\1\0\1\0\0\0\1\1\0\1\1\1\1\1\0\0\1\0\0\0\0\0\1\1\1\0\0\0\0" }, - { 6, 9, 0, 0, 6, "\0\0\1\1\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\0\0\0\1\1\1\0\0\0\1\0\0\1\0\0\1\0\0\0\1\0\1\0\0\0\1\1\1\0\1\1\0" }, - { 5, 9, 1, 0, 6, "\0\1\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\0\1" }, - { 5, 9, 1, 0, 6, "\0\0\0\1\0\0\0\1\0\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\0\1" }, - { 5, 9, 1, 0, 6, "\0\0\1\0\0\0\1\0\1\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\0\1" }, - { 5, 9, 1, 0, 6, "\0\1\0\1\0\1\0\1\0\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\0\1" }, - { 5, 8, 1, 0, 6, "\0\1\0\1\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\0\1" }, - { 5, 9, 1, 0, 6, "\0\0\1\0\0\0\1\0\1\0\0\0\1\0\0\0\1\1\0\0\1\0\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\0\1" }, - { 8, 6, 1, 0, 9, "\0\1\1\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\1\1\1\1\1\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\1\0\1\1\0\1\1\1\0" }, - { 4, 9, 1, -3, 5, "\0\1\1\0\1\0\0\1\1\0\0\0\1\0\0\0\1\0\0\1\0\1\1\0\0\1\0\0\0\0\1\0\1\1\1\0" }, - { 5, 9, 1, 0, 6, "\0\1\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\1\1\1\1\0\1\0\0\0\0\1\1\0\0\1\0\1\1\1\0" }, - { 5, 9, 1, 0, 6, "\0\0\1\0\0\0\1\0\0\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\1\1\1\1\0\1\0\0\0\0\1\1\0\0\1\0\1\1\1\0" }, - { 5, 9, 1, 0, 6, "\0\0\1\0\0\0\1\0\1\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\1\1\1\1\0\1\0\0\0\0\1\1\0\0\1\0\1\1\1\0" }, - { 5, 8, 1, 0, 6, "\0\1\0\1\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\1\1\1\1\0\1\0\0\0\0\1\1\0\0\1\0\1\1\1\0" }, - { 3, 9, 0, 0, 3, "\1\0\0\0\1\0\0\0\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, - { 3, 9, 0, 0, 3, "\0\1\0\1\0\0\0\0\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, - { 3, 9, 0, 0, 3, "\0\1\0\1\0\1\0\0\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, - { 3, 8, 0, 0, 3, "\1\0\1\0\0\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, - { 4, 9, 1, 0, 6, "\0\1\0\0\0\1\1\1\1\0\1\0\0\1\1\1\1\0\0\1\1\0\0\1\1\0\0\1\1\0\0\1\0\1\1\0" }, - { 6, 9, 0, 0, 6, "\0\0\1\0\1\0\0\1\0\1\0\0\0\0\0\0\0\0\1\0\1\1\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1\0\1\1" }, - { 4, 9, 1, 0, 6, "\0\1\0\0\0\0\1\0\0\0\0\0\0\1\1\0\1\0\0\1\1\0\0\1\1\0\0\1\1\0\0\1\0\1\1\0" }, - { 4, 9, 1, 0, 6, "\0\0\1\0\0\1\0\0\0\0\0\0\0\1\1\0\1\0\0\1\1\0\0\1\1\0\0\1\1\0\0\1\0\1\1\0" }, - { 4, 9, 1, 0, 6, "\0\0\1\0\0\1\0\1\0\0\0\0\0\1\1\0\1\0\0\1\1\0\0\1\1\0\0\1\1\0\0\1\0\1\1\0" }, - { 4, 9, 1, 0, 6, "\0\1\0\1\1\0\1\0\0\0\0\0\0\1\1\0\1\0\0\1\1\0\0\1\1\0\0\1\1\0\0\1\0\1\1\0" }, - { 4, 8, 1, 0, 6, "\1\0\1\0\0\0\0\0\0\1\1\0\1\0\0\1\1\0\0\1\1\0\0\1\1\0\0\1\0\1\1\0" }, - { 5, 5, 1, 1, 7, "\0\0\1\0\0\0\0\0\0\0\1\1\1\1\1\0\0\0\0\0\0\0\1\0\0" }, - { 6, 7, 0, -1, 6, "\0\0\1\1\0\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\1\1\0\0\1\0\0\0\0\0" }, - { 6, 9, 0, 0, 6, "\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\1\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\0\1\1\0\1" }, - { 6, 9, 0, 0, 6, "\0\0\0\1\0\0\0\0\1\0\0\0\0\0\0\0\0\0\1\1\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\0\1\1\0\1" }, - { 6, 9, 0, 0, 6, "\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\1\1\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\0\1\1\0\1" }, - { 6, 8, 0, 0, 6, "\0\1\0\1\0\0\0\0\0\0\0\0\1\1\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\0\1\1\0\1" }, - { 6, 12, 0, -3, 6, "\0\0\0\0\1\0\0\0\0\1\0\0\0\0\0\0\0\0\1\1\0\0\1\1\0\1\0\0\1\0\0\1\0\1\1\0\0\1\0\1\0\0\0\0\1\1\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\1\0\0\0\0\1\1\0\0\0\0" }, - { 5, 12, 0, -3, 6, "\1\1\0\0\0\0\1\0\0\0\0\1\0\0\0\0\1\1\1\0\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\1\1\1\0\0\1\0\0\0\0\1\0\0\0\1\1\1\0\0" }, - { 6, 11, 0, -3, 6, "\0\1\0\0\1\0\0\0\0\0\0\0\1\1\0\0\1\1\0\1\0\0\1\0\0\1\0\1\1\0\0\1\0\1\0\0\0\0\1\1\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\1\0\0\0\0\1\1\0\0\0\0" } -}; - -static struct font default_bdffont = { 14, 15, -1, -3, { - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - _g + 0, - _g + 1, - _g + 2, - _g + 3, - _g + 4, - _g + 5, - _g + 6, - _g + 7, - _g + 8, - _g + 9, - _g + 10, - _g + 11, - _g + 12, - _g + 13, - _g + 14, - _g + 15, - _g + 16, - _g + 17, - _g + 18, - _g + 19, - _g + 20, - _g + 21, - _g + 22, - _g + 23, - _g + 24, - _g + 25, - _g + 26, - _g + 27, - _g + 28, - _g + 29, - _g + 30, - _g + 31, - _g + 32, - _g + 33, - _g + 34, - _g + 35, - _g + 36, - _g + 37, - _g + 38, - _g + 39, - _g + 40, - _g + 41, - _g + 42, - _g + 43, - _g + 44, - _g + 45, - _g + 46, - _g + 47, - _g + 48, - _g + 49, - _g + 50, - _g + 51, - _g + 52, - _g + 53, - _g + 54, - _g + 55, - _g + 56, - _g + 57, - _g + 58, - _g + 59, - _g + 60, - _g + 61, - _g + 62, - _g + 63, - _g + 64, - _g + 65, - _g + 66, - _g + 67, - _g + 68, - _g + 69, - _g + 70, - _g + 71, - _g + 72, - _g + 73, - _g + 74, - _g + 75, - _g + 76, - _g + 77, - _g + 78, - _g + 79, - _g + 80, - _g + 81, - _g + 82, - _g + 83, - _g + 84, - _g + 85, - _g + 86, - _g + 87, - _g + 88, - _g + 89, - _g + 90, - _g + 91, - _g + 92, - _g + 93, - _g + 94, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - _g + 95, - _g + 96, - _g + 97, - _g + 98, - _g + 99, - _g + 100, - _g + 101, - _g + 102, - _g + 103, - _g + 104, - _g + 105, - _g + 106, - _g + 107, - _g + 108, - _g + 109, - _g + 110, - _g + 111, - _g + 112, - _g + 113, - _g + 114, - _g + 115, - _g + 116, - _g + 117, - _g + 118, - _g + 119, - _g + 120, - _g + 121, - _g + 122, - _g + 123, - _g + 124, - _g + 125, - _g + 126, - _g + 127, - _g + 128, - _g + 129, - _g + 130, - _g + 131, - _g + 132, - _g + 133, - _g + 134, - _g + 135, - _g + 136, - _g + 137, - _g + 138, - _g + 139, - _g + 140, - _g + 141, - _g + 142, - _g + 143, - _g + 144, - _g + 145, - _g + 146, - _g + 147, - _g + 148, - _g + 149, - _g + 150, - _g + 151, - _g + 152, - _g + 153, - _g + 154, - _g + 155, - _g + 156, - _g + 157, - _g + 158, - _g + 159, - _g + 160, - _g + 161, - _g + 162, - _g + 163, - _g + 164, - _g + 165, - _g + 166, - _g + 167, - _g + 168, - _g + 169, - _g + 170, - _g + 171, - _g + 172, - _g + 173, - _g + 174, - _g + 175, - _g + 176, - _g + 177, - _g + 178, - _g + 179, - _g + 180, - _g + 181, - _g + 182, - _g + 183, - _g + 184, - _g + 185, - _g + 186, - _g + 187, - _g + 188, - _g + 189 - } -}; - - struct font * pbm_defaultfont(const char * const name) { @@ -678,39 +43,13 @@ pbm_defaultfont(const char * const name) { -----------------------------------------------------------------------------*/ struct font * retval; - if (strcmp(name, "bdf") == 0) - retval = &default_bdffont; - else { - bit** defaultfont; - unsigned int row; + if (streq(name, "bdf")) + retval = &pbm_defaultBdffont; + else if (streq(name, "fixed")) + retval = &pbm_defaultFixedfont; + else + pm_error( "built-in font name unknown, try 'bdf' or 'fixed'"); - if (strcmp(name, "fixed") != 0) - pm_error( "built-in font name unknown, try 'bdf' or 'fixed'"); - - defaultfont = pbm_allocarray(DEFAULTFONT_COLS, DEFAULTFONT_ROWS); - for (row = 0; row < DEFAULTFONT_ROWS; ++row) { - unsigned int col; - for (col = 0; col < DEFAULTFONT_COLS; col += 32) { - int scol; - unsigned long l; - - l = defaultfont_bits[row][col / 32]; /* initial value */ - - for (scol = MIN( col + 32, DEFAULTFONT_COLS) - 1; - scol >= (int)col; - --scol) { - if (l & 0x01) - defaultfont[row][scol] = 1; - else - defaultfont[row][scol] = 0; - l >>= 1; - } - } - } - retval = - pbm_dissectfont((const bit **)defaultfont, - DEFAULTFONT_ROWS, DEFAULTFONT_COLS); - } return retval; } @@ -956,38 +295,31 @@ pbm_dissectfont(const bit ** const font, -struct font* +struct font * pbm_loadfont(const char * const filename) { -/*---------------------------------------------------------------------------- -Read the head of the designated font file, determine its type and load -the font. - -Note that fgets() writes nothing to the line buffer when the file exists -but is empty. -----------------------------------------------------------------------------*/ - FILE* fp; - struct font * fn; - char * line; - MALLOCARRAY_NOFAIL(line, 10); + FILE * fileP; + struct font * fontP; + char line[256]; - line[0] = '\0'; - fp = pm_openr( filename ); - fgets(line, 10, fp); - pm_close( fp ); + fileP = pm_openr(filename); + fgets(line, 256, fileP); + pm_close(fileP); if (line[0] == PBM_MAGIC1 && (line[1] == PBM_MAGIC2 || line[1] == RPBM_MAGIC2)) { - fn = pbm_loadpbmfont( filename ); + fontP = pbm_loadpbmfont(filename); } else if (!strncmp(line, "STARTFONT", 9)) { - if (!(fn = pbm_loadbdffont( filename ))) - pm_error( "could not load BDF font file" ); + fontP = pbm_loadbdffont(filename); + if (!fontP) + pm_error("could not load BDF font file"); } else { - pm_error( "font file not in a recognized format "); - fn = NULL; /* Supress compiler error. This line never reached. */ - } - free(line); - return (fn); + pm_error("font file not in a recognized format. Does not start " + "with the signature of a PBM file or BDF font file"); + assert(false); + fontP = NULL; /* defeat compiler warning */ + } + return fontP; } @@ -1008,99 +340,60 @@ pbm_loadpbmfont(const char * const filename) { void -pbm_dumpfont(struct font * const fnP) { -/*---------------------------------------------------------------------------- - Dump out font as C source code. ------------------------------------------------------------------------------*/ - unsigned int row; +pbm_dumpfont(struct font * const fontP) { + /* Dump out font as C source code. */ - if (fnP->oldfont) { - printf( "#define DEFAULTFONT_ROWS %d\n", fnP->frows); - printf( "#define DEFAULTFONT_COLS %d\n", fnP->fcols); - printf( "static unsigned long defaultfont_bits" - "[DEFAULTFONT_ROWS][(DEFAULTFONT_COLS+31)/32] = {\n"); - - for (row = 0; row < fnP->frows; ++row) { - unsigned int lperrow; - unsigned int col; - - lperrow = 0; - - for (col = 0; col < fnP->fcols; col += 32) { - if (lperrow == 0) - printf( " {"); - else if (lperrow % 6 == 0) { - printf( ",\n " ); - lperrow = 0; - } else - printf( "," ); - - { - unsigned long l; - unsigned int scol; - l = 0; - for (scol = col, l = 0; - scol < MIN(col + 32, fnP->fcols); - ++scol) { - l <<= 1; - if (fnP->oldfont[row][scol]) - l |= 1; - } - printf("0x%08lxL", l); - ++lperrow; - } - } - printf("}%s\n", row == fnP->frows - 1 ? "" : ","); - } - printf(" };\n"); - } else { - struct glyph * glyphP; - unsigned int i; - unsigned int ng; + unsigned int i; + unsigned int ng; - for (i = 0, ng = 0; i < 256; ++i) - if (fnP->glyph[i]) - ++ng; - - printf("static struct glyph _g[%d] = {\n", ng); - for (i = 0; i < 256; ++i) { - unsigned int j; - glyphP = fnP->glyph[i]; - if (!glyphP) - continue; + if (fontP->oldfont) + pm_message("Netpbm no longer has the capability to generate " + "a font in long hexadecimal data format"); - printf(" { %d, %d, %d, %d, %d, \"", - glyphP->width, glyphP->height, - glyphP->x, glyphP->y, glyphP->xadd); + for (i = 0, ng = 0; i < 256; ++i) { + if (fontP->glyph[i]) + ++ng; + } + + printf("static struct glyph _g[%d] = {\n", ng); - for (j = 0; j < glyphP->width * glyphP->height; ++j) + for (i = 0; i < 256; ++i) { + struct glyph * const glyphP = fontP->glyph[i]; + if (glyphP) { + unsigned int j; + printf(" { %d, %d, %d, %d, %d, \"", glyphP->width, glyphP->height, + glyphP->x, glyphP->y, glyphP->xadd); + + for (j = 0; j < glyphP->width * glyphP->height; ++j) { if (glyphP->bmap[j]) printf("\\1"); else printf("\\0"); - + } --ng; printf("\" }%s\n", ng ? "," : ""); } - printf("};\n"); + } + printf("};\n"); - printf("static struct font default_bdffont = { %d, %d, %d, %d, {\n", - fnP->maxwidth, fnP->maxheight, fnP->x, fnP->y); + printf("struct font XXX_font = { %d, %d, %d, %d, {\n", + fontP->maxwidth, fontP->maxheight, fontP->x, fontP->y); + + { + unsigned int i; for (i = 0; i < 256; ++i) { - if (fnP->glyph[i]) + if (fontP->glyph[i]) printf(" _g + %d", ng++); else - printf(" 0"); + printf(" NULL"); - if (i != 255) - printf(","); + if (i != 255) printf(","); printf("\n"); } - - printf(" }\n};\n"); - exit(0); } + + printf(" }\n};\n"); } @@ -1448,6 +741,7 @@ readEncoding(Readline * const readlineP, } + static void validateFontLimits(const struct font * const fontP) { diff --git a/lib/pbmfont.h b/lib/pbmfont.h index 61c88685..ef06570a 100644 --- a/lib/pbmfont.h +++ b/lib/pbmfont.h @@ -86,6 +86,10 @@ struct font* pbm_loadpbmfont(const char * const filename); struct font* pbm_loadbdffont(const char * const filename); void pbm_dumpfont(struct font * const fnP); +extern struct font pbm_defaultFixedfont; +extern struct font pbm_defaultBdffont; + + #ifdef __cplusplus } #endif diff --git a/lib/pbmfontdata1.c b/lib/pbmfontdata1.c new file mode 100644 index 00000000..19fca15c --- /dev/null +++ b/lib/pbmfontdata1.c @@ -0,0 +1,250 @@ +#include "pbmfont.h" + +/* Default fixed-width font + All glyphs fit into a 7 x 12 rectangular cell. + Raster data is provided completely. + + This kind of font, commonly used on early bitmap displays, is + sometimes called "cell-char". + + + Note: In the current version default_fixedfont is fixed data, which + means it is always accessible, without any preparatory action. + However, the storage format may change in future versions. + + To ensure future compatibility call pbm_defaultfont() before accessing + default_fixedfont. +*/ + +static struct glyph glFxd[96] = { +/* 32 character */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 33 character ! */ +{7,12,0,0,7,"\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 34 character " */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 35 character # */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\1\0\0\1\1\1\1\1\1\0\0\1\0\1\0\0\0\0\1\0\1\0\0\1\1\1\1\1\1\0\0\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 36 character $ */ +{7,12,0,0,7,"\0\0\0\1\0\0\0\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 37 character % */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\1\1\0\0\0\0\1\0\0\1\0\0\0\0\1\1\0\0\1\0\0\0\0\1\1\0\0\0\1\1\0\0\0\0\1\0\0\1\1\0\0\0\0\1\0\0\1\0\0\0\0\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 38 character & */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\1\1\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\1\0\1\1\1\0\1\0\1\0\0\0\1\0\0\1\0\0\0\1\1\0\0\1\1\1\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 39 character ' */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 40 character ( */ +{7,12,0,0,7,"\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0" }, +/* 41 character ) */ +{7,12,0,0,7,"\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 42 character * */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 43 character + */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 44 character , */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 45 character - */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 46 character . */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 47 character / */ +{7,12,0,0,7,"\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 48 character 0 */ +{7,12,0,0,7,"\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 49 character 1 */ +{7,12,0,0,7,"\0\0\0\1\0\0\0\0\1\1\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 50 character 2 */ +{7,12,0,0,7,"\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 51 character 3 */ +{7,12,0,0,7,"\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 52 character 4 */ +{7,12,0,0,7,"\0\0\0\0\1\0\0\0\0\0\1\1\0\0\0\0\1\0\1\0\0\0\0\1\0\1\0\0\0\1\0\0\1\0\0\1\0\0\0\1\0\0\1\1\1\1\1\1\0\0\0\0\0\1\0\0\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 53 character 5 */ +{7,12,0,0,7,"\0\1\1\1\1\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\1\1\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 54 character 6 */ +{7,12,0,0,7,"\0\0\0\1\1\1\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 55 character 7 */ +{7,12,0,0,7,"\0\1\1\1\1\1\0\0\1\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 56 character 8 */ +{7,12,0,0,7,"\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 57 character 9 */ +{7,12,0,0,7,"\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 58 character : */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 59 character ; */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 60 character < */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 61 character = */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\1\0\0\0\0\0\0\0\0\0\1\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 62 character > */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 63 character ? */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 64 character @ */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\1\1\0\0\1\0\1\0\1\0\0\1\0\1\0\1\0\0\1\0\0\1\1\1\0\1\0\0\0\0\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 65 character A */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\1\1\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\1\0\0\0\0\1\0\1\0\0\0\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\1\1\1\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 66 character B */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\1\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 67 character C */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 68 character D */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\1\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 69 character E */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\1\0\0\0\0\1\1\1\0\0\0\0\1\0\1\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\1\0\1\1\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 70 character F */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\1\0\1\0\0\1\1\1\0\0\0\0\1\0\1\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 71 character G */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\1\0\0\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 72 character H */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\1\0\1\1\1\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\1\1\1\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 73 character I */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 74 character J */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\1\1\1\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\0\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 75 character K */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\1\0\1\1\0\0\1\0\0\1\0\0\0\1\0\1\0\0\0\0\1\1\0\0\0\0\0\1\1\1\0\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\0\1\1\1\0\0\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 76 character L */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\1\1\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 77 character M */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\0\0\0\1\1\0\1\1\0\1\1\0\0\1\1\0\1\1\0\0\1\0\1\0\1\0\0\1\0\1\0\1\0\0\1\0\1\0\1\0\0\1\0\0\0\1\0\1\1\1\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 78 character N */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\0\0\1\1\1\0\1\1\0\0\1\0\0\1\1\0\0\1\0\0\1\0\1\0\1\0\0\1\0\1\0\1\0\0\1\0\0\1\1\0\0\1\0\0\1\1\0\1\1\1\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 79 character O */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 80 character P */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\1\1\1\0\0\0\1\0\0\1\1\0\0\1\0\0\0\1\0\0\1\0\0\1\1\0\0\1\1\1\1\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 81 character Q */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 82 character R */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\1\1\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\1\1\1\0\0\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 83 character S */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\1\1\1\0\0\0\0\0\0\1\1\1\0\0\0\0\0\0\1\0\0\1\0\0\0\1\0\0\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 84 character T */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\1\1\1\1\1\1\0\0\1\0\0\1\1\0\0\1\0\0\1\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 85 character U */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\1\0\1\1\1\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\1\0\1\1\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 86 character V */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\1\0\1\1\1\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\1\0\1\1\0\0\0\1\0\1\0\0\0\0\1\0\1\0\0\0\0\1\1\1\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 87 character W */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\1\0\1\1\1\0\1\0\0\0\1\0\0\1\0\1\0\1\0\0\1\0\1\0\1\0\0\1\0\1\0\1\0\0\1\1\0\1\1\0\0\0\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 88 character X */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\1\0\1\1\1\0\1\0\0\0\1\0\0\0\1\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\1\0\0\0\0\1\0\1\0\0\0\1\0\0\0\1\0\1\1\1\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 89 character Y */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\1\1\1\0\1\1\1\0\1\0\0\0\1\0\0\0\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 90 character Z */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\1\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 91 character [ */ +{7,12,0,0,7,"\0\0\0\1\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\0\0\0" }, +/* 92 character \ */ +{7,12,0,0,7,"\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 93 character ] */ +{7,12,0,0,7,"\0\0\1\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\1\0\0\0\0\0\0\0\0\0\0" }, +/* 94 character ^ */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\1\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 95 character _ */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\1\1\1" }, +/* 96 character ` */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 97 character a */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\0\0\0\0\0\0\0\1\0\0\0\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 98 character b */ +{7,12,0,0,7,"\1\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\1\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 99 character c */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 100 character d */ +{7,12,0,0,7,"\0\0\0\0\1\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 101 character e */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 102 character f */ +{7,12,0,0,7,"\0\0\0\1\1\1\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\1\1\1\1\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 103 character g */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\1\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\1\1\1\0\0" }, +/* 104 character h */ +{7,12,0,0,7,"\1\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\1\1\0\0\0\1\1\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\1\1\1\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 105 character i */ +{7,12,0,0,7,"\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 106 character j */ +{7,12,0,0,7,"\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\1\1\1\0\0\0" }, +/* 107 character k */ +{7,12,0,0,7,"\1\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\1\1\0\0\1\0\1\0\0\0\0\1\1\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\0\0\1\1\0\0\0\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 108 character l */ +{7,12,0,0,7,"\0\1\1\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 109 character m */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\1\0\0\0\1\0\1\0\1\0\0\1\0\1\0\1\0\0\1\0\1\0\1\0\0\1\0\1\0\1\0\1\1\0\1\0\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 110 character n */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\1\1\1\0\0\0\1\1\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\1\1\1\0\0\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 111 character o */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 112 character p */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\1\1\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\1\1\1\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\1\1\0\0\0\0" }, +/* 113 character q */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\1\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\1\1" }, +/* 114 character r */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\1\1\1\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 115 character s */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\0\0\1\0\0\0\1\0\0\0\1\1\1\0\0\0\0\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 116 character t */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\1\1\1\1\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\0\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 117 character u */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\0\0\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\1\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 118 character v */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\1\1\1\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\0\1\0\0\0\0\1\1\1\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 119 character w */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\1\1\1\0\1\0\0\0\1\0\0\1\0\1\0\1\0\0\1\0\1\0\1\0\0\0\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 120 character x */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\1\1\1\0\0\1\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\1\0\0\0\1\0\0\0\1\0\1\1\0\0\0\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 121 character y */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\1\1\1\0\1\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\0\1\0\0\0\0\1\1\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\0\0\0\0" }, +/* 122 character z */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\1\0\0\1\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 123 character { */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0" }, +/* 124 character | */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0" }, +/* 125 character } */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0" }, +/* 126 character ~ */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\1\0\0\1\0\1\0\1\0\0\1\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }, +/* 127 character (?) */ +{7,12,0,0,7,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" } +}; + + + +struct font pbm_defaultFixedfont = { 7, 12, 0, 0, { +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +glFxd+ 0, glFxd+ 1, glFxd+ 2, glFxd+ 3, glFxd+ 4, glFxd+ 5, +glFxd+ 6, glFxd+ 7, glFxd+ 8, glFxd+ 9, glFxd+10, glFxd+11, +glFxd+12, glFxd+13, glFxd+14, glFxd+15, glFxd+16, glFxd+17, +glFxd+18, glFxd+19, glFxd+20, glFxd+21, glFxd+22, glFxd+23, +glFxd+24, glFxd+25, glFxd+26, glFxd+27, glFxd+28, glFxd+29, +glFxd+30, glFxd+31, glFxd+32, glFxd+33, glFxd+34, glFxd+35, +glFxd+36, glFxd+37, glFxd+38, glFxd+39, glFxd+40, glFxd+41, +glFxd+42, glFxd+43, glFxd+44, glFxd+45, glFxd+46, glFxd+47, +glFxd+48, glFxd+49, glFxd+50, glFxd+51, glFxd+52, glFxd+53, +glFxd+54, glFxd+55, glFxd+56, glFxd+57, glFxd+58, glFxd+59, +glFxd+60, glFxd+61, glFxd+62, glFxd+63, glFxd+64, glFxd+65, +glFxd+66, glFxd+67, glFxd+68, glFxd+69, glFxd+70, glFxd+71, +glFxd+72, glFxd+73, glFxd+74, glFxd+75, glFxd+76, glFxd+77, +glFxd+78, glFxd+79, glFxd+80, glFxd+81, glFxd+82, glFxd+83, +glFxd+84, glFxd+85, glFxd+86, glFxd+87, glFxd+88, glFxd+89, +glFxd+90, glFxd+91, glFxd+92, glFxd+93, glFxd+94, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} +}; + + + diff --git a/lib/pbmfontdata2.c b/lib/pbmfontdata2.c new file mode 100644 index 00000000..a65b05d8 --- /dev/null +++ b/lib/pbmfontdata2.c @@ -0,0 +1,441 @@ +#include "pbmfont.h" + +/* Default proportional font. + BDF-style advance value, bounding box dimensions and point of origin. + + + Note: In the current version default_bdffont is fixed data, which + means it is always accessible, without any preparatory action. + However, the storage format may change in future versions. + + To ensure future compatibility call pbm_defaultfont() before accessing + default_bdffont. +*/ + +static struct glyph glBdf[190] = { +/* 32 character */ +{ 1, 1, 0, 0, 3, "\0" }, +/* 33 character ! */ +{ 1, 9, 1, 0, 3, "\1\1\1\1\1\1\1\0\1" }, +/* 34 character " */ +{ 3, 3, 1, 6, 5, "\1\0\1\1\0\1\1\0\1" }, +/* 35 character # */ +{ 5, 8, 0, 0, 6, "\0\1\0\1\0\0\1\0\1\0\1\1\1\1\1\0\1\0\1\0\0\1\0\1\0\1\1\1\1\1\0\1\0\1\0\0\1\0\1\0" }, +/* 36 character $ */ +{ 5, 11, 0, -1, 6, "\0\0\1\0\0\0\1\1\1\0\1\0\1\0\1\1\0\1\0\0\0\1\1\0\0\0\0\1\1\0\0\0\1\0\1\0\0\1\0\1\1\0\1\0\1\0\1\1\1\0\0\0\1\0\0" }, +/* 37 character % */ +{ 8, 9, 0, 0, 9, "\0\1\1\0\0\0\1\1\1\0\0\1\1\1\1\0\1\0\0\1\0\1\0\0\0\1\1\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\1\0\1\1\0\0\0\1\0\1\0\0\1\0\1\0\0\1\0\0\1\0\1\0\0\0\1\1\0" }, +/* 38 character & */ +{ 9, 9, 0, 0, 10, "\0\0\0\1\1\0\0\0\0\0\0\1\0\0\1\0\0\0\0\0\1\0\0\1\0\0\0\0\0\0\1\1\0\1\1\1\0\1\1\1\1\0\0\1\0\1\1\0\0\1\1\1\0\0\1\0\0\0\0\1\0\0\0\1\1\0\0\1\1\1\0\1\0\1\1\1\1\0\1\1\0" }, +/* 39 character ' */ +{ 2, 3, 1, 6, 4, "\1\1\0\1\1\0" }, +/* 40 character ( */ +{ 3, 12, 1, -3, 5, "\0\0\1\0\1\0\0\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\0\1" }, +/* 41 character ) */ +{ 3, 12, 0, -3, 5, "\1\0\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\0\0\1\0\1\0\0" }, +/* 42 character * */ +{ 5, 5, 0, 4, 6, "\0\0\1\0\0\1\0\1\0\1\0\1\1\1\0\1\0\1\0\1\0\0\1\0\0" }, +/* 43 character + */ +{ 5, 5, 1, 1, 7, "\0\0\1\0\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\0\1\0\0" }, +/* 44 character , */ +{ 2, 3, 0, -2, 3, "\0\1\0\1\1\0" }, +/* 45 character - */ +{ 5, 1, 1, 3, 8, "\1\1\1\1\1" }, +/* 46 character . */ +{ 1, 1, 1, 0, 3, "\1" }, +/* 47 character / */ +{ 3, 9, 0, 0, 3, "\0\0\1\0\0\1\0\0\1\0\1\0\0\1\0\0\1\0\1\0\0\1\0\0\1\0\0" }, +/* 48 character 0 */ +{ 5, 9, 0, 0, 6, "\0\1\1\1\0\1\1\0\1\1\1\0\0\0\1\1\0\0\0\1\1\0\0\0\1\1\0\0\0\1\1\0\0\0\1\1\1\0\1\1\0\1\1\1\0" }, +/* 49 character 1 */ +{ 4, 9, 0, 0, 6, "\0\0\1\0\0\1\1\0\1\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\1\1\1" }, +/* 50 character 2 */ +{ 5, 9, 0, 0, 6, "\0\1\1\1\0\1\0\0\0\1\0\0\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\1\1\1\1\1" }, +/* 51 character 3 */ +{ 5, 9, 0, 0, 6, "\0\1\1\1\0\1\0\0\0\1\0\0\0\0\1\0\0\0\1\0\0\1\1\1\0\0\0\0\0\1\0\0\0\0\1\1\0\0\0\1\0\1\1\1\0" }, +/* 52 character 4 */ +{ 5, 9, 0, 0, 6, "\0\0\0\1\0\0\0\1\1\0\0\0\1\1\0\0\1\0\1\0\0\1\0\1\0\1\0\0\1\0\1\1\1\1\1\0\0\0\1\0\0\0\0\1\0" }, +/* 53 character 5 */ +{ 5, 9, 0, 0, 6, "\0\0\1\1\1\0\1\0\0\0\0\1\0\0\0\0\1\1\1\0\0\0\0\1\1\0\0\0\0\1\0\0\0\0\1\1\0\0\1\1\0\1\1\1\0" }, +/* 54 character 6 */ +{ 5, 9, 0, 0, 6, "\0\0\0\1\1\0\1\1\0\0\0\1\0\0\0\1\1\1\1\0\1\0\0\1\1\1\0\0\0\1\1\0\0\0\1\1\1\0\0\1\0\1\1\1\0" }, +/* 55 character 7 */ +{ 5, 9, 0, 0, 6, "\1\1\1\1\1\1\0\0\0\1\0\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\0\1\0\0\0\0\1\0\0\0" }, +/* 56 character 8 */ +{ 5, 9, 0, 0, 6, "\0\1\1\1\0\1\0\0\0\1\1\0\0\0\1\1\1\0\0\1\0\1\1\1\0\1\0\0\1\1\1\0\0\0\1\1\0\0\0\1\0\1\1\1\0" }, +/* 57 character 9 */ +{ 5, 9, 0, 0, 6, "\0\1\1\1\0\1\0\0\1\1\1\0\0\0\1\1\0\0\0\1\1\1\0\0\1\0\1\1\1\1\0\0\0\1\0\0\0\1\1\0\1\1\0\0\0" }, +/* 58 character : */ +{ 1, 6, 1, 0, 3, "\1\0\0\0\0\1" }, +/* 59 character ; */ +{ 2, 8, 0, -2, 3, "\0\1\0\0\0\0\0\0\0\0\0\1\0\1\1\0" }, +/* 60 character < */ +{ 6, 5, 0, 1, 8, "\0\0\0\0\1\1\0\0\1\1\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1" }, +/* 61 character = */ +{ 5, 3, 1, 2, 7, "\1\1\1\1\1\0\0\0\0\0\1\1\1\1\1" }, +/* 62 character > */ +{ 6, 5, 1, 1, 8, "\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\1\1\0\0\1\1\0\0\0\0" }, +/* 63 character ? */ +{ 4, 9, 0, 0, 5, "\0\1\1\0\1\0\0\1\0\0\0\1\0\0\1\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\0\0\1\0\0" }, +/* 64 character @ */ +{ 10, 11, 1, -2, 11, "\0\0\0\0\1\1\1\1\0\0\0\0\1\1\0\0\0\0\1\0\0\1\1\0\0\0\0\0\0\1\0\1\0\0\1\1\0\1\0\1\1\0\0\1\0\0\1\0\0\1\1\0\1\0\0\0\1\0\0\1\1\0\1\0\0\1\0\0\1\0\1\0\1\0\0\1\0\0\1\0\1\0\0\1\1\0\1\1\0\0\0\1\0\0\0\0\0\0\0\0\0\0\1\1\1\1\1\0\0\0" }, +/* 65 character A */ +{ 9, 9, 0, 0, 9, "\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\1\1\0\0\0\1\1\1" }, +/* 66 character B */ +{ 7, 9, 0, 0, 8, "\1\1\1\1\1\1\0\0\1\0\0\0\1\1\0\1\0\0\0\0\1\0\1\0\0\0\1\1\0\1\1\1\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\1\0\1\0\0\0\1\1\1\1\1\1\1\1\0" }, +/* 67 character C */ +{ 7, 9, 0, 0, 8, "\0\0\1\1\1\0\1\0\1\1\0\0\1\1\0\1\0\0\0\0\1\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\1\0\1\1\0\0\1\1\0\0\1\1\1\1\0" }, +/* 68 character D */ +{ 8, 9, 0, 0, 9, "\1\1\1\1\1\1\0\0\0\1\0\0\0\1\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\0\0\0\1\1\0\1\1\1\1\1\1\0\0" }, +/* 69 character E */ +{ 7, 9, 0, 0, 8, "\1\1\1\1\1\1\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\1\1\1" }, +/* 70 character F */ +{ 7, 9, 0, 0, 8, "\1\1\1\1\1\1\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\1\1\1\0\0\0" }, +/* 71 character G */ +{ 8, 9, 0, 0, 9, "\0\0\1\1\1\0\1\0\0\1\1\0\0\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\0\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, +/* 72 character H */ +{ 8, 9, 0, 0, 9, "\1\1\1\0\0\1\1\1\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\1\1\1\1\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\1\1\1\0\0\1\1\1" }, +/* 73 character I */ +{ 3, 9, 0, 0, 4, "\1\1\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, +/* 74 character J */ +{ 4, 9, 0, 0, 4, "\0\1\1\1\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\1\0\1\0\1\1\0\0" }, +/* 75 character K */ +{ 8, 9, 0, 0, 8, "\1\1\1\0\1\1\1\0\0\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\1\1\1\0\0\0\0\0\1\0\1\1\0\0\0\0\1\0\0\1\1\0\0\0\1\0\0\0\1\1\0\1\1\1\0\0\1\1\1" }, +/* 76 character L */ +{ 6, 9, 0, 0, 7, "\1\1\1\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\1\1\1\1\1\1\1" }, +/* 77 character M */ +{ 11, 9, 0, 0, 11, "\1\1\0\0\0\0\0\0\0\1\1\0\1\1\0\0\0\0\0\1\1\0\0\1\1\0\0\0\0\0\1\1\0\0\1\0\1\0\0\0\1\0\1\0\0\1\0\1\0\0\0\1\0\1\0\0\1\0\0\1\0\1\0\0\1\0\0\1\0\0\1\0\1\0\0\1\0\0\1\0\0\0\1\0\0\0\1\0\1\1\1\0\0\1\0\0\1\1\1" }, +/* 78 character N */ +{ 9, 9, 0, 0, 9, "\1\1\0\0\0\0\1\1\1\0\1\1\0\0\0\0\1\0\0\1\1\0\0\0\0\1\0\0\1\0\1\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\0\1\0\1\0\0\1\0\0\0\0\1\1\0\1\1\1\0\0\0\0\1\0" }, +/* 79 character O */ +{ 8, 9, 0, 0, 9, "\0\0\1\1\1\1\0\0\0\1\1\0\0\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, +/* 80 character P */ +{ 7, 9, 0, 0, 7, "\1\1\1\1\1\1\0\0\1\0\0\0\1\1\0\1\0\0\0\0\1\0\1\0\0\0\1\1\0\1\1\1\1\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\1\1\0\0\0\0" }, +/* 81 character Q */ +{ 8, 11, 0, -2, 9, "\0\0\1\1\1\1\0\0\0\1\1\0\0\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\0\0\1\1" }, +/* 82 character R */ +{ 8, 9, 0, 0, 8, "\1\1\1\1\1\1\0\0\0\1\0\0\0\1\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\1\1\0\0\1\1\1\1\1\0\0\0\1\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\1\0\1\1\1\0\0\0\1\1" }, +/* 83 character S */ +{ 6, 9, 0, 0, 7, "\0\1\1\1\0\1\1\0\0\0\1\1\1\0\0\0\0\1\0\1\1\0\0\0\0\0\1\1\1\0\0\0\0\0\1\1\1\0\0\0\0\1\1\1\0\0\1\1\1\0\1\1\1\0" }, +/* 84 character T */ +{ 7, 9, 0, 0, 7, "\1\1\1\1\1\1\1\1\0\0\1\0\0\1\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\1\1\1\0\0" }, +/* 85 character U */ +{ 8, 9, 0, 0, 8, "\1\1\1\0\0\1\1\1\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, +/* 86 character V */ +{ 9, 9, 0, 0, 9, "\1\1\1\0\0\0\1\1\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\1\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0" }, +/* 87 character W */ +{ 12, 9, 0, 0, 12, "\1\1\1\0\1\1\1\0\0\1\1\1\0\1\0\0\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\0\1\1\0\1\1\1\0\1\0\0\0\0\0\1\0\1\0\1\0\1\0\0\0\0\0\1\1\0\0\1\1\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0" }, +/* 88 character X */ +{ 8, 9, 0, 0, 8, "\1\1\1\0\0\1\1\1\0\1\0\0\0\0\1\0\0\0\1\0\0\1\0\0\0\0\1\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\1\0\1\1\0\0\0\0\1\0\0\1\0\0\0\1\0\0\0\0\1\0\1\1\1\0\0\1\1\1" }, +/* 89 character Y */ +{ 9, 9, 0, 0, 9, "\1\1\1\0\0\0\1\1\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\0\1\0\0\0\0\0\1\1\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\1\1\0\0\0" }, +/* 90 character Z */ +{ 7, 9, 0, 0, 8, "\1\1\1\1\1\1\1\1\0\0\0\0\1\1\0\0\0\0\1\1\0\0\0\0\1\1\0\0\0\0\1\1\0\0\0\0\1\1\0\0\0\0\1\1\0\0\0\0\0\1\0\0\0\0\0\1\1\1\1\1\1\1\1" }, +/* 91 character [ */ +{ 3, 12, 1, -3, 5, "\1\1\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\1\1" }, +/* 92 character \ */ +{ 3, 9, 0, 0, 3, "\1\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\1\0\0\0\1\0\0\1\0\0\1" }, +/* 93 character ] */ +{ 3, 12, 0, -3, 5, "\1\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\1\1\1" }, +/* 94 character ^ */ +{ 5, 5, 0, 4, 6, "\0\0\1\0\0\0\1\0\1\0\0\1\0\1\0\1\0\0\0\1\1\0\0\0\1" }, +/* 95 character _ */ +{ 6, 1, 0, -3, 6, "\1\1\1\1\1\1" }, +/* 96 character ` */ +{ 2, 3, 1, 6, 4, "\0\1\1\0\1\1" }, +/* 97 character a */ +{ 5, 6, 1, 0, 6, "\0\1\1\0\0\1\0\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\0\1" }, +/* 98 character b */ +{ 5, 9, 0, 0, 6, "\1\1\0\0\0\0\1\0\0\0\0\1\0\0\0\0\1\1\1\0\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\1\1\1\0" }, +/* 99 character c */ +{ 4, 6, 1, 0, 5, "\0\1\1\0\1\0\0\1\1\0\0\0\1\0\0\0\1\0\0\1\0\1\1\0" }, +/* 100 character d */ +{ 5, 9, 1, 0, 6, "\0\0\1\1\0\0\0\0\1\0\0\0\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\0\1" }, +/* 101 character e */ +{ 5, 6, 1, 0, 6, "\0\1\1\0\0\1\0\0\1\0\1\1\1\1\0\1\0\0\0\0\1\1\0\0\1\0\1\1\1\0" }, +/* 102 character f */ +{ 3, 9, 0, 0, 3, "\0\0\1\0\1\0\0\1\0\1\1\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0" }, +/* 103 character g */ +{ 5, 9, 1, -3, 6, "\0\1\1\1\1\1\0\0\1\0\1\0\0\1\0\1\1\1\0\0\0\1\0\0\0\0\1\1\1\0\1\0\0\0\1\1\0\0\0\1\0\1\1\1\0" }, +/* 104 character h */ +{ 6, 9, 0, 0, 6, "\1\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\1\1\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1\0\1\1" }, +/* 105 character i */ +{ 3, 9, 0, 0, 3, "\0\1\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, +/* 106 character j */ +{ 2, 12, 0, -3, 3, "\0\1\0\0\0\0\1\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\1\0" }, +/* 107 character k */ +{ 6, 9, 0, 0, 6, "\1\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\1\0\0\1\0\1\0\0\0\1\1\0\0\0\0\1\0\1\0\0\0\1\0\0\1\0\0\1\0\0\1\1" }, +/* 108 character l */ +{ 3, 9, 0, 0, 3, "\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, +/* 109 character m */ +{ 9, 6, 0, 0, 9, "\1\0\1\1\0\1\1\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1\0\1\1\0\1\1" }, +/* 110 character n */ +{ 6, 6, 0, 0, 6, "\1\0\1\1\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1\0\1\1" }, +/* 111 character o */ +{ 4, 6, 1, 0, 6, "\0\1\1\0\1\0\0\1\1\0\0\1\1\0\0\1\1\0\0\1\0\1\1\0" }, +/* 112 character p */ +{ 5, 9, 0, -3, 6, "\1\1\1\1\0\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\1\1\1\0\0\1\0\0\0\0\1\0\0\0\1\1\1\0\0" }, +/* 113 character q */ +{ 5, 9, 1, -3, 6, "\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\1\0\0\0\0\1\0\0\0\0\1\0\0\0\1\1\1" }, +/* 114 character r */ +{ 4, 6, 0, 0, 4, "\1\0\1\1\0\1\1\0\0\1\0\0\0\1\0\0\0\1\0\0\1\1\1\0" }, +/* 115 character s */ +{ 4, 6, 1, 0, 6, "\0\1\1\1\1\0\0\1\1\1\0\0\0\0\1\1\1\0\0\1\1\1\1\0" }, +/* 116 character t */ +{ 4, 7, 0, 0, 4, "\0\1\0\0\1\1\1\1\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\1\1" }, +/* 117 character u */ +{ 6, 6, 0, 0, 6, "\1\1\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\0\1\1\0\1" }, +/* 118 character v */ +{ 6, 6, 0, 0, 6, "\1\1\0\0\1\1\0\1\0\0\1\0\0\1\0\1\1\0\0\1\0\1\0\0\0\0\1\1\0\0\0\0\1\0\0\0" }, +/* 119 character w */ +{ 9, 6, 0, 0, 9, "\1\1\1\0\1\1\0\1\1\0\1\0\0\1\0\0\1\0\0\1\1\0\1\0\1\1\0\0\0\1\0\1\0\1\0\0\0\0\1\1\0\1\0\0\0\0\0\1\0\0\1\0\0\0" }, +/* 120 character x */ +{ 5, 6, 1, 0, 6, "\1\1\0\1\1\0\1\0\1\0\0\0\1\0\0\0\0\1\0\0\0\1\0\1\0\1\1\0\1\1" }, +/* 121 character y */ +{ 6, 9, 0, -3, 6, "\1\1\0\0\1\1\0\1\0\0\1\0\0\1\0\1\1\0\0\1\0\1\0\0\0\0\1\1\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\1\0\0\0\0\1\1\0\0\0\0" }, +/* 122 character z */ +{ 4, 6, 1, 0, 6, "\1\1\1\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\1\1\1\1" }, +/* 123 character { */ +{ 4, 12, 1, -3, 6, "\0\0\1\1\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\1\1" }, +/* 124 character | */ +{ 1, 9, 1, 0, 3, "\1\1\1\1\1\1\1\1\1" }, +/* 125 character } */ +{ 4, 12, 0, -3, 6, "\1\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\1\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\1\1\0\0" }, +/* 160 */ +{ 6, 2, 0, 3, 7, "\0\1\1\0\0\1\1\0\0\1\1\0" }, +/* 161 */ +{ 1, 9, 1, -3, 4, "\1\0\1\1\1\1\1\1\1" }, +/* 162 */ +{ 5, 8, 1, -1, 6, "\0\0\0\0\1\0\1\1\1\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\1\0\0\1\0\1\1\1\0\1\0\0\0\0" }, +/* 163 */ +{ 5, 9, 0, 0, 6, "\0\0\1\1\0\0\1\0\0\1\0\1\0\0\0\0\1\0\0\0\1\1\1\1\0\0\1\0\0\0\0\1\0\0\0\1\1\1\0\1\1\1\0\1\1" }, +/* 164 */ +{ 6, 7, 1, 1, 7, "\1\0\0\0\0\1\0\1\1\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\1\1\1\0\1\0\0\0\0\1" }, +/* 165 */ +{ 5, 9, 0, 0, 6, "\1\0\0\0\1\1\0\0\0\1\0\1\0\1\0\0\1\0\1\0\1\1\1\1\1\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\1\1\1\0" }, +/* 166 */ +{ 1, 9, 1, 0, 3, "\1\1\1\0\0\1\1\1\1" }, +/* 167 */ +{ 4, 12, 1, -3, 6, "\0\1\1\1\1\0\0\1\1\1\0\0\0\1\1\0\1\0\1\1\1\0\0\1\1\0\0\1\1\1\0\1\0\1\1\0\0\0\1\1\1\0\0\1\1\1\1\0" }, +/* 168 */ +{ 3, 1, 0, 7, 3, "\1\0\1" }, +/* 169 */ +{ 9, 9, 1, 0, 11, "\0\0\0\1\1\1\0\0\0\0\1\1\0\0\0\1\1\0\0\1\0\1\1\1\0\1\0\1\0\1\0\0\1\0\0\1\1\0\1\0\0\0\0\0\1\1\0\1\0\0\1\0\0\1\0\1\0\1\1\1\0\1\0\0\1\1\0\0\0\1\1\0\0\0\0\1\1\1\0\0\0" }, +/* 170 */ +{ 3, 6, 1, 3, 5, "\1\1\0\0\0\1\1\1\1\1\0\1\0\0\0\1\1\1" }, +/* 171 */ +{ 5, 5, 1, 0, 7, "\0\0\1\0\1\0\1\0\1\0\1\0\1\0\0\0\1\0\1\0\0\0\1\0\1" }, +/* 172 */ +{ 6, 4, 1, 1, 8, "\1\1\1\1\1\1\0\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\1" }, +/* 173 */ +{ 4, 1, 1, 3, 6, "\1\1\1\1" }, +/* 174 */ +{ 9, 9, 1, 0, 11, "\0\0\0\1\1\1\0\0\0\0\1\1\0\0\0\1\1\0\0\1\0\1\1\1\0\1\0\1\0\0\1\0\0\1\0\1\1\0\0\1\1\1\0\0\1\1\0\0\1\0\1\0\0\1\1\1\0\1\0\1\0\1\0\0\1\1\0\0\0\1\1\0\0\0\1\1\1\1\0\0\0" }, +/* 175 */ +{ 4, 1, 0, 7, 4, "\1\1\1\1" }, +/* 176 */ +{ 4, 4, 0, 5, 5, "\0\1\1\0\1\0\0\1\1\0\0\1\0\1\1\0" }, +/* 177 */ +{ 5, 7, 1, 0, 7, "\0\0\1\0\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\0\1\0\0\0\0\0\0\0\1\1\1\1\1" }, +/* 178 */ +{ 4, 5, 0, 4, 4, "\0\1\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\1\1\1" }, +/* 179 */ +{ 3, 5, 0, 4, 4, "\1\1\1\0\0\1\0\1\0\0\0\1\1\1\0" }, +/* 180 */ +{ 2, 2, 1, 7, 4, "\0\1\1\0" }, +/* 181 */ +{ 6, 9, 0, -3, 6, "\1\1\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\1\1\0\1\0\1\0\0\0\0\0\1\0\0\0\0\0\1\1\0\0\0" }, +/* 182 */ +{ 6, 12, 0, -3, 7, "\0\1\1\1\1\1\1\1\1\0\1\0\1\1\1\0\1\0\1\1\1\0\1\0\1\1\1\0\1\0\0\1\1\0\1\0\0\0\1\0\1\0\0\0\1\0\1\0\0\0\1\0\1\0\0\0\1\0\1\0\0\0\1\0\1\0\0\0\1\0\1\0" }, +/* 183 */ +{ 1, 1, 1, 3, 3, "\1" }, +/* 184 */ +{ 3, 3, 0, -3, 3, "\0\1\0\0\0\1\1\1\1" }, +/* 185 */ +{ 3, 5, 0, 4, 4, "\0\1\0\1\1\0\0\1\0\0\1\0\1\1\1" }, +/* 186 */ +{ 3, 6, 1, 3, 5, "\0\1\0\1\0\1\1\0\1\0\1\0\0\0\0\1\1\1" }, +/* 187 */ +{ 5, 5, 0, 0, 7, "\1\0\1\0\0\0\1\0\1\0\0\0\1\0\1\0\1\0\1\0\1\0\1\0\0" }, +/* 188 */ +{ 9, 9, 0, 0, 9, "\0\1\0\0\0\0\1\0\0\1\1\0\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\1\1\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\0\0\1\0\1\0\1\0\0\0\1\0\0\1\1\1\1\0\0\1\0\0\0\0\1\0" }, +/* 189 */ +{ 9, 9, 0, 0, 9, "\0\1\0\0\0\0\1\0\0\1\1\0\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\1\1\0\1\0\1\1\0\0\0\0\1\0\1\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\1\0\0\1\1\1\1" }, +/* 190 */ +{ 9, 9, 0, 0, 9, "\1\1\1\0\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\0\0\0\0\1\1\0\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\0\0\1\0\1\0\1\0\0\0\1\0\0\1\1\1\1\0\0\1\0\0\0\0\1\0" }, +/* 191 */ +{ 4, 9, 0, -3, 5, "\0\0\1\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\1\0\0\1\0\0\0\1\0\0\1\0\1\1\0" }, +/* 192 */ +{ 9, 12, 0, 0, 9, "\0\0\0\1\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\1\1\0\0\0\1\1\1" }, +/* 193 */ +{ 9, 12, 0, 0, 9, "\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\1\1\0\0\0\1\1\1" }, +/* 194 */ +{ 9, 12, 0, 0, 9, "\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\1\1\0\0\0\1\1\1" }, +/* 195 */ +{ 9, 12, 0, 0, 9, "\0\0\0\0\1\0\1\0\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\1\1\0\0\0\1\1\1" }, +/* 196 */ +{ 9, 11, 0, 0, 9, "\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\1\1\0\0\0\1\1\1" }, +/* 197 */ +{ 9, 12, 0, 0, 9, "\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\0\1\1\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\1\1\1\0\0\0\1\1\1" }, +/* 198 */ +{ 10, 9, 0, 0, 11, "\0\0\1\1\1\1\1\1\1\1\0\0\0\1\1\0\0\0\0\1\0\0\1\0\1\0\0\0\0\0\0\0\1\0\1\0\0\0\1\0\0\1\0\0\1\1\1\1\1\0\0\1\1\1\1\0\0\0\1\0\0\1\0\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\0\1\1\1\0\0\1\1\1\1\1\1" }, +/* 199 */ +{ 7, 12, 0, -3, 8, "\0\0\1\1\1\0\1\0\1\1\0\0\1\1\0\1\0\0\0\0\1\1\0\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\1\0\1\1\0\0\1\1\0\0\1\1\1\1\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\1\1\1\0\0" }, +/* 200 */ +{ 7, 12, 0, 0, 8, "\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\1\1\1\1\1\1\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\1\1\1" }, +/* 201 */ +{ 7, 12, 0, 0, 8, "\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\1\1\1\1\1\1\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\1\1\1" }, +/* 202 */ +{ 7, 12, 0, 0, 8, "\0\0\0\1\0\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\1\1\1\1\1\1\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\1\1\1" }, +/* 203 */ +{ 7, 11, 0, 0, 8, "\0\0\1\0\1\0\0\0\0\0\0\0\0\0\1\1\1\1\1\1\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\0\0\0\1\0\0\1\1\1\1\1\0\0\1\0\0\0\1\0\0\1\0\0\0\0\0\0\1\0\0\0\0\1\1\1\1\1\1\1\1" }, +/* 204 */ +{ 3, 12, 0, 0, 4, "\1\0\0\0\1\0\0\0\0\1\1\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, +/* 205 */ +{ 3, 12, 0, 0, 4, "\0\0\1\0\1\0\0\0\0\1\1\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, +/* 206 */ +{ 3, 12, 0, 0, 4, "\0\1\0\1\0\1\0\0\0\1\1\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, +/* 207 */ +{ 3, 11, 0, 0, 4, "\1\0\1\0\0\0\1\1\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, +/* 208 */ +{ 8, 9, 0, 0, 9, "\1\1\1\1\1\1\0\0\0\1\0\0\0\1\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\0\1\1\1\1\0\0\0\0\1\0\1\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\0\0\0\1\1\0\1\1\1\1\1\1\0\0" }, +/* 209 */ +{ 9, 12, 0, 0, 9, "\0\0\0\0\1\0\1\0\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\1\1\0\0\0\0\1\1\1\0\1\1\0\0\0\0\1\0\0\1\1\0\0\0\0\1\0\0\1\0\1\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\0\1\0\1\0\0\1\0\0\0\0\1\1\0\1\1\1\0\0\0\0\1\0" }, +/* 210 */ +{ 8, 12, 0, 0, 9, "\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\0\0\0\1\1\0\0\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, +/* 211 */ +{ 8, 12, 0, 0, 9, "\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\0\0\0\1\1\0\0\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, +/* 212 */ +{ 8, 12, 0, 0, 9, "\0\0\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\0\0\0\1\1\0\0\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, +/* 213 */ +{ 8, 12, 0, 0, 9, "\0\0\0\1\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\0\0\0\1\1\0\0\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, +/* 214 */ +{ 8, 11, 0, 0, 9, "\0\0\1\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\0\0\0\1\1\0\0\1\1\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\1\0\0\0\0\0\0\1\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, +/* 215 */ +{ 5, 5, 1, 1, 7, "\1\0\0\0\1\0\1\0\1\0\0\0\1\0\0\0\1\0\1\0\1\0\0\0\1" }, +/* 216 */ +{ 9, 10, 0, 0, 9, "\0\0\0\0\0\0\0\0\1\0\0\1\1\1\1\0\1\0\0\1\1\0\0\1\1\0\0\0\1\0\0\0\1\1\0\0\1\0\0\0\1\0\0\1\0\1\0\0\0\1\0\0\1\0\1\0\0\1\0\0\0\1\0\0\1\1\0\0\0\1\0\0\0\1\1\0\0\1\1\0\0\1\0\1\1\1\1\0\0\0" }, +/* 217 */ +{ 8, 12, 0, 0, 8, "\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\0\1\1\1\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, +/* 218 */ +{ 8, 12, 0, 0, 8, "\0\0\0\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\0\1\1\1\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, +/* 219 */ +{ 8, 12, 0, 0, 8, "\0\0\0\1\0\0\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\0\1\1\1\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, +/* 220 */ +{ 8, 11, 0, 0, 8, "\0\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\0\1\1\1\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\1\1\0\0\0\1\1\1\1\0\0" }, +/* 221 */ +{ 9, 12, 0, 0, 9, "\0\0\0\0\0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\0\0\0\1\1\1\0\1\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\1\0\0\1\0\0\0\0\0\1\1\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\1\1\1\0\0\0" }, +/* 222 */ +{ 7, 9, 0, 0, 7, "\1\1\1\0\0\0\0\0\1\0\0\0\0\0\0\1\1\1\1\1\0\0\1\0\0\0\1\1\0\1\0\0\0\0\1\0\1\0\0\0\1\1\0\1\1\1\1\1\0\0\1\0\0\0\0\0\1\1\1\0\0\0\0" }, +/* 223 */ +{ 6, 9, 0, 0, 6, "\0\0\1\1\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\0\0\0\1\1\1\0\0\0\1\0\0\1\0\0\1\0\0\0\1\0\1\0\0\0\1\1\1\0\1\1\0" }, +/* 224 */ +{ 5, 9, 1, 0, 6, "\0\1\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\0\1" }, +/* 225 */ +{ 5, 9, 1, 0, 6, "\0\0\0\1\0\0\0\1\0\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\0\1" }, +/* 226 */ +{ 5, 9, 1, 0, 6, "\0\0\1\0\0\0\1\0\1\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\0\1" }, +/* 227 */ +{ 5, 9, 1, 0, 6, "\0\1\0\1\0\1\0\1\0\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\0\1" }, +/* 228 */ +{ 5, 8, 1, 0, 6, "\0\1\0\1\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\0\1" }, +/* 229 */ +{ 5, 9, 1, 0, 6, "\0\0\1\0\0\0\1\0\1\0\0\0\1\0\0\0\1\1\0\0\1\0\0\1\0\0\1\1\1\0\1\0\0\1\0\1\0\0\1\0\0\1\1\0\1" }, +/* 230 */ +{ 8, 6, 1, 0, 9, "\0\1\1\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\1\1\1\1\1\0\1\0\0\1\0\0\0\0\1\0\0\1\1\0\0\1\0\1\1\0\1\1\1\0" }, +/* 231 */ +{ 4, 9, 1, -3, 5, "\0\1\1\0\1\0\0\1\1\0\0\0\1\0\0\0\1\0\0\1\0\1\1\0\0\1\0\0\0\0\1\0\1\1\1\0" }, +/* 232 */ +{ 5, 9, 1, 0, 6, "\0\1\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\1\1\1\1\0\1\0\0\0\0\1\1\0\0\1\0\1\1\1\0" }, +/* 233 */ +{ 5, 9, 1, 0, 6, "\0\0\1\0\0\0\1\0\0\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\1\1\1\1\0\1\0\0\0\0\1\1\0\0\1\0\1\1\1\0" }, +/* 234 */ +{ 5, 9, 1, 0, 6, "\0\0\1\0\0\0\1\0\1\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\1\1\1\1\0\1\0\0\0\0\1\1\0\0\1\0\1\1\1\0" }, +/* 235 */ +{ 5, 8, 1, 0, 6, "\0\1\0\1\0\0\0\0\0\0\0\1\1\0\0\1\0\0\1\0\1\1\1\1\0\1\0\0\0\0\1\1\0\0\1\0\1\1\1\0" }, +/* 236 */ +{ 3, 9, 0, 0, 3, "\1\0\0\0\1\0\0\0\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, +/* 237 */ +{ 3, 9, 0, 0, 3, "\0\1\0\1\0\0\0\0\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, +/* 238 */ +{ 3, 9, 0, 0, 3, "\0\1\0\1\0\1\0\0\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, +/* 239 */ +{ 3, 8, 0, 0, 3, "\1\0\1\0\0\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1" }, +/* 240 */ +{ 4, 9, 1, 0, 6, "\0\1\0\0\0\1\1\1\1\0\1\0\0\1\1\1\1\0\0\1\1\0\0\1\1\0\0\1\1\0\0\1\0\1\1\0" }, +/* 241 */ +{ 6, 9, 0, 0, 6, "\0\0\1\0\1\0\0\1\0\1\0\0\0\0\0\0\0\0\1\0\1\1\0\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\1\1\1\0\1\1" }, +/* 242 */ +{ 4, 9, 1, 0, 6, "\0\1\0\0\0\0\1\0\0\0\0\0\0\1\1\0\1\0\0\1\1\0\0\1\1\0\0\1\1\0\0\1\0\1\1\0" }, +/* 243 */ +{ 4, 9, 1, 0, 6, "\0\0\1\0\0\1\0\0\0\0\0\0\0\1\1\0\1\0\0\1\1\0\0\1\1\0\0\1\1\0\0\1\0\1\1\0" }, +/* 244 */ +{ 4, 9, 1, 0, 6, "\0\0\1\0\0\1\0\1\0\0\0\0\0\1\1\0\1\0\0\1\1\0\0\1\1\0\0\1\1\0\0\1\0\1\1\0" }, +/* 245 */ +{ 4, 9, 1, 0, 6, "\0\1\0\1\1\0\1\0\0\0\0\0\0\1\1\0\1\0\0\1\1\0\0\1\1\0\0\1\1\0\0\1\0\1\1\0" }, +/* 246 */ +{ 4, 8, 1, 0, 6, "\1\0\1\0\0\0\0\0\0\1\1\0\1\0\0\1\1\0\0\1\1\0\0\1\1\0\0\1\0\1\1\0" }, +/* 247 */ +{ 5, 5, 1, 1, 7, "\0\0\1\0\0\0\0\0\0\0\1\1\1\1\1\0\0\0\0\0\0\0\1\0\0" }, +/* 248 */ +{ 6, 7, 0, -1, 6, "\0\0\1\1\0\1\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\1\1\0\0\1\0\0\0\0\0" }, +/* 249 */ +{ 6, 9, 0, 0, 6, "\0\0\1\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\1\1\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\0\1\1\0\1" }, +/* 250 */ +{ 6, 9, 0, 0, 6, "\0\0\0\1\0\0\0\0\1\0\0\0\0\0\0\0\0\0\1\1\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\0\1\1\0\1" }, +/* 251 */ +{ 6, 9, 0, 0, 6, "\0\0\1\0\0\0\0\1\0\1\0\0\0\0\0\0\0\0\1\1\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\0\1\1\0\1" }, +/* 252 */ +{ 6, 8, 0, 0, 6, "\0\1\0\1\0\0\0\0\0\0\0\0\1\1\0\1\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\1\0\0\0\1\1\0\1" }, +/* 253 */ +{ 6, 12, 0, -3, 6, "\0\0\0\0\1\0\0\0\0\1\0\0\0\0\0\0\0\0\1\1\0\0\1\1\0\1\0\0\1\0\0\1\0\1\1\0\0\1\0\1\0\0\0\0\1\1\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\1\0\0\0\0\1\1\0\0\0\0" }, +/* 254 */ +{ 5, 12, 0, -3, 6, "\1\1\0\0\0\0\1\0\0\0\0\1\0\0\0\0\1\1\1\0\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\1\0\0\1\0\1\1\1\0\0\1\0\0\0\0\1\0\0\0\1\1\1\0\0" }, +/* 255 */ +{ 6, 11, 0, -3, 6, "\0\1\0\0\1\0\0\0\0\0\0\0\1\1\0\0\1\1\0\1\0\0\1\0\0\1\0\1\1\0\0\1\0\1\0\0\0\0\1\1\0\0\0\0\1\0\0\0\0\0\1\0\0\0\0\1\0\0\0\0\1\1\0\0\0\0" } + +}; + +struct font pbm_defaultBdffont = { 14, 15, -1, -3, { +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +glBdf+ 0, glBdf+ 1, glBdf+ 2, glBdf+ 3, glBdf+ 4, glBdf+ 5, +glBdf+ 6, glBdf+ 7, glBdf+ 8, glBdf+ 9, glBdf+10, glBdf+11, +glBdf+12, glBdf+13, glBdf+14, glBdf+15, glBdf+16, glBdf+17, +glBdf+18, glBdf+19, glBdf+20, glBdf+21, glBdf+22, glBdf+23, +glBdf+24, glBdf+25, glBdf+26, glBdf+27, glBdf+28, glBdf+29, +glBdf+30, glBdf+31, glBdf+32, glBdf+33, glBdf+34, glBdf+35, +glBdf+36, glBdf+37, glBdf+38, glBdf+39, glBdf+40, glBdf+41, +glBdf+42, glBdf+43, glBdf+44, glBdf+45, glBdf+46, glBdf+47, +glBdf+48, glBdf+49, glBdf+50, glBdf+51, glBdf+52, glBdf+53, +glBdf+54, glBdf+55, glBdf+56, glBdf+57, glBdf+58, glBdf+59, +glBdf+60, glBdf+61, glBdf+62, glBdf+63, glBdf+64, glBdf+65, +glBdf+66, glBdf+67, glBdf+68, glBdf+69, glBdf+70, glBdf+71, +glBdf+72, glBdf+73, glBdf+74, glBdf+75, glBdf+76, glBdf+77, +glBdf+78, glBdf+79, glBdf+80, glBdf+81, glBdf+82, glBdf+83, +glBdf+84, glBdf+85, glBdf+86, glBdf+87, glBdf+88, glBdf+89, +glBdf+90, glBdf+91, glBdf+92, glBdf+93, glBdf+94, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +glBdf+95, glBdf+96, glBdf+97, glBdf+98, glBdf+99, glBdf+100, +glBdf+101, glBdf+102, glBdf+103, glBdf+104, glBdf+105, glBdf+106, +glBdf+107, glBdf+108, glBdf+109, glBdf+110, glBdf+111, glBdf+112, +glBdf+113, glBdf+114, glBdf+115, glBdf+116, glBdf+117, glBdf+118, +glBdf+119, glBdf+120, glBdf+121, glBdf+122, glBdf+123, glBdf+124, +glBdf+125, glBdf+126, glBdf+127, glBdf+128, glBdf+129, glBdf+130, +glBdf+131, glBdf+132, glBdf+133, glBdf+134, glBdf+135, glBdf+136, +glBdf+137, glBdf+138, glBdf+139, glBdf+140, glBdf+141, glBdf+142, +glBdf+143, glBdf+144, glBdf+145, glBdf+146, glBdf+147, glBdf+148, +glBdf+149, glBdf+150, glBdf+151, glBdf+152, glBdf+153, glBdf+154, +glBdf+155, glBdf+156, glBdf+157, glBdf+158, glBdf+159, glBdf+160, +glBdf+161, glBdf+162, glBdf+163, glBdf+164, glBdf+165, glBdf+166, +glBdf+167, glBdf+168, glBdf+169, glBdf+170, glBdf+171, glBdf+172, +glBdf+173, glBdf+174, glBdf+175, glBdf+176, glBdf+177, glBdf+178, +glBdf+179, glBdf+180, glBdf+181, glBdf+182, glBdf+183, glBdf+184, +glBdf+185, glBdf+186, glBdf+187, glBdf+188, glBdf+189 } +}; + + + |