1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-10-31 21:57:12 +00:00
freebsd-ports/japanese/vfxdvi300/files/xdvi18.vflib.patch.of.patch
Satoshi Asami 0b0882524b Japanese version of xdvi with vector font support.
Submitted by:	MITA Yoshio <mita@ee.t.u-tokyo.ac.jp>
1996-11-09 12:59:11 +00:00

1253 lines
36 KiB
Diff

*** xdvi18.vflib.patch.orig Thu May 30 00:15:44 1996
--- xdvi18.vflib.patch Thu May 30 00:19:04 1996
***************
*** 1,142 ****
- diff -Ncr xdvi18.original/Imakefile xdvi18/Imakefile
- *** xdvi18.original/Imakefile Fri May 6 08:01:18 1994
- --- xdvi18/Imakefile Wed Mar 1 12:39:30 1995
- ***************
- *** 2,16 ****
- * Imakefile for dvi previewer.
- */
-
- XCOMM The following five lines are the crucial ones.
- ! OSDEFS=-DMSBITFIRST
- ! OPTIONDEFS=-DUSE_PK -DBUTTONS -DGREY
- ! DEFAULT_FONT_PATH=/usr/local/tex/fonts
- DEFAULT_VF_PATH=/usr/local/tex/fonts/vf
- DEFAULT_FONT_SIZES=$(SIZES300)
-
- LOCAL_LIBRARIES_TOOL=$(VARLIBS) XawClientLibs
- DEPLIBS_TOOL=$(VARDEPLIBS) XawClientDepLibs
- LINTLIBS_TOOL=$(VARLINT) $(LINTXAW) $(LINTXMU) $(LINTXTOOL) \
- $(LINTEXTENSIONLIB) $(LINTXLIB) -lm
-
- --- 2,57 ----
- * Imakefile for dvi previewer.
- */
-
- + #define Use_KANJI
- + #undef Use_ASCIIDNP
- + #define Use_ZEIT
- + #define Use_NTTZEIT
- +
- + #include "XDvi.defs"
- + #include "XDvi.rules"
- +
- XCOMM The following five lines are the crucial ones.
- ! TEXLIB=/usr/local/lib/tex
- ! TEXFONTS=$(TEXLIB)/fonts /* where jfm files are located */
- ! PKFONTS=$(TEXLIB)/300pk
- !
- ! #ifdef Use_ZEIT
- ! VFLIB=/usr/local/lib/VFlib-2.16.2/VFlib.a
- ! #endif
- !
- ! DEFAULT_FONT_PATH=.:/usr/local/lib/nttjtex/pk:$(PKFONTS)/cmfonts:$(TEXLIB)/amspk:$(TEXFONTS)
- DEFAULT_VF_PATH=/usr/local/tex/fonts/vf
- DEFAULT_FONT_SIZES=$(SIZES300)
-
- + #ifdef Use_KANJI
- + #ifdef Use_ASCIIDNP
- + KANJI_DEFS=-DKANJI -DASCIIDNP
- + #else
- + KANJI_DEFS=-DKANJI
- + #endif /* Use_ASCIIDNP */
- + #else
- + KANJI_DEFS=
- + #endif /* Use_KANJI */
- +
- + #ifdef Use_ZEIT
- + DEFAULT_FONTCONFDIR=$(DEFAULT_VF_PATH)
- + DEFAULT_FONTCONF=$(TEXLIB)/vfonts/FontConf
- + #ifdef Use_NTTZEIT
- + ZEIT_DEFS=-DUSE_ZEIT -DNTTZEIT -DDEFAULT_FONTCONF=\"$(DEFAULT_FONTCONF)\"
- + #else
- + ZEIT_DEFS=-DUSE_ZEIT -DDEFAULT_FONTCONF=\"$(DEFAULT_FONTCONF)\"
- + #endif /* Use_NTTZEIT */
- + #else
- + ZEIT_DEFS=
- + #endif /* Use_ZEIT */
- +
- + #ifdef Use_ZEIT
- + LOCAL_LIBRARIES_TOOL=$(VFLIB) $(VARLIBS) XawClientLibs
- + DEPLIBS_TOOL=$(VFLIB) $(VARDEPLIBS)XawClientDepLibs
- + #else
- LOCAL_LIBRARIES_TOOL=$(VARLIBS) XawClientLibs
- DEPLIBS_TOOL=$(VARDEPLIBS) XawClientDepLibs
- + #endif
- LINTLIBS_TOOL=$(VARLINT) $(LINTXAW) $(LINTXMU) $(LINTXTOOL) \
- $(LINTEXTENSIONLIB) $(LINTXLIB) -lm
-
- ***************
- *** 21,26 ****
- --- 62,70 ----
- MATHLIB=-lm
- SYS_LIBRARIES=$(MATHLIB)
-
- + OSDEFS=
- + OPTIONDEFS=-DUSE_PK -DUSE_GF -DA4 -DBUTTONS -DGREY -DPS_GS \
- + $(KANJI_DEFS) $(ZEIT_DEFS)
- DEFS=$(OSDEFS) $(OPTIONDEFS)
- DEFINES=$(DEFS) -DDEFAULT_FONT_PATH=\"$(DEFAULT_FONT_PATH)\" \
- -DDEFAULT_VF_PATH=\"$(DEFAULT_VF_PATH)\" \
- diff -Ncr xdvi18.original/XDvi.defs xdvi18/XDvi.defs
- *** xdvi18.original/XDvi.defs Thu Jan 1 09:00:00 1970
- --- xdvi18/XDvi.defs Wed Mar 1 09:26:49 1995
- ***************
- *** 0 ****
- --- 1,23 ----
- + /* XDvi.defs */
- +
- + #ifdef Use_ASCIIDNP
- + #ifndef Use_KANJI
- + #define Use_KANJI
- + #endif
- + #ifdef Use_NTTZEIT
- + #undef Use_NTTZEIT
- + #endif
- + #ifdef Use_ZEIT
- + #undef Use_ZEIT
- + #endif
- + #endif /* Use_ASCIIDNP */
- +
- + #ifdef Use_NTTZEIT
- + #ifndef Use_KANJI
- + #define Use_KANJI
- + #endif
- + #ifndef Use_ZEIT
- + #define Use_ZEIT
- + #endif
- + #endif /* Use_NTTZEIT */
- +
- diff -Ncr xdvi18.original/XDvi.rules xdvi18/XDvi.rules
- *** xdvi18.original/XDvi.rules Thu Jan 1 09:00:00 1970
- --- xdvi18/XDvi.rules Wed Mar 1 09:27:30 1995
- ***************
- *** 0 ****
- --- 1,14 ----
- + /* XDvi.rules */
- +
- + #ifndef MakeDir
- + #define MakeDir(dir) -@if [ -d dir ]; then set +x; \ @@\
- + else (set -x; $(MKDIRHIER) dir); fi
- + #endif
- +
- + #ifndef InstallNonExecFile
- + #define InstallNonExecFile(file,dest) @@\
- + install:: file @@\
- + MakeDir($(DESTDIR)dest) @@\
- + $(INSTALL) -c $(INSTDATFLAGS) file $(DESTDIR)dest
- + #endif /* InstallNonExecFile */
- +
- diff -Ncr xdvi18.original/dnpzeit.c xdvi18/dnpzeit.c
*** xdvi18.original/dnpzeit.c Thu Jan 1 09:00:00 1970
--- xdvi18/dnpzeit.c Wed Mar 1 10:33:25 1995
***************
--- 1,3 ----
***************
*** 313,1403 ****
+ return(ku * 256 + ten);
+ }
+
- diff -Ncr xdvi18.original/dvi.h xdvi18/dvi.h
- *** xdvi18.original/dvi.h Sat Mar 28 05:27:15 1992
- --- xdvi18/dvi.h Wed Mar 1 09:29:10 1995
- ***************
- *** 4,11 ****
- --- 4,17 ----
-
- #define SETCHAR0 0
- #define SET1 128
- + #ifdef KANJI
- + #define SET2 129
- + #endif /* KANJI */
- #define SETRULE 132
- #define PUT1 133
- + #ifdef KANJI
- + #define PUT2 134
- + #endif /* KANJI */
- #define PUTRULE 137
- #define NOP 138
- #define BOP 139
- diff -Ncr xdvi18.original/dvi_draw.c xdvi18/dvi_draw.c
- *** xdvi18.original/dvi_draw.c Fri May 27 17:22:24 1994
- --- xdvi18/dvi_draw.c Wed Mar 1 10:37:01 1995
- ***************
- *** 363,369 ****
- --- 363,373 ----
- }
-
- static _Xconst char *dvi_table1[] = {
- + #ifdef KANJI
- + "SET1", "SET2", NULL, NULL, "SETRULE", "PUT1", "PUT2", NULL,
- + #else /* KANJI */
- "SET1", NULL, NULL, NULL, "SETRULE", "PUT1", NULL, NULL,
- + #endif /* KANJI */
- NULL, "PUTRULE", "NOP", "BOP", "EOP", "PUSH", "POP", "RIGHT1",
- "RIGHT2", "RIGHT3", "RIGHT4", "W0", "W1", "W2", "W3", "W4",
- "X0", "X1", "X2", "X3", "X4", "DOWN1", "DOWN2", "DOWN3",
- ***************
- *** 606,617 ****
- --- 610,739 ----
-
- g->y2 = g->y / shrink_factor;
- }
- +
- + static void
- + shrink_glyph_NeXT(g)
- + register struct glyph *g;
- + {
- + int rows_left, rows, init_cols, cols_left;
- + register int cols;
- + int x, y;
- + long thesample;
- + BMUNIT *old_ptr;
- +
- + /* These machinations ensure that the character is shrunk according to
- + its hot point, rather than its upper left-hand corner. */
- + g->x2 = g->x / shrink_factor;
- + init_cols = g->x - g->x2 * shrink_factor;
- + if (init_cols <= 0) init_cols += shrink_factor;
- + else ++g->x2;
- + g->bitmap2.w = g->x2 + ROUNDUP(g->bitmap.w - g->x, shrink_factor);
- + /* include row zero with the positively numbered rows */
- + cols = g->y + 1; /* spare register variable */
- + g->y2 = cols / shrink_factor;
- + rows = cols - g->y2 * shrink_factor;
- + if (rows <= 0) {
- + rows += shrink_factor;
- + --g->y2;
- + }
- + g->bitmap2.h = g->y2 + ROUNDUP(g->bitmap.h - cols, shrink_factor) + 1;
- +
- + g->image2 = XCreateImage(DISP, DefaultVisualOfScreen(SCRN),
- + DefaultDepthOfScreen(SCRN),
- + ZPixmap, 0, (char *) NULL,
- + g->bitmap2.w, g->bitmap2.h,
- + BITS_PER_BMUNIT, 0);
- + g->pixmap2 = g->image2->data = xmalloc((unsigned)
- + g->image2->bytes_per_line * g->bitmap2.h,
- + "character pixmap");
- +
- + #ifndef MSBITFIRST
- + g->image2->bitmap_bit_order = LSBFirst;
- + #else
- + g->image2->bitmap_bit_order = MSBFirst;
- + #endif
- + {
- + short endian = MSBFirst << 8 | LSBFirst;
- +
- + g->image2->byte_order = *((char *) &endian);
- + }
- + g->image2->bitmap_pad = 32;
- +
- + old_ptr = (BMUNIT *) g->bitmap.bits;
- + rows_left = g->bitmap.h;
- + y = 0;
- + while (rows_left) {
- + x = 0;
- + if (rows > rows_left) rows = rows_left;
- + cols_left = g->bitmap.w;
- + cols = init_cols;
- + while (cols_left) {
- + if (cols > cols_left) cols = cols_left;
- +
- + thesample = sample(old_ptr, g->bitmap.bytes_wide,
- + g->bitmap.w - cols_left, cols, rows);
- + NeXTPutPixel(g->image2, x, y,
- + (thesample * 100) / (shrink_factor * shrink_factor));
- +
- + cols_left -= cols;
- + cols = shrink_factor;
- + x++;
- + }
- + *((char **) &old_ptr) += rows * g->bitmap.bytes_wide;
- + rows_left -= rows;
- + rows = shrink_factor;
- + y++;
- + }
- +
- + while (y < g->bitmap2.h) {
- + for (x = 0; x < g->bitmap2.w; x++)
- + NeXTPutPixel(g->image2, x, y, 0);
- + y++;
- + }
- +
- + g->y2 = g->y / shrink_factor;
- + }
- +
- + static int NeXTd[3] = {15, 30, 50};
- +
- + void
- + set_NeXTd(s)
- + char *s;
- + {
- + int i;
- +
- + if (*s == ':') ++s;
- + for (i = 0; i < 3; i++) {
- + NeXTd[i] = atof(s);
- + if ((s = index(s, ':')) == NULL) return;
- + ++s;
- + }
- + }
- +
- + NeXTPutPixel(image, x, y, percent)
- + XImage *image;
- + int x, y, percent;
- + {
- + int pix;
- +
- + pix = percent < NeXTd[0] ? 0
- + : percent < NeXTd[1] ? 1 : percent < NeXTd[2] ? 2 : 3;
- + image->data[y * image->bytes_per_line + x / 4]
- + |= pix << (2 * (3 - x % 4));
- + }
- #endif /* GREY */
-
- /*
- * Find font #n.
- */
-
- + #ifdef ASCIIDNP
- + static unsigned int cur_TeXnumber;
- +
- + extern void define_kanjifont();
- + extern void adj_kanjiwidth();
- + #endif /* ASCIIDNP */
- +
- static void
- change_font(n)
- unsigned long n;
- ***************
- *** 627,634 ****
- --- 749,770 ----
- break;
- }
- }
- + #ifdef ASCIIDNP
- + if (currinf.fontp == NULL) {
- + if (n >> 24) {
- + define_kanjifont(n);
- + change_font(n);
- + return;
- + }
- + tell_oops("non-existent font #%d", n);
- + }
- + #else /* ASCIIDNP */
- if (currinf.fontp == NULL) tell_oops("non-existent font #%d", n);
- + #endif /* ASCIIDNP */
- maxchar = currinf.fontp->maxchar;
- + #ifdef ASCIIDNP
- + cur_TeXnumber = n;
- + #endif /* ASCIIDNP */
- currinf.set_char_p = currinf.fontp->set_char_p;
- }
-
- ***************
- *** 676,681 ****
- --- 812,820 ----
-
- if (ch > maxchar) realloc_font(currinf.fontp, WIDENINT ch);
- if ((g = &currinf.fontp->glyph[ch])->bitmap.bits == NULL) {
- + #ifdef NTTZEIT
- + if (!(currinf.fontp->flags & FONT_DNP)) {
- + #endif /* NTTZEIT */
- if (g->addr == 0) {
- if (!hush_chars)
- Fprintf(stderr, "Character %d not defined in font %s\n", ch,
- ***************
- *** 687,693 ****
- --- 826,839 ----
- return ERRVAL; /* previously flagged missing char */
- open_font_file(currinf.fontp);
- Fseek(currinf.fontp->file, g->addr, 0);
- + #ifdef NTTZEIT
- + }
- + #endif /* NTTZEIT */
- (*currinf.fontp->read_char)(currinf.fontp, ch);
- + #ifdef ASCIIDNP
- + if (cur_TeXnumber >> 24)
- + adj_kanjiwidth(currinf.fontp, cur_TeXnumber >> 24, ch);
- + #endif /* ASCIIDNP */
- if (debug & DBG_BITMAP) print_char((ubyte) ch, g);
- currinf.fontp->timestamp = ++current_timestamp;
- }
- ***************
- *** 760,765 ****
- --- 906,949 ----
- }
-
-
- + #if defined(KANJI) && !defined(ASCIIDNP)
- + long
- + set_char2(ch)
- + int ch;
- + {
- + register struct glyph *g;
- +
- + g = currinf.fontp->kglyph[jisindex(ch)];
- + if (g == NULL || g->bitmap.bits == NULL) {
- + (*currinf.fontp->read_char)(currinf.fontp, ch);
- + g = currinf.fontp->kglyph[jisindex(ch)];
- + }
- + if (shrink_factor == 1)
- + put_bitmap(&g->bitmap, PXL_H - g->x, PXL_V - g->y);
- + else {
- + #ifdef GREY
- + if (use_grey) {
- + if (g->pixmap2 == NULL)
- + if (DefaultDepthOfScreen(SCRN) == 2)
- + shrink_glyph_NeXT(g);
- + else
- + shrink_glyph_grey(g);
- + put_image(g->image2, PXL_H - g->x2, PXL_V - g->y2);
- + } else {
- + if (g->bitmap2.bits == NULL)
- + shrink_glyph(g);
- + put_bitmap(&g->bitmap2, PXL_H - g->x2, PXL_V - g->y2);
- + }
- + #else
- + if (g->bitmap2.bits == NULL)
- + shrink_glyph(g);
- + put_bitmap(&g->bitmap2, PXL_H - g->x2, PXL_V - g->y2);
- + #endif
- + }
- + return g->dvi_adv;
- + }
- + #endif /* KANJI && !ASCIIDNP */
- +
- #ifndef TEXXET
- long
- load_n_set_char(ch)
- ***************
- *** 931,936 ****
- --- 1115,1168 ----
- applicationDoSpecial(cmd);
- }
-
- + #ifdef ASCIIDNP
- + /*** compute_fc : borrowed from jvi2ps1.3j ***/
- +
- + static void
- + compute_fc(kuten, f, c)
- + register unsigned int kuten;
- + unsigned int *f, *c;
- + {
- + register int n;
- + register unsigned int ku, ten;
- +
- + *f = *c = 1;
- + ku = kuten / 256;
- + ten = kuten % 256;
- + if (ku < 0x21 || (0x29 <= ku && ku <= 0x2f) || 0x74 < ku) {
- + Fprintf(stderr, "invalid ku in jis (%x, %x)", ku, ten);
- + return;
- + }
- + if (ten < 0x21 || 0x7e < ten) {
- + Fprintf(stderr, "invalid ten in jis (%x, %x)", ku, ten);
- + return;
- + }
- + ku -= 0x20;
- + ten -= 0x20;
- + 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 if (ku <= 8) {
- + *f = ku - 1;
- + *c = ten;
- + } else if (ku <= 47) { /* Daiichi Suijun */
- + n = (ku - 0x10) * 0x5e + ten - 1;
- + *f = (n / 256) + 8;
- + *c = n % 256;
- + } else { /* Daini Suijun */
- + n = (ku - 0x30) * 0x5e + ten - 1;
- + *f = (n / 256) + 20;
- + *c = n % 256;
- + }
- + }
- + #endif /* ASCIIDNP */
- +
- #define xspell_conv(n) spell_conv0(n, current_dimconv)
-
- static void
- ***************
- *** 966,973 ****
- change_font((unsigned long) (ch - FNTNUM0));
- else {
- long a, b;
-
- ! switch (ch) {
- case SET1:
- case PUT1:
- #ifndef TEXXET
- --- 1198,1208 ----
- change_font((unsigned long) (ch - FNTNUM0));
- else {
- long a, b;
- + #ifdef ASCIIDNP
- + unsigned int f, c;
- + #endif /* ASCIIDNP */
-
- ! switch (ch) {
- case SET1:
- case PUT1:
- #ifndef TEXXET
- ***************
- *** 978,983 ****
- --- 1213,1232 ----
- #endif
- break;
-
- + #ifdef KANJI
- + case SET2:
- + case PUT2:
- + #ifdef ASCIIDNP
- + compute_fc(xnum(2), &f, &c);
- + if (cur_TeXnumber >> 24 != f)
- + change_font((cur_TeXnumber & 0xffffff) | (f << 24));
- + a = (*currinf.set_char_p)(c);
- + #else /* ASCIIDNP */
- + a = (*currinf.set_char_p)(xnum(2));
- + #endif /* ASCIIDNP */
- + if (ch != PUT2) DVI_H += a;
- + break;
- + #endif /* KANJI */
- case SETRULE:
- /* Be careful, dvicopy outputs rules with
- height = 0x80000000. We don't want any
- diff -Ncr xdvi18.original/dvi_init.c xdvi18/dvi_init.c
- *** xdvi18.original/dvi_init.c Mon May 16 11:16:57 1994
- --- xdvi18/dvi_init.c Wed Mar 1 11:20:20 1995
- ***************
- *** 75,80 ****
- --- 75,83 ----
- #define VF_PRE 247
- #define VF_ID_BYTE 202
- #define VF_MAGIC (VF_PRE << 8) + VF_ID_BYTE
- + #if defined(KANJI) && !defined(ASCIIDNP)
- + #define JFMS_MAGIC 11
- + #endif /* KANJI && !ASCIIDNP */
-
- #define dvi_oops(str) (dvi_oops_msg = (str), longjmp(dvi_env, 1))
-
- ***************
- *** 119,126 ****
- --- 122,151 ----
- {
- register struct font *f;
- register struct glyph *g;
- + #if defined(KANJI) && !defined(ASCIIDNP)
- + int n, maxchar;
-
- for (f = font_head; f != NULL; f = f->next)
- + if ((f->flags & FONT_LOADED) && !(f->flags & FONT_VIRTUAL)) {
- + maxchar = (f->flags & FONT_KANJI) ? KTABLESIZE : f->maxchar;
- + for (n = 0; n < maxchar; ++n) {
- + g = (f->flags & FONT_KANJI) ? f->kglyph[n] : &f->glyph[n];
- + if (g != NULL) {
- + if (g->bitmap2.bits) {
- + free(g->bitmap2.bits);
- + g->bitmap2.bits = NULL;
- + }
- + #ifdef GREY
- + if (g->pixmap2) {
- + XDestroyImage(g->image2);
- + g->pixmap2 = NULL;
- + }
- + #endif
- + }
- + }
- + }
- + #else /* KANJI && !ASCIIDNP */
- + for (f = font_head; f != NULL; f = f->next)
- if ((f->flags & FONT_LOADED) && !(f->flags & FONT_VIRTUAL))
- for (g = f->glyph; g <= f->glyph + f->maxchar; ++g) {
- if (g->bitmap2.bits) {
- ***************
- *** 134,139 ****
- --- 159,165 ----
- }
- #endif
- }
- + #endif /* KANJI && !ASCIIDNP */
- }
-
- /*
- ***************
- *** 195,201 ****
- --- 221,241 ----
- int magic;
- Boolean hushcs = hush_chk;
-
- + #ifdef ASCIIDNP
- + if (iskanjifont(fontp->fontname)) return False;
- + #endif /* ASCIIDNP */
- fontp->flags |= FONT_LOADED;
- + #ifdef NTTZEIT
- + if (isdnpfont(fontp->fontname)) {
- + fontp->timestamp = ++current_timestamp;
- + fontp->maxchar = maxchar = 255;
- + fontp->set_char_p = set_char;
- + fontp->file = NULL;
- + fontp->flags |= FONT_DNP;
- + read_NTT_index(fontp);
- + return False;
- + }
- + #endif /* NTTZEIT */
- fontp->file = font_open(fontp->fontname, &font_found,
- fsize, &size_found, fontp->magstepval, &fontp->filename);
- if (fontp->file == NULL) {
- ***************
- *** 216,225 ****
- Fprintf(stderr,
- "Can't find font %s at %d dpi; using %d dpi instead.\n",
- fontp->fontname, dpi, size_found);
- - fontp->fsize = size_found;
- fontp->timestamp = ++current_timestamp;
- fontp->maxchar = maxchar = 255;
- fontp->set_char_p = set_char;
- magic = two(fontp->file);
- #ifdef USE_PK
- if (magic == PK_MAGIC) read_PK_index(fontp, WIDENINT hushcs);
- --- 256,277 ----
- Fprintf(stderr,
- "Can't find font %s at %d dpi; using %d dpi instead.\n",
- fontp->fontname, dpi, size_found);
- fontp->timestamp = ++current_timestamp;
- fontp->maxchar = maxchar = 255;
- + #if defined(KANJI) && !defined(ASCIIDNP)
- + if (iskanjifont(fontp->fontname)) {
- + fontp->flags |= FONT_KANJI;
- + fontp->fsize = (float) size_found;
- + fontp->set_char_p = set_char2;
- + }
- + else {
- + fontp->fsize = (float) size_found / 5;
- + fontp->set_char_p = set_char;
- + }
- + #else /* KANJI && !ASCIIDNP */
- + fontp->fsize = (float) size_found / 5;
- fontp->set_char_p = set_char;
- + #endif /* KANJI && !ASCIIDNP */
- magic = two(fontp->file);
- #ifdef USE_PK
- if (magic == PK_MAGIC) read_PK_index(fontp, WIDENINT hushcs);
- ***************
- *** 231,236 ****
- --- 283,297 ----
- #endif
- if (magic == VF_MAGIC) read_VF_index(fontp, WIDENINT hushcs);
- else
- + #if defined(KANJI) && !defined(ASCIIDNP)
- + if (magic == JFMS_MAGIC) {
- + #ifdef USE_ZEIT
- + read_ZEIT_index(fontp);
- + #endif /* USE_ZEIT */
- + return False;
- + }
- + else
- + #endif /* KANJI && !ASCIIDNP */
- oops("Cannot recognize format for font file %s", fontp->filename);
-
- if (fontp->flags & FONT_VIRTUAL) {
- ***************
- *** 413,418 ****
- --- 474,504 ----
- return fontp;
- }
-
- + #ifdef KANJI
- + int
- + iskanjifont(font)
- + char *font;
- + {
- + if (strncmp(font, "min", 3) == 0 || strncmp(font, "nmin", 4) == 0)
- + return 1;
- + if (strncmp(font, "goth", 4) == 0 || strncmp(font, "ngoth", 5) == 0)
- + return 2;
- + return 0;
- + }
- + #endif /* KANJI */
- +
- + #if defined(ASCIIDNP) || defined(NTTZEIT)
- + int
- + isdnpfont(font)
- + char *font;
- + {
- + if (strncmp(font, "dmj", 3) == 0)
- + return 1;
- + if (strncmp(font, "dgj", 3) == 0)
- + return 2;
- + return 0;
- + }
- + #endif /* ASCIIDNP || NTTZEIT */
-
- /*
- * process_preamble reads the information in the preamble and stores
- ***************
- *** 547,553 ****
- --- 633,664 ----
- }
- else {
- register struct glyph *g;
- + #if defined(KANJI) && !defined(ASCIIDNP)
- + int n, maxchar;
-
- + maxchar = (fontp->flags & FONT_KANJI)
- + ? KTABLESIZE : fontp->maxchar;
- + for (n = 0; n < maxchar; ++n) {
- + g = (fontp->flags & FONT_KANJI)
- + ? fontp->kglyph[n] : &fontp->glyph[n];
- + if (g != NULL) {
- + if (g->bitmap.bits != NULL)
- + free(g->bitmap.bits);
- + if (g->bitmap2.bits != NULL)
- + free(g->bitmap2.bits);
- + #ifdef GREY
- + if (g->pixmap2 != NULL)
- + XDestroyImage(g->image2);
- + #endif
- + if (fontp->flags & FONT_KANJI)
- + free((char *) g);
- + }
- + }
- + if (fontp->flags & FONT_KANJI)
- + free((char **) fontp->kglyph);
- + else
- + free((char *) fontp->glyph);
- + #else /* KANJI && !ASCIIDNP */
- for (g = fontp->glyph;
- g <= fontp->glyph + fontp->maxchar; ++g) {
- if (g->bitmap.bits != NULL) free(g->bitmap.bits);
- ***************
- *** 557,562 ****
- --- 668,674 ----
- #endif
- }
- free((char *) fontp->glyph);
- + #endif /* KANJI && !ASCIIDNP */
- }
- free((char *) fontp);
- }
- ***************
- *** 678,680 ****
- --- 790,956 ----
- }
- return True;
- }
- +
- + #ifdef ASCIIDNP
- + static double kanji_width[] = {
- + 0.962216, 0.747434, 0.504013, 0.353665,
- + 0.962216, 0.747434, 0.504013, 0.353665,
- + };
- +
- + static char kanji_sym[] = {
- + 0,0,2,2,3,3,7,7,7,6,7,3,3,7,7,6,6,0,0,6,0,6,1,1,0,1,0,0,0,0,7,0,
- + 0,0,7,7,0,0,7,3,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,0,0,0,0,
- + 0,0,0,0,0,0,0,0,1,1,1,2,2,2,0,0,1,1,1,0,0,0,0,0,6,0,0,0,0,0,0,0,
- + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + };
- +
- + static char kanji_hira[] = {
- + 0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + };
- +
- + static char kanji_kata[] = {
- + 0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,
- + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- + };
- +
- + void
- + adj_kanjiwidth(fontp, subindex, c)
- + struct font *fontp;
- + unsigned int subindex;
- + ubyte c;
- + {
- + char *table;
- +
- + switch (subindex) {
- + case 1:
- + table = kanji_sym;
- + break;
- + case 3:
- + table = kanji_hira;
- + break;
- + case 4:
- + table = kanji_kata;
- + break;
- + default:
- + fontp->glyph[c].dvi_adv =
- + fontp->dimconv * (1 << 20) * kanji_width[0];
- + return;
- + }
- + fontp->glyph[c].dvi_adv =
- + fontp->dimconv * (1 << 20) * kanji_width[table[c]];
- + if (table[c] == 1)
- + fontp->glyph[c].x = -fontp->glyph[c].y / 5;
- + else if (table[c] >= 4)
- + fontp->glyph[c].x = -fontp->glyph[c].y / 10;
- + }
- +
- + /**** jsf_names[] : borrowed from jvi2ps1.3j ****/
- +
- + static 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,
- + };
- +
- + void
- + define_kanjifont(n)
- + unsigned int n;
- + {
- + unsigned int base, index;
- + register struct tn *tnp;
- + struct font *fontp, *real_fontp;
- + float fsize;
- + int len;
- + char *fontname, *name, *head;
- + int size;
- +
- + base = n & 0xffffff;
- + index = n >> 24;
- +
- + for (tnp = currinf.tn_head; tnp != NULL; tnp = tnp->next)
- + if (tnp->TeXnumber == base) {
- + real_fontp = tnp->fontp;
- + break;
- + }
- + tnp = (struct tn *)
- + xmalloc((unsigned) sizeof(struct tn), "TeXnumber structure");
- + tnp->next = tn_head;
- + tn_head = tnp;
- + currinf.tn_head = tn_head;
- + tnp->TeXnumber = n;
- + fsize = real_fontp->fsize;
- + name = real_fontp->fontname;
- + if (iskanjifont(name) == 1)
- + head = "dm";
- + else
- + head = "dg";
- + while (!isdigit(*name))
- + name++;
- + len = strlen(head) + strlen(jsf_names[index]) + strlen(name);
- + fontname = xmalloc((unsigned) len + 1, "font name");
- + Sprintf(fontname, "%s%s%s", head, jsf_names[index], name);
- + if (debug & DBG_PK)
- + Printf("Define kanjifont \"%s\"\n", fontname);
- + /*
- + * reuse font if possible
- + */
- + for (fontp = font_head;; fontp = fontp->next) {
- + if (fontp == NULL) { /* if font doesn't exist yet */
- + if (list_fonts)
- + Printf("%s at %d dpi\n", fontname, (int) (fsize + 0.5));
- + fontp = (struct font *) xmalloc((unsigned) sizeof(struct font),
- + "font structure");
- + fontp->dimconv = real_fontp->dimconv;
- + fontp->fontname = fontname;
- + fontp->fsize = fsize;
- + fontp->flags = FONT_IN_USE;
- + load_font(fontp);
- + fontp->next = font_head;
- + font_head = fontp;
- + break;
- + }
- + if (strcmp(fontname, fontp->fontname) == 0
- + && size == (int) (5 * fontp->fsize + 0.5)) {
- + /* if font already in use */
- + reuse_font(fontp);
- + free(fontname);
- + break;
- + }
- + }
- + tnp->fontp = fontp;
- + if (index == 1) {
- + struct glyph *g;
- +
- + /* dainippon symbol font; Zenkaku blank is not defined in it. */
- + g = &fontp->glyph[1];
- + g->x = 0;
- + g->y = 0;
- + g->bitmap.w = 1;
- + g->bitmap.h = 1;
- + alloc_bitmap(&g->bitmap);
- + bzero(g->bitmap.bits, g->bitmap.h * g->bitmap.bytes_wide);
- + adj_kanjiwidth(fontp, index, 1);
- + }
- + }
- + #endif /* ASCIIDNP */
- diff -Ncr xdvi18.original/font_open.c xdvi18/font_open.c
- *** xdvi18.original/font_open.c Mon May 16 11:17:14 1994
- --- xdvi18/font_open.c Wed Mar 1 09:48:16 1995
- ***************
- *** 80,85 ****
- --- 80,93 ----
- #define DEFAULT_VF_TAIL ":%f.vf"
- #endif /* VMS */
-
- + #ifdef USE_ZEIT
- + #ifndef VMS
- + #define DEFAULT_TFM_TAIL "/%f.%p"
- + #else /* VMS */
- + #define DEFAULT_TFM_TAIL ":%f.%p"
- + #endif /* VMS */
- + #endif /* USE_ZEIT */
- +
- #ifdef MAKEPKCMD
- #undef MAKEPK
- #define MAKEPK
- ***************
- *** 570,575 ****
- --- 578,591 ----
- DEFAULT_TAIL)) != NULL)
- return f;
- #endif
- + #undef FIRST_TRY
- + #define FIRST_TRY False
- + #ifdef USE_ZEIT
- + if (iskanjifont(font))
+ if ((f = formatted_open(p, font, "tfm", 0, name, FIRST_TRY,
+ DEFAULT_TFM_TAIL)) != NULL)
+ return f;
+ #endif /* USE_ZEIT */
! #ifdef SEARCH_SUBDIRECTORIES
! if (next_subdir != NULL && next_subdir->index == p) {
! next_subdir = next_subdir->next;
! ***************
! *** 702,708 ****
! --- 718,728 ----
!
! #ifdef MAKEPK
! /* Try to create the font. */
! + #ifdef ASCIIDNP
! + if ((magstepval != NOBUILD) && !isdnpfont(font)) {
! + #else /* ASCIIDNP */
! if (magstepval != NOBUILD) {
! + #endif /* ASCIIDNP */
! char mkpk[MKPKSIZE];
! Boolean used_fontname = False;
! _Xconst char *p;
! diff -Ncr xdvi18.original/jtfm.h xdvi18/jtfm.h
! *** xdvi18.original/jtfm.h Thu Jan 1 09:00:00 1970
! --- xdvi18/jtfm.h Wed Mar 1 09:50:25 1995
! ***************
! *** 0 ****
! --- 1,47 ----
! + /**********************************************
! + * Copyright (C) Atsuo Kawaguchi, 1987.
! + * (atsuo@sanken.osaka-u.junet)
! + * Modified by Y. Hayashi from jxdvi-NEWS
! + * (hayashi@me.aoyama.ac.jp)
! + **********************************************/
! + #define J_ID 0 /* id */
! + #define J_NT 1 /* number of words in the char_type table */
! + #define J_LF 2 /* length of entire file */
! + #define J_LH 3 /* length of header */
! + #define J_BC 4 /* smallest char_type */
! + #define J_EC 5 /* largest char_type */
! + #define J_NW 6 /* number of width table */
! + #define J_NH 7 /* number of height table */
! + #define J_ND 8 /* number of depth table */
! + #define J_NI 9 /* number of italic correctiuon table */
! + #define J_NL 10 /* number of glue/kern talbe */
! + #define J_NK 11
! + #define J_NG 12
! + #define J_NP 13
! +
! + struct jfm_char_type {
! + unsigned short code; /* JIS code */
! + unsigned short index; /* index to char_info */
! + };
! +
! + struct jfm_char_info {
! + unsigned char width_ix; /* index to width */
! + unsigned char height_depth_ix; /* index to height & depth */
! + unsigned char italic_ix_tag; /* index to italic & tag */
! + unsigned char remainder_ix; /* index to remainder */
! + };
! +
! + struct jfm {
! + char fn[128]; /* font name (min10, etc.) */
! + short table[(J_NP+1)]; /* table */
! + unsigned long check_sum; /* header */
! + unsigned long design_size;
! + struct jfm_char_type *type;
! + struct jfm_char_info *info;
! + unsigned long *width;
! + unsigned long *height;
! + unsigned long *depth;
! + unsigned long *italic;
! + };
! +
! + struct jfm *read_jfm();
! diff -Ncr xdvi18.original/mkconfig xdvi18/mkconfig
! *** xdvi18.original/mkconfig Fri May 6 09:38:57 1994
! --- xdvi18/mkconfig Wed Mar 1 10:19:59 1995
! ***************
! *** 21,26 ****
! --- 21,30 ----
! PSHEADERC=''
! PSHEADERO=''
! PS=''
! + ZEITC=''
! + ZEITO=''
! + NTTZEITC=''
! + NTTZEITO=''
!
! while test $# -gt 0
! do
! ***************
! *** 33,38 ****
! --- 37,44 ----
! -DPS_NEWS) NEWSC=psnews.c; NEWSO=psnews.o;
! NEWSLIBS='-u _xv_psview_pkg -lxvps -lxview -lcps -lolgx'; PS=y;;
! -DPS_GS) GSC=psgs.c; GSO=psgs.o; PS=y;;
! + -DUSE_ZEIT) ZEITC=zeit.c; ZEITO=zeit.o;;
! + -DNTTZEIT) NTTZEITC=dnpzeit.c; NTTZEITO=dnpzeit.o;;
! esac
! shift
! done
! ***************
! *** 45,52 ****
!
! if test -n "$PS"; then PSHEADERC=psheader.c; PSHEADERO=psheader.o; fi
!
! ! echo VARSRCS= $PKC $GFC $PSHEADERC $DPSC $NEWSC $GSC > Makefile.cfg
! ! echo VAROBJS= $PKO $GFO $PSHEADERO $DPSO $NEWSO $GSO >> Makefile.cfg
!
! if test $TYPE = "make"
! then
! --- 51,58 ----
!
! if test -n "$PS"; then PSHEADERC=psheader.c; PSHEADERO=psheader.o; fi
!
! ! echo VARSRCS= $PKC $GFC $PSHEADERC $DPSC $NEWSC $GSC $ZEITC $NTTZEITC > Makefile.cfg
! ! echo VAROBJS= $PKO $GFO $PSHEADERO $DPSO $NEWSO $GSO $ZEITO $NTTZEITO >> Makefile.cfg
!
! if test $TYPE = "make"
! then
! diff -Ncr xdvi18.original/xdvi.c xdvi18/xdvi.c
! *** xdvi18.original/xdvi.c Wed May 25 00:12:25 1994
! --- xdvi18/xdvi.c Wed Mar 1 11:44:27 1995
! ***************
! *** 73,78 ****
! --- 73,83 ----
! #ifndef ALTFONT
! #define ALTFONT "cmr10"
! #endif
! + #ifdef USE_ZEIT
! + #ifndef DEFAULT_FONTCONF
! + #define DEFAULT_FONTCONF "/usr/local/lib/tex/fonts/zeit/FontConf"
! + #endif
! + #endif /* USE_ZEIT */
!
! #ifndef A4
! #define DEFAULT_PAPER "us"
! ***************
! *** 211,216 ****
! --- 216,224 ----
! {"+nogrey", ".grey", XrmoptionNoArg, (caddr_t) "on"},
! {"-gamma", ".gamma", XrmoptionSepArg, (caddr_t) NULL},
! #endif
! + #ifdef USE_ZEIT
! + {"-fontconf", ".fontconf", XrmoptionSepArg, (caddr_t) NULL},
! + #endif /* USE_ZEIT */
! {"-p", ".pixelsPerInch", XrmoptionSepArg, (caddr_t) NULL},
! {"-margins", ".Margin", XrmoptionSepArg, (caddr_t) NULL},
! {"-sidemargin", ".sideMargin", XrmoptionSepArg, (caddr_t) NULL},
! ***************
! *** 378,383 ****
! --- 386,395 ----
! {"grey", "Grey", XtRBoolean, sizeof (Boolean),
! offset(_use_grey), XtRString, "true"},
! #endif
! + #ifdef USE_ZEIT
! + {"fontconf", "FontConf", XtRString, sizeof(char *),
! + offset(fontconf), XtRString, (caddr_t) DEFAULT_FONTCONF},
! + #endif /* USE_ZEIT */
! };
! #undef offset
!
! ***************
! *** 564,569 ****
! --- 576,584 ----
! {"-gamma", "gamma", SepArg, FloatArg, 1,
! "g", ADDR(_gamma)},
! #endif
! + #ifdef USE_ZEIT
! + {"-fontconf", ".fontconf", XrmoptionSepArg, (caddr_t) NULL},
! + #endif /* USE_ZEIT */
! {"-p", "pixelsPerInch", SepArg, NumberArg, 1,
! "pixels", ADDR(_pixels_per_inch)},
! {"-margins", "Margin", SepArg, StringArg, 3,
! ***************
! *** 1162,1167 ****
! --- 1177,1186 ----
! DISP = XtDisplay(top_level);
! SCRN = XtScreen(top_level);
! shrink_factor = resource.shrinkfactor;
! +
! + #ifdef USE_ZEIT
! + VF_Init(NULL);
! + #endif /* USE_ZEIT */
!
! #else /* !TOOLKIT */
!
! diff -Ncr xdvi18.original/xdvi.h xdvi18/xdvi.h
! *** xdvi18.original/xdvi.h Sat May 7 05:22:22 1994
! --- xdvi18/xdvi.h Wed Mar 1 09:59:31 1995
! ***************
! *** 6,11 ****
! --- 6,32 ----
! * The C environment *
! *******************************/
!
! + #ifdef ASCIIDNP
! + #ifndef KANJI
! + #define KANJI
! + #endif
! + #ifdef NTTZEIT
! + #undef NTTZEIT
! + #endif
! + #ifdef USE_ZEIT
! + #undef USE_ZEIT
! + #endif
! + #endif /* ASCIIDNP */
! +
! + #ifdef NTTZEIT
! + #ifndef KANJI
! + #define KANJI
! + #endif
! + #ifndef USE_ZEIT
! + #define USE_ZEIT
! + #endif
! + #endif /* NTTZEIT */
! +
! #include <X11/Xlib.h> /* include Xfuncs.h, if available */
! #include <X11/Xutil.h> /* needed for XDestroyImage */
! #include <X11/Xos.h>
! ***************
! *** 143,148 ****
! --- 164,173 ----
! #define Fclose (void) fclose
! #define Fflush (void) fflush
! #define Strcpy (void) strcpy
! + #if defined(KANJI) && !defined(ASCIIDNP)
! + #define jisindex(c) (((c) < 0x2000 || 0x7d00 < (c)) ? 0 : ((c) - 0x2000))
! + #define KTABLESIZE 0x5d00
! + #endif /* KANJI && !ASCIIDNP */
!
! /********************************
! * Types and data *
! ***************
! *** 362,367 ****
! --- 387,401 ----
! struct glyph *glyph;
! /* these fields are used by (loaded) virtual fonts */
! struct font **vf_table; /* list of fonts used by this vf */
! + #if defined(KANJI) && !defined(ASCIIDNP)
! + struct glyph **kglyph;
! + #ifdef USE_ZEIT
! + int vf;
! + #ifdef NTTZEIT
! + int index;
! + #endif /* NTTZEIT */
! + #endif /* USE_ZEIT */
! + #endif /* KANJI && !ASCIIDNP */
! struct tn *vf_chain; /* ditto, if TeXnumber >= VFTABLELEN */
! struct font *first_font; /* first font defined */
! struct macro *macro;
! ***************
! *** 372,377 ****
! --- 406,417 ----
! #define FONT_IN_USE 1 /* used for housekeeping */
! #define FONT_LOADED 2 /* if font file has been read */
! #define FONT_VIRTUAL 4 /* if font is virtual */
! + #if defined(KANJI) && !defined(ASCIIDNP)
! + #define FONT_KANJI 8 /* if font is kanji */
! + #ifdef NTTZEIT
! + #define FONT_DNP 16 /* if font is DNP kanji */
! + #endif /* NTTZEIT */
! + #endif /* KANJI && !ASCIIDNP */
!
! #define TNTABLELEN 30 /* length of TeXnumber array (dvi file) */
! #define VFTABLELEN 5 /* length of TeXnumber array (virtual fonts) */
! ***************
! *** 454,459 ****
! --- 494,502 ----
! #ifdef GREY
! Boolean _use_grey;
! #endif
! + #ifdef USE_ZEIT
! + _Xconst char *fontconf;
! + #endif /* USE_ZEIT */
! } resource;
!
! /* As a convenience, we define the field names without leading underscores
! ***************
! *** 612,621 ****
! --- 655,670 ----
! extern void put_border ARGS((int, int, unsigned int, unsigned int, GC));
! #ifndef TEXXET
! extern long set_char ARGS((wide_ubyte));
! + #if defined(KANJI) && !defined(ASCIIDNP)
! + extern long set_char2(int);
! + #endif /* KANJI && !ASCIIDNP */
! extern long load_n_set_char ARGS((wide_ubyte));
! extern long set_vf_char ARGS((wide_ubyte));
! #else
! extern void set_char ARGS((wide_ubyte, wide_ubyte));
! + #if defined(KANJI) && !defined(ASCIIDNP)
! + extern long set_char2();
! + #endif /* KANJI && !ASCIIDNP */
! extern void load_n_set_char ARGS((wide_ubyte, wide_ubyte));
! extern void set_vf_char ARGS((wide_ubyte, wide_ubyte));
! #endif
! diff -Ncr xdvi18.original/zeit.c xdvi18/zeit.c
*** xdvi18.original/zeit.c Thu Jan 1 09:00:00 1970
--- xdvi18/zeit.c Wed Mar 1 10:38:19 1995
***************
--- 174,184 ----
+ return(ku * 256 + ten);
+ }
+
+ if ((f = formatted_open(p, font, "tfm", 0, name, FIRST_TRY,
+ DEFAULT_TFM_TAIL)) != NULL)
+ return f;
+ #endif /* USE_ZEIT */
! +
*** xdvi18.original/zeit.c Thu Jan 1 09:00:00 1970
--- xdvi18/zeit.c Wed Mar 1 10:38:19 1995
***************