#include <stdio.h>
#include <stdlib.h>
#include <string.h>

FILE *vfp,*afp=NULL;
char *atfmname,*vtfmname,*afmname,*vfname,*kanatfm;
int kanatume=-1,chotai=0,baseshift=0,minute=0;

FILE *vfopen();

main(argc,argv)
int argc;
char **argv;
{
	int i,j;

	if (argc < 3) {
		usage();
		exit(0);
	}

	argv++;

	for (;**argv=='-';argv++) {
		switch ((*argv)[1]) {
		case 'k':
			if ((*argv)[2]!='\0') {
				kanatume = atoi(&(*argv)[2]);
			}
			else {
				kanatume = atoi(*(++argv));
			}
			break;
		case 'K':
			if ((*argv)[2]!='\0') {
				kanatfm = strdup(&(*argv)[2]);
			}
			else {
				kanatfm = strdup(*(++argv));
			}
			break;
		case 'C':
			chotai=1;
			break;
		case 'a':
			if ((*argv)[2]!='\0') {
				afmname = strdup(&(*argv)[2]);
			}
			else {
				afmname = strdup(*(++argv));
			}
			if ((afp = fopen(afmname,"r"))==NULL) {
				fprintf(stderr,"no AFM file, %s.\n",afmname);
				exit(-1);
			}
			break;
		case 'b':
			if ((*argv)[2]!='\0') {
				baseshift = atoi(&(*argv)[2]);
			}
			else {
				baseshift = atoi(*(++argv));
			}
			break;
		case 'm':
			minute=1;
			break;
		default:
			usage();
			exit(0);
		}
	}

	if (kanatume>=0 && !afp) {
		fprintf(stderr,"No AFM file for kanatume.\n");
		exit(-1);
	}

	atfmname = malloc(strlen(*argv)+4);
	strcpy(atfmname,*argv);

	vfname = malloc(strlen(*argv)+4);
	strcpy(vfname,*argv);
	for (i = strlen(vfname)-1 ; i >= 0 ; i--) {
		if (vfname[i] == '/') {
			vfname = &vfname[i+1];
			break;
		}
	}
	if (!strcmp(&vfname[strlen(vfname)-4],".tfm")) {
		vfname[strlen(vfname)-4] = '\0';
	}
	strcat(vfname,".vf");

	argv++;

	vtfmname = strdup(*argv);
	if (!strcmp(&vtfmname[strlen(vtfmname)-4],".tfm")) {
		vtfmname[strlen(vtfmname)-4] = '\0';
	}

	tfmget(atfmname);

	maketfm(vtfmname);

	if (kanatfm) {
		if (!strcmp(&kanatfm[strlen(kanatfm)-4],".tfm")) {
			kanatfm[strlen(kanatfm)-4] = '\0';
		}
		maketfm(kanatfm);
	}

	vfp = vfopen(vfname);

	for (i=0;i<94;i++)
		for (j=0;j<94;j++)
			writevf((0x21+i)*256+(0x21+j),vfp);

	vfclose(vfp);

	exit(0);
}

usage()
{
	fprintf(stderr,"MAKEJVF ver.1.1a -- make Japanese VF file.\n");
	fprintf(stderr,"%% makejvf [<options>] <TFMfile> <PSfontTFM>\n");
	fprintf(stderr,"options:\n");
	fprintf(stderr,"-C           長体モード\n");
	fprintf(stderr,"-K <TFMfile> 非漢字部用に作成するPSフォントTFM名\n");
	fprintf(stderr,"-b <数値>    ベースライン補正\n");
	fprintf(stderr,"             文字の高さを1000として整数で指定\n");
	fprintf(stderr,"             プラスで文字が下がり、マイナスで文字が上がる\n");
	fprintf(stderr,"-m           縦書き時にクオート(’”)の代わりにミニュート(′″)を使用\n");
	fprintf(stderr,"-a <AFMfile> AFMファイル名（かな詰め時に使用）\n");
	fprintf(stderr,"-k <数値>    かな詰めマージン指定\n");
	fprintf(stderr,"             文字幅を1000として整数で指定。-aオプションと共に使用\n");
}
