*************** *** 700,707 **** break; } } if (currinf.fontp == NULL) tell_oops("non-existent font #%d", n); maxchar = currinf.fontp->maxchar; currinf.set_char_p = currinf.fontp->set_char_p; } --- 1076,1097 ---- 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; } *************** *** 935,956 **** return ERRVAL; /* previously flagged missing char */ open_font_file(currinf.fontp); Fseek(currinf.fontp->file, g->addr, 0); (*currinf.fontp->read_char)(currinf.fontp, ch); if (debug & DBG_BITMAP) print_char((ubyte) ch, g); currinf.fontp->timestamp = ++current_timestamp; } #ifdef TEXXET dvi_h_sav = DVI_H; - if (currinf.dir < 0) DVI_H -= g->dvi_adv; if (scan_frame == NULL) { #endif 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) { shrink_glyph_grey(g); } put_image(g, PXL_H - g->x2, PXL_V - g->y2); --- 1370,1465 ---- 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; } + #ifdef PTEX + if (g->tdir != TATE) { + int tmp; + if (TATE != currinf.fontp->dir) { + rotate_bitmap(&g->bitmap); + tmp = g->x; + g->x = g->bitmap.w - g->y; + g->y = tmp; + } + else { + reverse_rotate_bitmap(&g->bitmap); + tmp = g->x; + g->x = g->y; + g->y = g->bitmap.h - tmp; + } + g->tdir = TATE; + if (g->bitmap2.bits != NULL) { + free(g->bitmap2.bits); + g->bitmap2.bits = NULL; + } + #ifdef GREY + if (g->pixmap2 != NULL) { + free(g->pixmap2); + g->pixmap2 = NULL; + } + #endif + } + #endif /* PTEX */ #ifdef TEXXET dvi_h_sav = DVI_H; + dvi_v_sav = DVI_V; + pxl_v_sav = PXL_V; + #if PS + ps_h_sav = PS_H; + ps_v_sav = PS_V; + #endif + #ifdef PTEX + if (! TATE && currinf.dir < 0) { + #else + if (currinf.dir < 0) { + #endif + DVI_H -= g->dvi_adv * bbox_matrix[0][0]; + DVI_V -= g->dvi_adv * bbox_matrix[1][0]; + PXL_V = pixel_conv(DVI_V); + #if PS + PS_H -= g->dvi_adv; + #endif + } if (scan_frame == NULL) { #endif + if (bbox_scaled) + bbox_scale_bitmap(g); + else if (g->bitmap3.bits) { + free(g->bitmap.bits); + g->bitmap = g->bitmap3; + g->bitmap3.bits = NULL; + g->x = g->x3; + g->y = g->y3; + if (g->bitmap2.bits != NULL) { + free(g->bitmap2.bits); + g->bitmap2.bits = NULL; + } + #ifdef GREY + if (g->pixmap2 != NULL) { + free(g->pixmap2); + g->pixmap2 = NULL; + } + #endif + } 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, PXL_H - g->x2, PXL_V - g->y2);