#include #include #include char *charstrs[34][256]; int charlens[34][256]; char *version_str="001.001"; int kcode_high; char *StdHW="32"; char *StdVW="32"; char *UniqueId="9876"; char *FontBase="dm"; char fontname[256]; FILE *ofp; int ecol=0; char *jsf_names[] = { "", "jsy", "jroma", "jhira", "jkata", "jgreek", "jrussian", "jkeisen", "jka", "jkb", "jkc", "jkd", "jke", "jkf", "jkg", "jkh", "jki", "jkj", "jkk", "jkl", "jkm", "jkn", "jko", "jkp", "jkq", "jkr", "jks", "jkt", "jku", "jkv", "jkw", "jkx", "jky", "jkz", NULL }; #define kushift(c) c+0x20 #define tenshift(c) c+0x20 compute_fc(ku, ten, f, c) register short ku, ten; unsigned short *f, *c; { register int n; ku -= 0x20; ten -= 0x20; *f = 1; *c = 1; if (ku <= 0 || (9 <= ku && ku <= 15) || ku > 84) { fprintf(stderr,"invalid ku in jis (%x, %x)", ku+0x20, ten+0x20); return; } if (ten < 1 || ten > 94) { fprintf(stderr,"invalid ten in jis (%x, %x)", ku+0x20, ten+0x20); return; } if (ku <= 8) { if (ku == 1) { *f = 1; *c = ten; } else if (ku == 2) { *f = 1; *c = ten+100; } else if (ku == 3) { *f = 2; *c = ten+32; } else { *f = ku-1; *c = ten; } } else if (ku <= 47) { /* Daiich Suijun */ n = (ku-16)*94+ten-1; *f = (n/256)+8; *c = n%256; } else { /* Daini Suijun */ n = (ku-48)*94+ten-1; *f = (n/256)+20; *c = n%256; } } readfiles(filename) char *filename; { FILE *fd; char buf[4096],*cptr; int kcode_low,i,len,kcode,c1; unsigned short f,c; if((fd=fopen(filename,"r"))==NULL){ fprintf(stderr,"File %s is not found\n",filename); exit(1); } while(fgets(buf,4096,fd)!=NULL){ len=strlen(buf); if(buf[0]=='<' && !strncmp(buf+len-6 ,"CompD",5)){ kcode=strtol(buf+len-12,NULL,16); compute_fc((kcode>>8)&255, (kcode&255), &f, &c); charlens[f][c]=(len-16)/2; cptr=charstrs[f][c]=(char *)malloc((len-16)/2); for(i=0;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'); } } } fclose(fd); } main(ac,ag) char **ag; { int i,j; for(i=1;i>8)); r=(cipher+r)*c1+c2; return cipher; }