/*CopyrightNotice001 ***************************************************************** COPYRIGHT NOTIFICATION ***************************************************************** THE FOLLOWING IS A NOTICE OF COPYRIGHT, AVAILABILITY OF THE CODE, AND DISCLAIMER WHICH MUST BE INCLUDED IN THE PROLOGUE OF THE CODE AND IN ALL SOURCE LISTINGS OF THE CODE. (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO Argonne National Laboratory (ANL), with facilities in the States of Illinois and Idaho, is owned by the United States Government, and operated by the University of Chicago under provision of a contract with the Department of Energy. Portions of this material resulted from work developed under a U.S. Government contract and are subject to the following license: For a period of five years from June 30, 1995, the Government is granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable worldwide license in this computer software to reproduce, prepare derivative works, and perform publicly and display publicly. With the approval of DOE, this period may be renewed for two additional five year periods. Following the expiration of this period or periods, the Government is granted for itself and others acting on its behalf, a paid-up, nonexclusive, irrevocable worldwide license in this computer software to reproduce, prepare derivative works, distribute copies to the public, perform publicly and display publicly, and to permit others to do so. ***************************************************************** DISCLAIMER ***************************************************************** NEITHER THE UNITED STATES GOVERNMENT NOR ANY AGENCY THEREOF, NOR THE UNIVERSITY OF CHICAGO, NOR ANY OF THEIR EMPLOYEES OR OFFICERS, MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY INFORMATION, APPARATUS, PRODUCT, OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS. ***************************************************************** LICENSING INQUIRIES MAY BE DIRECTED TO THE INDUSTRIAL TECHNOLOGY DEVELOPMENT CENTER AT ARGONNE NATIONAL LABORATORY. CopyrightNotice001 $Log: psymbol.c,v $ Revision 1.7 2001/03/12 21:41:15 soliday Fixed a problem when "I" is the only character. Redrew it so that it has a width. Revision 1.6 1999/06/03 16:08:16 soliday Removed compiler warnings under linux. Revision 1.5 1998/12/22 16:02:37 borland New character scaling algorithm for all labels. Considerable changes to psymbol routine that draws characters and returns the size of strings. Revision 1.4 1998/08/25 15:05:29 borland New version with major changes to allow multiple scales on x and y axes. Revision 1.3 1998/01/27 00:57:25 borland Changed ix and iy arrays from char to short, since using char's doesn't work on some machines. * Revision 1.2 1995/09/05 21:09:33 saunders * First test release of the SDDS1.5 package. * */ #include "mdb.h" #include "psymbol.h" #include "graph.h" #include "graphics.h" #include "gnumacros.h" short ix[MAXCODE] = { -10, -1, -4, -6, -7, -7, -6, -4, -1, 1, 4, 6, 7, 7, 6, 4, /* 1 ^ "0" */ 1, -1,127,-10, -4, -2, 1, 1,127,-10, -6, -6, -5, -4, -2, 2, /* 2, 3 ^ "1", ^ "2" */ 4, 5, 6, 6, 5, 3, -7, 7,127,-10, -5, 6, 0, 3, 5, 6, /* 4 ^ "3" */ 7, 7, 6, 4, 1, -2, -5, -6, -7,127,-10, 3, -7, 8,127, 3, /* 5 ^ "4" */ 3,127,-10, 5, -5, -6, -5, -2, 1, 4, 6, 7, 7, 6, 4, 1, /* 6 ^ "5" */ -2, -5, -6, -7,127,-10, 6, 5, 2, 0, -3, -5, -6, -6, -5, -3, /* 7 ^ "6" */ 0, 1, 4, 6, 7, 7, 6, 4, 1, 0, -3, -5, -6,127,-10, 7, /* 8 ^ "7" */ -3,127, -7, 7,127,-10, -2, -5, -6, -6, -5, -3, 1, 4, 6, 7, /* 9 ^ "8" */ 7, 6, 5, 2, -2, -5, -6, -7, -7, -6, -4, -1, 3, 5, 6, 6, 5, 2, -2,127,-10, 6, 5, 3, 0, -1, -4, -6, -7, -7, -6, -4, /* 10 ^ "9" */ -1, 0, 3, 5, 6, 6, 5, 3, 0, -2, -5, -6,127, -9, 0, -8, /* 11 ^ "A" */ 127, 0, 8,127, -5, 5,127,-11, -7, -7,127, -7, 2, 5, 6, 7, /* 12 ^ "B" */ 7, 6, 5, 2,127, -7, 2, 5, 6, 7, 7, 6, 5, 2, -7,127, -10, 8, 7, 5, 3, -1, -3, -5, -6, -7, -7, -6, -5, -3, -1, 3, /* 13 ^ "C" */ 5, 7, 8,127,-11, -7, -7,127, -7, 0, 3, 5, 6, 7, 7, 6, /* 14 ^ "D" */ 5, 3, 0, -7,127,-10, -6, -6,127, -6, 7,127, -6, 2,127, -6, /* 15 ^ "E" */ 7,127,-10, -6, -6,127, -6, 7,127, -6, 2,127,-10, 8, 7, 5, /* 16, 17 ^ "F", ^ "G" */ 3, -1, -3, -5, -6, -7, -7, -6, -5, -3, -1, 3, 5, 7, 8, 8, 127, 3, 8,127,-11, -7, -7,127, 7, 7,127, -7, 7,127, -7, 4,-4,0, /* 18, 19 ^ "H", ^ "I" */ 0,4,-4,127, -8, 4, 4, 3, 2, 0, -2, -4, -5, -6, -6,127,-11, -7, /* 20, 21 ^ "J", ^ "K" */ -7,127, 7, -7,127, -2, 7,127,-10, -6, -6,127, -6, 6,127,-12, /* 22, 23 ^ "L", ^ "M" */ -8, -8,127, -8, 0,127, 8, 0,127, 8, 8,127,-11, -7, -7,127, /* 24 ^ "N" */ -7, 7,127, 7, 7,127,-11, -2, -4, -6, -7, -8, -8, -7, -6, -4, /* 25 ^ "O" */ -2, 2, 4, 6, 7, 8, 8, 7, 6, 4, 2, -2,127,-11, -7, -7, /* 26 ^ "P" */ 127, -7, 2, 5, 6, 7, 7, 6, 5, 2, -7,127,-11, -2, -4, -6, /* 27 ^ "Q" */ -7, -8, -8, -7, -6, -4, -2, 2, 4, 6, 7, 8, 8, 7, 6, 4, 2, -2,127, 1, 7,127,-11, -7, -7,127, -7, 2, 5, 6, 7, 7, /* 28 ^ "R" */ 6, 5, 2, -7,127, 0, 7,127,-10, 7, 5, 2, -2, -5, -7, -7, /* 29 ^ "S" */ -6, -5, -3, 3, 5, 6, 7, 7, 5, 2, -2, -5, -7,127, -8, 0, /* 30 ^ "T" */ 0,127, -7, 7,127,-11, -7, -7, -6, -4, -1, 1, 4, 6, 7, 7, /* 31 ^ "U" */ 127, -9, -8, 0,127, 8, 0,127,-12,-10, -5,127, 0, -5,127, 0, /* 32, 33 ^ "V", ^ "W" */ 5,127, 10, 5,127,-10, -7, 7,127, 7, -7,127, -9, -8, 0, 0, /* 34, 35 ^ "X", ^ "Y" */ 127, 8, 0,127,-10, 7, -7,127, -7, 7,127, -7, 7,127, -9, 0, /* 36, 37 ^ "Z", ^ "Alpha" */ -8,127, 0, 8,127, -5, 5,127,-11, -7, -7,127, -7, 2, 5, 6, /* 38 ^ "Beta" */ 7, 7, 6, 5, 2,127, -7, 2, 5, 6, 7, 7, 6, 5, 2, -7, 127,-10, -6, -6,127, -6, 6,127, -9, 0, -8,127, 0, 8,127, -8, /* 39, 40 ^ "Gamma", ^ "Delta" */ 8,127,-10, -6, -6,127, -6, 7,127, -6, 2,127, -6, 7,127,-10, /* 41, 42 ^ "Epsilon", ^ "Zeta" */ 7, -7,127, -7, 7,127, -7, 7,127,-11, -7, -7,127, 7, 7,127, /* 43 ^ "Eta" */ -7, 7,127,-11, -2, -4, -6, -7, -8, -8, -7, -6, -4, -2, 2, 4, /* 44 ^ "Theta" */ 6, 7, 8, 8, 7, 6, 4, 2, -2,127, -5, 6,127, -4, 0, 0, /* 45 ^ "Jota" */ 127,-11, -7, -7,127, 7, -7,127, -2, 7,127, -9, 0, -8,127, 0, /* 46, 47 ^ "Kappa", ^ "Lamda" */ 8,127,-12, -8, -8,127, -8, 0,127, 8, 0,127, 8, 8,127,-11, /* 48, 49 ^ "Mue", ^ "Nue" */ -7, -7,127, -7, 7,127, 7, 7,127, -9, -7, 7,127, -3, 3,127, /* 50 ^ "Xi" */ -7, 7,127,-11, -2, -4, -6, -7, -8, -8, -7, -6, -4, -2, 2, 4, /* 51 ^ "Omikron" */ 6, 7, 8, 8, 7, 6, 4, 2, -2,127,-11, -7, -7,127, 7, 7, /* 52 ^ "Pi" */ 127, -7, 7,127,-11, -7, -7,127, -7, 2, 5, 6, 7, 7, 6, 5, /* 53 ^ "Rho" */ 2, -7,127, -9, -7, 0, -7,127, -7, 7,127, -7, 7,127, -8, 0, /* 54, 55 ^ Sigma", ^ "Tau" */ 0,127, -7, 7,127, -9, -7, -7, -6, -5, -3, -2, -1, 0, 0,127, /* 56 ^ "Uepsilon" */ 7, 7, 6, 5, 3, 2, 1, 0,127,-10, 0, 0,127, -2, -5, -6, /* 57 ^ "Phi" */ -7, -7, -6, -5, -2, 2, 5, 6, 7, 7, 6, 5, 2, -2,127,-10, /* 58 ^ "Chi" */ -7, 7,127, -7, 7,127,-11, 0, 0,127, -9, -8, -7, -6, -5, -4, /* 59 ^ "Psi" */ -1, 1, 4, 5, 6, 7, 8, 9,127,-10, -7, -3, -6, -7, -7, -6, /* 60 ^ "Omega" */ -4, -1, 1, 4, 6, 7, 7, 6, 3, 7,127,-5, 0, 0,127, -4, /* 61 ^ "Plus-Minus" */ 4,127, -4, 4,127, -4, 0, 0, 127, -6, -2, -2, -6, -6, -2, -2, /* 62, 63 ^ "vertikal Bar", ^ "Double Cross" */ 2, 2, 6, 6, 2, 2, -2,127,-10, -2, -2,127, 2, 2,127, 6, /* 64 ^ "$" */ 5, 6, 7, 7, 5, 2, -2, -5, -7, -7, -6, -5, -3, 3, 5, 7, 127, -7, -5, -3, 3, 5, 6, 7, 7, 5, 2, -2, -5, -7, -7, -6, -5, -6,127, -5, 0, 0,127, 0, -1, 0, 1, 0,127,-10, 1, -6, /* 65, 66 ^ "!", ^ "#" */ 127, 7, 0,127, -6, 8,127, -7, 7,127,-12, -8, 8, -8,127, -9, /* 67, 68 ^ ">", ^ "?" */ -6, -6, -5, -4, -2, 2, 4, 5, 6, 6, 5, 4, 0, 0,127, 0, -1, 0, 1, 0,127,-12, 9, 8, 9, 10, 10, 9, 7, 5, 3, 2, /* 69 ^ "Integral" */ 1, 0, -2, -3, -4,127, 4, 3, 2, 0, -1, -2, -3, -5, -7, -9, -10,-10, -9, -8, -9,127, -5, 0, -1, 0, 1, 0,127, 0, -1, 0, /* 70 ^ ":" */ 1, 0,127, -5, 0, -1, 0, 1, 0,127, 1, 0, -1, 0, 1, 1, /* 71 ^ ";" */ 0, -1,127,-12, 8, -8, 8,127, -7, -3, -3,127, -2, -2,127, -3, /* 72, 73 ^ "<", ^ "[" */ 4,127, -3, 4,127, -7, 2, 2,127, 3, 3,127, -4, 3,127, -4, /* 74 ^ "]" */ 3,127, -8, -5, 5, -5,127, -5, 5,127, -5, 5,127, -7, 2, 0, /* 75, 76 ^ "Greater Then", ^ "{" */ -1, -2, -2, -1, 0, 1, 1, -1,127, 0, -1, -1, 0, 1, 2, 2, 1, -3, 1, 2, 2, 1, 0, -1, -1, 0,127, -1, 1, 1, 0, -1, -2, -2, -1, 0, 2,127, -7, -2, 0, 1, 2, 2, 1, 0, -1, -1, /* 77 ^ "}" */ 1,127, 0, 1, 1, 0, -1, -2, -2, -1, 3, -1, -2, -2, -1, 0, 1, 1, 0,127, 1, -1, -1, 0, 1, 2, 2, 1, 0, -2,127,-17, /* 78 ^ "Squareroot" */ -14, -9, 0,127,-10, 0,127, 16, 0,127,-12, 0, -4, -7, -8, -8, /* 79 ^ "Pick" */ -7, -5, -3, -1, 0,127, 0, 4, 7, 8, 8, 7, 5, 3, 1, 0, 127, 0, -1, -2,127, 0, 1, 2,127, -2, 2,127,-12, 0, -1, -2, /* 80 ^ "Herz" */ -4, -5, -7, -8, -8, -7, -6, -4, 0,127, 0, 1, 2, 4, 5, 7, 8, 8, 7, 6, 4, 0,127,-12, 0, -2, -6, -9,127, 0, 2, 6, /* 81 ^ "Karo" */ 9,127, -9, -6, -2, 0,127, 9, 6, 2, 0,127,-12, 0, 2, 4, /* 82 ^ "Kreuz" */ 6, 8, 9, 9, 8, 6, 4, 1,127, 1, 3, 4, 4, 3, 1, -1, -3, -4, -4, -3, -1,127, -1, -4, -6, -8, -9, -9, -8, -6, -4, -2, 0,127, 0, -1, -2,127, 0, 1, 2,127, -2, 2,127,-13, 10, 10, /* 83 ^ "&" */ 9, 8, 7, 6, 4, 2, 0, -2, -6, -8, -9,-10,-10, -9, -8, -1, 0, 1, 1, 0, -2, -4, -5, -5, -4, -2, 3, 5, 7, 9, 10, 10, 127,-11, -7, 7,127, 7, -7,127, -8, 6, -6,127, -3, -2, -2, -3, /* 84, 85 ^ "x", ^ "%" */ -5, -6, -6, -5, -3, 1, 4, 6,127, 3, 2, 2, 3, 5, 6, 6, 5, 3,127,-11, 0, 2, 3, 5, 7, 9, 10, 11, 11, 10, 9, 7, /* 86 ^ "infinite" */ 5, 3, 2, -2, -3, -5, -7, -9,-10,-11,-11,-10, -9, -7, -5, -3, -2, 0,127, -4, -1, -3, -4, -4, -3, -1, 1, 3, 4, 4, 3, 1, /* 87 ^ "filled circle" */ -1,127, -3, -3,127, -2, -2,127, -1, -1,127, 0, 0,127, 1, 1, 127, 2, 2,127, 3, 3,127, -4, -4, -4, 4, 4, -4,127, -3, -3, /* 88 ^ "filled square" */ 127, -2, -2,127, -1, -1,127, 0, 0,127, 1, 1,127, 2, 2,127, 3, 3,127, -5, 0, -5, 5, 0,127, 0, -3,127, 0, 3,127, 0, /* 89 ^ "filled triangle up" */ -1,127, 0, 1,127, -5, 0, 5, -5, 0,127, 0, 3,127, 0, -3, /* 90 ^ "filled triangle down" */ 127, 0, 1,127, 0, -1,127, -6, 0, -4, 6, -6, 4, 0,127, 0, /* 91 ^ "filled star" */ 0,127, 0, -6,127, 0, -4,127, 0, 4,127, 0, 6,127,-13, 6, /* 92 ^ "right arrow" */ 9, 6,127, 3, 8, 3,127, -9, 8,127, -8, -2, 0, 2,127, -5, /* 93 ^ "up arrow" */ 0, 5,127, 0, 0,127,-13, -6, -9, -6,127, -3, -8, -3,127, -8, /* 94 ^ "left arrow" */ 9,127, -8, -2, 0, 2,127, -5, 0, 5,127, 0, 0,127, -5, 0, /* 95, 96 ^ "down arrow", ^ "'" */ -1, 0, 1, 1, 0, -1,127, -5, 0, -1, 0, 1, 0,127, -5, 1, /* 97, 98 ^ ".", ^ "," */ 0, -1, 0, 1, 1, 0, -1,127,-11, 9, -9,127, -7, 4, 2, 0, /* 99,100 ^ "/", ^ "(" */ -2, -3, -3, -2, 0, 2, 4,127, -7, -4, -2, 0, 2, 3, 3, 2, /* 101 ^ ")" */ 0, -2, -4,127,-8, -6, 6,127,-13, 0, 0,127, -9, 9,127,-13, /* 102,103,104 ^ "-", ^ "+", ^ "=" */ -9, 9,127, -9, 9,127, -8, 0, 0,127, -5, 5,127, 5, -5,127, /* 105 ^ "*" */ -5, 0, -2, -3, -3, -2, 0, 2, 3, 3, 2, 0,127, -5, -2, 0, /* 106,107 v "0", v "1" */ 0,127, -5, -3, -1, 1, 3, 3, 2, -3, 3,127, -5, -3, -1, 1, /* 108,109 v "2", v "3" */ 3, 3, 1,127, 0, 1, 3, 3, 1, -1, -3,127, -5, 1, 1,127, /* 110 v "4" */ 1, -4, 4,127, -5, -2, -3, -1, 0, 2, 3, 2, 0, -1, -3,127, /* 111 v "5" */ -2, 2,127, -5, 2, 0, -2, -3, -3, -2, 0, 2, 3, 2, 0, -2, /* 112 v "6" */ -3,127, -5, 3, -1,127, -3, 3,127, -5, -1, -3, -3, -1, 1, 3, /* 113,114 v "7", v "8" */ 3, 1, -1,127, -1, -3, -3, -1, 1, 3, 3, 1,127, -5, 3, 2, /* 115 v "9" */ 0, -2, -3, -2, 0, 2, 3, 3, 2, 0, -2,127, -9, 6, 6,127, /* 116 v "a" */ 6, 4, 2, -1, -3, -5, -6, -6, -5, -3, -1, 2, 4, 6,127,-10, /* 117 v "b" */ -6, -6,127, -6, -4, -2, 1, 3, 5, 6, 6, 5, 3, 1, -2, -4, -6,127, -9, 6, 4, 2, -1, -3, -5, -6, -6, -5, -3, -1, 2, 4, /* 118 v "c" */ 6,127, -9, 6, 6,127, 6, 4, 2, -1, -3, -5, -6, -6, -5, -3, /* 119 v "d" */ -1, 2, 4, 6,127, -9, -6, 6, 6, 5, 4, 2, -1, -3, -5, -6, /* 120 v "e" */ -6, -5, -3, -1, 2, 4, 6,127, -5, 5, 3, 1, 0, 0,127, -3, /* 121 v "f" */ 4,127, -9, 6, 6, 5, 4, 2, -1, -3,127, 6, 4, 2, -1, -3, /* 122 v "g" */ -5, -6, -6, -5, -3, -1, 2, 4, 6,127, -9, -5, -5,127, -5, -2, /* 123 v "h" */ 0, 3, 5, 6, 6,127, -4, -1, 0, 1, 0, -1,127, 0, 0,127, /* 124 v "i" */ -5, 0, 1, 2, 1, 0,127, 1, 1, 0, -2, -4,127, -9, -5, -5, /* 125,126 v "j", v "k" */ 127, 5, -5,127, -1, 6,127, -4, 0, 0,127,-15,-11,-11,127,-11, /* 127,128 v "l", v "m" */ -8, -6, -3, -1, 0, 0,127, 0, 3, 5, 8, 10, 11, 11,127, -9, /* 129 v "n" */ -5, -5,127, -5, -2, 0, 3, 5, 6, 6,127, -9, -1, -3, -5, -6, /* 130 v "o" */ -6, -5, -3, -1, 2, 4, 6, 7, 7, 6, 4, 2, -1,127,-10, -6, /* 131 v "p" */ -6,127, -6, -4, -2, 1, 3, 5, 6, 6, 5, 3, 1, -2, -4, -6, 127, -9, 6, 6,127, 6, 4, 2, -1, -3, -5, -6, -6, -5, -3, -1, /* 132 v "q" */ 2, 4, 6,127, -7, -3, -3,127, -3, -2, 0, 2, 5,127, -8, 6, /* 133,134 v "r", v "s" */ 5, 2, -1, -4, -5, -4, -2, 3, 5, 6, 6, 5, 2, -1, -4, -5, 127, -5, 0, 0, 1, 3, 5,127, -3, 4,127, -9, -5, -5, -4, -2, /* 135,136 v "t", v "u" */ 1, 3, 6,127, 6, 6,127, -8, -6, 0,127, 6, 0,127,-11, -8, /* 137,138 v "v", v "w" */ -4,127, 0, -4,127, 0, 4,127, 8, 4,127, -8, -5, 6,127, 6, /* 139 v "x" */ -5,127, -8, -6, 0,127, 6, 0, -2, -4, -6, -7,127, -8, 6, -5, /* 140,141 v "y", v "z" */ 127, -5, 6,127, -5, 6,127,-10, -1, -3, -5, -6, -7, -7, -6, -4, /* 142 v "Alpha" */ -2, 0, 3, 5, 7, 8,127, -1, 1, 2, 3, 5, 6, 7, 8,127, -9, 3, 1, -1, -3, -4, -5, -6, -7,127, 3, 5, 7, 7, 6, 5, /* 143 v "Beta" */ 3, 0,127, 0, 2, 4, 5, 5, 4, 3, 1, -1, -3, -4, -5,127, -9, -8, -6, -4, -3, -1, 0, 1, 1, 0,127, 8, 7, 6, 0, -2, /* 144 v "Gamma" */ -3,127, -9, 2, -1, -3, -5, -6, -6, -5, -4, -2, 0, 2, 4, 5, /* 145 v "Delta" */ 5, 4, 2, 0, -1, -1, 0, 2, 4, 6,127, -8, 5, 4, 2, -1, /* 146 v "Epsilon" */ -3, -3, -2, 1,127, 1, -3, -5, -5, -4, -2, 1, 3, 5,127, -8, /* 147 v "zeta" */ 2, 0, -1, -1, 0, 3, 6,127, 6, 2, -1, -4, -5, -5, -4, -2, 1, 2, 2, 1, -1, -2,127,-10, -9, -8, -6, -4, -3, -3, -4, -6, /* 148 v "Eta" */ 127, -4, -2, 0, 2, 4, 6, 6, 5, 2,127,-11,-10, -9, -7, -5, /* 149 v "Theta" */ -4, -4, -5, -5, -4, -3, -1, 1, 3, 4, 5, 6, 6, 5, 3, 1, 0, 0, 1, 3, 5, 8,127, -6, 0, -2, -3, -3, -2, 0, 2, 3, /* 150 v "Jota" */ 127, -9, -3, -7,127, 7, 6, 5, 3, -1, -3, -4,127, -4, -2, -1, /* 151 v "Kappa" */ 1, 2, 3, 4,127, -8, -7, -5, -3, -2, 6,127, 0, -6,127,-10, /* 152,153 v "Lambda", v "Mue" */ -3, -9,127, -4, -5, -5, -3, -1, 1, 3, 5,127, 7, 5, 4, 4, 5, 7, 9, 10,127, -9, -6, -3, -4, -5, -6,127, 7, 6, 5, 3, /* 154 v "Nue" */ 0, -3, -6,127, -8, 2, 0, -1, -1, 0, 3, 6,127, 3, 0, -2, /* 155 v "Xi" */ -3, -3, -1, 2, 4,127, 2, -2, -4, -5, -5, -3, 1, 2, 2, 0, -2,127, -8, 0, -2, -4, -5, -5, -4, -3, -1, 1, 3, 5, 6, 6, /* 156 v "Omikron" */ 5, 4, 2, 0,127,-11, -2, -6,127, 3, 4, 5, 6,127, -9, -7, /* 157 v "Pi" */ -4, 9,127, -9, -5, -5, -4, -3, -1, 1, 3, 5, 6, 6, 5, 4, /* 158 v "Rho" */ 2, 0, -2, -4, -5, -9,127, -9, 9, -1, -3, -5, -6, -6, -5, -4, /* 159 v "Sigma" */ -2, 0, 2, 4, 5, 5, 4, 3, 1,127,-10, 1, -2,127, -8, -6, /* 160 v "Tau" */ -3, 8,127,-10, -9, -8, -6, -4, -3, -3, -5, -5, -3, -1, 2, 4, /* 161 v "Uepsilon" */ 6, 7, 7,127,-11, -3, -5, -7, -8, -8, -7, -6, -4, -1, 2, 5, /* 162 v "Phi" */ 7, 8, 8, 6, 4, 2, 0, -2, -5,127, -9, -7, -5, -3, 3, 5, /* 163 v "Chi" */ 7,127, 8, 7, 5, -5, -7, -8,127,-12, 4, -4,127,-11,-10, -8, /* 164 v "Psi" */ -6, -5, -5, -6, -6, -5, -3, -1, 2, 4, 6, 8, 9,127,-12, -4, /* 165 v "Omega" */ -6, -8, -9, -9, -8, -7, -5, -3, -1,127, 0, -1, 0, 1, 3, 5, 7, 8, 8, 7, 6,127, -6, 0, 0,127, -5, 5,127, -5, 5,127, /* 166 v "Plus-Minus" */ -2, 0, 0,127, -7, 0, -7, 7, 0,127, 0, 7, -7, 0,127, -7, /* 167,168,169 v "vertikal Cross",v "Davidstern", v "$" */ -1, -1,127, 2, 2,127, 5, 4, 4, 5, 5, 3, -2, -4, -4, -3, 4, 5,127, -4, -3, 4, 5, 5, 4, 2, -1, -3, -4, -4, -3, -3, -4,127, -2, 0, 0,127, 1, 1,127, 0, 0, 1, 1, 0,127, -5, /* 170,171 v "!", v "#" */ 0, -2,127, 3, 1,127, -3, 4,127, -3, 4,127, -8, -5, 5, -5, /* 172 v ">" */ 127, -4, -2, 0, 1, 3, 3, 0, 0, 1, 1, 3,127, 0, 0, 1, /* 173 v "?" */ 1, 0,127, -9, 6, 6, 7, 7, 6, 4, 2, 1, 0, -1, -2, -3, /* 174 v "Integral" */ 127, 3, 2, 1, 0, -1, -2, -4, -6, -7, -7, -6, -6,127, -2, 0, /* 175 v ":" */ 0, 1, 1, 0,127, 0, 0, 1, 1, 0,127, -2, 0, 0, 1, 1, /* 176 v ";" */ 0,127, 1, 0, 0, 1, 1, 0,127, -8, 5, -5, 5,127, -5, -2, /* 177,178 v "<", v "[" */ -2,127, -1, -1,127, -2, 3,127, -2, 3,127, -5, 1, 1,127, 2, /* 179 v "]" */ 2,127, -3, 2,127, -3, 2,127, -8, 5, -5, 5,127, -5, 5,127, /* 180 v "Smaller then" */ -5, 5,127, -6, 1, -1, -2, -2, 0, 1,127, -1, -2,127, 1, 0, /* 181 v "{" */ 127, -2, -1, 1, 1, 0, -2, 0, 1, 1, -1, -2,127, 0, 1,127, -2, -1,127, 1, 0, -2, -2, -1, 1,127, -5, -1, 1, 2, 2, 0, /* 182 v "}" */ -1,127, 1, 2,127, -1, 0,127, 2, 1, -1, -1, 0, 2, 0, -1, -1, 1, 2,127, 0, -1,127, 2, 1,127, -1, 0, 2, 2, 1, -1, 127,-11, -9, -6, 0,127, -7, 0,127, 9, 0,127,-11, -2, -2, -1, /* 183,184 v "Squareroot", v "Glocke" */ 1, 2, 2,127,-11,-10, -8, -7, -6, -6, -5, -3, 3, 5, 6, 6, 7, 8, 10, 11,127,-11, 11,127, -1, -2, -1, 1, 2, 1,127, -8, /* 185 v "Palme" */ 0, 0,127, 0, -1,127, 0, 1,127, -1, 1,127, 0, -1, -2, -4, 127, -1, -4,127, 0, 1, 2, 4,127, 1, 4,127, 0, -4, -6, -8, 127, -2, -6, -8,127, 0, 4, 6, 8,127, 2, 6, 8,127, 0, -2, -3, -3,127, 0, -2, -3,127, 0, 2, 3, 3,127, 0, 2, 3,127, -8, 0, 0,127, 0, 0,127, 0, 0,127, 0, -1,127, 0, 1,127, /* 186 v "Tanne" */ -1, 1,127, 0, -1, -2,127, 0, 1, 2,127, -2, 0, 2,127, 0, -2, -4, -5,127, 0, 2, 4, 5,127, -4, -2, 0, 2, 4,127, 0, -2, -4, -6, -7, -7, -6,127, 0, 2, 4, 6, 7, 7, 6,127, -4, -2, 0, 2, 4,127, 0, -2, -3, -5, -6, -7, -8, -8, -6,127, 0, 2, 3, 5, 6, 7, 8, 8, 6,127, -5, -3, 0, 3, 5,127, -8, /* 187 v "Eichenblatt" */ 0, -1,127, 0, 1,127, -1, 1,127, 0, 3, 6, 8, 8, 7, 5, 7, 8, 7, 5, 3, 4, 3, 1, -1, -3, -4, -3, -5, -7, -8, -7, -5, -7, -8, -8, -6, -3, 0,127, -6, 4, 3, 2, 1, 0, -3, -4, /* 188 v "&" */ -4, -3, 0, 1, 1, 0, -2, -3, -3, -1, 1, 3, 4,127, -5, -3, /* 189 v "x" */ 3,127, 3, -3,127, -9, 11, 11, 10, 9, 6, 4, 1, -3, -6, -8, /* 190 v "proportional" */ -9, -9, -8, -6, -3, 1, 4, 6, 9, 10, 11, 11,127,-10, 8, 7, /* 191 v "infinit" */ 5, 4, 2, 1, -1, -2, -4, -5, -7, -8, -8, -7, -5, -4, -2, -1, 1, 2, 4, 5, 7, 8, 8,127, -7, -1, -4, -6, -7, -7, -6, -4, /* 192 v "circle" */ -1, 1, 4, 6, 7, 7, 6, 4, 1, -1,127, -6, -6, -6, 6, 6, /* 193 v "square" */ -6,127, -7, 0, -7, 7, 0,127, -6, 0, -6, 0, 6, 0,127, -8, /* 194,195,196 v "triangle up", v "diamond", v "start" */ 0, -2, -8, -3, -5, 0, 5, 3, 8, 2, 0,127, -9, 2, 3, 6, /* 197 v "right arrow" */ 3, 2,127, 3, 5, 3,127, -6, 5,127, -5, 0, 0,127, -3, -2, /* 198 v "up arrow" */ 0, 2, 3,127, -2, 0, 2,127, -9, -2, -3, -6, -3, -2,127, -3, /* 199 v "left arrow" */ -5, -3,127, -5, 6,127, -5, 0, 0,127, -3, -2, 0, 2, 3,127, /* 200 v "down arrow" */ -2, 0, 2,127, -2, 1, 0, 0, 1, 1, 0,127, -2, 0, 0, 1, /* 201,202 v "'", v "." */ 1, 0,127, -2, 1, 0, 0, 1, 1, 0,127, -5, 4, -4,127, -3, /* 203,204,205 v ",", v "/", v "(" */ 2, 0, -1, -1, 0, 2,127, -4, -2, 0, 1, 1, 0, -2,127, -6, /* 206,207 v ")", v "-" */ -4, 4,127, -6, 0, 0,127, -4, 4,127, -6, -4, 4,127, -4, 4, /* 208,209 v "+", v "=" */ 127, -5, 0, 0,127, -3, 3,127, 3, -3,127,-16, 3, 3, 2, 1, /* 210,211 v "*", ^ "@" */ -1, -3, -4, -5, -5, -4, -3, -1, 0, 1,127, 4, 3, 1, 1, 3, 7, 10, 12, 13, 13, 12, 9, 4, -4, -7,-10,-12,-14,-15,-15,-13, -9, -5, 4, 9, 10,127, -7, -3, -5,127, 3, 1,127, -9, 6, 6, /* 212,213 ^ """,v "ae" */ 127, 6, 4, 2, -1, -3, -5, -6, -6, -5, -3, -1, 2, 4, 6,127, 4, 5, 4, 3, 4,127, -4, -5, -4, -3, -4,127, -9, -1, -3, -5, /* 214 v "oe" */ -6, -6, -5, -3, -1, 2, 4, 6, 7, 7, 6, 4, 2, -1,127, 4, 5, 4, 3, 4,127, -4, -5, -4, -3, -4,127, -9, -5, -5, -4, -2, /* 215 ^ "ue" */ 1, 3, 6,127, 6, 6,127, 4, 5, 4, 3, 4,127, -4, -5, -4, -3, -4,127, -9, 0, -8,127, 0, 8,127, -5, 5,127, 4, 5, 4, /* 216 ^ "Ae" */ 3, 4,127, -4, -5, -4, -3, -4,127,-11, -2, -4, -6, -7, -8, -8, /* 217 v "Oe" */ -7, -6, -4, -2, 2, 4, 6, 7, 8, 8, 7, 6, 4, 2, -2,127, 7, 8, 9, 8, 7,127, -7, -8, -9, -8, -7,127,-11, -7, -7, -6, /* 218 v "Ue" */ -4, -1, 1, 4, 6, 7, 7,127, 4, 5, 4, 3, 4,127, -4, -5, -4, -3, -4,127, -3, 1, -1,127, -7, -5, -5, -4, -2, 3, 4, 5, /* 219,220 v "'",v"sz" */ 5, 4, 3, 1, 0, 3, 5, 7, 7, 6, 4, -1, -3,127,-12, 0, /* 221 v "Promille" */ 2, 2, 0, -2, -4, -4, -2, 0, 2, 4, 6, 8, 10,-10,127, -1, 1, 1, -1, -3, -5, -5, -3, -1,127, 8, 10, 10, 8, 6, 4, 4, 6, 8,127,-24, 7, 3, -2, -5, -8,-12,-14,-15,-16,-16,-14,-11, /* 222 v"Weihnachtsmann" */ -6, -3, 1, 4, 8, 10, 10, 9, 7, 3, -3,127,-16,-19,-21,-21, -19,-16,-10, -6, -3, 4, 5, 3,127,-16,-17,-17,-15,-13,-11,-12, -13,-14,-16,127, 4, 4, 3, 1,127, 8, 9, 9, 9, 8,127, 7, 8,127, 9, 8, 7, 8, 10, 10, 8, 6, 4, 5, 8,127, 9, 15, 16, 15, 14, 11,127, 6, 2, 2, 5, 10, 11, 8, 6,127, 5, 5, 0, -3, -4, -2, 4, 9, 11, 12, 11, 10,127, 11, 12, 12, 4,-11, -10, -9, -6,127,-11,-17,-17,-15, -9, -5, -2, 13, 16, 16, 12, 4, -11,127, -9,-11, -8, -4, -2, -6, -5,127, 6, 5, 7, 12, 14, 13, 10, 9,127, -126,-115,-115,-111,-106,-106, -98, -83, -67, -52, -44, -32, 127, /* 223 v"ELSA-Emblem" */ -106, -98, -83, -67, -52, -44, -44, 127, -52, -20, 15, 40, 56, 70, 89, 100, 110, 114, 113, 109, 92, 56, 45, 36, 23, -49, 127, 45, 29, 15, 0, -45, -99, 127,-106, -45, 127, 0, -18, -30, -40, -43, -35, 127, -43, -41, -36, -20, 127, 3, -18, -18, -5, 127, -18, -18, 3, 127, 12, 12, 32, 127, 65, 63, 57, 53, 47, 45, 45, 47, 53, 57, 63, 65, 65, 63, 57, 53, 47, 45, 127, 72, 83, 93, 127, 77, 89, 127,-126,-126, 126, 126,-126, 127 } ; short iy[MAXCODE] = { 10,-12,-11, -8, -3, 0, 5, 8, 9, 9, 8, 5, 0, -3, -8,-11, /* 1 ^ "0" */ -12,-12,127, 10, -8, -9,-12, 9,127, 10, -7, -8,-10,-11,-12,-12, /* 2, 3 ^ "1", ^ "2" */ -11,-10, -8, -6, -4, -1, 9, 9,127, 10,-12,-12, -4, -4, -3, -2, /* 4 ^ "3" */ 1, 3, 6, 8, 9, 9, 8, 7, 5,127, 10,-12, 2, 2, 0,-12, /* 5 ^ "4" */ 9,127, 10,-12,-12, -3, -4, -5, -5, -4, -2, 1, 3, 6, 8, 9, /* 6 ^ "5" */ 9, 8, 7, 5,127, 10, -9,-11,-12,-12,-11, -8, -3, 2, 6, 8, /* 7 ^ "6" */ 9, 9, 8, 6, 3, 2, -1, -3, -4, -4, -3, -1, 2,127, 10,-12, /* 8 ^ "7" */ 9, 0,-12,-12,127, 10,-12,-11, -9, -7, -5, -4, -3, -2, 0, 2, /* 9 ^ "8" */ 5, 7, 8, 9, 9, 8, 7, 5, 2, 0, -2, -3, -4, -5, -7, -9, -11,-12,-12,127, 10, -5, -2, 0, 1, 1, 0, -2, -5, -6, -9,-11, /* 10 ^ "9" */ -12,-12,-11, -9, -5, 0, 5, 8, 9, 9, 8, 6,127, 9,-12, 9, /* 11 ^ "A" */ 0,-12, 9, 0, 2, 2,127, 10,-12, 9, 0,-12,-12,-11,-10, -8, /* 12 ^ "B" */ -6, -4, -3, -2, 0, -2, -2, -1, 0, 2, 5, 7, 8, 9, 9,127, 11, -7, -9,-11,-12,-12,-11, -9, -7, -4, 1, 4, 6, 8, 9, 9, /* 13 ^ "C" */ 8, 6, 4,127, 10,-12, 9, 0,-12,-12,-11, -9, -7, -4, 1, 4, /* 14 ^ "D" */ 6, 8, 9, 9,127, 9,-12, 9, 0,-12,-12, 0, -2, -2, 0, 9, /* 15 ^ "E" */ 9,127, 8,-12, 9, 0,-12,-12, 0, -2, -2,127, 11, -7, -9,-11, /* 16, 17 ^ "F", ^ "G" */ -12,-12,-11, -9, -7, -4, 1, 4, 6, 8, 9, 9, 8, 6, 4, 1, 0, 1, 1,127, 11,-12, 9, 0,-12, 9, 0, -2, -2,127, 7,-12,-12,-12, /* 18, 19 ^ "H", ^ "I" */ 9,9,9,127, 8,-12, 4, 7, 8, 9, 9, 8, 7, 4, 2,127, 10,-12, /* 20, 21 ^ "J", ^ "K" */ 9, 0,-12, 2, 0, -3, 9,127, 7,-12, 9, 0, 9, 9,127, 12, /* 22, 23 ^ "L", ^ "M" */ -12, 9, 0,-12, 9, 0,-12, 9, 0,-12, 9,127, 11,-12, 9, 0, /* 24 ^ "N" */ -12, 9, 0,-12, 9,127, 11,-12,-11, -9, -7, -4, 1, 4, 6, 8, /* 25 ^ "O" */ 9, 9, 8, 6, 4, 1, -4, -7, -9,-11,-12,-12,127, 10,-12, 9, /* 26 ^ "P" */ 0,-12,-12,-11,-10, -8, -5, -3, -2, -1, -1,127, 11,-12,-11, -9, /* 27 ^ "Q" */ -7, -4, 1, 4, 6, 8, 9, 9, 8, 6, 4, 1, -4, -7, -9,-11, -12,-12, 0, 5, 11,127, 10,-12, 9, 0,-12,-12,-11,-10, -8, -6, /* 28 ^ "R" */ -4, -3, -2, -2, 0, -2, 9,127, 10, -9,-11,-12,-12,-11, -9, -7, /* 29 ^ "S" */ -5, -4, -3, -1, 0, 1, 3, 6, 8, 9, 9, 8, 6,127, 8,-12, /* 30 ^ "T" */ 9, 0,-12,-12,127, 11,-12, 3, 6, 8, 9, 9, 8, 6, 3,-12, /* 31 ^ "U" */ 127, 9,-12, 9, 0,-12, 9,127, 12,-12, 9, 0,-12, 9, 0,-12, /* 32, 33 ^ "V", ^ "W" */ 9, 0,-12, 9,127, 10,-12, 9, 0,-12, 9,127, 9,-12, -2, 9, /* 34, 35 ^ "X", ^ "Y" */ 0,-12, -2,127, 10,-12, 9, 0,-12,-12, 0, 9, 9,127, 9,-12, /* 36, 37 ^ "Z", ^ "Alpha" */ 9, 0,-12, 9, 0, 2, 2,127, 10,-12, 9, 0,-12,-12,-11,-10, /* 38 ^ "Beta" */ -8, -6, -4, -3, -2, 0, -2, -2, -1, 0, 2, 5, 7, 8, 9, 9, 127, 7,-12, 9, 0,-12,-12,127, 9,-12, 9, 0,-12, 9, 0, 9, /* 39, 40 ^ "Gamma", ^ "Delta" */ 9,127, 9,-12, 9, 0,-12,-12, 0, -2, -2, 0, 9, 9,127, 10, /* 41, 42 ^ "Epsilon", ^ "Zeta" */ -12, 9, 0,-12,-12, 0, 9, 9,127, 11,-12, 9, 0,-12, 9, 0, /* 43 ^ "Eta" */ -2, -2,127, 11,-12,-11, -9, -7, -4, 1, 4, 6, 8, 9, 9, 8, /* 44 ^ "Theta" */ 6, 4, 1, -4, -7, -9,-11,-12,-12, 0, -2, -2,127, 4,-12, 9, /* 45 ^ "Jota" */ 127, 10,-12, 9, 0,-12, 2, 0, -3, 9,127, 9,-12, 9, 0,-12, /* 46, 47 ^ "Kappa", ^ "Lamda" */ 9,127, 12,-12, 9, 0,-12, 9, 0,-12, 9, 0,-12, 9,127, 11, /* 48, 49 ^ "Mue", ^ "Nue" */ -12, 9, 0,-12, 9, 0,-12, 9,127, 9,-12,-12, 0, -2, -2, 0, /* 50 ^ "Xi" */ 9, 9,127, 11,-12,-11, -9, -7, -4, 1, 4, 6, 8, 9, 9, 8, /* 51 ^ "Omikron" */ 6, 4, 1, -4, -7, -9,-11,-12,-12,127, 11,-12, 9, 0,-12, 9, /* 52 ^ "Pi" */ 0,-12,-12,127, 10,-12, 9, 0,-12,-12,-11,-10, -8, -5, -3, -2, /* 53 ^ "Rho" */ -1, -1,127, 9,-12, -2, 9, 0,-12,-12, 0, 9, 9,127, 8,-12, /* 54, 55 ^ Sigma", ^ "Tau" */ 9, 0,-12,-12,127, 9, -7, -9,-11,-12,-12,-11, -9, -5, 9, 0, /* 56 ^ "Uepsilon" */ -7, -9,-11,-12,-12,-11, -9, -5,127, 10,-12, 9, 0, -7, -6, -5, /* 57 ^ "Phi" */ -3, 0, 2, 3, 4, 4, 3, 2, 0, -3, -5, -6, -7, -7,127, 10, /* 58 ^ "Chi" */ -12, 9, 0, 9,-12,127, 11,-12, 9, 0, -6, -6, -5, -1, 1, 2, /* 59 ^ "Psi" */ 3, 3, 2, 1, -1, -5, -6, -6,127, 10, 9, 9, 2, -2, -6, -9, /* 60 ^ "Omega" */ -11,-12,-12,-11, -9, -6, -2, 2, 9, 9,127, 5, -8, 9, 0, -9, /* 61 ^ "Plus-Minus" */ -9, 0, 9, 9,127, 4,-16, 16,127, 6, -6, -2, -2, 2, 2, 6, /* 62, 63 ^ "vertikal Bar", ^ "Double Cross" */ 6, 2, 2, -2, -2, -6, -6,127, 10,-16, 13, 0,-16, 13, 0, -9, /* 64 ^ "$" */ -8, -7, -8, -9,-11,-12,-12,-11, -9, -7, -5, -4, -3, -1, 0, 2, 0, -7, -5, -4, -2, -1, 0, 2, 6, 8, 9, 9, 8, 6, 5, 4, 5, 6,127, 5,-12, 2, 0, 7, 8, 9, 8, 7,127, 11,-16, 16, /* 65, 66 ^ "!", ^ "#" */ 0,-16, 16, 0, -3, -3, 0, 3, 3,127, 12, -9, 0, 9,127, 9, /* 67, 68 ^ ">", ^ "?" */ -7, -8,-10,-11,-12,-12,-11,-10, -8, -6, -4, -3, -1, 2, 0, 7, 8, 9, 8, 7,127, 12,-15,-14,-13,-14,-15,-16,-16,-15,-13,-11, /* 69 ^ "Integral" */ -8, -4, 8, 12, 14, 0,-14,-12, -8, 4, 8, 11, 13, 15, 16, 16, 15, 14, 13, 14, 15,127, 5, -5, -4, -3, -4, -5, 0, 7, 8, 9, /* 70 ^ ":" */ 8, 7,127, 5, -5, -4, -3, -4, -5, 0, 8, 9, 8, 7, 8, 10, /* 71 ^ ";" */ 12, 13,127, 12, -9, 0, 9,127, 7,-16, 16, 0,-16, 16, 0,-16, /* 72, 73 ^ "<", ^ "[" */ -16, 0, 16, 16,127, 7,-16, 16, 0,-16, 16, 0,-16,-16, 0, 16, /* 74 ^ "]" */ 16,127, 8, -7, -3, 1, 0, 2, 2, 0, 6, 6,127, 7,-16,-15, /* 75, 76 ^ "Greater Then", ^ "{" */ -14,-12,-10, -8, -7, -5, -3, -1, 0,-15,-13,-11, -9, -8, -6, -4, -2, 0, 2, 4, 6, 8, 9, 11, 13, 15, 0, 1, 3, 5, 7, 8, 10, 12, 14, 15, 16,127, 7,-16,-15,-14,-12,-10, -8, -7, -5, -3, /* 77 ^ "}" */ -1, 0,-15,-13,-11, -9, -8, -6, -4, -2, 0, 2, 4, 6, 8, 9, 11, 13, 15, 0, 1, 3, 5, 7, 8, 10, 12, 14, 15, 16,127, 16, /* 78 ^ "Squareroot" */ -5, -5, 7, 0, -4, 9, 0,-24, 9,127, 12,-10, -6, -2, 1, 3, /* 79 ^ "Pick" */ 5, 6, 6, 5, 3, 0,-10, -6, -2, 1, 3, 5, 6, 6, 5, 3, 0, 3, 7, 10, 0, 3, 7, 10, 0, 10, 10,127, 12, -4, -7, -9, /* 80 ^ "Herz" */ -10,-10, -9, -7, -3, 0, 2, 5, 10, 0, -4, -7, -9,-10,-10, -9, -7, -3, 0, 2, 5, 10,127, 12,-11, -8, -3, 0, 0,-11, -8, -3, /* 81 ^ "Karo" */ 0, 0, 0, 3, 8, 11, 0, 0, 3, 8, 11,127, 12, 2, 5, 6, /* 82 ^ "Kreuz" */ 6, 5, 3, 1, -1, -2, -2, -1, 0, -1, -3, -5, -7, -9,-10,-10, -9, -7, -5, -3, -1, 0, -1, -2, -2, -1, 1, 3, 5, 6, 6, 5, 2, 0, 2, 7, 10, 0, 2, 7, 10, 0, 10, 10,127, 13, -3, -4, /* 83 ^ "&" */ -5, -5, -4, -2, 3, 6, 8, 9, 9, 8, 7, 5, 3, 1, 0, -4, -5, -7, -9,-11,-12,-11, -9, -7, -4, -1, 6, 8, 9, 9, 8, 7, 127, 11, -7, 7, 0, -7, 7,127, 8, -7, 6, 0, -7, -6, -4, -3, /* 84, 85 ^ "x", ^ "%" */ -3, -4, -6, -7, -7, -6, -6, -7, 0, 2, 3, 5, 6, 6, 5, 3, 2, 2,127, 11, 0, 3, 4, 5, 5, 4, 3, 1, -1, -3, -4, -5, /* 86 ^ "infinite" */ -5, -4, -3, 3, 4, 5, 5, 4, 3, 1, -1, -3, -4, -5, -5, -4, -3, 0,127, 4, -4, -3, -1, 1, 3, 4, 4, 3, 1, -1, -3, -4, /* 87 ^ "filled circle" */ -4, 0, -1, 1, 0, -2, 2, 0, -3, 3, 0, -3, 3, 0, -3, 3, 0, -2, 2, 0, -1, 1,127, 4, -4, 4, 4, -4, -4, 0, -3, 3, /* 88 ^ "filled square" */ 0, -3, 3, 0, -3, 3, 0, -3, 3, 0, -3, 3, 0, -3, 3, 0, -3, 3,127, 5, -6, 3, 3, -6, 0, -3, 2, 0, -3, 2, 0, 0, /* 89 ^ "filled triangle up" */ 2, 0, 0, 2,127, 5, 6, -3, -3, 6, 0, 3, -2, 0, 3, -2, /* 90 ^ "filled triangle down" */ 0, 0, -2, 0, 0, -2,127, 6, -6, 5, -2, -2, 5, -6, 0, 0, /* 91 ^ "filled star" */ -6, 0, 0, -2, 0, 0, 5, 0, 0, 5, 0, 0, -2,127, 13, -2, /* 92 ^ "right arrow" */ 0, 2, 0, -5, 0, 5, 0, 0, 0,127, 8, -6, -9, -6, 0, -3, /* 93 ^ "up arrow" */ -8, -3, 0, -8, 9,127, 13, -2, 0, 2, 0, -5, 0, 5, 0, 0, /* 94 ^ "left arrow" */ 0,127, 8, 6, 9, 6, 0, 3, 8, 3, 0, -9, 8,127, 5,-10, /* 95, 96 ^ "down arrow", ^ "'" */ -11,-12,-11, -9, -7, -6,127, 5, 7, 8, 9, 8, 7,127, 5, 8, /* 97, 98 ^ ".", ^ "," */ 9, 8, 7, 8, 10, 12, 13,127, 11,-16, 16,127, 7,-16,-14,-11, /* 99,100 ^ "/", ^ "(" */ -7, -2, 2, 7, 11, 14, 16,127, 7,-16,-14,-11, -7, -2, 2, 7, /* 101 ^ ")" */ 11, 14, 16,127, 8, 0, 0,127, 13, -9, 9, 0, 0, 0,127, 13, /* 102,103,104 ^ "-", ^ "+", ^ "=" */ -3, -3, 0, 3, 3,127, 8, -6, 6, 0, -3, 3, 0, -3, 3,127, /* 105 ^ "*" */ 5, -5, -4, -2, 1, 3, 4, 3, 1, -2, -4, -5,127, 5, -3, -5, /* 106,107 v "0", v "1" */ 4,127, 5, -4, -5, -5, -4, -2, 0, 4, 4,127, 5, -4, -5, -5, /* 108,109 v "2", v "3" */ -4, -2, -1, 0, -1, -1, 0, 3, 4, 4, 3,127, 5, -5, 4, 0, /* 110 v "4" */ -5, 1, 1,127, 5, -5, -1, -2, -2, -1, 1, 3, 4, 4, 3, 0, /* 111 v "5" */ -5, -5,127, 5, -5, -5, -4, -2, 1, 3, 4, 3, 1, -1, -2, -1, /* 112 v "6" */ 1,127, 5, -5, 4, 0, -5, -5,127, 5, -5, -4, -2, -1, -1, -2, /* 113,114 v "7", v "8" */ -4, -5, -5, 0, -1, 0, 3, 4, 4, 3, 0, -1,127, 5, -2, 0, /* 115 v "9" */ 1, 0, -2, -4, -5, -4, -2, 1, 3, 4, 4,127, 10, -5, 9, 0, /* 116 v "a" */ -2, -4, -5, -5, -4, -2, 1, 3, 6, 8, 9, 9, 8, 6,127, 9, /* 117 v "b" */ -12, 9, 0, -2, -4, -5, -5, -4, -2, 1, 3, 6, 8, 9, 9, 8, 6,127, 9, -2, -4, -5, -5, -4, -2, 1, 3, 6, 8, 9, 9, 8, /* 118 v "c" */ 6,127, 10,-12, 9, 0, -2, -4, -5, -5, -4, -2, 1, 3, 6, 8, /* 119 v "d" */ 9, 9, 8, 6,127, 9, 1, 1, -1, -3, -4, -5, -5, -4, -2, 1, /* 120 v "e" */ 3, 6, 8, 9, 9, 8, 6,127, 7,-12,-12,-11, -8, 9, 0, -5, /* 121 v "f" */ -5,127, 10, -5, 11, 14, 15, 16, 16, 15, 0, -2, -4, -5, -5, -4, /* 122 v "g" */ -2, 1, 3, 6, 8, 9, 9, 8, 6,127, 10,-12, 9, 0, -1, -4, /* 123 v "h" */ -5, -5, -4, -1, 9,127, 4,-12,-11,-12,-13,-12, 0, -5, 9,127, /* 124 v "i" */ 5,-12,-11,-12,-13,-12, 0, -5, 12, 15, 16, 16,127, 8,-12, 9, /* 125,126 v "j", v "k" */ 0, -5, 5, 0, 1, 9,127, 4,-12, 9,127, 15, -5, 9, 0, -1, /* 127,128 v "l", v "m" */ -4, -5, -5, -4, -1, 9, 0, -1, -4, -5, -5, -4, -1, 9,127, 10, /* 129 v "n" */ -5, 9, 0, -1, -4, -5, -5, -4, -1, 9,127, 10, -5, -4, -2, 1, /* 130 v "o" */ 3, 6, 8, 9, 9, 8, 6, 3, 1, -2, -4, -5, -5,127, 9, -5, /* 131 v "p" */ 16, 0, -2, -4, -5, -5, -4, -2, 1, 3, 6, 8, 9, 9, 8, 6, 127, 10, -5, 16, 0, -2, -4, -5, -5, -4, -2, 1, 3, 6, 8, 9, /* 132 v "q" */ 9, 8, 6,127, 6, -5, 9, 0, 1, -2, -4, -5, -5,127, 9, -2, /* 133,134 v "r", v "s" */ -4, -5, -5, -4, -2, 0, 1, 2, 3, 5, 6, 8, 9, 9, 8, 6, 127, 7,-12, 5, 8, 9, 9, 0, -5, -5,127, 10, -5, 5, 8, 9, /* 135,136 v "t", v "u" */ 9, 8, 5, 0, -5, 9,127, 8, -5, 9, 0, -5, 9,127, 11, -5, /* 137,138 v "v", v "w" */ 9, 0, -5, 9, 0, -5, 9, 0, -5, 9,127, 9, -5, 9, 0, -5, /* 139 v "x" */ 9,127, 8, -5, 9, 0, -5, 9, 13, 15, 16, 16,127, 9, -5, 9, /* 140,141 v "y", v "z" */ 0, -5, -5, 0, 9, 9,127, 11, -5, -4, -2, 0, 3, 6, 8, 9, /* 142 v "Alpha" */ 9, 8, 5, 2, -2, -5, 0, -5, -5, -4, -2, 6, 8, 9, 9,127, 10,-12,-11, -9, -5, -2, 2, 8, 16, 0,-12,-12,-10, -7, -5, -4, /* 143 v "Beta" */ -3, -3, 0, -3, -2, 0, 2, 5, 7, 8, 9, 9, 8, 7, 4,127, 10, -2, -4, -5, -5, -4, -3, 0, 4, 9, 0, -5, -2, 0, 9, 13, /* 144 v "Gamma" */ 16,127, 9, -5, -5, -4, -2, 1, 4, 7, 8, 9, 9, 8, 6, 3, /* 145 v "Delta" */ 0, -3, -5, -7, -9,-11,-12,-12,-11, -9,127, 8, -3, -4, -5, -5, /* 146 v "Epsilon" */ -4, -2, 0, 1, 0, 1, 2, 4, 6, 8, 9, 9, 8, 6,127, 7, /* 147 v "zeta" */ -12,-11,-10, -9, -8, -7, -7, 0, -7, -5, -3, 0, 3, 5, 7, 9, 11, 13, 15, 16, 16, 14,127, 10, -1, -3, -5, -5, -4, -2, 2, 9, /* 148 v "Eta" */ 0, 2, -2, -4, -5, -5, -3, 0, 5, 16,127, 10, -1, -3, -5, -5, /* 149 v "Theta" */ -4, -2, 3, 6, 8, 9, 9, 8, 5, 3, 0, -5, -8,-11,-12,-12, -10, -8, -5, -2, 0, 2,127, 5, -5, 2, 6, 8, 9, 9, 7, 5, /* 150 v "Jota" */ 127, 9, -5, 9, 0, -4, -5, -5, -4, 0, 1, 1, 0, 1, 2, 3, /* 151 v "Kappa" */ 8, 9, 9, 8,127, 8,-12,-12,-11,-10, 9, 0, -5, 9,127, 11, /* 152,153 v "Lambda", v "Mue" */ -5, 16, 0, -1, 4, 7, 9, 9, 8, 6, 2, 0, -5, 2, 6, 8, 9, 9, 7, 5,127, 9, -5, -5, 1, 6, 9, 0, -5, -2, 0, 3, /* 154 v "Nue" */ 6, 8, 9,127, 8,-12,-11,-10, -9, -8, -7, -7, 0, -7, -6, -5, /* 155 v "Xi" */ -3, -1, 1, 2, 2, 0, 2, 3, 4, 6, 8, 10, 12, 13, 15, 16, 16,127, 9, -5, -4, -2, 1, 4, 7, 8, 9, 9, 8, 6, 3, 0, /* 156 v "Omikron" */ -3, -4, -5, -5,127, 11, -5, 9, 0, -5, 1, 6, 9, 0, -2, -4, /* 157 v "Pi" */ -5, -5,127, 9, 1, 4, 7, 8, 9, 9, 8, 6, 3, 0, -3, -4, /* 158 v "Rho" */ -5, -5, -4, -2, 1, 16,127, 11, -5, -5, -4, -2, 1, 4, 7, 8, /* 159 v "Sigma" */ 9, 9, 8, 6, 3, 0, -3, -4, -5,127, 10, -5, 9, 0, -2, -4, /* 160 v "Tau" */ -5, -5,127, 10, -1, -3, -5, -5, -4, -2, 4, 7, 9, 9, 8, 6, /* 161 v "Uepsilon" */ 2, -2, -5,127, 11, -4, -3, -1, 2, 5, 7, 8, 9, 9, 8, 6, /* 162 v "Phi" */ 3, 0, -3, -5, -5, -3, 1, 6, 16,127, 9, -5, -5, -3, 14, 16, /* 163 v "Chi" */ 16, 0, -5, -3, 0, 11, 14, 16,127, 11,-12, 16, 0, -1, -3, -5, /* 164 v "Psi" */ -5, -4, -2, 3, 6, 8, 9, 9, 8, 6, 3, -2, -5,127, 11, -5, /* 165 v "Omega" */ -4, -1, 2, 5, 8, 9, 9, 8, 5, 0, 1, 5, 8, 9, 9, 8, 5, 2, -1, -4, -5,127, 6, -5, 6, 0, 0, 0, 0, 6, 6,127, /* 166 v "Plus-Minus" */ 2,-6,5,127, 7,8, -4,-4,8,127,8,-4,-4,8,127,8, /* 167,168,169 v "vertikal Cross",v "Davidstern", v "$" */ -10, 10, 0,-10, 10, 0, -6, -6, -5, -5, -6, -7, -7, -6, -4, -2, 1, 2, 0, -4, -3, 0, 2, 4, 5, 6, 6, 5, 4, 3, 3, 4, 4,127, 3, -5, 0, 0, -5, 0, 0, 3, 4, 4, 3, 3,127, 6, /* 170,171 v "!", v "#" */ -6, 5, 0, -6, 5, 0, -2, -2, 0, 1, 1,127, 8, -6, 0, 6, /* 172 v ">" */ 127, 5, -4, -5, -5, -4, -2, -1, 0, 0, -1, -2, 0, 3, 4, 4, /* 173 v "?" */ 3, 3,127, 9, -9, -8, -8, -9,-10,-10, -8, -6, -3, 3, 7, 9, /* 174 v "Integral" */ 0, -9, -7, -3, 3, 6, 8, 10, 10, 9, 8, 8, 9,127, 3, -2, /* 175 v ":" */ -1, -1, -2, -2, 0, 3, 4, 4, 3, 3,127, 3, -2, -1, -1, -2, /* 176 v ";" */ -2, 0, 4, 4, 3, 3, 5, 7,127, 8, -6, 0, 6,127, 5,-10, /* 177,178 v "<", v "[" */ 10, 0,-10, 10, 0,-10,-10, 0, 10, 10,127, 5,-10, 10, 0,-10, /* 179 v "]" */ 10, 0,-10,-10, 0, 10, 10,127, 8, -7, -3, 1, 0, 2, 2, 0, /* 180 v "Smaller then" */ 6, 6,127, 5,-10, -9, -8, -6, -4, -2, 0, -9, -6, 0, -4, -1, /* 181 v "{" */ 0, -8, -6, -4, -2, -1, 0, 1, 2, 4, 6, 8, 0, 1, 4, 0, 6, 9, 0, 2, 4, 6, 8, 9, 10,127, 6,-10, -9, -8, -6, -4, /* 182 v "}" */ -2, 0, -9, -6, 0, -4, -1, 0, -8, -6, -4, -2, -1, 0, 1, 2, 4, 6, 8, 0, 1, 4, 0, 6, 9, 0, 2, 4, 6, 8, 9, 10, 127, 9, -3, -3, 5, 0, -3, 6, 0,-12, 6,127, 11, -9,-11,-12, /* 183,184 v "Squareroot", v "Glocke" */ -12,-11, -9, 0, 8, 6, 4, 2, -2, -7, -8, -9, -9, -8, -7, -2, 2, 4, 6, 8, 0, 8, 8, 0, 8, 9, 10, 10, 9, 8,127, 8, /* 185 v "Palme" */ -5, 1, 0, 1, 10, 0, 1, 10, 0, 10, 10, 0, -5, -8,-10,-11, 0, -8,-11, 0, -5, -8,-10,-11, 0, -8,-11, 0, -5, -7, -7, -5, 0, -6, -6, -5, 0, -5, -7, -7, -5, 0, -6, -6, -5, 0, -5, -4, -3, 0, 0, -5, -3, 0, 0, -5, -4, -3, 0, 0, -5, -3, 0,127, 8, -9, -7, 0, -4, -2, 0, 1, 3, 0, 7, 10, 0, 7, 10, 0, /* 186 v "Tanne" */ 10, 10, 0,-11, -9, -8, 0,-11, -9, -8, 0, -8, -9, -8, 0, -7, -4, -3, -4, 0, -7, -4, -3, -4, 0, -3, -3, -4, -3, -3, 0, -2, 1, 2, 2, 0, 1, 2, 0, -2, 1, 2, 2, 0, 1, 2, 0, 2, 2, 1, 2, 2, 0, 3, 6, 7, 8, 8, 7, 5, 7, 8, 0, 3, 6, 7, 8, 8, 7, 5, 7, 8, 0, 8, 8, 7, 8, 8,127, 8, /* 187 v "Eichenblatt" */ 7, 10, 0, 7, 10, 0, 10, 10, 0, 7, 8, 8, 6, 3, 2, 2, 0, -3, -5, -6, -5, -8,-10,-11,-11,-10, -8, -5, -6, -5, -3, 0, 2, 2, 3, 6, 8, 8, 7,127, 6, 0, 0, 1, 3, 4, 4, 3, /* 188 v "&" */ 1, 0, -1, -2, -4, -5, -5, -4, -2, 1, 3, 4, 4,127, 5, -3, /* 189 v "x" */ 3, 0, -3, 3,127, 11, 8, 6, 3, 1, -2, -3, -4, -4, -3, -2, /* 190 v "proportional" */ -1, 1, 2, 3, 4, 4, 3, 2, -1, -3, -6, -8,127, 10, 0, 2, /* 191 v "infinit" */ 3, 3, 2, 1, -2, -3, -4, -4, -3, -1, 0, 2, 3, 3, 2, 1, -2, -3, -4, -4, -3, -1, 0,127, 7, -7, -6, -4, -1, 1, 4, 6, /* 192 v "circle" */ 7, 7, 6, 4, 1, -1, -4, -6, -7, -7,127, 6, -6, 6, 6, -6, /* 193 v "square" */ -6,127, 7, -8, 4, 4, -8,127, 6,-10, 0, 10, 0,-10,127, 8, /* 194,195,196 v "triangle up", v "diamond", v "start" */ -9, -3, -3, 1, 7, 3, 7, 1, -3, -3, -9,127, 9, -3, -2, 0, /* 197 v "right arrow" */ 2, 3, 0, -2, 0, 2, 0, 0, 0,127, 5, -5, 6, 0, -2, -3, /* 198 v "up arrow" */ -6, -3, -2, 0, -3, -5, -3,127, 9, -3, -2, 0, 2, 3, 0, -2, /* 199 v "left arrow" */ 0, 2, 0, 0, 0,127, 5, -6, 5, 0, 2, 3, 6, 3, 2, 0, /* 200 v "down arrow" */ 3, 5, 3,127, 3, -4, -4, -5, -5, -3, -1,127, 3, 3, 4, 4, /* 201,202 v "'", v "." */ 3, 3,127, 3, 4, 4, 3, 3, 5, 7,127, 5, -6, 5,127, 4, /* 203,204,205 v ",", v "/", v "(" */ -6, -4, -2, 1, 3, 5,127, 3, -6, -4, -2, 1, 3, 5,127, 6, /* 206,207 v ")", v "-" */ 0, 0,127, 6, -4, 4, 0, 0, 0,127, 6, -2, -2, 0, 2, 2, /* 208,209 v "+", v "=" */ 127, 5, -3, 3, 0, -2, 2, 0, -2, 2,127, 14, -1, -3, -4, -5, /* 210,211 v "*", ^ "@" */ -5, -3, -1, 1, 3, 5, 6, 6, 5, 4, 0, -5, -1, 4, 6, 7, 7, 6, 2, 0, -4, -8,-12,-15,-15,-14,-12, -9, -5, 0, 4, 10, 14, 15, 15, 11, 9,127, 5,-16, -6, 0,-16, -6,127, 10, -5, 9, /* 212,213 ^ """,v "ae" */ 0, -2, -4, -5, -5, -4, -2, 1, 3, 6, 8, 9, 9, 8, 6, 0, -12,-11,-10,-11,-12, 0,-12,-11,-10,-11,-12,127, 10, -5, -4, -2, /* 214 v "oe" */ 1, 3, 6, 8, 9, 9, 8, 6, 3, 1, -2, -4, -5, -5, 0,-12, -11,-10,-11,-12, 0,-12,-11,-10,-11,-12,127, 10, -5, 5, 8, 9, /* 215 ^ "ue" */ 9, 8, 5, 0, -5, 9, 0,-12,-11,-10,-11,-12, 0,-12,-11,-10, -11,-12,127, 9,-12, 9, 0,-12, 9, 0, 2, 2, 0,-12,-11,-10, /* 216 ^ "Ae" */ -11,-12, 0,-12,-11,-10,-11,-12,127, 11,-12,-11, -9, -7, -4, 1, /* 217 v "Oe" */ 4, 6, 8, 9, 9, 8, 6, 4, 1, -4, -7, -9,-11,-12,-12, 0, -11,-10,-11,-12,-11, 0,-11,-10,-11,-12,-11,127, 11,-12, 3, 6, /* 218 v "Ue" */ 8, 9, 9, 8, 6, 3,-12, 0,-12,-11,-10,-11,-12, 0,-12,-11, -10,-11,-12,127, 3,-16, -6,127, 9, 10, -7, -9,-10,-10, -9, -7, /* 219,220 v "'",v"sz" */ -6, -4, -3, -2, -2, -2, -1, 1, 6, 8, 10, 10, 9,127, 12,-10, /* 221 v"Promille" */ -8, -6, -4, -4, -6, -8,-10,-10, -9, -8, -8, -9,-10, 10, 0, 4, 6, 8, 10, 10, 8, 6, 4, 4, 0, 4, 6, 8, 10, 10, 8, 6, 4, 4,127, 18,-26,-29,-30,-30,-29,-26,-23,-18,-16,-11,-12,-17, /* 222 v"Weihnachtsmann" */ -20,-20,-18,-20,-21,-24,-25,-26,-26,-24,-20, 0,-16,-12, -7, -4, 0, 2, 2, -6, -9,-13,-16,-17, 0,-11,-10, -7, -6, -6, -8,-11, -12,-12,-11, 0,-20,-18,-17,-18, 0,-21,-20,-19,-18,-18, 0,-20, -20, 0,-17,-18,-18,-16,-14,-12,-11,-11,-13,-16,-16, 0,-17, -1, 5, 6, 6, 4, 0,-11,-11, -9, -8, -9,-10,-11,-11, 0, -8, -4, -10, -9, -5, 2, 5, 5, 4, 0, -4, -9, 0, 4, 13, 20, 19, 19, 9, 5, -6, 0, 19, 22, 23, 24, 26, 26, 27, 27, 25, 23, 20, 19, 19, 0, 26, 28, 31, 31, 30, 28, 26, 0, 27, 30, 31, 31, 30, 29, 29, 27,127, 126, 58, 30, 27, 27, 7, -8, -16, -16, -8, 7, 80, 0, /* 223 v"ELSA-Emblem" */ 22, 38, 46, 46, 38, 23, 7, 0, -8, 30, 60, 73, 77, 76, 69, 60, 44, 27, 13, 0, -26, -57, -62, -75, -83, -78, 0, -62, -70, -73, -72, -60, -71, 0, -22, -60, 0, -72, -65, -55, -37, -22, 80, 0, -22, -6, 7, 30, 0, -17, -17, -35, -35, 0, -35, -58, -58, 0, -33, 7, 7, 0, 0, -5, -8, -8, -5, 0, 5, 10, 13, 13, 16, 20, 25, 30, 32, 32, 30, 25, 0, 57, 17, 57, 0, 40, 40, 0, 90, -93, -93, 90, 90, 127 } ; short istart[MAXCHR] = { 1,20,26,42,59,67,86,111,118,149,174,184,209,229,246,259,269,293,303,311,323,333,340,353,363,386,401,427,445,467,474,486,493,506,513,521,531,541,566,573,583,596,606,616,642,646,656,663,676,686,696,719,729,744,755,762,782,804,811,830,848,858,862,877,920,930,943,948,970,1003,1016,1032,1037,1050,1063,1074,1115,1156,1167,1201,1228,1249,1298,1334,1341,1368,1400,1436,1464,1482,1500,1523,1535,1547,1559,1571,1580,1587,1597,1601,1613,1625,1629,1636,1643,1653,1666,1671,1681,1697,1705,1720,1735,1742,1762,1777,1796,1815,1831,1850,1869,1879,1903,1915,1925,1938,1948,1952,1972,1984,2003,2022,2041,2051,2070,2080,2092,2099,2112,2119,2130,2140,2165,2197,2215,2240,2260,2284,2304,2332,2342,2362,2372,2394,2409,2439,2458,2472,2492,2511,2520,2537,2559,2574,2595,2619,2629,2633,2644,2679,2692,2705,2710,2728,2755,2768,2782,2787,2800,2813,2824,2863,2902,2913,2948,3013,3108,3149,3171,3178,3202,3229,3248,3255,3261,3268,3281,3295,3309,3323,3337,3345,3352,3360,3364,3372,3380,3384,3391,3398,3408,3451,3458,3489,3520,3544,3566,3601,3625,3629,3651,3688,3832 }; float psymbol( int x, int y, /* position in device coordinates */ char *ktext, float size, /* desired width of 'W' in device coordinates */ float aspect, /* desired aspect ratio (character height to character width */ float daspect, /* ratio of y pixel size to x pixel size */ float angle, float tilt, int text_length, int mode ) { double extent[4]; return psymbol1(x, y, ktext, size, aspect, daspect, angle, tilt, text_length, mode, extent); } float psymbol1( int x, int y, /* position in device coordinates */ char *ktext, float size, /* desired width of 'W' in device coordinates */ float aspect, /* desired aspect ratio (character height to character width */ float daspect, /* ratio of y pixel size to x pixel size */ float angle, float tilt, int text_length, int mode, double *extent /* output in user coords: horizontal and vertical extent of box surrounding the text, plus horizontal and vertical offset of center from the given coordinates . */ ) { /************************************************************************ ROUTINE TO DRAW SOFTWARE CHARACTERS USING THE H E R S H E Y CHARACTER TABLE N.M. WOLCOTT, J. HILSENRATH A CONTRIBUTION TO COMPUTER TYPESETTING TECHNIQUES TABLE OF COORDINATES FOR HERSHEY'S REPERTORY OF OCCIDENTAL TYPE FONTS AND GRAPHICS SYMBOLS NATIONAL BUREAU OF STANDARDS SPECIAL PUBLICATION NO. 424 U.S. GOVERNMENT PRINTING OFFICE WASHINGTON, JANUARY 1976. Translated into C by Michael Borland, November 1989 X,Y ARE COORDINATES FOR BEGINNING OF TEXT KTEXT CONTAINS PACKED TEXT SIZE IS THE SIZE OF THE SYMBOLS IN CM ANGLE IS THE ROTATION ANGLE IN DEGREES TEXT_LENGTH IS THE NR. OF CHARACTERS IN THE TEXT IGO (mode) CONTROL PARAMETER IGO= -1 TEXT IS LEFT ADJUSTED ON X,Y IGO= 2 RETURN LENGTH OF TEXT IN ANGLE (CM) IX,IY PACKED SYMBOLS --Version 2, for use with GHOST package--May 1989, Michael Borland: I've added 4 new arguments: ASPECT, TILT, XSCALE, YSCALE. ASPECT: The ratio between the height and the width of the characters. TILT: The tilt (or slant) angle of the individual characters, in degrees. XSCALE, YSCALE: The GHOST point-plotting routine (ghost$ptplot) works in user's coordinates. The character sizes, however, are best specified in unit (i.e., [0,1]x[0,1]) coordinates. XSCALE and YSCALE provide conversion factors from unit coordinates to user's coordinates. OTHER CHANGES: The meaning of SIZE is changed: SIZE is the width of the characters in unit coordinates. A character of size 1 with an aspect ratio of 1 will fill the entire plotting region. The string does NOT need to end with $ or : . The string may be up to 256 characters long. ****************************************************************************/ static short ascii_index[256]; int xp[40], yp[40], xInput, yInput; double xs,ys; double si,co,aspectp,xpp,ypp,rscale,the,tiltp,scale; static long first_call = 0; static float change_scale = 1; long d_kspec = 0, d_iy0 = 9; /* control characters c \001=^a go to normal script level c \002=^b go to subscript c \003=^c go to superscript c \004=^d go to 50% larger characters c \005=^e go to 2/3-size characters c \006=^f go to greek c \007=^g go to roman c \010=^h backspace one character c \011=^i go to special symbols c \012=^j end of special symbols c \013=^k vertical offset 1/2 character height c \014=^l vertical offset -1/2 character height c \015=^m double the aspect ratio c \016=^n halve the aspect ratio */ char *standard_chars = /* 1 2 3 4 */ /* 12345678901234567890123456789012345678901234567 */ "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,/()-+=*$ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017"; static long n_standard_chars; /* correspondence between greek alphabet and roman alphabet */ static long lgreek[26] = { 1,2,7,4,5,21,3,22,9,9,10,11,12,13,15,16,8,17,18, 19,20,22,24,14,23,6 } ; long i, ic, iw, kymin, kymax, kx, kxMin, first_char; float tan_tiltp, yoff, yoff2, wtot; long ndraw, klow, kgreek, kspec, ix0, iy0, lspec, i_ascii, ichr = 0; long ky, dky, k, ichar; float d_rscale, d_scale, xw = 0, yw = 0, wdth = 0, xpk, ypk; float xpMin, xpMax, ypMin, ypMax; xInput = x; yInput = y; if (daspect<=0) daspect = 1; if ((aspectp=aspect)==0) aspectp = daspect; else aspectp = aspect*daspect; tan_tiltp = tan(tiltp = tilt*PI/180.); if (first_call==0) { first_call = 1 ; n_standard_chars = strlen(standard_chars); for (i=0; i= 97 && i_ascii <= 122) { i_ascii = i_ascii - 32; /* translate to upper case */ klow = 105; /* indicate lower case */ } else if (i_ascii < 0) { i_ascii = 39 - i_ascii; /* translate to upper case */ klow = 105; /* indicate lower case */ } else if (i_ascii == 33) { i_ascii = 69; lspec = 1; } else if (i_ascii == 35) { /* convert "#" to special("f") */ i_ascii = 70; lspec = 1; } else if (i_ascii == 36) { /* convert "$" to special("d") */ i_ascii = 68; lspec = 1; } else if (i_ascii == 37) { /* convert "%" to special("y") */ i_ascii = 89; lspec = 1; } else if (i_ascii == 94) { /* convert "^" to special("6") */ i_ascii = 54; lspec = 1; } else if (i_ascii == 38) { /* convert "&" to special("w") */ i_ascii = 87; lspec = 1; } else if (i_ascii == 95) { /* convert "_" to special("-") */ i_ascii = 45; lspec = 1; } else if (i_ascii ==123) { /* convert "{" to special("p") */ i_ascii = 80; lspec = 1; } else if (i_ascii ==125) { /* convert "}" to special("q") */ i_ascii = 81; lspec = 1; } else if (i_ascii == 91) { /* convert "[" to special("m") */ i_ascii = 77; lspec = 1; } else if (i_ascii == 93) { /* convert "]" to special("n") */ i_ascii = 78; lspec = 1; } else if (i_ascii == 58) { /* ":" not scaled */ ichr = 70; lspec = 0; } else if (i_ascii == 59) { /* ";" not scaled */ ichr = 71; lspec = 0; } else if (i_ascii == 60) { /* convert "<" to special("l") */ i_ascii = 76; lspec = 1; } else if (i_ascii == 62) { /* convert ">" to special("g") */ i_ascii = 71; lspec = 1; } else if (i_ascii == 63) { /* convert "?" to special("h") */ i_ascii = 72; lspec = 1; } else if (i_ascii == 64) { /* new inserted "@" */ ichr = 211; lspec = 1; } else if (i_ascii == 34) { /* new inserted """ */ ichr = 212; klow = 0; lspec = 0; } else if (i_ascii == 16) { /* new inserted "ae" (16) */ ichr = 213; klow = 0; lspec = 0; } else if (i_ascii == 17) { /* new inserted "oe" (17) */ ichr = 214; klow = 0; lspec = 0; } else if (i_ascii == 18) { /* new inserted "ue" (18) */ ichr = 215; klow = 0; lspec = 0; } else if (i_ascii == 19) { /* new inserted "ae" (19) */ ichr = 216; klow = 0; lspec = 0; } else if (i_ascii == 20) { /* new inserted "oe" (20) */ ichr = 217; klow = 0; lspec = 0; } else if (i_ascii == 21) { /* new inserted "ue" (21) */ ichr = 218; klow = 0; lspec = 0; } else if (i_ascii == 39 || i_ascii==96) { /* new inserted "'" */ ichr = 219; klow = 0; lspec = 0; } else if (i_ascii == 22) { /* new inserted "sz" (22) */ ichr = 220; klow = 0; lspec = 0; } else if (i_ascii == 23) { /* new inserted "promille" (23) */ ichr = 221; klow = 0; lspec = 0; } else if (i_ascii == 24) { /* new inserted "weihnachtsmann" (24) */ ichr = 222; klow = 0; lspec = 1; } else if (i_ascii == 25) { /* new inserted "elsa-emblem" (26) */ ichr = 223; klow = 0; lspec = 0; } else if (i_ascii == 124) { /* | implemented as special(B) */ i_ascii = 66; lspec = 1; } else { klow = 0; /* indicate upper case */ } if (lspec==1) { d_kspec=kspec; d_scale=scale; d_rscale=rscale; d_iy0=iy0; kspec = 1; klow = 0; } if (!((i_ascii>=16 && i_ascii<=25) || i_ascii==34 || i_ascii==39 || i_ascii==58 || i_ascii==59 || i_ascii==64)) { /* come here for symbols other than: "ae" (16) "oe" (17) "ue" (18) "ae" (19) "oe" (20) "ue" (21) "sz" (22) "promille" (23) "weihnachtsmann" (24) "elsa-emblem" (26) """ "'" ":" ";" "@" */ ic = ascii_index[i_ascii]; if (ic>n_standard_chars || ic==47) { /* blank space */ if (klow!=0) wdth = 10.*rscale*1.05; else wdth = 20.*rscale*1.05; wtot += wdth; xpp += wdth*co; ypp += wdth*si; continue; } if (ic>47) { /* interpret control characters */ switch (ic-47) { case 1: /* normal level of script */ yoff = 0.; rscale = scale*change_scale; break; case 2: /* subscript */ yoff = -0.5*size*change_scale; rscale = 0.66*scale*change_scale ; break; case 3: /* superscript */ yoff = 0.5*size*change_scale; rscale = 0.66*scale*change_scale; break; case 4: /* increase character size by 50% */ change_scale = 1.5*change_scale; rscale = change_scale*scale; break; case 5: /* decrease character size to 2/3 */ change_scale = change_scale/1.5 ; rscale = change_scale*scale; break; case 6: /* greek alphabet */ kgreek = 1; break; case 7: /* end of greek alphabet */ kgreek = 0; break; case 8: /* backspace one half-character */ if (ndraw>0) { if (!wdth) { wdth = (klow?10:20)*rscale*1.05; xw=wdth*co; yw=wdth*si ; } wtot=wtot-wdth/2; xpp=xpp-xw/2; ypp=ypp-yw/2; } break; case 9: /* go to special symbols */ kspec=1 ; break; case 10: /* end of special symbols */ kspec = 0; iy0 = 9; scale = size/21.; rscale = scale*change_scale; break; case 11: /* vertical offset 1/2 character height upward */ yoff2 += 0.5*size*change_scale; break; case 12: /* vertical offset 1/2 character height downward */ yoff2 += -0.5*size*change_scale; break; case 13: /* double the aspect ratio */ aspectp *= 2; break; case 14: /* halve the aspect ratio */ aspectp /= 2; break; default: fprintf(stderr, "unknown special symbol code = %ld\n", ic-47); exit(1); break; } continue; } if (ic==46) break ; if (kspec!=0) { /* special symbols */ ichr=60+ic+klow; } else if (ic>36) { /* mathematical symbols */ ichr=60+klow+ic ; } else if (ic>26) { /* 0->9 */ ichr=ic-26+klow ; } else if (kgreek!=0) { /* greek alphabet */ ichr=lgreek[ic-1]+36+klow ; } else { /* roman alphabet */ ichr=ic+10+klow ; } } /* define scale and prepare absolute coordinates of vectors */ if (ichr<=0 || ichr>MAXCHR) continue ; if (!(kspec==0 || ichr==9 || ichr==18)) { /* redefine scale for special symbols */ iw=istart[ichr-1] ; kymin = 100 ; kymax = -100 ; while ((ky=iy[iw])!=127) { if ((kx=ix[iw])!=127) { if (ky>kymax) kymax=ky ; if (kyxpMax) xpMax = xp[k-1]; if (xp[k-1]ypMax) ypMax = yp[k-1]; if (yp[k-1]