summaryrefslogtreecommitdiff
path: root/Build/source/texk/makejvf/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/makejvf/main.c')
-rw-r--r--Build/source/texk/makejvf/main.c91
1 files changed, 84 insertions, 7 deletions
diff --git a/Build/source/texk/makejvf/main.c b/Build/source/texk/makejvf/main.c
index 132fb35b13a..60cb5a73446 100644
--- a/Build/source/texk/makejvf/main.c
+++ b/Build/source/texk/makejvf/main.c
@@ -5,14 +5,17 @@
#include <kpathsea/config.h>
#include <ptexenc/ptexenc.h>
#include "makejvf.h"
+#include "uniblock.h"
FILE *vfp,*afp=NULL;
-char *atfmname,*vtfmname,*afmname,*vfname,*kanatfm;
-int kanatume=-1,chotai=0,baseshift=0,minute=0;
+char *atfmname,*vtfmname,*afmname,*vfname,*kanatfm,*jistfm,*ucsqtfm;
+int kanatume=-1,chotai=0,baseshift=0,minute=0,useset3=0,hankana=0,fidzero=0;
+long ucs=0;
int main(int argc, char ** argv)
{
- int i,j;
+ int i,j,ib;
+ long ch;
set_enc_string(NULL, "EUC");
if (argc < 3) {
@@ -66,6 +69,48 @@ int main(int argc, char ** argv)
case 'm':
minute=1;
break;
+ case 'u':
+ argv++;
+ if (!strcmp(*argv,"gb"))
+ ucs = ENTRY_G;
+ else if (!strcmp(*argv,"cns"))
+ ucs = ENTRY_C;
+ else if (!strcmp(*argv,"jisq"))
+ ucs = ENTRY_JQ;
+ else if (!strcmp(*argv,"jis"))
+ ucs = ENTRY_J;
+ else if (!strcmp(*argv,"ks"))
+ ucs = ENTRY_K;
+ else {
+ fprintf(stderr,"Charset is not set\n");
+ ucs = ENTRY_NO;
+ }
+ break;
+ case '3':
+ useset3=1;
+ break;
+ case 'J':
+ if ((*argv)[2]!='\0') {
+ jistfm = strdup(&(*argv)[2]);
+ }
+ else {
+ jistfm = strdup(*(++argv));
+ }
+ break;
+ case 'U':
+ if ((*argv)[2]!='\0') {
+ ucsqtfm = strdup(&(*argv)[2]);
+ }
+ else {
+ ucsqtfm = strdup(*(++argv));
+ }
+ break;
+ case 'H':
+ hankana=1;
+ break;
+ case 'i':
+ fidzero=1;
+ break;
default:
usage();
exit(0);
@@ -111,11 +156,35 @@ int main(int argc, char ** argv)
maketfm(kanatfm);
}
+ if (jistfm) {
+ if (!strcmp(&jistfm[strlen(jistfm)-4],".tfm")) {
+ jistfm[strlen(jistfm)-4] = '\0';
+ }
+ maketfm(jistfm);
+ }
+
+ if (ucsqtfm) {
+ if (!strcmp(&ucsqtfm[strlen(ucsqtfm)-4],".tfm")) {
+ ucsqtfm[strlen(ucsqtfm)-4] = '\0';
+ }
+ maketfm(ucsqtfm);
+ }
+
vfp = vfopen(vfname);
- for (i=0;i<94;i++)
- for (j=0;j<94;j++)
- writevf((0x21+i)*256+(0x21+j),vfp);
+ if (ucs) {
+ ib=0;
+ for (i=0;i<(useset3+1);i++)
+ for (j=0;j<65536;j++) {
+ ch=i*2*65536+j;
+ if (search_cjk_entry(&ib,ch,ucs))
+ writevfu(ch,vfp);
+ }
+ } else {
+ for (i=0;i<94;i++)
+ for (j=0;j<94;j++)
+ writevf((0x21+i)*256+(0x21+j),vfp);
+ }
vfclose(vfp);
@@ -124,7 +193,7 @@ int main(int argc, char ** argv)
void usage(void)
{
- fputs2("MAKEJVF ver.1.1a -- make Japanese VF file.\n", stderr);
+ fputs2("MAKEJVF ver.1.1a-u1.00 -- make Japanese VF file.\n", stderr);
fputs2("%% makejvf [<options>] <TFMfile> <PSfontTFM>\n", stderr);
fputs2("options:\n", stderr);
fputs2("-C 長体モード\n", stderr);
@@ -136,4 +205,12 @@ void usage(void)
fputs2("-a <AFMfile> AFMファイル名(かな詰め時に使用)\n", stderr);
fputs2("-k <数値> かな詰めマージン指定\n", stderr);
fputs2(" 文字幅を1000として整数で指定。-aオプションと共に使用\n", stderr);
+ fputs2("-u <Charset> UCS mode\n", stderr);
+ fputs2(" <Charset> gb : GB, cns : CNS, ks : KS\n", stderr);
+ fputs2(" jis : JIS, jisq : JIS quote only\n", stderr);
+ fputs2("-J <TFMfile> JIS encoded PS font TFM name for quote, double quote with UCS mode\n", stderr);
+ fputs2("-U <TFMfile> UCS encoded PS font TFM name for quote, double quote with UCS mode\n", stderr);
+ fputs2("-3 use set3 (with UCS mode)\n", stderr);
+ fputs2("-H use half-width katakana (with UCS mode)\n", stderr);
+ fputs2("-i font ID from No.0\n", stderr);
}