#include #include #include char *charstrs[256]; int charlens[256]; char *version_str="001.001"; int kcode_high; char *StdHW="32"; char *StdVW="32"; char *UniqueId="9876"; char *FontBase="Wadalab"; int ecol=0; int StdEncMode; int CustomEncMode; main(ac,ag) char **ag; { int i; for(i=1;i>8)&255; charstrs[kcode_low=(kcode&255)]=(char *)malloc((len-16)/2); charlens[kcode_low]=(len-16)/2; for(i=0,cptr=charstrs[kcode_low];i<(len-16)/2;i++){ c1=buf[i*2+1];c=buf[i*2+2]; *cptr++ = ((c1>='a' ? c1-'a'+10 : c1-'0')<<4) |(c>='a' ? c-'a'+10 : c-'0'); } } } } output_header() { time_t now=time(0); int i; printf("%%!PS-AdobeFont-1.0: %s.r%02x %s\n",FontBase,kcode_high,version_str); printf("%%%%Creation Date: %s",ctime(&now)); printf("%%%%VMusage: 100000 100000\n"); /* dummy */ printf("11 dict begin\n"); printf("/FontInfo 8 dict dup begin\n"); printf("/version (%s) readonly def\n",version_str); printf("/FullName (%s.r%02x) readonly def\n",FontBase); printf("/FamilyName (%s) readonly def\n",FontBase); printf("/Weight (Regular) readonly def\n"); printf("/ItalicAngle 0 def\n"); printf("/isFixedPitch true def\n"); printf("/UnderlinePosition 0 def\n"); printf("/UnderlineThickness 0 def\n"); printf("end readonly def\n"); printf("/FontName /%s.r%02x def\n",FontBase,kcode_high); if(CustomEncMode){ printf("/Encoding 256 array\n"); printf("0 1 255 {1 index exch /.notdef put} for\n"); for(i=0x21;i<=0x7e;i++) printf("dup %d /c%02X put\n",i,i); printf("readonly def\n"); } else printf("/Encoding StandardEncoding def\n"); printf("/PaintType 0 def\n"); printf("/FontType 1 def\n"); printf("/FontMatrix [.001 0 0 .001 0 -0.16] readonly def\n"); printf("/UniqueId %s def\n",UniqueId); printf("/FontBBox [0 0 1000 1000] readonly def \n"); printf("currentdict end\n"); printf("currentfile eexec\n"); } output_pfa() { int i,j,len,charlen; output_header(); e_putchar(0); e_putchar(0); e_putchar(0); e_putchar(0); if(CustomEncMode) e_printf("dup /Private 14 dict dup begin\n"); else e_printf("dup /Private 17 dict dup begin\n"); e_printf("/-|{string currentfile exch readstring pop}executeonly def\n"); e_printf("/|-{noaccess def}executeonly def\n"); e_printf("/|{noaccess put}executeonly def\n"); e_printf("/BlueValues [] |-\n"); e_printf("/OtherBlues [] |-\n"); e_printf("/MinFeature{16 16} |-\n"); e_printf("/StdHW [ %s ] |-\n",StdHW); e_printf("/StdVW [ %s ] |-\n",StdVW); e_printf("/ForceBold false def\n"); e_printf("/password 5839 def\n"); e_printf("/UniqueId %s def\n",UniqueId); e_printf("/OtherSubrs [] |-\n"); e_printf("/Subrs 5 array\n"); e_printf("dup 0 15 -| \020\2771p|\020\024\020=-\223D\\\342R |\n"); e_printf("dup 1 9 -| \020\2771py\274\366Uz |\n"); e_printf("dup 2 9 -| \020\2771py\275\304\236i |\n"); e_printf("dup 3 5 -| \020\2771p\371 |\n"); e_printf("dup 4 12 -| \020\2771p~\266+6\034\3446z |\n"); e_printf("|-\n"); e_printf("2 index /CharStrings 256 dict dup begin\n"); for(i=0;i<256;i++){ if(charstrs[i]!=NULL){ if(CustomEncMode) e_printf("/c%2X %d -| ",i,charlens[i]); else e_printf("/%s %d -| ",(StdEncMode ? StdEnc[i-040].name : ISO8859Enc[i-040].name),charlens[i]); for(j=0;j>8)); r=(cipher+r)*c1+c2; return cipher; }