Blame other/ppmdmkfont.c

Packit 78deda
#include <stdio.h>
Packit 78deda
#include <assert.h>
Packit 78deda
Packit 78deda
#include "ppm.h"
Packit 78deda
#include "mallocvar.h"
Packit 78deda
#include "nstring.h"
Packit 78deda
#include "ppmdfont.h"
Packit 78deda
Packit 78deda
Packit 78deda
/*        Stroke character definitions
Packit 78deda
Packit 78deda
   The  following  character  definitions are derived from the (public
Packit 78deda
   domain) Hershey plotter  font  database,  using  the  single-stroke
Packit 78deda
   Roman font.
Packit 78deda
Packit 78deda
   Each  character  definition  begins  with 3 bytes which specify the
Packit 78deda
   number of X, Y plot pairs which follow, the negative  of  the  skip
Packit 78deda
   before  starting  to  draw  the  characters, and the skip after the
Packit 78deda
   character.  The first plot pair moves the pen to that location  and
Packit 78deda
   subsequent  pairs  draw  to  the  location given.  A pair of 192, 0
Packit 78deda
   raises the pen, moves to the location given by the following  pair,
Packit 78deda
   and resumes drawing with the pair after that.
Packit 78deda
Packit 78deda
   The  values  in  the  definition  tables are 8-bit two's complement
Packit 78deda
   signed numbers.  We  declare  the  table  as  "unsigned  char"  and
Packit 78deda
   manually  sign-extend  the  values because C compilers differ as to
Packit 78deda
   whether the type "char" is signed or unsigned, and  some  compilers
Packit 78deda
   don't  accept the qualifier "signed" which we would like to use for
Packit 78deda
   these items.  We specify negative numbers as their  unsigned  two's
Packit 78deda
   complements  to  avoid  complaints  from compilers which don't like
Packit 78deda
   initialising unsigned data with signed values.  Ahhh,  portability.
Packit 78deda
*/
Packit 78deda
Packit 78deda
static unsigned char char32[] =
Packit 78deda
{ 0, 0, 21 };
Packit 78deda
Packit 78deda
static unsigned char char33[] =
Packit 78deda
{ 8, 251, 5,
Packit 78deda
  0, 244, 0, 2, 192, 0, 0, 7, 255, 8, 0, 9, 1, 8, 0, 7 };
Packit 78deda
Packit 78deda
static unsigned char char34[] =
Packit 78deda
{ 17, 253, 15,
Packit 78deda
  2, 244, 1, 245, 0, 244, 1, 243, 2, 244, 2, 246, 1,
Packit 78deda
  248, 0, 249, 192, 0, 10, 244, 9, 245, 8, 244, 9, 243, 10, 244,
Packit 78deda
  10, 246, 9, 248, 8, 249, };
Packit 78deda
Packit 78deda
static unsigned char char35[] =
Packit 78deda
{ 11, 246, 11,
Packit 78deda
  1, 240, 250, 16, 192, 0, 7, 240, 0, 16, 192, 0, 250,
Packit 78deda
  253, 8, 253, 192, 0, 249, 3, 7, 3 };
Packit 78deda
Packit 78deda
static unsigned char char36[] =
Packit 78deda
{ 26, 246, 10,
Packit 78deda
  254, 240, 254, 13, 192, 0, 2, 240, 2, 13, 192, 0, 7,
Packit 78deda
  247, 5, 245, 2, 244, 254, 244, 251, 245, 249, 247, 249, 249, 250,
Packit 78deda
  251, 251, 252, 253, 253, 3, 255, 5, 0, 6, 1, 7, 3, 7, 6, 5, 8, 2,
Packit 78deda
  9, 254, 9, 251, 8, 249, 6 };
Packit 78deda
Packit 78deda
static unsigned char char37[] =
Packit 78deda
{ 31, 244, 12,
Packit 78deda
  9, 244, 247, 9, 192, 0, 252, 244, 254, 246, 254,
Packit 78deda
  248, 253, 250, 251, 251, 249, 251, 247, 249, 247, 247, 248, 245,
Packit 78deda
  250, 244, 252, 244, 254, 245, 1, 246, 4, 246, 7, 245, 9, 244,
Packit 78deda
  192, 0, 5, 2, 3, 3, 2, 5, 2, 7, 4, 9, 6, 9, 8, 8, 9, 6, 9, 4, 7,
Packit 78deda
  2, 5, 2 };
Packit 78deda
  
Packit 78deda
static unsigned char char38[] =
Packit 78deda
{ 34, 243, 13,
Packit 78deda
  10, 253, 10, 252, 9, 251, 8, 251, 7, 252, 6, 254, 4,
Packit 78deda
  3, 2, 6, 0, 8, 254, 9, 250, 9, 248, 8, 247, 7, 246, 5, 246, 3,
Packit 78deda
  247, 1, 248, 0, 255, 252, 0, 251, 1, 249, 1, 247, 0, 245, 254,
Packit 78deda
  244, 252, 245, 251, 247, 251, 249, 252, 252, 254, 255, 3, 6, 5,
Packit 78deda
  8, 7, 9, 9, 9, 10, 8, 10, 7 };
Packit 78deda
Packit 78deda
static unsigned char char39[] =
Packit 78deda
{ 7, 251, 5,
Packit 78deda
  0, 246, 255, 245, 0, 244, 1, 245, 1, 247, 0, 249, 255,
Packit 78deda
  250 };
Packit 78deda
Packit 78deda
static unsigned char char40[] =
Packit 78deda
{ 10, 249, 7,
Packit 78deda
  4, 240, 2, 242, 0, 245, 254, 249, 253, 254, 253, 2,
Packit 78deda
  254, 7, 0, 11, 2, 14, 4, 16 };
Packit 78deda
Packit 78deda
static unsigned char char41[] =
Packit 78deda
{ 10, 249, 7,
Packit 78deda
  252, 240, 254, 242, 0, 245, 2, 249, 3, 254, 3, 2, 2,
Packit 78deda
  7, 0, 11, 254, 14, 252, 16 };
Packit 78deda
Packit 78deda
static unsigned char char42[] =
Packit 78deda
{ 8, 248, 8,
Packit 78deda
  0, 250, 0, 6, 192, 0, 251, 253, 5, 3, 192, 0, 5, 253,
Packit 78deda
  251, 3 };
Packit 78deda
Packit 78deda
static unsigned char char43[] =
Packit 78deda
{ 5, 243, 13,
Packit 78deda
  0, 247, 0, 9, 192, 0, 247, 0, 9, 0 };
Packit 78deda
Packit 78deda
static unsigned char char44[] =
Packit 78deda
{ 8, 251, 5,
Packit 78deda
  1, 8, 0, 9, 255, 8, 0, 7, 1, 8, 1, 10, 0, 12, 255, 13
Packit 78deda
};
Packit 78deda
Packit 78deda
static unsigned char char45[] =
Packit 78deda
{ 2, 243, 13,
Packit 78deda
  247, 0, 9, 0 };
Packit 78deda
Packit 78deda
static unsigned char char46[] =
Packit 78deda
{ 5, 251, 5,
Packit 78deda
  0, 7, 255, 8, 0, 9, 1, 8, 0, 7 };
Packit 78deda
Packit 78deda
static unsigned char char47[] =
Packit 78deda
{ 2, 245, 11,
Packit 78deda
  9, 240, 247, 16 };
Packit 78deda
Packit 78deda
static unsigned char char48[] =
Packit 78deda
{ 17, 246, 10,
Packit 78deda
  255, 244, 252, 245, 250, 248, 249, 253, 249, 0, 250,
Packit 78deda
  5, 252, 8, 255, 9, 1, 9, 4, 8, 6, 5, 7, 0, 7, 253, 6, 248, 4,
Packit 78deda
  245, 1, 244, 255, 244 };
Packit 78deda
Packit 78deda
static unsigned char char49[] =
Packit 78deda
{ 4, 246, 10,
Packit 78deda
  252, 248, 254, 247, 1, 244, 1, 9 };
Packit 78deda
Packit 78deda
static unsigned char char50[] =
Packit 78deda
{ 14, 246, 10,
Packit 78deda
  250, 249, 250, 248, 251, 246, 252, 245, 254, 244, 2,
Packit 78deda
  244, 4, 245, 5, 246, 6, 248, 6, 250, 5, 252, 3, 255, 249, 9, 7, 9
Packit 78deda
};
Packit 78deda
Packit 78deda
static unsigned char char51[] =
Packit 78deda
{ 15, 246, 10,
Packit 78deda
  251, 244, 6, 244, 0, 252, 3, 252, 5, 253, 6, 254, 7,
Packit 78deda
  1, 7, 3, 6, 6, 4, 8, 1, 9, 254, 9, 251, 8, 250, 7, 249, 5 };
Packit 78deda
Packit 78deda
Packit 78deda
static unsigned char char52[] =
Packit 78deda
{ 6, 246, 10,
Packit 78deda
  3, 244, 249, 2, 8, 2, 192, 0, 3, 244, 3, 9 };
Packit 78deda
Packit 78deda
static unsigned char char53[] =
Packit 78deda
{ 17, 246, 10,
Packit 78deda
  5, 244, 251, 244, 250, 253, 251, 252, 254, 251, 1,
Packit 78deda
  251, 4, 252, 6, 254, 7, 1, 7, 3, 6, 6, 4, 8, 1, 9, 254, 9, 251,
Packit 78deda
  8, 250, 7, 249, 5 };
Packit 78deda
Packit 78deda
static unsigned char char54[] =
Packit 78deda
{ 23, 246, 10,
Packit 78deda
  6, 247, 5, 245, 2, 244, 0, 244, 253, 245, 251, 248,
Packit 78deda
  250, 253, 250, 2, 251, 6, 253, 8, 0, 9, 1, 9, 4, 8, 6, 6, 7, 3,
Packit 78deda
  7, 2, 6, 255, 4, 253, 1, 252, 0, 252, 253, 253, 251, 255, 250, 2
Packit 78deda
};
Packit 78deda
Packit 78deda
static unsigned char char55[] =
Packit 78deda
{ 5, 246, 10,
Packit 78deda
  7, 244, 253, 9, 192, 0, 249, 244, 7, 244 };
Packit 78deda
    
Packit 78deda
static unsigned char char56[] =
Packit 78deda
{ 29, 246, 10,
Packit 78deda
  254, 244, 251, 245, 250, 247, 250, 249, 251, 251,
Packit 78deda
  253, 252, 1, 253, 4, 254, 6, 0, 7, 2, 7, 5, 6, 7, 5, 8, 2, 9,
Packit 78deda
  254, 9, 251, 8, 250, 7, 249, 5, 249, 2, 250, 0, 252, 254, 255,
Packit 78deda
  253, 3, 252, 5, 251, 6, 249, 6, 247, 5, 245, 2, 244, 254, 244 };
Packit 78deda
Packit 78deda
static unsigned char char57[] =
Packit 78deda
{ 23, 246, 10,
Packit 78deda
  6, 251, 5, 254, 3, 0, 0, 1, 255, 1, 252, 0, 250,
Packit 78deda
  254, 249, 251, 249, 250, 250, 247, 252, 245, 255, 244, 0, 244, 3,
Packit 78deda
  245, 5, 247, 6, 251, 6, 0, 5, 5, 3, 8, 0, 9, 254, 9, 251, 8, 250,
Packit 78deda
  6 };
Packit 78deda
      
Packit 78deda
static unsigned char char58[] =
Packit 78deda
{ 11, 251, 5,
Packit 78deda
  0, 251, 255, 252, 0, 253, 1, 252, 0, 251, 192, 0, 0,
Packit 78deda
  7, 255, 8, 0, 9, 1, 8, 0, 7 };
Packit 78deda
                                
Packit 78deda
static unsigned char char59[] =
Packit 78deda
{ 14, 251, 5,
Packit 78deda
  0, 251, 255, 252, 0, 253, 1, 252, 0, 251, 192, 0, 1,
Packit 78deda
  8, 0, 9, 255, 8, 0, 7, 1, 8, 1, 10, 0, 12, 255, 13 };
Packit 78deda
Packit 78deda
static unsigned char char60[] =
Packit 78deda
{ 3, 244, 12,
Packit 78deda
  8, 247, 248, 0, 8, 9 };
Packit 78deda
Packit 78deda
static unsigned char char61[] =
Packit 78deda
{ 5, 243, 13,
Packit 78deda
  247, 253, 9, 253, 192, 0, 247, 3, 9, 3 };
Packit 78deda
Packit 78deda
static unsigned char char62[] =
Packit 78deda
{ 3, 244, 12,
Packit 78deda
  248, 247, 8, 0, 248, 9 };
Packit 78deda
Packit 78deda
static unsigned char char63[] =
Packit 78deda
{ 20, 247, 9,
Packit 78deda
  250, 249, 250, 248, 251, 246, 252, 245, 254, 244, 2,
Packit 78deda
  244, 4, 245, 5, 246, 6, 248, 6, 250, 5, 252, 4, 253, 0, 255, 0,
Packit 78deda
  2, 192, 0, 0, 7, 255, 8, 0, 9, 1, 8, 0, 7 };
Packit 78deda
Packit 78deda
static unsigned char char64[] =
Packit 78deda
{ 55, 243, 14,
Packit 78deda
  5, 252, 4, 250, 2, 249, 255, 249, 253, 250, 252,
Packit 78deda
  251, 251, 254, 251, 1, 252, 3, 254, 4, 1, 4, 3, 3, 4, 1, 192, 0,
Packit 78deda
  255, 249, 253, 251, 252, 254, 252, 1, 253, 3, 254, 4, 192, 0, 5,
Packit 78deda
  249, 4, 1, 4, 3, 6, 4, 8, 4, 10, 2, 11, 255, 11, 253, 10, 250, 9,
Packit 78deda
  248, 7, 246, 5, 245, 2, 244, 255, 244, 252, 245, 250, 246, 248,
Packit 78deda
  248, 247, 250, 246, 253, 246, 0, 247, 3, 248, 5, 250, 7, 252, 8,
Packit 78deda
  255, 9, 2, 9, 5, 8, 7, 7, 8, 6, 192, 0, 6, 249, 5, 1, 5, 3, 6, 4
Packit 78deda
};
Packit 78deda
  
Packit 78deda
static unsigned char char65[] =
Packit 78deda
{ 8, 247, 9,
Packit 78deda
  0, 244, 248, 9, 192, 0, 0, 244, 8, 9, 192, 0, 251, 2,
Packit 78deda
  5, 2 };
Packit 78deda
Packit 78deda
static unsigned char char66[] =
Packit 78deda
{ 23, 245, 10,
Packit 78deda
  249, 244, 249, 9, 192, 0, 249, 244, 2, 244, 5, 245,
Packit 78deda
  6, 246, 7, 248, 7, 250, 6, 252, 5, 253, 2, 254, 192, 0, 249, 254,
Packit 78deda
  2, 254, 5, 255, 6, 0, 7, 2, 7, 5, 6, 7, 5, 8, 2, 9, 249, 9 };
Packit 78deda
Packit 78deda
static unsigned char char67[] =
Packit 78deda
{ 18, 246, 11,
Packit 78deda
  8, 249, 7, 247, 5, 245, 3, 244, 255, 244, 253, 245,
Packit 78deda
  251, 247, 250, 249, 249, 252, 249, 1, 250, 4, 251, 6, 253, 8,
Packit 78deda
  255, 9, 3, 9, 5, 8, 7, 6, 8, 4 };
Packit 78deda
Packit 78deda
static unsigned char char68[] =
Packit 78deda
{ 15, 245, 10,
Packit 78deda
  249, 244, 249, 9, 192, 0, 249, 244, 0, 244, 3, 245,
Packit 78deda
  5, 247, 6, 249, 7, 252, 7, 1, 6, 4, 5, 6, 3, 8, 0, 9, 249, 9 };
Packit 78deda
Packit 78deda
static unsigned char char69[] =
Packit 78deda
{ 11, 246, 9,
Packit 78deda
  250, 244, 250, 9, 192, 0, 250, 244, 7, 244, 192, 0,
Packit 78deda
  250, 254, 2, 254, 192, 0, 250, 9, 7, 9 };
Packit 78deda
Packit 78deda
static unsigned char char70[] =
Packit 78deda
{ 8, 246, 8,
Packit 78deda
  250, 244, 250, 9, 192, 0, 250, 244, 7, 244, 192, 0,
Packit 78deda
  250, 254, 2, 254 };
Packit 78deda
Packit 78deda
static unsigned char char71[] =
Packit 78deda
{ 22, 246, 11,
Packit 78deda
  8, 249, 7, 247, 5, 245, 3, 244, 255, 244, 253, 245,
Packit 78deda
  251, 247, 250, 249, 249, 252, 249, 1, 250, 4, 251, 6, 253, 8,
Packit 78deda
  255, 9, 3, 9, 5, 8, 7, 6, 8, 4, 8, 1, 192, 0, 3, 1, 8, 1 };
Packit 78deda
Packit 78deda
static unsigned char char72[] =
Packit 78deda
{ 8, 245, 11,
Packit 78deda
  249, 244, 249, 9, 192, 0, 7, 244, 7, 9, 192, 0, 249,
Packit 78deda
  254, 7, 254 };
Packit 78deda
Packit 78deda
static unsigned char char73[] =
Packit 78deda
{ 2, 252, 4,
Packit 78deda
  0, 244, 0, 9 };
Packit 78deda
Packit 78deda
static unsigned char char74[] =
Packit 78deda
{ 10, 248, 8,
Packit 78deda
  4, 244, 4, 4, 3, 7, 2, 8, 0, 9, 254, 9, 252, 8, 251,
Packit 78deda
  7, 250, 4, 250, 2 };
Packit 78deda
Packit 78deda
static unsigned char char75[] =
Packit 78deda
{ 8, 245, 10,
Packit 78deda
  249, 244, 249, 9, 192, 0, 7, 244, 249, 2, 192, 0,
Packit 78deda
  254, 253, 7, 9 };
Packit 78deda
Packit 78deda
static unsigned char char76[] = 
Packit 78deda
{ 3, 246, 7,
Packit 78deda
  250, 244, 250, 9, 6, 9 };
Packit 78deda
Packit 78deda
static unsigned char char77[] =
Packit 78deda
{ 11, 244, 12,
Packit 78deda
  248, 244, 248, 9, 192, 0, 248, 244, 0, 9, 192, 0, 8,
Packit 78deda
  244, 0, 9, 192, 0, 8, 244, 8, 9 };
Packit 78deda
                                               
Packit 78deda
static unsigned char char78[] =
Packit 78deda
{ 8, 245, 11,
Packit 78deda
  249, 244, 249, 9, 192, 0, 249, 244, 7, 9, 192, 0, 7,
Packit 78deda
  244, 7, 9 };
Packit 78deda
                         
Packit 78deda
static unsigned char char79[] =
Packit 78deda
{ 21, 245, 11,
Packit 78deda
  254, 244, 252, 245, 250, 247, 249, 249, 248, 252,
Packit 78deda
  248, 1, 249, 4, 250, 6, 252, 8, 254, 9, 2, 9, 4, 8, 6, 6, 7, 4,
Packit 78deda
  8, 1, 8, 252, 7, 249, 6, 247, 4, 245, 2, 244, 254, 244 };
Packit 78deda
Packit 78deda
static unsigned char char80[] =
Packit 78deda
{ 13, 245, 10,
Packit 78deda
  249, 244, 249, 9, 192, 0, 249, 244, 2, 244, 5, 245,
Packit 78deda
  6, 246, 7, 248, 7, 251, 6, 253, 5, 254, 2, 255, 249, 255 };
Packit 78deda
Packit 78deda
static unsigned char char81[] =
Packit 78deda
{ 24, 245, 11,
Packit 78deda
  254, 244, 252, 245, 250, 247, 249, 249, 248, 252,
Packit 78deda
  248, 1, 249, 4, 250, 6, 252, 8, 254, 9, 2, 9, 4, 8, 6, 6, 7, 4,
Packit 78deda
  8, 1, 8, 252, 7, 249, 6, 247, 4, 245, 2, 244, 254, 244, 192, 0,
Packit 78deda
  1, 5, 7, 11 };
Packit 78deda
                           
Packit 78deda
static unsigned char char82[] =
Packit 78deda
{ 16, 245, 10,
Packit 78deda
  249, 244, 249, 9, 192, 0, 249, 244, 2, 244, 5, 245,
Packit 78deda
  6, 246, 7, 248, 7, 250, 6, 252, 5, 253, 2, 254, 249, 254, 192, 0,
Packit 78deda
  0, 254, 7, 9 };
Packit 78deda
Packit 78deda
static unsigned char char83[] =
Packit 78deda
{ 20, 246, 10,
Packit 78deda
  7, 247, 5, 245, 2, 244, 254, 244, 251, 245, 249,
Packit 78deda
  247, 249, 249, 250, 251, 251, 252, 253, 253, 3, 255, 5, 0, 6, 1,
Packit 78deda
  7, 3, 7, 6, 5, 8, 2, 9, 254, 9, 251, 8, 249, 6 };
Packit 78deda
Packit 78deda
static unsigned char char84[] =
Packit 78deda
{ 5, 248, 8,
Packit 78deda
  0, 244, 0, 9, 192, 0, 249, 244, 7, 244 };
Packit 78deda
Packit 78deda
static unsigned char char85[] =
Packit 78deda
{ 10, 245, 11,
Packit 78deda
  249, 244, 249, 3, 250, 6, 252, 8, 255, 9, 1, 9, 4,
Packit 78deda
  8, 6, 6, 7, 3, 7, 244 };
Packit 78deda
Packit 78deda
static unsigned char char86[] =
Packit 78deda
{ 5, 247, 9,
Packit 78deda
  248, 244, 0, 9, 192, 0, 8, 244, 0, 9 };
Packit 78deda
Packit 78deda
static unsigned char char87[] =
Packit 78deda
{ 11, 244, 12,
Packit 78deda
  246, 244, 251, 9, 192, 0, 0, 244, 251, 9, 192, 0, 0,
Packit 78deda
  244, 5, 9, 192, 0, 10, 244, 5, 9 };
Packit 78deda
Packit 78deda
static unsigned char char88[] =
Packit 78deda
{ 5, 246, 10,
Packit 78deda
  249, 244, 7, 9, 192, 0, 7, 244, 249, 9 };
Packit 78deda
Packit 78deda
static unsigned char char89[] =
Packit 78deda
{ 6, 247, 9,
Packit 78deda
  248, 244, 0, 254, 0, 9, 192, 0, 8, 244, 0, 254 };
Packit 78deda
Packit 78deda
static unsigned char char90[] =
Packit 78deda
{ 8, 246, 10,
Packit 78deda
  7, 244, 249, 9, 192, 0, 249, 244, 7, 244, 192, 0,
Packit 78deda
  249, 9, 7, 9 };
Packit 78deda
Packit 78deda
static unsigned char char91[] =
Packit 78deda
{ 11, 249, 7,
Packit 78deda
  253, 240, 253, 16, 192, 0, 254, 240, 254, 16, 192, 0,
Packit 78deda
  253, 240, 4, 240, 192, 0, 253, 16, 4, 16 };
Packit 78deda
Packit 78deda
static unsigned char char92[] =
Packit 78deda
{ 2, 245, 11,
Packit 78deda
  9, 16, 247, 240 };
Packit 78deda
Packit 78deda
static unsigned char char93[] =
Packit 78deda
{ 11, 249, 7,
Packit 78deda
  2, 240, 2, 16, 192, 0, 3, 240, 3, 16, 192, 0, 252,
Packit 78deda
  240, 3, 240, 192, 0, 252, 16, 3, 16 };
Packit 78deda
Packit 78deda
static unsigned char char94[] =
Packit 78deda
{ 7, 245, 11,
Packit 78deda
  248, 2, 0, 253, 8, 2, 192, 0, 248, 2, 0, 254, 8, 2 };
Packit 78deda
Packit 78deda
static unsigned char char95[] =
Packit 78deda
{ 2, 253, 22,
Packit 78deda
  0, 9, 20, 9 };
Packit 78deda
Packit 78deda
static unsigned char char96[] =
Packit 78deda
{ 7, 251, 5,
Packit 78deda
  1, 244, 0, 245, 255, 247, 255, 249, 0, 250, 1, 249, 0, 248 };
Packit 78deda
Packit 78deda
static unsigned char char97[] =
Packit 78deda
{ 17, 247, 10,
Packit 78deda
  6, 251, 6, 9, 192, 0, 6, 254, 4, 252, 2, 251, 255,
Packit 78deda
  251, 253, 252, 251, 254, 250, 1, 250, 3, 251, 6, 253, 8, 255, 9,
Packit 78deda
  2, 9, 4, 8, 6, 6 };
Packit 78deda
                                
Packit 78deda
static unsigned char char98[] =
Packit 78deda
{ 17, 246, 9,
Packit 78deda
  250, 244, 250, 9, 192, 0, 250, 254, 252, 252, 254,
Packit 78deda
  251, 1, 251, 3, 252, 5, 254, 6, 1, 6, 3, 5, 6, 3, 8, 1, 9, 254,
Packit 78deda
  9, 252, 8, 250, 6 };
Packit 78deda
                                 
Packit 78deda
static unsigned char char99[] =
Packit 78deda
{ 14, 247, 9,
Packit 78deda
  6, 254, 4, 252, 2, 251, 255, 251, 253, 252, 251, 254,
Packit 78deda
  250, 1, 250, 3, 251, 6, 253, 8, 255, 9, 2, 9, 4, 8, 6, 6 };
Packit 78deda
Packit 78deda
static unsigned char char100[] =
Packit 78deda
{ 17, 247, 10,
Packit 78deda
  6, 244, 6, 9, 192, 0, 6, 254, 4, 252, 2, 251, 255,
Packit 78deda
  251, 253, 252, 251, 254, 250, 1, 250, 3, 251, 6, 253, 8, 255, 9,
Packit 78deda
  2, 9, 4, 8, 6, 6 };
Packit 78deda
                                 
Packit 78deda
static unsigned char char101[] =
Packit 78deda
{ 17, 247, 9,
Packit 78deda
  250, 1, 6, 1, 6, 255, 5, 253, 4, 252, 2, 251, 255,
Packit 78deda
  251, 253, 252, 251, 254, 250, 1, 250, 3, 251, 6, 253, 8, 255, 9,
Packit 78deda
  2, 9, 4, 8, 6, 6 };
Packit 78deda
Packit 78deda
static unsigned char char102[] =
Packit 78deda
{ 8, 251, 7,
Packit 78deda
  5, 244, 3, 244, 1, 245, 0, 248, 0, 9, 192, 0, 253,
Packit 78deda
  251, 4, 251 };
Packit 78deda
Packit 78deda
static unsigned char char103[] =
Packit 78deda
{ 22, 247, 10,
Packit 78deda
  6, 251, 6, 11, 5, 14, 4, 15, 2, 16, 255, 16, 253,
Packit 78deda
  15, 192, 0, 6, 254, 4, 252, 2, 251, 255, 251, 253, 252, 251,
Packit 78deda
  254, 250, 1, 250, 3, 251, 6, 253, 8, 255, 9, 2, 9, 4, 8, 6, 6 };
Packit 78deda
Packit 78deda
static unsigned char char104[] =
Packit 78deda
{ 10, 247, 10,
Packit 78deda
  251, 244, 251, 9, 192, 0, 251, 255, 254, 252, 0,
Packit 78deda
  251, 3, 251, 5, 252, 6, 255, 6, 9 };
Packit 78deda
Packit 78deda
static unsigned char char105[] =
Packit 78deda
{ 8, 252, 4,
Packit 78deda
  255, 244, 0, 245, 1, 244, 0, 243, 255, 244, 192, 0,
Packit 78deda
  0, 251, 0, 9 };
Packit 78deda
Packit 78deda
static unsigned char char106[] =
Packit 78deda
{ 11, 251, 5,
Packit 78deda
  0, 244, 1, 245, 2, 244, 1, 243, 0, 244, 192, 0, 1,
Packit 78deda
  251, 1, 12, 0, 15, 254, 16, 252, 16 };
Packit 78deda
Packit 78deda
static unsigned char char107[] =
Packit 78deda
{ 8, 247, 8,
Packit 78deda
  251, 244, 251, 9, 192, 0, 5, 251, 251, 5, 192, 0, 255, 1, 6, 9 };
Packit 78deda
Packit 78deda
static unsigned char char108[] =
Packit 78deda
{ 2, 252, 4,
Packit 78deda
  0, 244, 0, 9 };
Packit 78deda
                                        
Packit 78deda
static unsigned char char109[] =
Packit 78deda
{ 18, 241, 15,
Packit 78deda
  245, 251, 245, 9, 192, 0, 245, 255, 248, 252, 250,
Packit 78deda
  251, 253, 251, 255, 252, 0, 255, 0, 9, 192, 0, 0, 255, 3, 252,
Packit 78deda
  5, 251, 8, 251, 10, 252, 11, 255, 11, 9 };
Packit 78deda
Packit 78deda
static unsigned char char110[] =
Packit 78deda
{ 10, 247, 10,
Packit 78deda
  251, 251, 251, 9, 192, 0, 251, 255, 254, 252, 0,
Packit 78deda
  251, 3, 251, 5, 252, 6, 255, 6, 9 };
Packit 78deda
Packit 78deda
static unsigned char char111[] =
Packit 78deda
{ 17, 247, 10,
Packit 78deda
 255, 251, 253, 252, 251, 254, 250, 1, 250, 3, 251,
Packit 78deda
  6, 253, 8, 255, 9, 2, 9, 4, 8, 6, 6, 7, 3, 7, 1, 6, 254, 4, 252,
Packit 78deda
  2, 251, 255, 251 };
Packit 78deda
Packit 78deda
static unsigned char char112[] =
Packit 78deda
{ 17, 246, 9,
Packit 78deda
  250, 251, 250, 16, 192, 0, 250, 254, 252, 252, 254,
Packit 78deda
  251, 1, 251, 3, 252, 5, 254, 6, 1, 6, 3, 5, 6, 3, 8, 1, 9, 254,
Packit 78deda
  9, 252, 8, 250, 6 };
Packit 78deda
Packit 78deda
static unsigned char char113[] =
Packit 78deda
{ 17, 247, 10,
Packit 78deda
  6, 251, 6, 16, 192, 0, 6, 254, 4, 252, 2, 251, 255,
Packit 78deda
  251, 253, 252, 251, 254, 250, 1, 250, 3, 251, 6, 253, 8, 255, 9,
Packit 78deda
  2, 9, 4, 8, 6, 6 };
Packit 78deda
                                 
Packit 78deda
static unsigned char char114[] =
Packit 78deda
{ 8, 249, 6,
Packit 78deda
  253, 251, 253, 9, 192, 0, 253, 1, 254, 254, 0, 252,
Packit 78deda
  2, 251, 5, 251 };
Packit 78deda
                               
Packit 78deda
static unsigned char char115[] =
Packit 78deda
{ 17, 248, 9,
Packit 78deda
  6, 254, 5, 252, 2, 251, 255, 251, 252, 252, 251,
Packit 78deda
  254, 252, 0, 254, 1, 3, 2, 5, 3, 6, 5, 6, 6, 5, 8, 2, 9, 255, 9,
Packit 78deda
  252, 8, 251, 6 };
Packit 78deda
Packit 78deda
static unsigned char char116[] =
Packit 78deda
{ 8, 251, 7,
Packit 78deda
  0, 244, 0, 5, 1, 8, 3, 9, 5, 9, 192, 0, 253, 251, 4, 251 };
Packit 78deda
Packit 78deda
static unsigned char char117[] =
Packit 78deda
{ 10, 247, 10,
Packit 78deda
  251, 251, 251, 5, 252, 8, 254, 9, 1, 9, 3, 8, 6, 5,
Packit 78deda
  192, 0, 6, 251, 6, 9 };
Packit 78deda
Packit 78deda
static unsigned char char118[] =
Packit 78deda
{ 5, 248, 8,
Packit 78deda
  250, 251, 0, 9, 192, 0, 6, 251, 0, 9 };
Packit 78deda
                                                                
Packit 78deda
static unsigned char char119[] =
Packit 78deda
{ 11, 245, 11,
Packit 78deda
  248, 251, 252, 9, 192, 0, 0, 251, 252, 9, 192, 0,
Packit 78deda
  0, 251, 4, 9, 192, 0, 8, 251, 4, 9 };
Packit 78deda
Packit 78deda
static unsigned char char120[] =
Packit 78deda
{ 5, 248, 9,
Packit 78deda
  251, 251, 6, 9, 192, 0, 6, 251, 251, 9 };
Packit 78deda
Packit 78deda
static unsigned char char121[] =
Packit 78deda
{ 9, 248, 8,
Packit 78deda
  250, 251, 0, 9, 192, 0, 6, 251, 0, 9, 254, 13, 252,
Packit 78deda
  15, 250, 16, 249, 16 };
Packit 78deda
                                     
Packit 78deda
static unsigned char char122[] =
Packit 78deda
{ 8, 248, 9,
Packit 78deda
  6, 251, 251, 9, 192, 0, 251, 251, 6, 251, 192, 0,
Packit 78deda
  251, 9, 6, 9 };
Packit 78deda
Packit 78deda
static unsigned char char123[] =
Packit 78deda
{ 39, 249, 7,
Packit 78deda
  2, 240, 0, 241, 255, 242, 254, 244, 254, 246, 255,
Packit 78deda
  248, 0, 249, 1, 251, 1, 253, 255, 255, 192, 0, 0, 241, 255, 243,
Packit 78deda
  255, 245, 0, 247, 1, 248, 2, 250, 2, 252, 1, 254, 253, 0, 1, 2,
Packit 78deda
  2, 4, 2, 6, 1, 8, 0, 9, 255, 11, 255, 13, 0, 15, 192, 0, 255, 1,
Packit 78deda
  1, 3, 1, 5, 0, 7, 255, 8, 254, 10, 254, 12, 255, 14, 0, 15, 2, 16 };
Packit 78deda
Packit 78deda
static unsigned char char124[] =
Packit 78deda
{ 2, 252, 4,
Packit 78deda
  0, 240, 0, 16 };
Packit 78deda
Packit 78deda
static unsigned char char125[] =
Packit 78deda
{ 39, 249, 7,
Packit 78deda
  254, 240, 0, 241, 1, 242, 2, 244, 2, 246, 1, 248, 0,
Packit 78deda
  249, 255, 251, 255, 253, 1, 255, 192, 0, 0, 241, 1, 243, 1, 245,
Packit 78deda
  0, 247, 255, 248, 254, 250, 254, 252, 255, 254, 3, 0, 255, 2,
Packit 78deda
  254, 4, 254, 6, 255, 8, 0, 9, 1, 11, 1, 13, 0, 15, 192, 0, 1, 1,
Packit 78deda
  255, 3, 255, 5, 0, 7, 1, 8, 2, 10, 2, 12, 1, 14, 0, 15, 254, 16 };
Packit 78deda
Packit 78deda
static unsigned char char126[] =
Packit 78deda
{ 23, 255, 21,
Packit 78deda
  2, 1, 0, 255, 1, 253, 3, 251, 5, 251, 7, 252,
Packit 78deda
  11, 255, 13, 0, 15, 0, 17, 255, 18, 254, 192, 0, 2, 0, 1,
Packit 78deda
  254, 3, 253, 5, 253, 7, 254, 11, 1, 13, 2, 15, 2, 17, 1, 18,
Packit 78deda
  255, 18, 252 };
Packit 78deda
Packit 78deda
/* Pointers to character definition tables. */
Packit 78deda
Packit 78deda
static unsigned char * fontData[] = {
Packit 78deda
    char32, char33, char34, char35, char36, char37, char38, char39, char40,
Packit 78deda
    char41, char42, char43, char44, char45, char46, char47, char48, char49,
Packit 78deda
    char50, char51, char52, char53, char54, char55, char56, char57, char58,
Packit 78deda
    char59, char60, char61, char62, char63, char64, char65, char66, char67,
Packit 78deda
    char68, char69, char70, char71, char72, char73, char74, char75, char76,
Packit 78deda
    char77, char78, char79, char80, char81, char82, char83, char84, char85,
Packit 78deda
    char86, char87, char88, char89, char90, char91, char92, char93, char94,
Packit 78deda
    char95, char96, char97, char98, char99, char100, char101, char102,
Packit 78deda
    char103, char104, char105, char106, char107, char108, char109, char110,
Packit 78deda
    char111, char112, char113, char114, char115, char116, char117, char118,
Packit 78deda
    char119, char120, char121, char122, char123, char124, char125, char126
Packit 78deda
};
Packit 78deda
Packit 78deda
Packit 78deda
Packit 78deda
static void
Packit 78deda
writeGlyphCommand(FILE *                   const ofP,
Packit 78deda
                  struct ppmd_glyphCommand const glyphCommand) {
Packit 78deda
Packit 78deda
    fputc(glyphCommand.verb, ofP);
Packit 78deda
    fputc(glyphCommand.x, ofP);
Packit 78deda
    fputc(glyphCommand.y, ofP);
Packit 78deda
}    
Packit 78deda
Packit 78deda
Packit 78deda
Packit 78deda
static void
Packit 78deda
writeMovePen(FILE *                const ofP,
Packit 78deda
             const unsigned char * const glyphData) {
Packit 78deda
Packit 78deda
    struct ppmd_glyphCommand glyphCommand;
Packit 78deda
            
Packit 78deda
    glyphCommand.verb = CMD_MOVEPEN;
Packit 78deda
    glyphCommand.x = glyphData[0];
Packit 78deda
    glyphCommand.y = glyphData[1];
Packit 78deda
    
Packit 78deda
    writeGlyphCommand(ofP, glyphCommand);
Packit 78deda
}
Packit 78deda
Packit 78deda
Packit 78deda
Packit 78deda
static void
Packit 78deda
writeMovePenNoop(FILE *                const ofP,
Packit 78deda
                 const unsigned char * const glyphData) {
Packit 78deda
Packit 78deda
    struct ppmd_glyphCommand glyphCommand;
Packit 78deda
            
Packit 78deda
    glyphCommand.verb = CMD_MOVEPEN;
Packit 78deda
    glyphCommand.x = glyphData[0];
Packit 78deda
    glyphCommand.y = glyphData[1];
Packit 78deda
    
Packit 78deda
    writeGlyphCommand(ofP, glyphCommand);
Packit 78deda
                
Packit 78deda
    glyphCommand.verb = CMD_NOOP;
Packit 78deda
    glyphCommand.x = 0;
Packit 78deda
    glyphCommand.y = 0;
Packit 78deda
Packit 78deda
    writeGlyphCommand(ofP, glyphCommand);
Packit 78deda
}
Packit 78deda
Packit 78deda
Packit 78deda
Packit 78deda
static void
Packit 78deda
writeDrawLine(FILE *                const ofP,
Packit 78deda
              const unsigned char * const glyphData) {
Packit 78deda
Packit 78deda
    struct ppmd_glyphCommand glyphCommand;
Packit 78deda
Packit 78deda
    glyphCommand.verb = CMD_DRAWLINE;
Packit 78deda
    glyphCommand.x = glyphData[0];
Packit 78deda
    glyphCommand.y = glyphData[1];
Packit 78deda
    
Packit 78deda
    writeGlyphCommand(ofP, glyphCommand);
Packit 78deda
}
Packit 78deda
            
Packit 78deda
Packit 78deda
Packit 78deda
static void
Packit 78deda
writeGlyphHeader(FILE *                  const ofP,
Packit 78deda
                 struct ppmd_glyphHeader const glyphHeader) {
Packit 78deda
Packit 78deda
    fputc(glyphHeader.commandCount, ofP);
Packit 78deda
    fputc(glyphHeader.skipBefore, ofP);
Packit 78deda
    fputc(glyphHeader.skipAfter, ofP);
Packit 78deda
}    
Packit 78deda
Packit 78deda
Packit 78deda
Packit 78deda
static void
Packit 78deda
writeBuiltinCharacter(FILE *       const ofP,
Packit 78deda
                      unsigned int const relativeCodePoint) {
Packit 78deda
Packit 78deda
    const unsigned char * const glyphData = fontData[relativeCodePoint];
Packit 78deda
Packit 78deda
    struct ppmd_glyphHeader glyphHeader;
Packit 78deda
    unsigned int commandNum;
Packit 78deda
Packit 78deda
    glyphHeader.commandCount = glyphData[0];
Packit 78deda
    glyphHeader.skipBefore   = glyphData[1];
Packit 78deda
    glyphHeader.skipAfter    = glyphData[2];
Packit 78deda
Packit 78deda
    writeGlyphHeader(ofP, glyphHeader);
Packit 78deda
Packit 78deda
    commandNum = 0;
Packit 78deda
Packit 78deda
    while (commandNum < glyphHeader.commandCount) {
Packit 78deda
            
Packit 78deda
        if (commandNum == 0) {
Packit 78deda
            writeMovePen(ofP, &glyphData[3 + commandNum * 2]);
Packit 78deda
            commandNum += 1;
Packit 78deda
        } else if (glyphData[3 + commandNum*2] == 192) {
Packit 78deda
Packit 78deda
            assert(commandNum + 1 < glyphHeader.commandCount);
Packit 78deda
Packit 78deda
            writeMovePenNoop(ofP, &glyphData[3 + (commandNum + 1) * 2]);
Packit 78deda
Packit 78deda
            commandNum += 2;
Packit 78deda
        } else {
Packit 78deda
            writeDrawLine(ofP, &glyphData[3 + commandNum * 2]);
Packit 78deda
            commandNum += 1;
Packit 78deda
        }
Packit 78deda
    }
Packit 78deda
}
Packit 78deda
Packit 78deda
Packit 78deda
Packit 78deda
static void
Packit 78deda
writeFontHeader(FILE *                 const ofP,
Packit 78deda
                struct ppmd_fontHeader const fontHeader) {
Packit 78deda
Packit 78deda
    fwrite(fontHeader.signature, 1, sizeof(fontHeader.signature), ofP);
Packit 78deda
    fputc(fontHeader.format, ofP);
Packit 78deda
    fputc(fontHeader.characterCount, ofP);
Packit 78deda
    fputc(fontHeader.firstCodePoint, ofP);
Packit 78deda
}
Packit 78deda
Packit 78deda
Packit 78deda
Packit 78deda
static void
Packit 78deda
writeBuiltinFont(FILE * const ofP) {
Packit 78deda
Packit 78deda
    unsigned int relativeCodePoint;
Packit 78deda
Packit 78deda
    struct ppmd_fontHeader fontHeader;
Packit 78deda
Packit 78deda
    memcpy(fontHeader.signature, "ppmdfont", sizeof(fontHeader.signature));
Packit 78deda
    fontHeader.format         = 0x01;
Packit 78deda
    fontHeader.characterCount = 95;
Packit 78deda
    fontHeader.firstCodePoint = 32;
Packit 78deda
Packit 78deda
    writeFontHeader(ofP, fontHeader);
Packit 78deda
Packit 78deda
    for (relativeCodePoint = 0;
Packit 78deda
         relativeCodePoint < fontHeader.characterCount;
Packit 78deda
         ++relativeCodePoint) {
Packit 78deda
Packit 78deda
        writeBuiltinCharacter(ofP,relativeCodePoint);
Packit 78deda
    }
Packit 78deda
}
Packit 78deda
Packit 78deda
Packit 78deda
Packit 78deda
int
Packit 78deda
main(int argc, char **argv) {
Packit 78deda
Packit 78deda
    ppm_init(&argc, argv);
Packit 78deda
Packit 78deda
    writeBuiltinFont(stdout);
Packit 78deda
    
Packit 78deda
    return 0;
Packit 78deda
}