名前: uchiyama 日時: 2002-03-29 15:23:44 IPアドレス: 131.113.64.*
dvipdfmでは、virtual fontを解釈する部分とdviを解釈する部分が別れているからか、 dviを解釈する側の組方向の命令がvirtual fontを解釈する側には抜けてしまっている ようです。dvipdfm-cjk-20020320 に、以下の修正を施すと、とおるになると思います。 もっとも、virtual fontでdirectionを使っているのは、文字鏡用のマクロで、縦書きを 使っているときに\PMOを使う場合のvirtual fontや、平成明朝W3外字で縦書きを 使うときくらいのものしか、世の中にはないかもしれません。文字鏡の場合には、 TrueTypeをそのままembedできるでしょうが、平成明朝W3外字は、商品のフォントを もっているか、安岡さんのMETAFONTで記述されている互換フォントを使うかになり、 いずれも欧文フォントなので、directionのサポートは、あるほうがよいように思います。 *** dvi.c.org Thu Mar 21 09:19:53 2002 --- dvi.c Fri Mar 29 14:06:41 2002 *************** *** 1006,1011 **** --- 1006,1017 ---- dev_eop(); } + void dvi_dir(SIGNED_BYTE dir) + { + dvi_state.d = dir; + dev_set_wmode((int) dvi_state.d); /* 0: horizontal, 1: vertical */ + } + static void do_dir(void) { dvi_state.d = get_unsigned_byte (dvi_file); *** vf.c.org Thu Mar 21 09:20:11 2002 --- vf.c Fri Mar 29 14:04:13 2002 *************** *** 788,793 **** --- 788,799 ---- return; } + static void vf_dir(unsigned char **start, unsigned char *end) + { + dvi_dir(unsigned_byte(start, end)); + return; + } + void vf_set_char(SIGNED_QUAD ch, int vf_font) { unsigned char opcode; *************** *** 958,963 **** --- 964,972 ---- break; case XXX4: vf_xxx4(&start, end); + break; + case DIR: + vf_dir(&start, end); break; default: if (opcode <= SET_CHAR_127) {
この書き込みへの返事: