summaryrefslogtreecommitdiff
path: root/Build/source/texk/makejvf/main.c
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2012-01-16 14:44:56 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2012-01-16 14:44:56 +0000
commitc0b77e85fa6f50dcb376db6dad932c2147cff804 (patch)
tree8bb1fad58bf10bfa14106cbfc345ef0669d1fa00 /Build/source/texk/makejvf/main.c
parent3fa84a3afddbb0384c56c6ed1de16132a71b30a5 (diff)
upTeX 1.00 - from TANAKA Takuji <KXD02663@nifty.ne.jp>
git-svn-id: svn://tug.org/texlive/trunk@25119 c570f23f-e606-0410-a88d-b1316a301751
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);
}