diff -udNr xdvik//CHANGES.xdvik-jp pxdvik//CHANGES.xdvik-jp
--- xdvik//CHANGES.xdvik-jp	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//CHANGES.xdvik-jp	2010-07-25 14:56:37.610075276 +0900
@@ -0,0 +1,700 @@
+2009-07-23  TSUCHIMURA Nobuyuki  <tutimura(a)nn.iij4u.or.jp>
+
+	* main.c: Merge changes between xdvik-22.84.13 and xdvik-22.84.16,
+	again.
+
+	* ft2.c (ft2_get_bitmap): Check freetype2 error.
+	Use XDVI_WARNING() macro.
+
+	* gui/help-window.c, c-auto.in, ptexmap.c: Fix typo.
+
+2008-07-10  TSUCHIMURA Nobuyuki  <tutimura(a)nn.iij4u.or.jp>
+
+	* Merge changes between xdvik-22.84.13 and xdvik-22.84.16.
+
+2008-04-07  TSUCHIMURA Nobuyuki  <tutimura(a)nn.iij4u.or.jp>
+
+	* ptexmap.h, ptexmap.c, ft2.c (ptexmap):
+	Adjusted member variable names: jfmname -> jfm_name,
+	vfname -> font_filename, etc.
+
+2008-04-06  TSUCHIMURA Nobuyuki  <tutimura(a)nn.iij4u.or.jp>
+
+	* xdvi-ptex.sample: Enhancement.
+
+2008-02-08  TSUCHIMURA Nobuyuki  <tutimura(a)nn.iij4u.or.jp>
+
+	* ptexmap.c (XDVI_WARNING): Replace 'fprintf(stderr, ...)'
+	with 'XDVI_WARNING((stderr, ...))'.
+	Added check for duplicated entry for ptexmap.
+
+	* ptexmap.c, ptexmap.h (mapfilename): Store map filename
+	in ptexmap structure.
+
+	* version.h (JPVERSION): new version j1.40.
+	
+2008-01-30  TSUCHIMURA Nobuyuki  <tutimura(a)nn.iij4u.or.jp>
+
+	* Makefile.in, dvi-init.c, encodings.c, font-open.c, ft2.c,
+	ft2.h, xdvi.h, zeit.c: Renamed 'vfontmap' to 'ptexmap'.
+
+	* ptexmap.c, ptexmap.h, xdvi-ptex.sample:
+	Renamed from vfontmap.c, vfontmap.h, vfontmap.sample.
+
+	* configure, main.c, withenable.ac, xdvi-config.h, xdvi.c:
+	Removed 'vfontmap' options.
+
+	* dvi-draw.c, texmf/xdvi.cfg, README.xdvik-jp:
+	Added ptexmap support.
+
+	* ptexmap.c, xdvi-ptex.sample: Added new code.
+
+2008-01-22  TSUCHIMURA Nobuyuki  <tutimura(a)nn.iij4u.or.jp>
+
+	* c-auto.in, configure, configure.in, dvi-draw.c, dvi-draw.h,
+	dvi-init.c, dvi-init.h, encodings.c, font-open.c, ft2.c,
+	ft2vert.c, jfm.c, jisx0208.c, main.c, vfontmap.c, vfontmap.h,
+	withenable.ac, xdvi-config.h, xdvi.c, xdvi.h, zeit.c, zeit.h,
+	gui/help-window.c (PTEX):
+	Replaced KANJI and USE_ZEIT macros with PTEX.
+
+	* README.xdvik-jp, configure, withenable.ac:
+	Renamed option name '--disable-kanji' to '--disable-ptex'.
+	
+	* xdvi-config.h: Removed useless USE_VFONTMAP and
+	DEFAULT_FONTCONF macros.
+
+	* version.h (JPVERSION): new version j1.36.
+
+2008-01-19  TSUCHIMURA Nobuyuki  <tutimura(a)nn.iij4u.or.jp>
+
+	* zeit.c (read_ZEIT_index): Do not stop even if a font
+	is not square.
+
+	* dvi-draw.c, dvi-draw.h, dvi-init.c, dvi-init.h, xdvi.h
+	(PTEX):	Added comments '/* PTEX */' around '#ifdef PTEX .. #endif'.
+
+	* configure.in, configure (tetex-build): Removed useless macro.
+
+	* dvi-draw.c (set_char_rotate_glyph): Moved body of function.
+
+	* special.c (elepsf_special) Changed int -> size_t,
+	which is same as in epsf_special().
+
+	* version.h (JPVERSION): new version j1.35.
+
+2007-12-14  TSUCHIMURA Nobuyuki  <tutimura(a)nn.iij4u.or.jp>
+
+	* c-auto.in (uint32_t): Reverted last change
+	as imported upstream fix in texk/etc/autoconf/acgeneral.m4.
+
+	* configure.in, Makefile.in (FREETYPE2CPPFLAGS, etc.):
+	Enhanced freetype2 check (ready for TeX Live).
+
+	* configure: Updated with new acgeneral.m4 and configure.in.
+
+2007-12-09  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* c-auto.in (uint32_t): Ad-hoc fix to avoid duplicate definition
+	error.
+
+	* Merge changes between xdvik-22.84.12 and xdvik-22.84.13.
+
+2007-07-28  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* Merge changes between xdvik-22.84.10 and xdvik-22.84.12.
+
+2006-12-09  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* ft2vert.c: Added LGPL notices.
+
+2006-11-08  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* ft2.c, ft2.h, Makefile.in, vfontmap.c, xdvi.c, zeit.c:
+	Renamed "vf2ft.{c,h}" -> "ft2.{c,h}".
+
+	* version.h (JPVERSION): new version j1.34.
+
+2006-11-06  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* ft2vert.c (ft2vert_init): Added a detailed message
+	when FreeType2 can not handle GSUB table.
+
+	* chardef.h: Removed chardef.h which is not used.
+
+	* zeit.c (read_ZEIT_char):
+	Use struct 'glyph' mainly instead of struct 'bitmap'.
+	(read_ZEIT_index): Renamed 'j' to 'jfm'.
+	Use struct 'glyph' mainly instead of struct 'bitmap'.
+
+	* jfm.c (read_jfm): Replaced a chained pointer of struct 'jfm'
+	by an array of struct.
+	* vfontmap.c: Replaced a chained pointer of struct 'vfontmap'
+	by an array of struct.
+
+	* vfontmap.h, vfontmap.c, vf2ft.c (vfontmap):
+	Renamed 'fd' to 'ft2_index' in struct 'vfontmap'.
+	* dvi-init.h, zeit.c (font):
+	Renamed 'vf' to 'ft2_index' in struct 'font'.
+
+2006-11-05  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* vf2ft.c (glyph_index, glyph_to_bitmap):
+	Separated glyph_index() and glyph_to_bitmap() from VF_GetBitmap().
+	(VF_OpenFont, VF_GetBitmap): Enabled Bold/Italic font.
+	* vfontmap.c (addfontmap): Initialized 'variant' field.
+
+	* dnpzeit.c, Makefile.in: Removed dnpzeit.c.
+	* dvi-draw.c, dvi-init.c, dvi-init.h, font-open.c, vfontmap.c,
+	vfontmap.h, xdvi-config.h, zeit.h: Removed NTTZEIT macro.
+	* README.xdvik-jp: Added an announcement that NTT JTeX (direct)
+	 support was removed.
+
+	* vf2ft.c, vf2ft.h, xdvi.c, zeit.c (ft2_init, ft2_open_font,
+	ft2_get_bitmap): Renamed VF_Init() -> ft2_init(), etc.
+	Removed needless args. Let ft2_init() static.
+	* vf2ft.c (glyph_to_bitmap): Enhanced glyph_to_bitmap()
+	to fix memory leak.
+	(ft_fonts): 'ft_fonts' became an array of flexible length instead
+	of fixed length.
+	(ft_error): 'ft_error' became a locale variable.
+	(glyph_index): Simplified glyph_index().
+
+	* zeit.c, zeit.h (open_ZEIT_font, get_ZEIT_font):
+	Removed needless func open_ZEIT_font() and get_ZEIT_font().
+	Replaced xmalloc() + memset() with xcalloc().
+
+2006-06-09  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* jisx0208.c (MAXJIS, jis2uni_table): Deleted category
+	85--92 which is out of JIS X 0208.
+	* util.c, util.h, zeit.c, dnpzeit.c (order_reverse_bitmap):
+	Renamed from reverse_endian_bitmap(). In fact, this is not
+	endian problem.
+
+2006-05-17  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* configure.in, configure (freetype):
+	Added a message when freetype is found.
+
+	* font-open.c (font_open): Fixed memory leak.
+	We must check iskanjifont() first.
+
+2006-05-09  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* encodings.c (guess_encoding): Added support for
+	ENC_UNICODE_{H|V}.
+
+	* events.c (do_sigpoll): Cleared allocated memory
+	to avoid ill condition jump.
+	Upstreamed as Request ID 1484561.
+
+2006-05-04  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* dvi-draw.c (free_bitmap2): Removed free_bitmap2()
+	which leaks memory.
+	* dvi-init.c, dvi-init.h (free_bitmap2):
+	New function derived from delete_glyphs().
+	* ft2vert.c (ft2vert_init): Fixed memory leak.
+
+	* vfontmap.c, vfontmap.h (getdnpfont, isdnpfont):
+	Surround with #ifdef NTTZEIT.
+	* font-open.c (font_open): Added #ifdef NTTZEIT condition.
+
+2006-05-03  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* zeit.c, zeit.h, dnpzeit.c, util.c, util.h:
+	Moved adj_ZEIT_bitmap() in 'zeit.c' as
+	reverse_endian_bitmap() in 'util.c'.
+	* dnpzeit.c: K&R -> ANSI prototype. Removed 'register'.
+	(read_NTT_char, read_NTT_char): int -> wide_ubyte ch.
+
+	* ft2vert.c (print_offset, tag_to_string, hex_dump):
+	Surround debug part with #ifdef DEBUG .. #endif.
+
+2006-05-01  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* jfm.h, zeit.c, Makefile.in: Renamed 'jtfm.h' -> 'jfm.h'.
+	* jfm.c, zeit.c (read_jfm, read_jfm0): Moved from 'zeit.c'
+	to new file 'jfm.c'.
+	* jfm.h (read_jfm0): Removed definition of internal function.
+	* jfm.h, jfm.c (jfm): Changed member variable from fn[128] to
+	*fontname.
+	* version.h (JPVERSION): new version j1.33.
+
+2006-04-29  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* zeit.c (adj_ZEIT_bitmap): Makeing reverse_byte[]
+	by calculation instead of giving as data.
+
+2006-04-28  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* zeit.c, dnpzeit.c: Use memset() instead of bzero().
+	* zeit.c, zeit.h: Adjusted under DEBUGZEIT condition.
+	* vf2ft.c, encodings.c, dvi-draw.c, vfontmap.h:
+	Converted space -> tab.
+	* vf2ft.c, vf2ft.h, ft2vert.c: Adjusted #include headers.
+	* vfontmap.c, encodings.c: Adjusted #ifdef KANJI condition.
+	* jisx0208.c: Added #ifdef USE_ZEIT condition.
+	* dvi-draw.c: K&R -> ANSI prototype.
+	* Makefile.in: Modified dependency of headers.
+
+2006-04-27  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* vfontmap.c, vfontmap.h (first_ptr): Let 'first_ptr' private
+	variable.
+	* vfontmap.c, vfontmap.h, zeit.c, dnpzeit.c
+	(getkanjifont, getdnpfont): Renamed iskanjifont() to
+	getkanjifont() and changed its return value to the pointer of
+	structure 'vfontmap' instead of the index number.
+	Defined iskanjifont() as a macro using getkanjifont().
+	* zeit.c, zeit.h (open_ZEIT_font): Changed arg to pointer
+	instead of index number.
+
+2006-04-26  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* dvi-init.c, dvi-init.h, dnpzeit.c, encodings.c, font-open.c,
+	vfontmap.c, vfontmap.h, xdvi.c, Makefile.in (iskanjifont, isdnpfont):
+	Moved iskanjifont() and isdnpfont() from dvi-init.c to
+	vfontmap.c.
+	* ft2vert.h: Removed useless comment.
+	* ft2vert.c: Added '#ifdef USE_ZEIT' condition.
+	Converted space -> tab.
+
+2006-04-25  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* dvi-draw.c (oldmaxchar): Enlarged 'oldmaxchar' from ubyte
+	to wide_ubyte to save whole 'maxchar'.
+	This fixes a string search trouble for Japanese characters.
+	(upstreamed as Request ID 1475921)
+
+2006-04-19  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* jisx0208.c, jisx0208.h, Mailefile.in (jisx0208): New file derived
+	from "src/VF_Ftype.c" in VFlib2-2.25.6.
+	* vf2ft.c (UnicodeTbl, jis2uni): Removed jis2uni() which overlaps
+	in jisx0208.c.
+	* ft2vert.c (ft2vert_get_gid): Fixed typo in error message.
+
+2005-11-21  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* dvi-draw.c (bbox_scale_bitmap, rotate_bitmap,
+	reverse_rotate_bitmap):	Reduced "#ifdef WORDS_BIGENDIAN .. #endif"
+	by using new macros EXTREME_LEFT_BIT, EXTREME_RIGHT_BIT,
+	and SHIFT_RIGHT().
+
+2005-11-19  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* vf2ft.c (VF_GetBitmap): Clean bitmap earlier.
+	* util.c, utl.h (clear_bitmap, fill_bitmap): new function
+	* zeit.c (read_ZEIT_index): Use fill_bitmap() instead of bbox().
+	* dvi-draw.c (reverse_rotate_bitmap, rotate_bitmap,
+	bbox_scale_bitmap): Use clear_bitmap().
+	(rotate_bitmap, reverse_rotate_bitmap): K&R -> ANSI prototype.
+
+2005-11-17  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* gui/help-window.c (default_help_general): Removed VF2FT macro.
+
+2005-11-16  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* zeit.c: Converted K&R -> ANSI prototype.
+	(adj_ZEIT_bitmap): Simplified using new macro MAKE32BIT().
+	* zeit.h, jtfm.h (read_jfm0): Moved prototype.
+	* dvi-init.h (TateCorrectionTable): Removed tate adjustment.
+
+	* zeit.h, zeit.c (adj_ZEIT_bitmap, get_ZEIT_font), dnpzeit.c
+	(get_NTT_font): Omitted adjustment of bitmap padding by using 'bw'
+	parameter of VF_GetBitmap().
+	* vf2ft.c (VF_GetBitmap): Clean destination bitmap.
+
+2005-11-15  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* zeit.c (USE_PXL, jis2ccode): Removed unused macro
+	since xdvik-22.40k-j1.04.
+	(get_ZEIT_font): Removed arg 'tate'.
+	* zeit.h, zeit.c, dnpzeit.c (adj_ZEIT_bitmap):
+	Omitted #if .. #endif using dummy macro.
+	* vf2ft.c (jis2cidv): Merged into is_jis_vertical().
+
+2005-11-14  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* README.xdvik-jp: Added announce that VFlib support was removed.
+	* configure, configure.in, withenable.ac: Removed
+	'--enable-freetype' option. It is now default.
+	* configure, configure.in: Added version check of FreeType.
+	2.1.10 or latter is OK.
+	* dnpzeit.c, ft2vert.c, vf2ft.c, vfontmap.c, vfontmap.h, xdvi.c,
+	xdvi.h, zeit.c, c-auto.in, withenable.ac (VF2FT): Deleted macro.
+	* vfontmap.c (default_jfonts): Removed default_jfonts.
+	We can't know appropriate default Japanese font name.
+	* vfontmap.vflib, Makefile.in (install-data): Removed vfontmap.vflib.
+
+	* vfontmap.h, zeit.c (vfontmap): Removed member variable 'tate'.
+	* vfontmap.c (addfontmap): Removed arg variable 'tate'.
+	* zeit.c (read_ZEIT_char): Removed tate adjustment.
+	Omitted swapping bm->h and bm->w because of square metric.
+	(get_ZEIT_font): Removed code in case of (bm->h != bm->w).
+	(trim_side_blanks_in_ZEIT_bitmap): Removed.
+	(trim_tate_blanks_in_ZEIT_bitmap): Removed.
+	(get_ZEIT_font): Removed arg 'code2' which is same as 'code'.
+	* zeit.c, zeit.h (auto_shift): Removed.
+	* dvi-init.h (font): Removed member variable 'tate'.
+	* tategaki.c, Makefile.in (tategaki.o): Removed tategaki.c.
+
+2005-11-13  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* version.h (JPVERSION): new version j1.32
+	* dvi-init.c (iskanjifont): Don't ignore decimal part of tfm name.
+
+2005-11-08  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* README.xdvik-jp: Added web site URI.
+
+2005-11-07  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* Makefile.in (install-data): Specify "vfontmap.sample" etc. by
+	full path to avoid error in case of 'configure' in other directory
+	as reported by Mr. Matsuyama.
+	http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/39125.html
+
+2005-10-31  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* zeit.c (get_ZEIT_font): Canceled needless modification glyph->y
+	when vertical writing.
+
+2005-10-27  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* vf2ft.c (VF_GetBitmap): Returns ascend.
+	Rewrited bitmap transformation code.
+	* zeit.c (get_ZEIT_font): Modify glyph->y using ascend.
+	Renamed arg 'flag' -> 'tate'.
+	* version.h (JPVERSION): new version j1.31
+
+2005-10-24  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* dvi-init.c (free_bitmap2): New function.
+	Freeing g->pixmap2_gc2 is important for Fedora Core4.
+	http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/38747.html
+
+2005-10-17  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* special.c (psfig_special): Call ps_parseraw() even if
+	INSIDE_MANE_WIN to rotate characters.
+
+	* vf2ft.c: Renamed isJISVertical() -> is_jis_vertical().
+
+2005-10-16  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* vf2ft.c (VF_GetBitmap): Get vertical font only for specific
+	characters among JIS-V encode.
+	(isJISVertical): New code to decide if vertical font is needed.
+
+2005-10-14  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* xdvi.c (display_version_info): Added FreeType/VFlib information.
+
+2005-10-12  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* dvi-draw.c (bbox_scale_bitmap, rotate_bitmap,
+	reverse_rotate_bitmap): Used ADD(), SUB() macro to suppress
+	gcc warning 'dereferencing type-punned pointer will break
+	strict-aliasing rules'.
+
+	* vf2ft.c (VF_OpenFont, VF_GetBitmap): Don't exit
+	when we didn't find a font file.
+
+	* vfontmap.c, ft2vert.c: Avoid compile error with VFLib.
+
+2005-10-08  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* vfontmap.c: Modified comments and local variable names.
+	* vf2ft.c: Modified spacing. Added comments.
+	* ft2vert.c: Removed many debug prints.
+	* version.h (JPVERSION): new version j1.30
+	* vf2ft.c, vfontmap.c, vfontmap.h, vfontmap.sample:
+	Fix typo Identify -> Identity.
+
+2005-10-06  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* vfontmap.h (vfontmap): Removed 'cidv' member variable.
+	Renamed a member variable of structure 'flag' -> 'fd'.
+
+	* vfontmap.c (addfontmap): Removed 'cid' arg.
+
+	* zeit.c (open_ZEIT_font): Removed 'cid' variable.
+
+	* vf2ft.c, vf2ft.h (VF_OpenFont): Removed 'cid' arg
+	which is equivalent to (encoding == ENC_*_V).
+	Removed 'FT_Select_Charmap(face, ft_encoding_unicode)'
+	because it is default action.
+
+	* vf2ft.h, vf2ft.c, zeit.c (VF_OpenFont):
+	Change arg encoding -> vfontmap.
+	* vf2ft.c (VF_OpenFont): Replaced "fonts[fontsmax]" by pointer.
+	* vfontmap.c (addfontmap): Clear more vfontmap members.
+	(get_vfontmap_name): Adjusted spacing.
+
+	* vf2ft.c (VF_GetBitmap): Replaced "vfonts[fid]" by pointer.
+	(VF_OpenFont): Added FT_Set_Transform() for extend/slant font.
+
+	* vf2ft.c (FT_FONTS_MAX, ft_fonts_max, ft_font):
+	Renamed from FONTSMAX, fontsmax, vfont.
+	(ft_fonts): Changed to array of pointer instead of array.
+
+2005-10-05  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* dvi-init.h, vfontmap.h (vfontmap):
+	Moved struct definition form dvi-init.h to vfontmap.h.
+
+	* dvi-init.c, vf2ft.c, zeit.c, vfontmap.c, Makefile.in:
+	Modified #include and dependence of vfontmap.h.
+
+	* vfontmap.c (read_VFontmap, str2encoding),
+	vf2ft.c (ENC_*), vf2ft.h, vfontmap.sample:
+	Changed 'vfontmap' format using JIS-H, JIS-V, etc.
+	This is *** IMPORTANT *** change.
+
+2005-09-30  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* ft2vert.c, ft2vert.h: Added new files to get vertical glyph
+	of TrueType/OpenType font by supporting GSUB vrt2/vert feature.
+
+	* Makefile.in, vf2ft.c (VF_OpenFont, VF_GetBitmap):
+	test code for ft2vert.c
+
+2005-09-20b Takanori Uchiyama <uchiyama@appi.keio.ac.jp>
+	* vfontmap.c: Cancel 2005-09-20.
+2005-09-20  Takanori Uchiyama <uchiyama@appi.keio.ac.jp>
+	* vfontmap.c (read_VFontmap): Fix a bug where a font file name 
+	(not begining with '/') was not substituted to vfname.
+
+2005-09-19  Takanori Uchiyama <uchiyama@appi.keio.ac.jp>
+
+	* vf2ft.c: FT_Select_Charmap() in case of ADOBEJAPAN encoding 
+	was deleated in VF_OpenFont() 
+
+2005-05-10  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* Merge changes between xdvik-22.84.8 and xdvik-22.84.10.
+
+2005-04-25  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* vfontmap.sample, vfontmap.vflib, Makefile.in (install-data):
+	Imported from
+	http://www.nn.iij4u.or.jp/~tutimura/tex/xdvik-22.40y1-j1.21.patch.gz.
+
+	* vf2ft.c (get_font_pathname): Added new code to search font file
+	by kpse_find_file().
+	(freetype/freetype.h): Removed duplicated include (FT_FREETYPE_H).
+
+2005-04-24  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* xdvi.c (display_version_info): Replaced XDVI_VERSION
+	by XDVI_TERSE_VERSION_INFO to output Japanese version.
+
+	* vfontmap.c (get_vfontmap_name): Search vfontmap as fontmap
+	and as text by kpse_find_file().
+
+2005-04-05  Robert Hart <enxrah@nottingham.ac.uk>
+
+	* dvi-draw.c (set_rotated_rule): Fix the bug which stucks when
+	displaying dvi files that contain rotated tables.
+
+2005-03-03  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* events.c (do_pages): Added checking page number for history.
+	It was up-streamed.
+
+2005-02-24  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* texmf/XDvi: Added i18n resources for Xaw.
+	Modified fontList for Motif.
+
+2005-02-09  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* vf2ft.c (VF_GetBitmap): Removed multiple code.
+	(fonts): Removed useless #ifdef VF2FT .. #endif.
+
+2005-02-09  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* vf2ft.c (jis2cidv, VF_Init, VF_GetBitmap):
+	Suppress warnings. (cast (int), UNUSED(useless para), return 0)
+
+2005-02-07  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* dvi-draw.c (do_char): Inserted '#ifdef KANJI'.
+	Adopted better kanji font judgment by (fontp->flags & FONT_KANJI).
+
+2005-02-05  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* encodings.c (jis2unicode): New code derived from cjk2unicode.
+	(guess_encoding): Added encoding from kanji to unicode.
+
+	* version.h (JPVERSION): j1.22.
+
+2005-02-05  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* encodings.c (cjk2unicode): Removed multiple code which warns
+	that xdvi is compiled without iconv.
+	I'll send this patch upstream.
+	
+2005-02-05  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* dvi-init.c, zeit.c, dvi-init.h (first_ptr):
+	Moved definition to header.
+
+	* Makefile.in, dvi-draw.h, dvi-init.h, dvi-init.c, font-open.c
+	(isdnpfont, iskanjifont):
+	Moved definitions to proper headers.
+	Added 'const' to the parameter.
+
+2005-02-05  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* Makefile.in, dvi-draw.h, dvi-init.h, zeit.h, dvi-init.c
+	(set_char2, read_ZEIT_index):
+	Moved definitions to proper headers.
+
+2005-02-04  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* dvi-draw.c (do_char): Check kanji font case.
+	(geom_do_char): Added the case of set_char2
+	to prevent segmentation fault of find or select.
+
+2005-01-01  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* Merge changes between xdvik-22.84.5 and xdvik-22.84.8.
+
+2004-11-06  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* Merge changes between xdvik-22.84.3 and xdvik-22.84.5.
+
+2004-08-28  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* dvi-draw.c (common_set_char): Exchanged the order of parameters.
+	(TEXXET): Reversed #ifndef condition
+	to catch up with the coding style of upstream.
+
+2004-08-27  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* xdvi.h (fontconf): Removed useless variable.
+
+	* xdvi.c (DEFAULT_FONTCONF,vfontcap):
+	Removed useless macro and command line option.
+
+2004-08-27  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* gui/help-window.c (default_help_general):
+	Added renderer information about FreeType or VFlib.
+
+2004-08-27  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* READMEs/README.xdvik-22.40y1-j1.21,
+	READMEs/ChangeLog.xdvik22.40y1-j1.21.html: imported from
+	http://www.nn.iij4u.or.jp/~tutimura/tex/xdvik-22.40y1-j1.21.patch.gz.
+
+	* READMEs/README.xdvik-22.40b-j1.05.patch:
+	renamed from READMEs/README.xdvik-22.40w-j1.07.patch.
+
+	* READMEs/ChangeLog.xdvik22.40b-j1.05:
+	renamed from READMEs/ChangeLog.xdvik22.40w-j1.17.
+
+2004-08-25  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* Merge changes between xdvik-22.84.1 and xdvik-22.84.3.
+
+2004-06-28  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* Merge changes between xdvik-22.84 and xdvik-22.84.1.
+
+2004-06-11  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* Merge changes between xdvik-22.82 and xdvik-22.84.
+
+2004-04-22  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* Merge changes between xdvik-22.81.1 and xdvik-22.82.
+
+2004-03-18  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* Merge changes between xdvik-22.81 and xdvik-22.81.1.
+
+2004-03-04  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* Makefile.in (vf2ft.o): Add vf2ft.c to its requirements.
+
+2004-03-03  Nobuyuki Tsuchimura  <tutimura(a)nn.iij4u.or.jp>
+
+	* dvi-draw.c (draw_part): Removed usless code in #ifndef PTEX --
+	#endif.
+
+2004-02-27  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* Changes to change default path of vfontmap.
+
+	* Makefile.in (VFONTMAP): New macro.
+	(vflib_def): Refer the above.
+	(install-data): Use the above.
+
+	* withenable.ac (--with-vfontmap): New configure option.
+
+2004-02-27  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* Changes to fix the build problem reported by Nobuyuki Tsuchimura
+	in [xdvi-jp:00640].
+
+	* configure.in: Write the include path of FreeType library to
+	FT2_CFLAGS instead of CFLAGS.
+	(FT2_CFLAGS): New output variable.
+
+	* Makefile.in (freetype_cflags): New macro.
+	(prog_cflags): Refer the above.
+
+2004-02-26  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* configure, configure.in: Relax the existence check of FreeType
+	library.
+
+	* vf2ft.c: Include "xdvi.h" at the top of this file, in order to
+	check "VF2FT" macro.
+
+	* dvi-draw.c: Apply the patch posted by Nobuyuki Tsuchimura in
+	[xdvi-jp:00638].
+
+2004-02-25  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* dvi-draw.c (set_rotated_rule): Do not refer an abolished macro
+	`HTEX'.
+
+	* version.h, vf2ft.c, vfontmap.c: Merge changes between
+	xdvik-jp-22.40w-1.17 and xdvik-jp-22.40y1-1.21.
+
+	* Merge changes between xdvik-22.77.1 and xdvik-22.81.
+
+2003-09-29  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* vf2ft.c: Apply the change described in
+	http://www.matsusaka-u.ac.jp/~okumura/texfaq/qa/21268.html.
+
+2003-09-09  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* Merge changes between xdvik-22.77 and xdvik-22.77.1.
+
+2003-08-27  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* Merge changes between xdvik-22.76.1 and xdvik-22.77.
+
+2003-08-18  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+	* Merge changes between xdvik-22.40x and xdvik-22.76.1.
+
+	* Start this project based on
+	http://www.nn.iij4u.or.jp/~tutimura/tex/xdvik-22.40w-j1.17.patch.gz.
+
+	* See READMEs/ChangeLog.xdvik-22.40w-j1.17, for older entries.
+
+
+Local Variables:
+mode: change-log
+coding: euc-japan
+End:
diff -udNr xdvik//README.xdvik-jp pxdvik//README.xdvik-jp
--- xdvik//README.xdvik-jp	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//README.xdvik-jp	2010-07-25 14:56:37.610075276 +0900
@@ -0,0 +1,84 @@
+
+		<< xdvik-22.84.16-jp patch について >>
+
+		                               http://xdvi.sourceforge.jp/
+					       $Date: 2008/07/09 17:01:20 $
+
+
+[1] xdvik-22.84.16-jp patch とは
+
+xdvik-22.84.16 に対する日本語化パッチです．ただし，従来の日本語化パッチ
+とは大きく異なり，日本語化を本家に統合してもらうための提案としてまとめ
+ようとしています．
+
+従来の日本語化パッチには，
+
+  ・表示中の用紙サイズの変更
+  ・使いやすいページリスト
+  ・Zoom ボタン
+  ・Vi 類似のキーバインド
+
+などの様々な拡張機能が含まれていましたが，これらは全て削除され，単なる
+日本語化部分のみを残しています．
+
+[2] コンパイル・インストール
+
+xdvik-22.84.16.tar.gz にパッチを適用して，./configure ; make して下さい．
+以下のオプションが利用可能です．
+
+    --disable-ptex
+	日本語化しない
+
+和文フォントのラスタライザとして，FreeType 2.1.10 以降が必須です．
+従来の VFlib では動作しません．
+なお，FreeType 2.2.1 以降では，GSUB テーブルを得るモジュールが
+ディフォルトではコンパイルされなくなっているので，modules.cfg の
+'# AUX_MODULES \+= otvalid' のコメントをやめて有効にしておいて下さい．
+これを忘れていると縦書きができなくなります．
+
+従来の vfontmap に対応するものは，xdvi.cfg の中で
+
+	ptexmap xdvi-ptex.map
+
+のように指定します．xdvi.cfg で複数の map ファイルを指定することが
+できるようになりましたが，代わりに VFONTMAP の環境変数や，
+コマンドライン引数の -vfontmap での指定はできなくなりました．
+また，map ファイルの書式も変更しました．
+
+NTT JTeX のフォント (dm*/dg*) の直接のサポートはなくなりましたが，
+以下の仮想フォントを用いると表示できます．
+dvips/dvipdfmx にも必要なものなので入手は容易でしょう．
+ftp://ftp.math.s.chiba-u.ac.jp/tex/dvips-usage/n2bk.tar.gz
+角藤氏の W32TeX にも同様のものがあります．
+ftp://jupiter.fsci.fuk.kindai.ac.jp/pub/ptex/win32/current/vf-n2bk.tar.gz
+
+[3] メンテナ向けのメモ
+
+新しい upstream を import する手順は以下の通り．
+
+    tar xzf xdvik-x.y.tar.gz
+    cd xdvik-x.y
+    cvs -d :ext:user@cvs.sourceforge.jp:/cvsroot/xdvi import -I ! -I CVS -m "Import xdvik-x.y." xdvik xdvik xdvik-x_y
+
+configure スクリプトを更新する手順は以下の通り．
+
+    autoconf --macrodir=../etc/autoconf configure.in > configure
+
+[4] 著作権について
+
+本パッチはかなり多くの方々の総合著作物です．パッチの著作権はそれぞれの
+パッチ作成者にあります．詳しくは READMEs/ 以下のドキュメント群を参照し
+て下さい．
+
+本パッチの再配布は自由に行って構いませんが付属のドキュメント類 
+(READMEs/ 以下のファイル)はそのままの形で添付してください．また改変も
+自由に行って構いませんが，改変したものを配布する場合は，
+
+	xdvi-jp メーリングリスト <xdvi-users(at)lists.sourceforge.jp>
+
+まで連絡頂けると幸いです．バグ報告，提案，その他の連絡等も上記までお願
+いします．また，メーリングリストに参加を希望される方は
+http://lists.sourceforge.jp/mailman/listinfo/xdvi-users で手続きしてく
+ださい．
+
+/* xdvi-jp メーリングリスト <xdvi-users(at)lists.sourceforge.jp> */
diff -udNr xdvik//READMEs/ChangeLog.xdvik20a-j1.1 pxdvik//READMEs/ChangeLog.xdvik20a-j1.1
--- xdvik//READMEs/ChangeLog.xdvik20a-j1.1	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/ChangeLog.xdvik20a-j1.1	2010-07-25 14:56:37.610075276 +0900
@@ -0,0 +1,132 @@
+xdvik20a-j1.1 変更履歴
+				千葉大学総合情報処理センター 山賀正人
+
+
+* xdvik20a-j1.1 ---> xdvik20a-j1.1p1  (15/5/97)
+
+	DVIFILTERCMD に jdvi2kps を指定した場合のオプションが不正であったのを
+	修正 (xdefs.make)
+	※ すずきとおる さん のご指摘によるものです。
+
+	VI_KEY を定義したときにカーソルキーが無効になってしまうバグの修正
+	(xdvi.c)
+	※ 永江＠九工大 さん からの情報です。
+
+
+* xdvik20a-j1.1p1 ---> xdvik20a-j1.1p2  (6/6/97)
+
+	wwwlib との不整合を修正 (markring.h) および linux でコンパイル可能に
+	※ 内山＠慶應大 さん からのいただいたパッチです
+
+	竹中＠東大さんによる xdvi-17jp.960209 の color special 対応部分を適用
+	※ 上坂＠東北大さん からいただいた xdvik-18f に対するパッチを
+	   使わせていただきました。
+
+
+* xdvik20a-j1.1p2 ---> xdvik20a-j1.1p3  (14/6/97)
+
+	SunOS 4.1.x でカラー表示しようとすると core dump するバグの修正
+	(special.c)
+
+
+* xdvik20a-j1.1p3 ---> xdvik20a-j1.1p4  (18/6/97)
+
+	(ecl)epsf.sty を使って挿入する PS ファイルの height や width を
+	指定するとその指定が以後も有効になってしまうバグの修正 (special.c)
+	※ 嵯峨田＠ＮＴＴ さん からいただいたパッチです。
+
+
+* xdvik20a-j1.1p4 ---> xdvik20a-j1.1p5  (23/6/97)
+
+	BSD/OS V2.1 でもコンパイルできるように
+	(config.h, sfinternal.h, markring.c)
+	※ 萩平＠大阪大学医学部麻酔(ICU) さん からいただいたパッチです。
+
+
+* xdvik20a-j1.1p5 ---> xdvik20a-j1.1p6  (24/6/97)
+
+	epsbox.sty の BoundingBox の計算が不正になるバグの修正 (special.c)
+	※ 岡久＠愛媛大 さん によるパッチです。
+
+		fj.comp.texhax
+		<5oim44$6dj@news.cs.ehime-u.ac.jp>
+
+
+* xdvik20a-j1.1p6 ---> xdvik20a-j1.1p7  (30/6/97)
+
+	竹中＠東大さんによる xdvi-17jp.960209 の color special 対応
+	部分のうち、eclcolor.sty 対応部分を適用 (special.c)
+
+	LaTeX 2.09 + dvips で使われる colordvi.sty への対応 (special.c)
+
+
+* xdvik20a-j1.1p7 ---> xdvik20a-j1.1p8  (2/8/97)
+
+	VFlib を使うか否か、日本語多書体表示機能を使うか否か、更に
+	dvi --> ps フィルタとして何を使うかを全て configure スクリプトの
+	オプションで指定できるように (configure.in, withenable.ac, config.h)
+
+	epsbox.sty の \special に対して *.ps という名前の PostScript ファイル
+	しか受け付けないバグの修正 (special.c)
+
+
+* xdvik20a-j1.1p8 ---> xdvik20a-j1.1p9  (16/10/97)
+
+	オリジナルの xdvik-20a から存在した、epsf.sty と LaTeX2e の graphicx
+	パッケージに対する special の解釈部分 epsf_special() にあったバグを
+	修正 (special.c)
+
+
+* xdvik20a-j1.1p9 ---> xdvik20a-j1.1p10  (8/11/97)
+
+	graphicx パッケージの \resizebox や \scalebox の中で取り込んだ
+	eps ファイルを表示しない(gs などを起動しない)ようにした場合に
+	代わりに表示される枠線が正しく表示されるように (special.c,
+	psgs.c, psdps.c, psnews.c)
+
+
+* xdvik20a-j1.1p10 ---> xdvik20a-j1.1p11  (25/11/97)
+
+	vfontmap の検索について、カレントディレクトリを最優先するように
+	(vfontmap.c)
+
+	dvi ファイルを読み込んでページ数に変更があった場合は TOC のスク
+	ロールバーを含めて表示し直すように (toc.c)
+
+
+* xdvik20a-j1.1p11 ---> xdvik20a-j1.1p12  (30/12/97)
+
+	sizeof(long) が 4 より大きい場合 (OSF1 など) に対応 (zeit.c)
+
+	vfontmap まわりの無駄にメモリを消費している部分を大幅に書き換え
+	(dvi_init.c, zeit.c, vfontmap.c, xdvi.h)
+
+* xdvik20a-j1.1p12 ---> xdvik20a-j1.1p13  (04/01/98)
+
+	default の DVIFILTER を dvi2ps から dvips に変更 (config.h)
+
+	vfontmap まわりを更に修正 (zeit.c)
+
+	dvips をフィルタとして使うように -f オプションを追加 (config.h)
+
+
+* xdvik20a-j1.1p13 ---> xdvik20a-j1.1p14  (10/01/98)
+
+	xmalloc の使い方を間違っているため、Segmentation Fault する
+	バグの修正 (vfontmap.c)
+
+	※ 永江＠九工大 さん からいただいたパッチです。
+
+
+* xdvik20a-j1.1p14 ---> xdvik20a-j1.1p15  (16/01/98)
+
+	epsbox.sty で取り込んだ複数の画像を表示しようとすると
+	"Too many open files" とエラーメッセージを出して表示できない
+	バグの修正 (special.c)
+
+		fj.comp.texhax
+		<69cfvc$shr$1@picard.cs.osakafu-u.ac.jp>
+		<69hsme$64j$1@pine.cix.chiba-u.ac.jp>
+
+	sscanf() の実装を勘違いしていたために BoundingBox のスケールを
+	正しく読み取れなかったバグの修正 (special.c)
diff -udNr xdvik//READMEs/ChangeLog.xdvik20c-j1.0 pxdvik//READMEs/ChangeLog.xdvik20c-j1.0
--- xdvik//READMEs/ChangeLog.xdvik20c-j1.0	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/ChangeLog.xdvik20c-j1.0	2010-07-25 14:56:37.610075276 +0900
@@ -0,0 +1,34 @@
+xdvik20c-j1.0p0.patch 変更履歴
+                                     筑波大学 社会工学研究科 中右 浩二
+
+● xdvik20c-j1.0p0a                          (1998/4/20)
+         ファイルの添付
+             README.xdvik20c-j1.0p0.patch
+             ChangeLog.xdvik20c-j1.0
+
+● xdvik20c-j1.0p0b                          (1998/4/24)
+         xdvi のバージョン表記変更
+                                  (いちかわ＠岐阜大さん)
+
+● xdvik20c-j1.0p0c                          (1998/4/24)
+         xdvi.c の prog_cflags での文法誤りを訂正
+                      (すずき＠海洋情報研究センターさん)
+
+● xdvik20c-j1.0p0d                          (1998/5/19)
+         Makefile.in での変数名の誤りを訂正
+                       (仁科＠ATR人間情報通信研究所さん)
+
+● xdvik20c-j1.0p0e                          (1999/1/20)
+         xdvi/Makefile.in での変数名の誤りを訂正
+         xdvi/configure での文法誤りを訂正
+                                         (古高＠JNCさん)
+
+● xdvik20c-j1.0p0f			     (1999/2/28)
+	SMALL_PANEL 指定時のボタン名を復活(pl18当時分へ)
+	対象ファイル：xdvik/events.c, xdvik-20c/xdvik/toc.c
+			  (萩平＠大阪府立羽曳野病院さん)
+
+● xdvik20c-j1.0p1			     (1999/2/28)
+	JIS 補助漢字を利用するための修正
+	対象：xdvikの dvi_draw.c, dvi_init.c, vf.c, xdvi.h
+				      (内山＠慶応大さん)
diff -udNr xdvik//READMEs/ChangeLog.xdvik22.40b-j1.05 pxdvik//READMEs/ChangeLog.xdvik22.40b-j1.05
--- xdvik//READMEs/ChangeLog.xdvik22.40b-j1.05	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/ChangeLog.xdvik22.40b-j1.05	2010-07-25 14:56:37.610075276 +0900
@@ -0,0 +1,69 @@
+/* ******************* *
+ *  xdvik-jp 変更履歴  *
+ * ******************* */
+
+◆[2001-07-08] xdvik-22.40-j1.05 (by Kenta MURATA <muraken2@nifty.com>)
+
+  ○ xdvik-22.15-j1.04 を 22.40b 用に改変.
+
+◆[2000-07-18] xdvik-22.15-j1.04 (by xdvi-jp ML)
+
+  ○ 山賀さんの epsbox_special() の修正。
+  ○ 稲垣さんの縦書き仕様のフォントを指定する場合には vfontmap の第3引
+     数を付ける修正。 引数は何でもよい。
+  ○ 大河さんのbig endian なマシンで回転した文字が黒い箱になる不具合の修
+     正。
+  ○ 佐藤さんのPSNFSSを使用する場合に、\fontsize の指定が5倍異なる文字を
+     混在する際に、小さい文字が大きな文字で表示される不具合の修正。
+  ○ zoomのボタンまたはキーで拡大・縮小した後に, `10s`のように`s`でshrink
+     を指定すると最後のzoomのフォントサイズをひきずる不具合の修正(by 大河
+     さん & 内山)。
+
+◆[1999-10-04] xdvik-22.15-j1.03 (by xdvi-jp ML)
+
+  ○ ベースを xdvik-22.15 に変更。
+  ○ \scalebox{} と \rotatebox{} の special に対応。
+  ○ 日本語 TFM フォントがなくても virtual font を探すように変更。
+  ○ sizeof(int) != sizeof(long) の OS で日本語フォントを表示すると core
+    dump する事がある問題を修正。
+  ○ VI_KEY を define してると矢印キーが効かなかった問題を修正。
+  ○ PTEX と TEXXET を共存可能に。
+  ○ dvips は B4 にも対応してるぞ対策。
+  ○ ホイールマウス対応。(縦方向のみ)
+
+
+◆[1999-03-19] xdvik-22.02-j1.02 (by 渡辺@神戸大)
+
+  ○ ベースを xdvik-22.02 に変更。
+  ○ はやし@姫路工業大学 さん作の hal2 パッチの一部をマージ。(ZOOM_BUTTON)
+  ○ PRINTDVI 機能の改良(?)版 DVISEL 機能を追加。
+  ○ カラー表示時のアンチエリアシング対応。
+  ○ use_grey と use_color の共存を可能に。
+  ○ HSB カラーモデルや background special に対応。
+  ○ configure の設定項目を追加。
+  ○ ページ数のバラバラな DVI でページ数表示桁数がおかしくなるのを修正。
+  ○ 「XDvi*international: True」時に文字位置がおかしいのを修正。
+  ○ 8x16 フォントを指定すると、TOC の表示がはみ出すのを修正。
+  ○ ペーパーサイズを変えてもスクロールバーの移動範囲が古いサイズのまま
+    だったのを修正。
+  ○ 1ページ目が複数ある DVI で First ボタンで最初のページに行かないのを修正。
+  ○ VI_KEY を define した時でも man の移動キーの記述がデフォルトのまま
+    だったのを修正。
+  ○ 一つの color 指定が2ページにまたがってる場合にページ頭で元の色に
+    戻ってしまうのを修正。
+
+
+◆[1999-02-28] xdvik20c-j1.0p1 (by 中右@茨城大)
+
+ ## この系列の変更履歴は READMEs/ChangeLog.xdvik20c-j1.0 を御覧下さい。
+
+
+◆[1998-01-16] xdvik20a-j1.1p15 (by 山賀@千葉大)
+
+ ## この系列の変更履歴は READMEs/ChangeLog.xdvik20a-j1.1 を御覧下さい。
+
+
+## これより古いものに関しては混沌としています。詳しくは READMEs/ 以下の
+## ドキュメント群をお読み下さい。:-)
+
+/* xdvi-jp メーリングリスト <xdvi-jp@bi.appi.keio.ac.jp> */
diff -udNr xdvik//READMEs/ChangeLog.xdvik22.40y1-j1.21.html pxdvik//READMEs/ChangeLog.xdvik22.40y1-j1.21.html
--- xdvik//READMEs/ChangeLog.xdvik22.40y1-j1.21.html	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/ChangeLog.xdvik22.40y1-j1.21.html	2010-07-25 14:56:37.610075276 +0900
@@ -0,0 +1,322 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+<META HTTP-EQUIV="Content-Script-type" CONTENT="text/javascript">
+<TITLE>xdvi 日本語化・機能拡張パッチ</TITLE>
+<STYLE><!--
+P { line-height:130% }
+UL { line-height:130% }
+OL { line-height:130% }
+DL { line-height:130% }
+PRE { line-height:130% }
+--></STYLE>
+</HEAD>
+<BODY BGCOLOR="#333300" TEXT="#CCCCCC" LINK="#AACCFF" ALINK="#FF0000" VLINK="#CC99FF">
+<H2 ALIGN="center">xdvi 日本語化・機能拡張パッチ</H2>
+<BR>
+<BLOCKQUOTE>
+<BLOCKQUOTE>
+<UL>
+<LI><A HREF="#xdvik-22.40y1">xdvik-22.40y1</A></LI><LI><A HREF="#xdvik-22.40y">xdvik-22.40y</A></LI><LI><A HREF="#xdvik-22.40w">xdvik-22.40w</A></LI><LI><A HREF="#xdvik-22.40v">xdvik-22.40v</A></LI><LI><A HREF="#xdvik-22.40u">xdvik-22.40u</A></LI><LI><A HREF="#xdvik-22.40s">xdvik-22.40s</A></LI><LI><A HREF="#xdvik-22.40q">xdvik-22.40q</A></LI><LI><A HREF="#xdvik-22.40o">xdvik-22.40o</A></LI><LI><A HREF="#xdvik-22.40l">xdvik-22.40l</A></LI><LI><A HREF="#xdvik-22.40k">xdvik-22.40k</A></LI><LI><A HREF="#makepatch">参考：xdvik のパッチの作り方</A></LI><LI><A HREF="#update">参考：本家のバージョンアップへの追随</A></LI>
+</UL>
+</BLOCKQUOTE>
+<HR><H4><A NAME="xdvik-22.40y1">xdvik-22.40y1</A></H4>
+<UL>
+<LI><CODE>xdvik-22.40y1-j1.21.patch.gz</CODE><BR>
+    [2004/ 2/25] dvips/dvipdfm の map ファイルのコメント開始文字が '%' なので、
+	vfontmap でも、従来の '#' に加えて、
+	'%' もコメント開始文字と認識するようにしました。
+	副作用はないと思います。
+<BR>[2004/ 2/23] oxdvi をコンパイルするための Makefile.in を含めておきました。
+	texk/xdvik の中で <CODE>'mv Makefile.in.oxdvi Makefile.in'</CODE>
+	<CODE>'mv xdvi-sh oxdvi-sh'</CODE> とした上で
+	oxdvi-sh の最後の行の xdvi.bin を oxdvi.bin に変更して、
+	それから ./configure します。
+	ただし omega 特有の機能のことを良く知らないので、
+	動作確認はいいかげんです。m(__)m
+<BR>[2004/ 2/23] そのまま make; make install すると、
+	texmf/web2c/texmf.cnf を上書きしてしまい、
+	ptex が動かなくなるので、
+	cd texk/xdvik してから make install するよう
+	ドキュメントに注意書きをしておきました。
+<LI><CODE>xdvik-22.40y1-j1.20.patch.gz</CODE><BR>
+    [2004/ 2/ 9] ドキュメントを少し整備しました。
+<BR>[2004/ 2/ 9] -debug 2 で起動したとき、
+	vf2ft のフォント情報表示で core ダンプしていました。
+<BR>[2004/ 2/ 9] vfontmap の書式を少し拡張し、
+	サンプルの vfontmap も見直しました。
+	従来の vfontmap.sample を、
+	vfontmap.vflib と vfontmap.freetype に分割し、
+	どちらも texmf/xdvi/ にインストールするようにしました。
+	この二つのファイルは texmf/xdvi/vfontmap と異なり、
+	存在しても上書きします。
+	（texmf/xdvi/vfontmap には、
+	存在しなければ二つのうち適切なものをコピーします。）
+	サンプルは何が妥当かよくわからないので、
+	要望があれば是非お知らせ下さい。
+<LI><CODE>xdvik-22.40y1-j1.19.patch.gz</CODE><BR>
+    [2003/10/22] FreeType2 のヘッダを自動では見つけられないようです。
+	通りすがりさんの
+	<A HREF="http://www.matsusaka-u.ac.jp/~okumura/texfaq/qa/22702.html">[TeX Q &amp; A:22702]</A>
+	のアイデアをいただいて、
+	configure スクリプト内で freetype-config --cflags などの出力を
+	利用するようにしました。
+<BR>[2003/10/22] ステータスラインに VFlib/FreeType
+	を使っている目印を出力するようにしました。
+	vf2ft.c のエラー出力を少し親切にしました。
+<LI><CODE>xdvik-22.40y1-j1.18.patch.gz</CODE><BR>
+    [2003/9/29] xdvik-22.40y1 に update すると同時に、
+	竹のさんの <A HREF="http://www.matsusaka-u.ac.jp/~okumura/texfaq/qa/21268.html">[TeX Q &amp; A:21268]</A>
+	の修正をしておきました。
+	vf2ft 環境で全角スペースが正しく表示されるようになったはずです。
+	お知らせ＋テストありがとうございます。＞竹のさん
+</UL>
+<HR><H4><A NAME="xdvik-22.40y">xdvik-22.40y</A></H4>
+<UL>
+<LI><CODE>xdvik-22.40y-j1.17.patch.gz(155Kbyte)</CODE><BR>
+    [2003/8/20] 単純に xdvik-22.40y に当たるようにしました。
+</UL>
+<HR><H4><A NAME="xdvik-22.40w">xdvik-22.40w</A></H4>
+<UL>
+<LI><CODE>xdvik-22.40w-j1.17.patch.gz(155Kbyte)</CODE><BR>
+    [2003/4/9] 単純に xdvik-22.40w に当たるようにしました。
+</UL>
+<HR><H4><A NAME="xdvik-22.40v">xdvik-22.40v</A></H4>
+<UL>
+<LI><CODE>xdvik-22.40v-j1.17.patch.gz(155Kbyte)</CODE><BR>
+    [2003/4/7] 内山さんの UTF/OTF 縦書きパッチ
+	<A HREF="http://bi.appi.keio.ac.jp/~fml/xdvi-jp/20030328/553.html">[xdvi-jp:553]</A>
+	を取り込みました。
+<LI><CODE>xdvik-22.40v-j1.16.patch.gz(154Kbyte)</CODE><BR>
+    [2003/3/26] 内山さんの UFT パッケージ（\CIDサポート付き）パッチ
+	<A HREF="http://bi.appi.keio.ac.jp/~fml/xdvi-jp/20030325/546.html">[xdvi-jp:546]</A>
+	を取り込みました。
+<LI><CODE>xdvik-22.40v-j1.15.patch.gz(154Kbyte)</CODE><BR>
+    [2003/3/26] 内山さんの縦書 \scalebox パッチ
+	<A HREF="http://bi.appi.keio.ac.jp/~fml/xdvi-jp/20030322/541.html">[xdvi-jp:541]</A>
+	を当てました。
+<LI><CODE>xdvik-22.40v-j1.14.patch.gz(154Kbyte)</CODE><BR>
+    [2003/3/14] dvi-init.c で、コンパイル条件によって {} の対応が崩れることがありました。
+	iNOUE さんにお教えいただきました。
+	（<A HREF="http://www.r.dendai.ac.jp/cgi-bin/BB1/treebbs.cgi?log=3567">MacOSXのLaTeXに関するBBS</A>）
+<BR>[2003/3/14] 土屋さんの指摘
+	<A HREF="http://bi.appi.keio.ac.jp/~fml/xdvi-jp/20030310/532.html">[xdvi-jp:532]</A>
+	により、vfontmap.c のコメント処理を改善しました。
+<LI><CODE>xdvik-22.40v-j1.13.patch.gz(153Kbyte)</CODE><BR>
+    [2003/2/11] 勢いで修正した部分のバグを、土屋さんに
+	<A HREF="http://bi.appi.keio.ac.jp/~fml/xdvi-jp/20030211/504.html">[xdvi-jp:504]</A>
+	で指摘していたように修正しました。
+<BR>[2003/2/11] resource.smallpanel を見ていない部分が一ヶ所ありました。
+	また、btn_top_spacing も調節するようにしました。
+<BR>[2003/2/11] バージョン番号の更新を忘れてました。(^^;)
+<BR>[2003/2/10] vfontmap を kpathsea でも探すようにしました。
+	また vfontmap の close 処理が抜けてました。
+<BR>[2003/2/10] 土屋 雅稔 さんの NTT jTeX 用パッチ
+	<A HREF="http://bi.appi.keio.ac.jp/~fml/xdvi-jp/20030209/501.html">[xdvi-jp:501]</A>
+	を取り込みました。
+<LI><CODE>xdvik-22.40v-j1.12.patch.gz(153Kbyte)</CODE><BR>
+    [2003/2/3] 単純に xdvik-22.40v 対応にしました。
+	xdvi-search.el もうまく動くようになりました。
+	<BR>
+	また teTeX-src-2.0 にも同じバージョンの xdvi が含まれてますので、
+	ほぼそのまま使えるでしょう。念のため
+	teTeX-src-2.0/reautoconf を実行しておけばよいと思います。
+</UL>
+<HR><H4><A NAME="xdvik-22.40u">xdvik-22.40u</A></H4>
+<UL>
+<LI><CODE>xdvik-22.40u-j1.12.patch.gz(153Kbyte)</CODE><BR>
+    [2003/1/28] 試してみると、RPM からの make install で不都合があったので、
+	$(mandir) を $(man1dir) に変更しました。
+<BR>[2003/1/23] 単純に xdvik-22.40u 対応にしました。
+	手元の環境の都合で、まだ動作確認ができていません。すいません。
+	<BR>
+	teTeX-src-2.0-rc1 にも同じバージョンの xdvi が含まれてますので、
+	ほぼそのまま使えます。
+	configure だけ reject されますが、
+	生成元の configure.in のパッチは正常に当たっていますので、
+	teTeX-src-2.0-rc1/reautoconf を実行して再生成しておけばよいでしょう。（未確認）
+</UL>
+<HR><H4><A NAME="xdvik-22.40s">xdvik-22.40s</A></H4>
+<UL>
+<LI><CODE>xdvik-22.40s-j1.12.patch.gz(153Kbyte)</CODE><BR>
+    [2002/12/2] 単純に xdvik-22.40s 対応にしました。
+	以前のパッチがそのまま当たりました。
+	( configure だけは sh reautoconf で作り直しましたが。）
+	手元では、xdvi-search.el がうまく動かないようですが...
+</UL>
+<HR><H4><A NAME="xdvik-22.40q">xdvik-22.40q</A></H4>
+<UL>
+<LI><CODE>xdvik-22.40q-j1.12.patch.gz(153Kbyte)</CODE><BR>
+    [2002/11/22] 単純に xdvik-22.40q が動くように作業しました。
+	大きな変更点はありません。
+</UL>
+<HR><H4><A NAME="xdvik-22.40o">xdvik-22.40o</A></H4>
+<UL>
+<LI><CODE>xdvik-22.40o-j1.12.patch.gz(153Kbyte)</CODE><BR>
+    [2002/11/22] 檜垣将和さんの freetype-2.1 用パッチ
+	<A HREF="http://bi.appi.keio.ac.jp/~fml/xdvi-jp/20021117/455.html">[xdvi-jp:455]</A>
+	を適用しました。
+<LI><CODE>xdvik-22.40o-j1.11.patch.gz(153Kbyte)</CODE><BR>
+    [2002/10/20] 単純に xdvik-22.40o が動くように作業しました。
+	主な変更点は、load_font() の返り値の真偽が逆になったのに
+	対応したことと、font-open.c での日本語処理を簡略化したことです。
+	xdvik-22.40o は古いC (K&amp;R) をサポートしなくなったようですが、
+	パッチは意図的に前のバージョンとの違いが少なくなるよう、
+	プロトタイプ宣言は変更していません。
+</UL>
+<HR><H4><A NAME="xdvik-22.40l">xdvik-22.40l</A></H4>
+<UL>
+<LI><CODE>xdvik-22.40l-j1.11.patch.gz(152Kbyte)</CODE><BR>
+    [2002/9/26] 山田＠あいはらさんが乙藤@東北学院大学さんの
+	<A HREF="ftp://ftp.cs.tohoku-gakuin.ac.jp/pub/TeX/TG-Local-TeX/xdvi-ft2.tar.gz">xdvi-ft2.tar.gz</A>
+	の取り込みを行って下さいました。
+	<A HREF="http://bi.appi.keio.ac.jp/~fml/xdvi-jp/20020925/445.html">[xdvi-jp:445]</A>
+	の成果をそのままいただきました。
+	詳しくは texk/xdvik/READMEs/README.vf2ft を御覧下さい。
+<LI><CODE>xdvik-22.40l-j1.10.patch.gz(126Kbyte)</CODE><BR>
+    [2002/9/16] dvi-draw.c の set_char() と set_char2()
+	の共通する処理を関数にくくり出しました。
+<BR>[2002/9/16] スペース／バックスペースでも、
+	現在の表示ページ番号が TOC に常に表示されるようにしました。
+<LI><CODE>xdvik-22.40l-j1.09.patch.gz(126Kbyte)</CODE><BR>
+    [2002/9/14] ヘルプメッセージに表示されるオプション -zoombutton, -shrinkbutton
+	は使えないので、表示しないようにしました。
+<BR>[2002/9/14] events.c の Act_zoom の処理を見直して、
+	Act_shrink_to_dpi へのパッチになるように書き換えました。
+<BR>[2002/9/14] コマンドラインオプション -smallpanel（小さいパネル）、
+	+smallpanel（標準サイズのパネル）を有効にし、
+	$TEXMF/xdvi/XDvi の xdvi.smallPanel: False/True を有効にしました。
+<BR>[2002/9/14] ヘルプメッセージのオプションの単位がおかしくなっていました。
+<BR>[2002/9/14] プロトタイプ宣言を少し追加しました。
+<LI><CODE>xdvik-22.40l-j1.08.patch.gz(126Kbyte)</CODE><BR>
+    [2002/9/5] xdvik-22.40l 対応になるように修正しました。
+	余分な修正は一切してないつもりです。
+</UL>
+<HR><H4><A NAME="xdvik-22.40k">xdvik-22.40k</A></H4>
+<UL>
+<LI><CODE>xdvik-22.40k-j1.08.patch.gz(126Kbyte)</CODE><BR>
+    [2002/9/5] xdvi-config.h の調整でエンバグして PAGENUM が無効になっていました。
+<BR>[2002/8/29] geom_do_rule() に縦書き処理を加えて、
+	src-special が正常に動くようにしました。
+	ついでに、put_rule() の縦書き処理を簡略化しました。
+<BR>[2002/8/28] 歴史的役目を終えた(?) shrink_glyph_NeXT() を削除しました。
+<BR>[2002/8/27] PAGENUM には TOC が必要なので、xdvi-config.h を調整しました。
+	MARKPAGE には TOC が不要のはずなので、
+	一部の MAX_PAGE を RINGSIZE に置き換えました。
+	ステータスラインのメッセージを少し増やしました。
+<BR>[2002/8/27] ウインドウ幅の計算部分を見直しました。
+	マクロ XTRA_WID はもう使われてなくて、
+	変数 xtra_wid で動的に計算してるようです。
+	ボタンの縦の間隔が２ドット広すぎるようでした。
+<LI><CODE>xdvik-22.40k-j1.07.patch.gz(127Kbyte)</CODE><BR>
+    [2002/8/26] xdvik-22.40k-j1.06 とは、
+	プロトタイプ宣言を追加、不要変数を削除するなどして、
+	gcc -Wall の警告が少くなるように修正しただけで、
+	機能的にはまったく同じはずです。
+<LI><CODE>xdvik-22.40k-j1.06.patch.gz(126Kbyte)</CODE><BR>
+    [2002/8/26] #ifdef PAGENUM の囲い方に不適切な部分がありました。
+<BR>[2002/8/23] 下記処理でメモリリークをしていたのを修正しました。
+	（オリジナルにも、以前の日本語パッチにも、バグがありました。
+	  オリジナルの作者にも報告しておきました。
+	→20.40l で採用になりました。）
+<BR>[2002/8/20] delete_glyphs() がエンバグしてた
+	（color を使うと極端に速度が落ちる）のを修正しました。
+	また、日本語フォントに関する struct の初期化を強化して、
+	アルファベットフォントとの共通処理を増やしました。
+<BR>[2002/8/19] dvi-init.c の SATO Tatsuya さんの
+	load_font() の修正を簡略化しました。
+<BR>[2002/8/19] dvi-init.c の job_id を読み込む部分には
+	PTEX 用の処理が不要と思われるので、除去しました。
+<BR>[2002/8/19] delete_glyphs() の修正が不十分だったので、更に直しました。
+<LI><CODE>xdvik-22.40k-j1.05.patch.gz(127Kbyte)</CODE><BR>
+    [2002/8/16] #define TVERSION XDVERSION/**/JPVERSION の /**/ を "" に変更しました。
+<BR>[2002/8/9] 縦書きができなかったのを修正しました。
+<BR>[2002/8/7] 内山さんによる delete_glyphs() の修正を加えました。
+<BR>[2002/7/31] パッチ部分の共通な処理を、関数やマクロに置き直した上で、
+	<EM>src special 日本語対応を行いました</EM>。
+	縦書きでも一応動くようにしました。
+<LI><CODE>xdvik-22.40k-j1.04.patch.gz(128Kbyte)</CODE><BR>
+    [2002/7/17] xdvik の日本語パッチを update しました。
+	<A HREF="http://bi.appi.keio.ac.jp/~fml/xdvi-jp/20020121/413.html">xdvi-jp ML の 中井@yo.rim さん</A> の
+	<A HREF="http://www.yo.rim.or.jp/~tnakai/xdvik-22.40g-japanese.patch.gz">xdvik-22.40g-japanese.patch.gz</A>
+	を、単体配布の xdvik-22.40k に当て直しただけです。
+	日本語 DVI には src special がうまく動きません。
+</UL>
+<p>以前の変更履歴は READMEs/ChangeLog.xdvik22.40b-j1.05 を御覧下さい。
+</p>
+
+<HR><H4><A NAME="makepatch">参考：xdvik のパッチの作り方</A></H4>
+<P>　参考までに、私の xdvik の日本語パッチの作り方を紹介します。
+（この方法が正しいと言うわけではありません。）
+</P>
+<P>　オリジナルの xdvik-22.40o が xdvik-22.40o.orig/ 以下に、
+製作中の日本語版が xdvik-22.40o/ 以下にあるとします。
+</P>
+<UL>
+<LI>差分をとるのは xdvik-22.40o/texk/xdvik 以下のみです。
+<LI>xdvik-22.40o/texk/xdvik/configure は自動生成します。
+    xdvik-22.40o/reautoconf を実行してやればよいです。
+    （適切なバージョンの autoconf が必要と思われます。
+      警告はいくつか出ても大丈夫のようです。）
+    <BR>
+    なお、日本語パッチには gcc のコンパイルオプション -Wall を追加するため、
+    xdvik-22.40o/texk/etc/autoconf/acspecific.m4
+    の 107 行めに -Wall を書き加えてから reautoconf を実行しています。
+<LI>xdvik-22.40o/texk/xdvik/Makefile.in
+    の依存関係も自動生成すべきところでしょうが、
+    以前から手動で作業していたようなので、
+    そのまま引き継いでいます。（適切ではないかもしれません）
+<LI>xdvik-22.40o/texk/xdvik で <CODE>'make distclean'</CODE>
+    を実行すれば、差分に不要なバイナリファイル等を消去できるよう
+    Makefile.in を調整しています。
+<LI>パッチを更新したときは、以前のパッチと差分をとりましょう。
+    １つや２つの作業間違いが必ず見つかります。;-p
+<LI>patch コマンドを実行する時に -T オプションを付けておくと、
+    ファイルのタイムスタンプも再現できるようです。
+    以前のタイムスタンプを維持できると、
+    パッチの差分を取るときに差が少なくてよいです。
+</UL>
+<P>　バイナリが動くようになったとすると、具体的な手順は以下の通りです。
+</P>
+<DIV ALIGN="center"><TABLE WIDTH="80%" BORDER="3" CELLPADDING="5" CELLSPACING="5">
+<TR><TD><PRE># 不要ファイルを削除
+(cd xdvik-22.40o/texk/xdvi; rm *~; make distclean)
+
+# 差分をとる
+diff -ruN xdvik-22.40o.orig/texk/xdvik/ xdvik-22.40o/texk/xdvik/ &gt; tmp
+
+# 以前のパッチと比較する
+zdiff -bBw xdvik-22.40o-j1.11.patch.gz tmp | less
+
+# 問題なければ採用
+mv tmp xdvik-22.40o-j1.12.patch
+gzip -9 xdvik-22.40o-j1.12.patch</PRE></TD></TR></TABLE></DIV><BR>
+<HR><H4><A NAME="update">参考：本家のバージョンアップへの追随</A></H4>
+<P>　本家にバージョンアップがあった場合、
+日本語バージョンをどうやって追随するか、
+２通りのやりかたがあるでしょう。
+</P>
+<UL>
+<LI>(1)古い日本語パッチを、新しいソースに適用、
+	reject された部分を手作業であて直す。
+<LI>(2)本家の差分パッチを作り、日本語バージョンの古いものに適用、
+	reject された部分を手作業であて直す。
+</UL>
+<DIV ALIGN="center"><TABLE BORDER="2" CELLPADDING="5">
+	<TR><TH>&nbsp;<TH>本家<TD><TH>日本語バージョン</TR>
+	<TR><TH>旧<TD>xdvik-22.40o<TD><TD>xdvik-22.40o-jp</TR>
+	<TR><TH><TD><TD><TD ALIGN="center">↓(2)</TR>
+	<TR><TH>新<TD>xdvik-22.40p<TD>→(1)<TD>(xdvik-22.40p-jp)</TR>
+</TABLE></DIV>
+<P>　どちらにしろ手作業が必要ですが、どちらか楽な作業をやるのがよいでしょう。
+どちらが楽かは、ソースファイル１つごとに大きく異なる場合があるようです。
+経験的には (2) のほうが楽なように思います。
+</P>
+</BLOCKQUOTE>
+<!-- footer -->
+<HR>
+<ADDRESS><A HREF="http://www.nn.iij4u.or.jp/~tutimura/">土村 展之</A>(tutimura@nn.iij4u.or.jp)</ADDRESS>
+</BODY>
+</HTML>
diff -udNr xdvik//READMEs/HEADERS.DOC pxdvik//READMEs/HEADERS.DOC
--- xdvik//READMEs/HEADERS.DOC	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/HEADERS.DOC	2010-07-25 14:56:37.610075276 +0900
@@ -0,0 +1,170 @@
+Path: tkyex1.phys.s.u-tokyo.ac.jp!news.u-tokyo.ac.jp!eccnews!ecc-s401!s31514
+From: s31514@secc.ecc.u-tokyo.ac.jp (s31514)
+Newsgroups: fj.comp.texhax
+Subject: a patch of xdvi PL18 for ASCII Nihongo TeX and VFlib 2.x
+Message-ID: <S31514.95Mar1175527@ecc-1000.ecc.u-tokyo.ac.jp>
+Date: 1 Mar 95 08:55:27 GMT
+Sender: news@secc.ecc.u-tokyo.ac.jp
+Distribution: fj
+Organization: Educational Computer Centre, The Univ. of Tokyo
+Lines: 354
+Nntp-Posting-Host: ecc-1000
+
+岡川＠東京大学です。
+
+今朝は外が雪で、外に出るのがおっくうだったので、
+xdvi-17miyu.patch.beta6 の ASCII日本語TeX対応 + VFlib 対応部分を
+xdvi PL18 に対応させたものを作成しました。(勿論、VFlib 2.x 対応に
+してあります。)
+
+簡単なテストをしただけですが、(ASCII日本語TeX, NTT JTeX) で作成したdvi
+を、(DNPフォント, VFlib)で表示する事に全ての組み合わせ(NTT JTeX+VFlib,
+etc.) で成功しました。
+
+
+
+インストールに関する memo
+=========================
+・VFlib 2.15.2 以降が必要です。(私は VFlib 2.16.2 を使用しました。)
+・patchして、Imakefile を環境にあわせて変更し、xmkmf, make するだけです。
+・コンパイル時に通ってしまったので、下記のパッチには含まれていませんが、
+  zeit.c に #include "VF.h" を加えて、VFlib の VF.h を読み込まないと
+  コンパイルできない場合があり得ます。
+・porting & test は Linux 1.1.84 + gcc 2.5.8 で行いました。
+  Linux + gcc 2.6.x では xdvi PL17+miyu.patch+VFlib 2.x はうまくコンパ
+  イルできない事が報告されておりますし、このパッチを当てた xdvi PL18 も
+  同様でした。(dvi_draw.cがうまくコンパイルできていないらしい)
+
+＃「おっくう」と言いつつ、postする為に学校に来てしまいました。(^^;
+=======================================================================
+                                    岡川 宏＠東京大学理学部物理学科４年
+                      okagawa3%tkyvax.decnet@tkyux.phys.s.u-tokyo.ac.jp
+                                                        (1995年3月まで)
+                       okagawa%tkyvax.decnet@tkyux.phys.s.u-tokyo.ac.jp
+                                                        (1995年4月より)
+=======================================================================
+
+Newsgroups: fj.comp.texhax
+Path: tkyex1.phys.s.u-tokyo.ac.jp!news.u-tokyo.ac.jp!wnoc-tyo-news!wnoc-sfc-news!wnoc-kyo-news!aist-nara!odins-suita!icluna!uchiyama
+From: uchiyama@bacchus.in.kobe-u.ac.jp (Takanori Uchiyama)
+Subject: Re: a patch of xdvi PL18 for ASCII Nihongo TeX and VFlib 2.x
+Sender: news@icluna.kobe-u.ac.jp (news-admin)
+Message-ID: <UCHIYAMA.95Mar13185933@in5at3.bacchus.in.kobe-u.ac.jp>
+In-Reply-To: miyu@shiratori.riec.tohoku.ac.jp's message of 13 Mar 1995 05:46:33 GMT
+Date: Mon, 13 Mar 1995 09:59:33 GMT
+Distribution: fj
+References: <S31514.95Mar1175527@ecc-1000.ecc.u-tokyo.ac.jp>
+	<UCHIYAMA.95Mar10222526@in5at3.bacchus.in.kobe-u.ac.jp>
+	<MIYU.95Mar13144633@pigeon.shiratori.riec.tohoku.ac.jp>
+Organization: Akazawa Lab. Dept. Comp. & Systems, Fac. Eng., Kobe Univ., Kobe,
+	JAPAN
+Lines: 3813
+
+内山＠神戸大です.
+
+先日, ポストした epsbox.sty を使って差し込んだ EPS を表示するパッチで
+すが, 投稿前に余計なことをしたばかりに, エンバグしてしてしまいました.
+dvi2ps-j に含まれている epsf.sty を使って差し込んだ EPS を表示するパッ
+チを付加したので, 欲張って vi ライクなキーバインド VI_KEY, DVI ファイ
+ルをメニュー形式で選択する SELFILE のパッチも付加しました. 
+
+オリジナルの xdvi PL18 のソースに, 岡川さんのパッチをあてた後に, 以下
+のパッチをあててください. 先日の epsbox.sty のためのパッチは, あてない
+でください.
+
+Imakefile に VI_KEY, SELFILE を指定しています. 適宜はずなり残すなりし
+て下さい. 
+
+それから, PL18 からは, リーソスを読むようになっています. 
+私は	
+/usr/X11/lib/X11/app-defaults/XDvi に
+XDvi.shrinkFactor: 5
+XDvi.postscript: off
+などのように記述しておきました. 前者は, shrink size を 5 に(400dpi の
+フォントを使っている場合に, 1280x1024 で A4 が画面におさまる), 後者は,
+起動時には EPS や PS の表示を行なわない指定です.
+
+それから, X server が 16bpp の時にとんでもない量のメモリを要求した件は,
+なぜか発生しなくなってしまいました. きっと私がぼけていたのでしょう.
+
+In article <MIYU.95Mar13144633@pigeon.shiratori.riec.tohoku.ac.jp> miyu@shiratori.riec.tohoku.ac.jp (Shigeki "miyu" SUGIURA) writes:
+
+   miyu17beta.6 は少なくともバグありです。多分それが原因でしょう。
+   miyu17beta.pre7 用のパッチが出ています。
+
+もう一度 beta.pre7 で試してみます. どうもありがとうございます.
+
+Newsgroups: fj.comp.texhax
+Path: tkyex1.phys.s.u-tokyo.ac.jp!news.u-tokyo.ac.jp!wnoc-tyo-news!aist-nara!odins-suita!icluna!uchiyama
+From: uchiyama@bacchus.in.kobe-u.ac.jp (Takanori Uchiyama)
+Subject: Re: a patch of xdvi PL18 for ASCII Nihongo TeX and VFlib 2.x
+Sender: news@icluna.kobe-u.ac.jp (news-admin)
+Message-ID: <UCHIYAMA.95Mar27154143@in5at3.bacchus.in.kobe-u.ac.jp>
+In-Reply-To: uchiyama@bacchus.in.kobe-u.ac.jp's message of Thu, 23 Mar 1995 08:46:43 GMT
+Date: Mon, 27 Mar 1995 06:41:43 GMT
+Distribution: fj
+References: <S31514.95Mar1175527@ecc-1000.ecc.u-tokyo.ac.jp>
+	<UCHIYAMA.95Mar10222526@in5at3.bacchus.in.kobe-u.ac.jp>
+	<MIYU.95Mar13144633@pigeon.shiratori.riec.tohoku.ac.jp>
+	<UCHIYAMA.95Mar13185933@in5at3.bacchus.in.kobe-u.ac.jp>
+	<UCHIYAMA.95Mar13221522@in5at3.bacchus.in.kobe-u.ac.jp>
+	<UCHIYAMA.95Mar14102353@in5at3.bacchus.in.kobe-u.ac.jp>
+	<UCHIYAMA.95Mar14134016@in5at3.bacchus.in.kobe-u.ac.jp>
+	<G3P012.95Mar23152316@aqua3a.cfi.waseda.ac.jp>
+	<UCHIYAMA.95Mar23174643@in5at3.bacchus.in.kobe-u.ac.jp>
+Organization: Akazawa Lab. Dept. Comp. & Systems, Fac. Eng., Kobe Univ., Kobe,
+	JAPAN
+Lines: 2567
+
+内山＠神戸大です.
+
+In article <UCHIYAMA.95Mar23174643@in5at3.bacchus.in.kobe-u.ac.jp> uchiyama@bacchus.in.kobe-u.ac.jp (Takanori Uchiyama) writes:
+
+   先日, xdvipl18_epsbox+elepsf+selfile+vikey.patch をポストした後,
+   markpage+toc+printdvi を追加するパッチをメールで送っていただいたので, 
+   それもあてて今は使っています(640x480 でもボタンが画面からはみだすこと
+   がないようにするパッチも含まれています). 
+
+上記のパッチを欲しいという方からメールをいただきましたので, パッチを送っ
+ていただきました古畑＠IBM基礎研さんの御許可の下, 代理投稿いたします.
+
+Newsgroups: comp.text.tex
+Path: tkyex1.phys.s.u-tokyo.ac.jp!news.u-tokyo.ac.jp!newssinet!daffy!uwvax!zebu.heurikon.com!news.sprintlink.net!howland.reston.ans.net!math.ohio-state.edu!scipio.cyberstore.ca!vanbc.wimsey.com!news.bc.net!newsserver.sfu.ca!fornax!botein.cs.sfu.ca!patrice
+From: patrice@botein.cs.sfu.ca (& Belleville)
+Subject: Re: latex2e psTricks and xdvi
+In-Reply-To: ram@cs.arizona.edu's message of 02 Apr 1995 02:05:18 GMT
+Message-ID: <PATRICE.95Apr5095907@botein.cs.sfu.ca>
+Sender: patrice@cs.sfu.ca (Patrice Belleville)
+Organization: Simon Fraser University
+References: <RAM.95Apr1190518@baskerville.cs.arizona.edu>
+Date: 05 Apr 1995 16:59:07 GMT
+Lines: 329
+
+In article <RAM.95Apr1190518@baskerville.cs.arizona.edu> ram@cs.arizona.edu (Achyutram Bhamidipaty) writes:
+
+ > I'm using the  very useful psTricks set  of macros by Timothy Van Zandt
+ > and I'm running into an annoyance.
+ > 
+ > When I use some of the special macros I can  no longer use xdvi to view
+ > my files. Is there something I need  to do to make  this work? Or is it
+ > an impossibility? Thanks for any clues or hints.
+
+	The  problem is  that pstricks requires   a PS header  file  to be
+loaded. It is normally  included at the  beginning  of your .ps file,  and
+contains  code required  used  later on by PStricks.   Since xdvi does not
+support the  "header=" special, it does not  load this file and  hence the
+bits of postscript included by PStricks fail.
+
+	I modified  the latest version   of xdvi to handle  the  "header="
+special. HOWEVER my changes only work  with gs at  the moment (if you want
+to use DPS or News, you would need to adapt  the changes I made to psgs.c,
+which  simply consist  of  detecting  when the  PostScript interpreter  is
+initialized and calling psh_includeall). I have included the context diffs
+below. You will need to apply them and recompile xdvi.
+
+Disclaimer:  these  changes seem to  work   for me.  Xdvi  might still get
+confused at times, but I believe that this is not caused  by the changes I
+made.
+
+							Good luck,
+								   Patrice
diff -udNr xdvik//READMEs/InternalVars pxdvik//READMEs/InternalVars
--- xdvik//READMEs/InternalVars	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/InternalVars	2010-07-25 14:56:37.610075276 +0900
@@ -0,0 +1,56 @@
+------------------------------------------------------------------------
+            <<<< Internal Variable for printdvi patch >>>>
+------------------------------------------------------------------------
+
+%A : like %T; '=' is put on each page number (assumed dviselect)
+%a : like %t; '=' is put on each page number (assumed dviselect)
+ B
+ b
+ C
+%c : current page number
+%D : temporal directory (environment var. TMPDIR; default is "/tmp")
+%d : directory where DVI file is placed (directory of pathname)
+ E
+%e : end page number of region; maximum of %c and %m
+%F : filename of DVI file (basename of pathname)
+%f : filename of DVI file (full pathname)
+%G : like %O; page-to-page form (=p1:p2) (assumed dviselect)
+%g : like %o; page-to-page form (=p1:p2) (assumed dviselect)
+ H
+ h
+ I
+ i
+ J
+ j
+%K : like %L; '=' is put on each page number (assumed dviselect)
+%k : like %l; '=' is put on each page number (assumed dviselect)
+%L : marked page list; marked order; separated by " "
+%l : marked page list; marked order; separated by ","
+ M
+%m : last marked page number
+ N
+ n
+%O : marked page list; sorted; page-to-page form (p1-p2); separated by " "
+%o : marked page list; sorted; page-to-page form (p1-p2); separated by ","
+%P : print command (environment var. PRINTCMD; default is "lpr -r -s -P%p")
+%p : printer name (environment var. PRINTER; default is "lp")
+ Q
+ q
+%R : DVI filter (environment var. DVIFILTER; default is "dvi2ps -o %Z")
+%r : proces id
+ S
+%s : start page number of region; minimum of %c and %m
+%T : marked page list; sorted; separated by " "
+%t : marked page list; sorted; separated by ","
+ U
+ u
+ V
+ v
+ W
+ w
+ X
+ x
+ Y
+ y
+%Z : paper size specified with -paper option (tranlated with table)
+%z : paper size specified with -paper option (lower case; ex. "a4")
diff -udNr xdvik//READMEs/README.jp+toc+hal2 pxdvik//READMEs/README.jp+toc+hal2
--- xdvik//READMEs/README.jp+toc+hal2	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/README.jp+toc+hal2	2010-07-25 14:56:37.610075276 +0900
@@ -0,0 +1,57 @@
+やーどうもどうも。このパッチは xdvi-17 にあてるパッチでっす(ver1.2)。
+
+[ver1.1]
+○竹中@東大さんの xdvi-17jp.960209 
+  と
+○小野@早稲田大さんの xdvi-17+markpage+toc+printdvi+paper (+patch1)
+  を含み、更に +α したパッチでっす。
+
+  どこが +α かというと、前々から button 周りが気に入らなかったので、
+
+○"shrink1" とかのボタンをなくし、xv とか他のツールでもよく使われている、
+  "<"で縮小、">"で拡大 の機能をつけ、button 部もそれに対応させた
+
+  と、ちょっといぢってたんです。ただこの "<" ">" は、+markpage… パッチで、
+  toc 部で page ジャンプ(文章頭へ/文章末へ)に使われていたので、
+  今回、toc 部での page ジャンプは、文章頭="T"(Top)/文章末="B"(Bottom)に
+  変更させて頂いたですます。
+
+  あとさらに、画面の小さいノートパソコンで xdvi を使うと、折角の button が
+  画面下に切れて使えねー(苦笑)ってことがあるので、問題なく使えるように、
+  button を小さくなるように書き換えていたんですが、今回、
+
+○古畑@ＩＢＭ基礎研さん
+
+  が xdvi-18 でやっておられるのを参考にして、Imakefile で #define SMALL_PANEL
+  すると、button+toc んとこが小さくなる様に書き換えたでっす。
+
+○toc部のページ数表記、tasai-ussy パッチを使うと実ページ数になるけど、
+  表記時、最初のページ番号と最後のページ番号を取ってきて、桁数見て
+  出力format作ってるんで、ページ番号がバラバラな .dvi なら、途中にいくら
+  100000p とかあっても、最後のページが 2p とかなら、1桁でしか出力されない。
+  そこんとこを直した。
+
+さらに、変数の定義とかの細かい部分をちょいと直して、またオリジナルの現行の
+xdvi-21を参考にして、多少の修正を加えたものなのねん。本当は全面的に xdvi-21
+化しようかと思ったけど、どーも暑くて集中力がなくて…(苦笑)。
+一応 FreeBSD-2.1.5 の ports を参考にしてますが、FreeBSD でちゃんと通るか
+どうかは一抹の不安…。前に作ってた version は変なところで compile がコケて
+たもので(苦笑)。さ、今晩帰って確かめようっと。
+Solaris2.3(gcc)/HPUX-9.07(gcc。ccはX関連でmake出来ん)では通るのは
+確認してますです。あ、Imakefile はうちの環境に合わせてあるので、
+各自、修正してちょ。
+
+あとは xdvi-21から、\special コマンドに対応するルーチン(special.c)を
+組み込むくらいかな…って面倒だなぁ(苦笑)。
+
+[ver1.2]
+ってことで FreeBSD 対応にしてみました。…って何も変わりはないかも(苦笑)。
+一応、FreeBSD-2.2.2-RELEASE(+PAO-970616) で確かめてます。
+/usr/include/* と package で install した /usr/X11R6/include と conflict
+する typedef とかあるです。と、PRINTDVI は使わない方がいいかも知れません
+です。dvi2ps とかの設定も必要だし、含めると make depend でエラーったり、
+いろいろ文句いわれるし(苦笑)。
+えと、うちの環境は、600dpi で、platex-2e(2.09互換)で使ってます。
+TEXLIB とか tfm(jfm)の PATH とかいろいろ変えてちょ。
+
+/* はやし はるひさ hayashi@himeji-tech.ac.jp 08Aug97 */
diff -udNr xdvik//READMEs/README.jp-patch pxdvik//READMEs/README.jp-patch
--- xdvik//READMEs/README.jp-patch	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/README.jp-patch	2010-07-25 14:56:37.614074299 +0900
@@ -0,0 +1,778 @@
+
+            << xdvi PL17 jp-patch について >>
+
+                                        1996/02/09
+                                        竹中 浩
+                                        lh36112@hongo.ecc.u-tokyo.ac.jp
+                                        KHB11235@niftyserve.or.jp
+
+
+
+[0] 目次
+
+        [1] xdvi PL17 jp-patch とは
+
+        [2] インストール
+          [2.1] ファイルの入手
+          [2.2] パッチをあてる
+          [2.3] コンパイルの準備
+            [2.3.1] Imakefile の編集
+            [2.3.2] Makefile の生成
+          [2.4] コンパイル
+          [2.5] インストール
+          [2.6] トラブル・シューティング
+          [2.7] xdvi-17+markpage+toc+printdvi+paper patch を使いたい
+
+        [3] 各パッチの詳細
+          [3.1] ASCII pTeX の縦組み拡張 DVI への対応
+          [3.2] ps ファイルのカラーでのプレビュー
+          [3.3] postscript special の追加
+          [3.4] color special 対応
+          [3.5] DVI ファイル中の文字列の検索機能
+          [3.6] -remote オプションの追加
+          [3.7] VFlib version 2.x への対応
+          [3.8] less 互換のマーク機能
+          [3.9] tpic2.2 への対応。
+          [3.10] DVI ファイルをメニュー形式で選択する
+          [3.11] ASCII "日本語" TeX 対応
+          [3.12] Zeit の書体倶楽部などのアウトライン・フォント対応
+          [3.13] ghostscript を利用して postscript ファイルを表示する
+          [3.14] dvips 附属の epsf.sty への対応
+          [3.15] jdvi2kps で処理する psfrag への対応 (バグあり)
+          [3.16] "PS Fig" ボタンの追加
+
+        [4] 著作権について
+
+
+[1] xdvi PL17 jp-patch とは:
+
+  かつて fj に投稿された xdvi 用の様々なパッチをベースに、東北大学の杉
+  浦茂樹さんが xdvi PL17 用に作られたパッチ・キット
+  miyu patch for xdvi PL17 に、いくつかの機能を加えたものが本パッチ・
+  キット xdvi PL17 jp-patch です。
+
+  miyu-patch for xdvi PL17 から追加された機能は、
+
+    1.  ASCII pTeX の縦組み拡張 DVI への対応。
+    2.  ps ファイルのカラーでのプレビューを可能にした。
+    3.  理解できる postscript special を増やした。
+    4.  color special への対応
+    5.  DVI ファイル中の文字列の検索機能。
+    6.  -remote オプションの追加。
+    7.  VFlib version 2.x への対応。
+    8.  less 互換のマーク機能。
+
+  の 8 点です。また、従来から miyu-patch に含まれていた、
+
+    9.  tpic2.2 への対応。
+    10. DVI ファイルをメニュー形式で選択する。
+    11. ASCII "日本語" TeX 対応。
+    12. Zeit の書体倶楽部などのアウトライン・フォント対応。
+    13. ghostscript を利用して postscript ファイルを表示する。
+    14. dvips 附属の epsf.sty に対応するためのパッチ
+    15. jdvi2kps で処理する psfrag への対応 (バグあり)
+    16. "PS Fig" ボタンの追加
+
+  は、本パッチでもそのまま引き継いでいます。 (ただし 13. については 
+  miyu-patch のものと同等のルーチンを竹中が新たに作り直しています。
+
+  それぞれのパッチの詳細、特に本パッチ・キットで新たに加わった 8 つに
+  ついては、「[3] 各パッチの詳細」を参照してください。
+
+[2] インストール
+
+  [2.1] ファイルの入手
+
+    インストールに最低限必要なファイルは、
+
+      * xdvi-17.tar.gz
+        オリジナルの xdvi PL17 のソースです。
+        ftp://ftp.tohoku.ac.jp/pub/tex/dviwares/xdvi/PL17 などの
+        anonymous ftp などから入手できます。
+
+      * xdvi-17jp.YYMMDD.gz
+        本パッチ・キット。"YYMMDD" には 960209 のような日付が入ります。
+
+    さらにアウトライン・フォントを使用する場合には角川＠広島大学さんが
+    作成された VFlib の version 2 以降がインストールされている必要があ
+    ります。miyu patch にあった version 1.x 用のルーチンは残してありま
+    すが ([3.7] 参照)、ちゃんとテストしてないので、上手く動くかどうか
+    保証できません。
+
+    VFlib のインストールについては、VFlib 付属のドキュメントに従ってく
+    ださい。VFlib は
+
+      ftp://gull.se.hiroshima-u.ac.jp/pub/VFlib
+
+    などの anonymous ftp などから入手できます。
+
+    また GNU のツールである gzip と patch も必要です。これを持ってない
+    人は少ないと思いますが、持っていない人はこれを機会に入手しておきま
+    しょう。いずれ絶対に必要になるはずです。
+
+  [2.2] パッチをあてる
+
+    * まず適当な作業用ディレクトリを作成して、そこに移動します。
+    * 次に xdvi-17.tar.gz を展開します。
+    * 最後に本パッチを適用します。
+
+    たとえばカレント・ディレクトリに xdvi-17.tar.gz と本パッチが存在
+    し、カレント・ディレクトリの下に xdvi-17 という名前で作業用の ディ
+    レクトリを作成する場合には、以下の例のように作業します。
+
+        < 実行例 >
+
+	% set srcdir=$pwd
+	% mkdir xdvi-17
+	% cd xdvi-17
+	% gzip -dc $srcdir/xdvi-17.tar.gz | tar xf -
+	% gzip -dc $srcdir/xdvi-17jp.960209.gz | patch -p1
+
+  [2.3] コンパイルの準備
+
+    システムに応じて Imakefile を編集した後、xmkmf を実行して Makefile 
+    を生成します。
+
+    [2.3.1] Imakefile の編集
+
+      インストール時に設定が必要と思われる項目は Imakefile の先頭にま
+      とめてあります。以下の説明に従い、自分の環境にあわせて Imakefile
+      を編集してください。
+
+          実際には、ここで説明しているより多くの項目を設定できますが、
+          普通はそれらの項目はデフォルトから変更する必要はないと思いま
+          す。 もしも変更したい場合には、オリジナルの xdvi PL17 に附属
+          している README を参照してください。
+
+
+    * 日本語対応関係の項目
+
+        Use_Kanji, Use_ASCIIDNP, Use_ZEIT, Use_NTTZEIT
+
+        の 4 つがあります。以下の 4 通りのケースの中から、自分の環境に
+        あった設定を選んでください。
+
+        ----------------------------------------------------------------
+        1. NTT-JTeX で作成された DVI ファイルを NTT-JTeX 用の大日本印
+           刷フォント (または渡辺フォントなど互換フォント) を用いて表
+           示し、ASCII TeX には対応しない場合
+
+           --> すべてを #undef してください。
+        ----------------------------------------------------------------
+        2. NTT-JTeX、ASCII "日本語" TeX、および pTeX で作成された DVI 
+           ファイルを NTT-JTeX 用の大日本印刷 (互換) フォントを用いて
+           表示する場合
+
+           --> Use_KANJI と Use_ASCIIDNP を #define
+               それ以外は #undef
+        ----------------------------------------------------------------
+        3. NTT-JTeX で作成された DVI ファイルは NTT-JTeX 用の大日本印
+           刷 (互換) フォント、ASCII "日本語" TeX および pTeX で作成さ
+           れた DVI ファイルは Zeit の書体倶楽部などのアウトライン・フォ
+           ントを用いて表示する場合
+
+           --> Use_KANJI と Use_ZEIT を #define
+               それ以外は #undef 
+        ----------------------------------------------------------------
+        4. NTT-JTeX, ASCII "日本語" TeX, および pTeX で作成された DVI 
+           ファイルは Zeit の書体倶楽部などのアウトライン・フォントを
+           用いて表示する場合
+
+           --> Use_KANJI, Use_ZEIT, Use_NTTZEIT を #define
+               それ以外は #undef 
+        ----------------------------------------------------------------
+
+        Use_ASCIIDNP と Use_ZEIT は同時に指定することはできません。も
+        し両方とも同時に指定された時には、Use_ASCIIDNP が優先します 
+        (2. と同じになる)。
+
+        上記の 2, 3, 4 のどれかを選んだ場合には、さらに ASCII pTeX の
+        縦組み拡張 DVI ファイルに対応させることができます。対応させた
+        い場合には、Use_PTEX を #define してください。対応させたくない
+        場合には #undef です。
+
+
+    * Use_MAKEPK
+
+        Use_MAKEPK を #define すると、xdvi は足らないフォントがあった
+        時に MakeTeXPK を用いて自動的にフォントを作成します。
+
+        MakeTeXPK がインストールされるディレクトリ MAKEPK_BINDIR と
+        makeTeXPK で作られたフォントを格納するディレクトリ 
+        MAKEPK_DESTDIR を設定してください。
+
+
+    * Use_SELFILE
+
+        Use_SELFILE を #define すると、xdvi から DVI ファイルを開く時
+        にメニューを使って選択することができるようになります。
+
+
+    * Use_PS, Use_PSCOLOR, GHOSTSCRIPT_BINDIR
+
+        Use_PS を #define すると ghostscript を用いて Postscript の図
+        を表示することができるようになります。この場合、ghostscript が
+        存在するディレクトリのパスを GHOSTSCRIPT_BINDIR に指定してくだ
+        さい。
+
+        Use_PSCOLOR を #define すると、カラーの図はカラーで表示されま
+        す。
+
+
+    * Use_COLOR
+
+        Use_COLOR を #define すると、latex2e の graphics パッケージや、
+        eclcolor.sty などで使用されている color special 命令の一部 
+        ([3.4] 参照) に対応して、カラーでの表示が可能になります。
+
+
+    * Use_VIKEY
+
+        ウィンドウ移動のキー・バインディングを vi ライクなものにしたい
+        場合には #define してください。
+
+
+    * Use_SEARCH
+
+        dvi ファイル中の文字列検索機能を有効にしたい場合には #define 
+        してください。
+
+
+    * Use_REMOTE
+
+        -remote オプションを使った他プログラムからの xdvi の制御機能を
+        有効にしたい場合には #define してください。
+
+
+    * フォントのサーチ・パスの設定
+
+        xdvi が表示に使うビットマップ・フォント (GF, PK, PXL フォント) 
+        を探すパスは、
+
+          DEFAULT_FONT_PATH=.:/usr/local/lib/tex/fonts/pk
+
+        などのように DEFAULT_FONT_PATH に指定します。
+
+        日本語表示にアウトライン・フォントを使用する場合には、ここで 
+        JFM ファイル (ex. min10.tfm, goth9.tfm, etc) の存在するディレ
+        クトリも一緒に指定しておく必要があります。
+
+        さらに、検索機能を使用する場合には欧文フォントの TFM の存在す
+        るディレクトリも指定した方がいいです。
+
+
+    * virtual font のサーチ・パスの設定
+
+        virtual font を使用する場合には、virtual font のサーチ・パスを
+
+          DEFAULT_VF_PATH=.:/usr/local/lib/tex/fonts/vf
+
+        などのように、DEFAULT_VF_PATH に設定してください。
+
+
+    * DEFAULT_VFONTCAPDIR
+
+        アウトライン・フォントを使用する場合には、VFlib 2.x の設定ファ
+        イル vfontcap が存在するディレクトリを DEFAULT_VFONTCAPDIR に
+        指定してください。
+
+
+    * 表示解像度の設定
+
+        xdvi の表示の解像度は、
+
+          BDPI=300
+
+        のように BDPI に指定します。単位は DPI です。この指定が表示に
+        使われるフォントの解像度の指定にもなります。
+
+
+    * デフォルトの縮小率の設定
+
+        300dpi などのフォントをそのまま画面で表示すると、普通は大きす
+        ぎるので xdvi は適当に縮小して表示します。縮小率のデフォルトは、
+
+          DEFAULT_SHRINK=4
+
+        のように DEF_SHRINK に指定します。数字が大きいほど縮小率が大き
+        くなります。好みにもよりますが、
+
+          解像度が 240DPI なら DEFAULT_SHRINK=3
+                   300DPI なら DEFAULT_SHRINK=4
+                   400DPI なら DEFAULT_SHRINK=5
+
+        あたりが適当です。
+
+
+    * MSBITFIRST, BMLONG, BMSHORT
+
+        これらの設定は使用するマシンに依存します。
+
+        MSBITFIRST は Intel 80x86 以外では大抵の場合 #define する必要
+        があります。
+
+        BMLONG, BMSHORT は設定してもしなくても動作しますが、適切に設定
+        すると実行速度が著しく改善される場合があります。
+
+
+    [2.3.2] Makefile の生成
+
+      Imakefile の設定がすんだら Makefile の生成を行ないます。
+
+	  < 実行例 >
+
+	% xmkmf
+	% make includes
+	% make depend
+
+  [2.4] コンパイル
+
+    設定が終ったらコンパイルを行ないます。
+
+        < 実行例 >
+
+      % make
+
+
+  [2.5] インストール
+
+    正常にコンパイルできたら, 実行ファイルおよびマニュアルのインストー
+    ルを行ないます。
+
+        < 実行例 >
+
+      % make install
+      % make install.man
+
+    必要ならば, さらに MakeTeXPK のインストールも行なってください。
+
+        < 実行例 >
+
+      % make install.MakeTeXPK
+
+
+  [2.6] トラブル・シューティング
+
+    * 日本語の文字が全て黒い四角で表示されてしまう。
+      
+      xmkmf して生成された Makefile の中に "-DNARROWPROTO" という記述
+      がないかどうか調べてみてください。もし、あった場合にはこれを削除
+      すると治る場合が多いようです。
+
+    * ghostscript の呼び出しに失敗する。
+
+      ghostscript.c の先頭に、
+
+      #define	USE_DUP2
+      #define	USE_FCLOSE
+
+      という部分があります。これを適当に #undef して試してみてください。
+      それでもコケたら、竹中に連絡してください。
+
+
+  [2.7] xdvi-17+markpage+toc+printdvi+paper patch を使いたい
+
+    従来の miyu-patch のあたった xdvi PL17 に対するパッチとして、
+    小野康一さん他による xdvi-17+markpage+toc+printdvi+paper patch が
+    あります。
+
+    このパッチを利用されている方は多いと思いますので、(ちゃんとテスト
+    したわけではありませんが) 本パッチでもこれを利用できるように一応配
+    慮しておきました。
+
+    とりあえず、xdvi-17+markpage+toc+printdvi+paper patch 付属のドキュ
+    メントを参考にして、ただし miyu-patch の代わりに本パッチを使って、
+    ソース・ファイルを準備してください。
+
+        < 実行例 >
+
+	% set srcdir=$pwd
+	% mkdir xdvi-17
+	% cd xdvi-17
+	% gzip -dc $srcdir/xdvi-17.tar.gz | tar xf -
+	% gzip -dc $srcdir/xdvi-17jp.960209.gz | patch -p1
+        % gzip -dc $srcdir/xdvi-pl17+markpage+toc+printdvi+paper.patch.gz | patch -p1
+
+
+    すると、Imakefile, xdvi.c, util.c の 3 つのファイルについては、パッ
+    チに失敗するはずです。このうち util.c については無視しても問題あり
+    ません。残りの Imakefile と xdvi.c について、Imakefile.rej,
+    xdvi.c.rej を参照して、手でパッチを当ててください。大した分量では
+    ないはずです。
+
+    あとは xdvi-17+markpage+toc+printdvi+paper patch のドキュメント、
+    および本ドキュメントを参照して、インストールすれば良いはずです。
+
+    なお、 xdvi-17+markpage+toc+printdvi+paper patch の markpage 機能
+    を有効にして make した場合には、「less 互換のマーク機能 ([3.8])」
+    は無効になります。
+
+
+[3] 各パッチの詳細
+
+  [3.1] ASCII pTeX の縦組み拡張 DVI への対応
+
+        原作者: 竹中＠東大心理
+                  xdvi-17.miyu+ptex.patch       (1995/11; fj.comp.texhax)
+                  xdvi-17.miyu+ptex.patch.fixed (1995/11; fj.comp.texhax)
+
+    ASCII pTeX が生成する縦組み拡張命令を含んだ DVI ファイルへの対応で
+    す。1995/11 版では縦組み拡張の仕様の解釈に誤りがあり、pLaTeX の一
+    部のマクロを使った際に正しく表示されませんでしたが、この version 
+    から治っています。
+
+    また Use_ASCIIDNP を指定して大日本印刷 (互換) フォントで表示した場
+    合にもちゃんと(?)表示できるようにしました。
+
+    本パッチで Use_PTEX を #define して縦組み拡張 DVI を表示する際には
+    横組み用のフォントを適当に修正して使っています。このための修正情報
+    のテーブルが tategaki.c に入ってます。大抵の場合にはデフォルトの設
+    定で、そこそこの表示ができるのではないかと思いますが、納得できない
+    方はこの情報を修正してみてください。
+
+       struct TateCorrection TateCorrectionTable[] = {
+	       { TCOR_NOP, 0, 0 },
+	       { TCOR_AUTOSHIFT, 0, 0 },	/* 2122 '、' */
+	       { TCOR_AUTOSHIFT, 0, 0 },	/* 2123 '。' */
+	       { TCOR_SHIFT, 64, 96 },	/* 2124 '，' */
+	       { TCOR_SHIFT, 64, 96 },	/* 2125 '．' */
+	       { TCOR_SHIFT, 42, 42 },	/* 2126 '・' */
+	       { TCOR_ROTATE, 0, 0 },	/* 2127 '：' */
+			  :
+
+    最初の項目(要素)で修正方法を指示します。指定可能な値は以下の通りで
+    す。
+
+	TCOR_NOP            縦組み用の修正をしない。
+	TCOR_AUTOSHIFT      縦組み用に位置の移動を自動で行なう。
+	TCOR_SHIFT          位置の移動を手動で行なう。
+	TCOR_ROTATE         右に90度回転する。
+	<文字コード (JIS)>  その文字のフォントで代替します。
+
+    2 番目、3 番目の要素の値が関係あるのは TCOR_SHIFT を指定した場合の
+    みです。この場合、2/3 番目の要素の値がそれぞれ x/y 方向への移動量
+    となり、+/- 128 でフォントの高さの分だけ位置が左右/上下にずれます。
+
+    デフォルトの設定では TCOR_AUTOSHIFT と TCOR_ROTATE だけを使ってい
+    ます。
+
+  [3.2] ps ファイルのカラーでのプレビュー
+
+        原作者: 竹中＠東大心理
+                  (fj 未投稿)
+
+    全然大したパッチじゃないです。単に GHOSTVIEW_COLORS プロパティを設
+    定するようになっただけです。
+
+    xdvi PL20 と同様の -gspalette オプション、および palette リソース
+    を用意しました。
+
+        "Monochrome" を指定するとモノクロ表示
+        "Greyscale"  を指定するとグレイスケール表示
+        "Color" を指定するとカラー表示
+
+    になります (実際は最初の一文字だけで判断してます)。
+
+  [3.3] postscript special の追加
+
+        原作者: 上原＠京大基研さん <uehara@yukawa.kyoto-u.ac.jp>
+                  (fj 未投稿)
+
+                竹中＠東大心理
+                  (fj 未投稿)
+
+    上原＠京大基研さんから epsfig.sty 対応化パッチをいただきましたので、
+    追加しました。
+
+    あと、eclepsf.sty 対応の追加と、dvips 用の ps special の解釈を
+    より dvips のそれに近づけるようにする変更を加えています。
+
+  [3.4] color special 対応
+
+        原作者: 竹中＠東大心理
+                  (fj 未投稿)
+
+    dvips, dvi2ps の color special に対応させました。ただし、HSB カラー・
+    モデルには対応してません。
+
+     * HSL -> RGB なら知ってるんですけど、HSB->RGB の変換式が分からな
+       いです。誰か教えてください。
+
+    dvips では named カラー・モデルも使えますが、この場合の色名は X の
+    色名として解釈します。
+
+    Use_COLOR を指定して make してもデフォルトではカラー表示をしないの
+    で、オプション -usecolor 、または リソース colorSpecial: True で、
+    カラー表示を指示する必要があります。この際、グレイスケール・アンチ
+    エイリアシングはオフになります。
+
+  [3.5] DVI ファイル中の文字列の検索機能
+
+        原作者: 竹中＠東大心理
+                  (fj 未投稿)
+
+    '/' キーで前方検索、'?' キーで後方検索ができるようになります。
+
+    日本語が入力できないことも含めて、本当は検索文字列の入力部をもっと
+    ちゃんと作ってやんなきゃいけないんでしょうが、検索機能はどっちかと
+    いうと直接使うよりは [3.6] の -remote 機能のために作ったものなので、
+    手を抜いてます。ごめんなさい。なにもないよりマシだと思ってください。
+    とりあえず、検索文字列を画面表示するためのフォントは .font リソー
+    スを見て決定するようにはなってます。
+
+    検索文字列中の '\c' は 'c' と解釈します。また、空白文字、および単
+    独で現われたハイフンは無視します。ハイフンを無視するのは 
+    hyphenation 対策として、DVI ファイル中のハイフン文字を無視している
+    からです。無視されるのは '-' だけなので、'--', '---' はその通りに
+    打てば検索可能です。
+
+    一方、DVI ファイルに含まれているテキストの方ですが、TeX で使われる
+    フォントは、ものによってコーディング・スキームが違ったり、記号ばっ
+    かりが含まれていたりするので、DVI ファイル中で使用されているフォン
+    トの TFM ファイルからコーディング・スキームの情報を取得しています。
+    ただし、標準的な TeX フォントについては、コーディング・スキームの
+    情報を自前で持っているので、普通の TeX 文書をプレビューする限りは、
+    実際に TFM を読みに行くことはないと思います。
+
+    TFM が見つからない、見つかってもコーディング・スキームが指定されて
+    いない、あるいは未知のコーディング・スキームが用いられているという
+    場合には、ASCII 文字セットのアルファベットと数字だけが入っていると
+    仮定し、他の文字コードの文字は無視します。
+
+      * 現状では検索ルーチンがおバカさんなので少々遅いです。
+        あと、本当はユーザーがコーディング・スキームの定義や、グリフと
+        検索文字列の対応を定義ファイルかなんかで指定できるようにするべ
+        きなのでしょう。
+
+  [3.6] -remote オプションの追加
+
+        原作者: 竹中＠東大心理
+                  (fj 未投稿)
+
+    Netscape の -remote オプションと同じものを xdvi にもつけてみました。
+
+      % xdvi -remote 'Command' foo.dvi
+
+    とやると、ディスプレイ上で現在 foo.dvi を表示している xdvi にコマ
+    ンドを送ることができます。dvi ファイルの名前はディスプレイ上に複数
+    の xdvi が存在する時の識別子として使われるので省略できません。
+
+    使えるコマンドは以下の通りです。
+
+      OpenFile(foo.dvi)      foo.dvi を開く。
+                             引数を省略した場合はファイル選択メニュー
+                             を表示する。(Use_SELFILE が必要)
+
+      Quit                   終了する。
+
+      Page(num)              num ページ目を表示。
+
+      NextPage(num)          num ページ後のページを表示。
+                             num を省略した場合は num = 1 と同等。
+
+      PrevPage(num)          num ページ前のページを表示。
+
+      Search(String)         文字列 String を 1 ページ目から前方検索。
+                             String を省略した場合は、前回の検索文字列
+                             を使用します。
+
+      SEARCH(String)         同上 (大文字・小文字同一視)。
+
+      SearchFwd(String)      文字列 String をカレント・ページから前方
+                             検索。
+
+      SEARCHFWD(String)      同上 (大文字・小文字同一視)。
+
+      SearchBwd(String)      文字列 String をカレント・ページから後方
+                             検索。
+
+      SEARCHBWD(String)      同上 (大文字・小文字同一視)。
+
+      SloppySearch(String)   文字列 String を 1 ページ目から大ざっぱに 
+                             (本当に大ざっぱ！) 前方検索。
+
+      Raise                  xdvi のウィンドウを 1 番上にする。
+
+    上の例では引数を () で囲んでいますが、()、[]、{}、またはコマンド名
+    の後の最初の非空白文字で囲まれた部分を引数として認識します。また、
+    引数の中でバック・スラッシュ文字および ESC 文字が表われた場合には
+    続く文字は、引数の終わりを示す文字とは解釈されません。
+
+    検索系コマンドの引数に日本語を与える場合の文字コードは、オプション 
+    -jcode、およびリソース Jcode で、JIS、EUC、SJIS のどれかを指定でき
+    ます。ただし、JIS コードは常に認識します。
+
+    リモート・コマンドを受け取った xdvi のウィンドウはデフォルトでは自
+    動的に raise しますが、オプション +noraise, -noraise、またはリソース 
+    AutoRaise で、raise するかどうかを指定できます。
+
+    * 慶應大学の広瀬雄二さんにお願いして、Emacs 用 TeX モード『野鳥』
+      の最新版 (ver.1.61) で、remote を使った検索に対応していただきま
+      した。野鳥は、
+
+        ftp://ftp.ae.keio.ac.jp/pub/emacs-lisp/text/yatex
+
+      で手に入れることができます。
+
+  [3.7] VFlib version 2.x への対応
+
+        原作者: 竹中＠東大心理
+                  (fj 未投稿)
+
+    基本的には VFlib ver 2.x で関数名が変ったのに応じて、ソース中の関
+    数名を書き変えただけですが、同時に設定ファイル名が FontConf から
+    vfontcap に変ったのにあわせて、miyu-patch での -fontconf オプショ
+    ンと .FontConf リソースも、 -vfontcap、.vfontcap に変更しました。
+
+    VFlib ver 1.x 用のルーチンも残してあるので、Imakefile 中の
+
+      #define VFLIB_VERSION	2
+
+    という行の 2 を 1 に変えれば make できると思いますが、動作確認はし
+    ておりません。なお、この場合にはオプション名、リソース名は従来通り
+    です。
+
+    あと JFM やアウトライン・フォントが見つからないと、いきなり 
+    segmentation fault で落ちていたので、ちゃんとエラー・メッセージを
+    出してから死ぬようにしておきました。
+
+  [3.8] less 互換のマーク機能。
+
+        原作者: 竹中＠東大心理
+                  (fj 未投稿)
+
+    「 m + 英小文字」で現在のページをマーク、「 ' + 英小文字」でマーク
+    したページにジャンプします。
+
+  [3.9] tpic2.2 への対応。
+
+        原作者: 鷲坂＠ＮＴＴさん <wasisaka@rouge.brl.ntt.jp>
+                  xdvi-16-tpic2.2      (1993/02; fj.sources.d,fj.comp.texhax)
+                  xdvi-16-tpic2.2-fix1 (1993/02; fj.sources.d,fj.comp.texhax)
+
+  [3.10] DVI ファイルをメニュー形式で選択する
+
+        原作者: 杉浦茂樹＠東北大さん <miyu@shiratori.riec.tohoku.ac.jp>
+                鈴木＠情報科学.東京大学さん <dai@is.s.u-tokyo.ac.jp>
+                  (fj 未投稿)
+
+  [3.11] ASCII "日本語" TeX 対応
+
+        原作者: 野呂＠富士通国際研さん <noro@iias.flab.fujitsu.co.jp>
+                  xdvi-16j.patch        (1992/09; fj.sources)
+
+  [3.12] Zeit の書体倶楽部などのアウトライン・フォント対応
+
+        原作者: 林＠静岡大学さん <hayashi@dale.eng.shizuoka.ac.jp>
+                  xdvi-zeit             (1993/08; fj.sources)
+
+  [3.13] ghostscript を利用して postscript ファイルを表示する
+
+    もともとの miyu-patch に含まれていたものは、
+
+        森田＠北陸先端大さん
+          xdvi-14jgs.patch              (199?/??; ???)
+          xdvi-16jgs.patch-fix4         (1993/06; fj.sources)
+          xdvi-16jgs.patch-fix5         (1993/08; fj.sources.d)
+
+        仙田＠京大さん <senda@kuis.kyoto-u.ac.jp>
+          xdvi-16jgs.patch              (1992/09; fj.sources.d)
+
+        升谷＠阪大さん <masutani@me.es.osaka-u.ac.jp>
+          xdvi-16jgs.patch-fix1         (1992/09; fj.sources.d)
+          xdvi-16jgs.patch-fix2         (1992/09; fj.sources.d)
+
+        木本豪＠筑波大学さん
+          xdvi-16jgs.patch-fix3         (1992/09; fj.sources.d)
+
+    のパッチに、さらに杉浦茂樹＠東北大さんが手を加えられたものです。
+
+    ところが今回のパッチ・キットの作成にあたって、作者の皆様に収録許可
+    のお願いメールを出したところ、森田＠北陸先端大さんと木本豪＠筑波大
+    学さんは当時のアドレスが既に無効になってしまっていたので、連絡を取
+    ることができませんでした。
+
+    というわけで、本パッチ・キットに含まれているのは、同等のルーチンを
+    竹中が新たに書き起こしたものです。ただし、杉浦茂樹＠東北大さんの書
+    かれたコードはそのまま利用させていただきました。また xdvi PL20 の
+    psgs.c に含まれていた _setenv() 関数を使用しています。
+
+    従来の -ps, +ps オプション、及び psSpecial リソースに加えて、
+    xdvi PL20 のものにあわせて以下のオプション、リソースを追加しました。
+
+      オプション       リソース名      説明
+      -interpreter     interpreter     Ghostscript のコマンド名を指定
+      [-+]nogssafer    gsSafer         -dSAFER を指定して gs を起動
+      -gspalette       palette         gs のパレットを指定
+
+  [3.14] dvips 附属の epsf.sty への対応
+
+        原作者: 杉浦茂樹＠東北大さん
+                上原＠京大基研さん
+                  (fj 未投稿)
+
+  [3.15] jdvi2kps で処理する psfrag への対応 (バグあり)
+
+        原作者: 杉浦茂樹＠東北大さん
+                  (fj 未投稿)
+
+  [3.16] "PS Fig" ボタンの追加
+
+        原作者: 杉浦茂樹＠東北大さん
+                山上＠ＳＯＮＹさん <kaol@SCEI.sony.co.jp>
+
+  [3.17] おまけ
+
+    xdvi PL17 では、
+
+      % xdvi foo
+
+    などとして起動した場合に、foo.dvi と foo の両方のファイルが存在す
+    ると、foo の方をオープンするので「DVI ファイルじゃないよん」と怒ら
+    れてしまいます。
+
+    オリジナルの xdvi の PL20 では、こういう場合 foo.dvi の方をオープ
+    ンするようになっているので、本パッチ・キットでも同じ仕様に変更いた
+    しました。
+
+
+[4] 著作権等について
+
+  「8. tpic2.2 への対応」のパッチに関しては、SeeTeX/Xtex/DviPage2.c か
+  らのコードを含んでいますので、本パッチ・キットを適用した後の tpic.c 
+  の冒頭に引用されているオリジナルの Copyright Notice に従ってくださ
+  い。
+
+  同様に「9. DVI ファイルをメニュー形式で選択する」のパッチも、
+  "XsraSelFile File Selection Dialog Package" のコードを含んでいます。
+  Dir.c, Draw.c, Path.c, SelFile.c がそれにあたります。これらのファイ
+  ルの冒頭には Copyright Notice がありますので、これに従ってください。
+
+  「13. ghostscript を利用して postscript ファイルを表示する」のパッチ
+  のうち、ghostscript.c に含まれる _setenv() 関数は xdvi PL20 の 
+  psgs.c に含まれていたものです。こちらもオリジナルの Copyright Notice
+  をソース中に引用しておきましたので、これに従ってください。
+
+  杉浦茂樹＠東北大さんの書かれたコードに関しては、
+
+    「使用および個人的な改変は自由ですが、改変したものを再配布する場合
+    には要連絡。なお、パッチの作成、および、コードの解析に基づくコード
+    の生成は自由」
+
+  とのことです。主に 10,13,14,15,16 のコードがこれに相当しますが、他の
+  部分にも杉浦さんの書かれたコードが含まれているので、本パッチを改変し
+  たものを再配布する場合には、とりあえず杉浦さんに連絡してみてください。
+
+  以上に述べたもの以外については、竹中が作者の皆様方から「基本的に自由
+  に使ってもらって構わない」というお言葉を頂いております。「基本的に」
+  の部分に関しては多少の違いがありましたが、最小公倍数としては、
+
+    「ドキュメント中に名前とメール・アドレスを残してくれれば自由に使っ
+    てもらって構わない」
+
+  ということです。竹中作成のパッチについても、同様に扱ってください。た
+  だし、13 の ghostscript 対応については [3.13] で挙げた皆様方の作成さ
+  れたコードを参考に作ったものですから、竹中の名前だけでなく、これらの
+  方々のお名前も一緒に含めてください。
+
+-- END OF DOCUMENT --
diff -udNr xdvik//READMEs/README.markpage+toc+printdvi pxdvik//READMEs/README.markpage+toc+printdvi
--- xdvik//READMEs/README.markpage+toc+printdvi	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/README.markpage+toc+printdvi	2010-07-25 14:56:37.614074299 +0900
@@ -0,0 +1,200 @@
+
+        << xdvi-17+markpage+toc+printdvi patch について >>
+
+					1993/09/13
+					小野 康一
+					onono@fuka.info.waseda.ac.jp
+
+○xdvi-17+markpage+toc+printdvi patch とは
+  xdvi-17 + miyu-patch for xdvi PL17 に対するパッチです。このパッチをあ
+  てて作った xdvi では、以下のような機能を使うことができます。
+
+  1) Use_MARKPAGE
+  ページマーキング機能を、GNU Emacs のマークリング風に実現したものです。
+  ページのマーク(`m',`a')/アンマーク(`U',`A')、マークしたページへの移動
+  (`'',``')、マークしたページとカレントページとの交換('"')、マークを伴う
+  ページジャンプ('<','>')などを行なえます。
+  また、2) の toc からのマーキングも可能です。
+
+  2) Use_TOC
+  ページ番号リストを表示し、マウスでそのページをクリックすることで、その
+  ページへ移動(左ボタン)、そのページをマーク(真中ボタン)、アンマーク(右
+  ボタン)することができます。ドラッグにより、連続するページをマーク/アン
+  マークすることもできます。
+
+  3) Use_PRINTDVI
+  `o' または Print ボタンで Print-out メニューがポップアップします。ファ
+  イル全体の出力やカレントページ、最後にマークしたページ、リージョン(カ
+  レントページと最後にマークしたページとの間のページ)、マークした全部の
+  ページをメニューから選択して出力できます。
+
+○動作を確認した環境
+	SunOS 4.1.3 / sun4c マシン(SPARCstationシリーズ)
+
+○インストールについて
+
+  まず, xdvi PL17 のソース・ファイルである xdvi-17.tar.gz と
+  それに対するパッチ xdvi-17miyu.patch-beta4.gz (*1)、そして
+  当該パッチ xdvi-17+markpage+toc+printdvi.patch を用意します。
+
+  次に, 作業ディレクトリを作成して, そのディレクトリに移った後, 
+  xdvi-17.tar.gz を展開します。そのまま, ディレクトリを移動しないで, 
+  xdvi-17miyu.patch-beta4.gz を用いてパッチをあてます。
+  このとき, GNU のツールである gzip および patch が必要となります (*2)。
+  さらに xdvi-17+markpage+toc+printdvi.patch を用いてパッチをあてます。
+
+  あとは, システムに応じて Imakefile を編集した後, 
+  xmkmf を実行して Makefile を生成して, make を実行します。
+
+  なお、miyu-patch for xdvi PL17 については、README.miyu-patch をよく読
+  んでください。
+
+  (*1) これらは, 
+       ftp.tohoku.ac.jp[130.34.8.9]:~ftp/pub/tex/dviwares/xdvi/PL17 などの
+       anonymous ftp などから入手できます。
+  (*2) これらは, 
+       ftp.waseda.ac.jp[133.9.1.32]:~ftp/pub/GNU/prep 以下、または、
+       ftp.ecei.tohoku.ac.jp[130.34.222.67]:~ftp/pub/GNU/gzip および
+       ftp.ecei.tohoku.ac.jp[130.34.222.67]:~ftp/pub/GNU/patch 以下にあります。
+
+○Use_MARKPAGE および Use_TOC について
+  つけられるマークの最大数を 1024、DVI ファイルの最大ページ数も同じく 
+  1024 としてあります。これを越えることはまずないと思いますが、もし変更
+  する場合は、Imakefile の RINGSIZE および MAX_PAGE を修正してください。
+
+○Use_PRINTDVI について
+  Imakefile の Use_PRINTDVI のところは、自己サイトの環境に合わせて変更し
+  てください。%d などの意味については、print.h の最初の方のコメントに書
+  いてあります。また、デフォルトでは dvi2ps や dviselect を用いるように
+  書いてあります。このように、必要なページを切り出したり、プリンタ出力形
+  式へ変換する作業は xdvi の内部で行なわず、外部コマンドで処理するような
+  仕様にしました。したがって、これらのコマンドをあらかじめインストールし
+  ておかないと、xdvi からの出力ができません。dvi2ps, dvips, jdvi2kps,
+  dviselect など、自己サイトの環境に合ったコマンドをインストールし、それ
+  に合わせて Imakefile を修正した上で xdvi を作ってください。
+  また、デフォルトでは lpr に -v オプションを与えていません。PostScript 
+  プリンタ用のフィルタによっては -v オプションをつける必要があるかも知れ
+  ません。
+  また、デフォルトでは dvi2ps の出力を lpr の標準入力にパイプで与えてい
+  ます。lpr によっては、出力データが 1Mbyte を越えるとそれ以降を切り捨て
+  て出力するような仕様になっているかも知れません。そのような場合は、
+  dvi2ps の出力を一旦テンポラリファイル(/tmp/%F:%c@%r.ps など)にリダイレ
+  クトし、それを lpr -s で出力し、終了後に rm するようにすればいいでしょ
+  う。ただし、-s の場合、スプーリングせずに出力するため、出力が完了する
+  までそのファイルを消せません。出力完了まで待って rm する、という手続き
+  を簡単には書けないと思うので、デフォルトでは lpr の標準入力に与える方
+  法を採りました。1Mbyte を越えるくらいたくさんのページを出力するような
+  場合は、xdvi の中から出力せずにシェルのコマンドラインから
+	% dvi2ps file.dvi > /tmp/file.ps
+	% lpr -s /tmp/file.ps
+	(出力完了後)
+	% rm /tmp/file.ps
+  とした方がいいような気がします:-)
+
+○内部変数(%f など)の意味
+  print.h の最初の方のコメントにも書いてありますが、簡単に説明しておきま
+  す。Imakefile 中の PRCMD??? という変数は
+	PRCMDLST="(cd %d; dviselect -i %F -o /tmp/%F:%t@%r.dvi %A; dvi2ps /tmp/%F:%t@%r.dvi) | lpr -P%p -J'%F (Page %t)'; /bin/rm /tmp/%F:%t@%r.dvi"
+	/* all marked pages */
+  のように、% 表記の内部変数が用いられています。これは、DVI ファイルの出
+  力時に解釈されて実行されるコマンド文字列です。
+    PRCMDALL  DVI ファイルの全部を出力(する時に用いられるコマンド文字列)
+    PRCMDCUR  カレントページ(現在表示しているページ)を出力
+    PRCMDMRK  最後にマークしたページを出力
+    PRCMDRGN  リージョン(カレントページと最後にマークしたページで挟まれ
+              ている区間)内のすべてのページを出力
+    PRCMDLST  マークしたすべてのページを出力
+  これらのコマンドは、Print-out メニューで選択する項目
+	All pages
+	Current page
+	Marked page
+	Region
+	All marked pages
+  にそれぞれ対応しています。
+  コマンド文字列の解釈は、% 表記の内部変数を展開することによって行なわれ
+  ます。各内部変数の意味は次の通りです。
+    %f : 現在参照している DVI ファイルのファイル名(フルパス名)
+    %F : 現在参照している DVI ファイルのファイル名(basename)
+    %d : 現在参照している DVI ファイルが置かれているディレクトリ名
+         ( %f = %d/%F )
+    %p : プリンタ名(環境変数 PRINTER が定義されていればその値。また、
+         Print-menu で設定されるならその値)
+    %r : xdvi のプロセス ID
+  以下はページ番号に関する内部変数です。すべて絶対ページ番号(先頭ページ
+  を1として単調増加するページ番号。\count に左右されない)で表記します。
+    %c : カレントページ番号
+    %m : 最後にマークしたページ番号
+    %s : リージョンの開始ページ番号(%c と %m の最小値)
+    %e : リージョンの終了ページ番号(%c と %m の最大値)
+    %l : マークしたページ番号リスト(マーク順); 各ページ番号は ',' で区切
+         られている
+    %L : マークしたページ番号リスト(マーク順); 各ページ番号は ' ' で区切
+         られている
+    %t : マークしたページ番号リスト(ソートされている); 各ページ番号は
+         ',' で区切られている
+    %T : マークしたページ番号リスト(ソートされている); 各ページ番号は
+         ' ' で区切られている
+    %k : %l と同様、ただし、各ページ番号の前に '=' が置かれている
+         (dviselect を仮定している)
+    %K : %L と同様、ただし、各ページ番号の前に '=' が置かれている
+         (dviselect を仮定している)
+    %a : %t と同様、ただし、各ページ番号の前に '=' が置かれている
+         (dviselect を仮定している)
+    %A : %T と同様、ただし、各ページ番号の前に '=' が置かれている
+         (dviselect を仮定している)
+  たとえば、上記の PRCMDLST の定義で、/home/onono/doc/sample.dvi をプレ
+  ビューしていて、3,6,11,17ページをマークしている時に、Print-out メニュー
+  から all marked pages を選択すると、実行される文字列は以下のようになり
+  ます。
+	(cd /home/onono/doc;
+	 dviselect -i sample.dvi -o /tmp/sample.dvi:3,6,11,17@3255.dvi
+		 =3 =6 =11 =17;
+	 dvi2ps /tmp/sample.dvi:3,6,11,17@3255.dvi)
+	| lpr -Plp -J'sample.dvi (Page 3.6.11.17)';
+	/bin/rm /tmp/sample.dvi:3,6,11,17@3255.dvi
+  ただし、xdvi のプロセス ID = 3255、プリンタ名 = lp とします。
+
+○独立性
+  Use_MARKPAGE, Use_TOC, Use_PRINTDVI は、相互に独立して#define/#undefで
+  きるはずです(試していません)。もちろん、
+	#undef	Use_MARKPAGE
+	#define	Use_TOC
+	#define	Use_PRINTDVI
+  で作った場合は、toc 上でのマーキングができませんし(ページ移動はできる)、
+  Print-out メニューは All pages と current page の二つだけになるでしょ
+  う。
+
+○著作権
+  当該パッチの中のファイル
+	markring.c
+	markring.h
+	markpage.c
+	markpage.h
+	toc.c
+	toc.h
+	print.c
+	print.h
+  の著作権は、作者である
+	松浦 俊     MATSUURA Syun      syun@fuka.info.waseda.ac.jp
+	平原 厚志   HIRAHARA Atsushi   hirahara@fuka.info.waseda.ac.jp
+	小野 康一   ONO Kouichi        onono@fuka.info.waseda.ac.jp
+  に帰属します。なお、著作者を明らかにする限り、当該パッチの一部または全
+  体を改造、転送、再配布するのは自由とします。
+
+○ヒマがあればやろうかな
+
+1. 環境変数, オプション, リソースによる指定
+			-printer	*printer
+	XDVIPRALL	-prall		*print.all
+	XDVIPRCUR	-prcur		*print.currentPage
+	XDVIPRMKD	-prmarked	*print.markedPage
+	XDVIPRRGN	-prregion	*print.region
+	XDVIPRLST	-prlist		*print.list
+
+2. ページ移動に伴う toc のスクロールバー移動
+
+3. toc に表示するページ番号を \count0 を考慮した(実際の)ページ番号にする
+
+4. マークページリストの表記を
+	5,8-12,27,29,35-36,41
+   のようにする
diff -udNr xdvik//READMEs/README.markpage+toc+printdvi+paper pxdvik//READMEs/README.markpage+toc+printdvi+paper
--- xdvik//READMEs/README.markpage+toc+printdvi+paper	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/README.markpage+toc+printdvi+paper	2010-07-25 14:56:37.614074299 +0900
@@ -0,0 +1,583 @@
+
+      << xdvi-17+markpage+toc+printdvi+paper patchについて >>
+
+					1995/10/07
+					小野 康一
+					onono@fuka.info.waseda.ac.jp
+
+○xdvi-17+markpage+toc+printdvi+paper patchとは
+  xdvi-17 + miyu-patch(beta.pre7) for xdvi PL17に対するパッチです。すで
+  にfjに投稿されたいくつかのパッチを集めて修正を加え、さらにいくつかの改
+  造を行なったものです。
+
+○このパッチに含まれるパッチ群
+  これまでにfjに投稿された以下のパッチを含んでいます。
+
+  (1) xdvi-17+markpage+toc+printdvi patch
+      (xdvi-pl17+markpage+toc+printdvi.patch.gz)
+      ページマーキング機能、TOC機能、DVI印刷機能を実現したパッチ。
+      作成者:小野 康一, 松浦 俊, 平原 厚志
+        From: onono@fuka.info.waseda.ac.jp (ONO Kouichi)
+        Newsgroups: fj.sources,fj.comp.texhax
+        Subject: xdvi-17+markring+toc+printdvi patch
+        Date: 13 Sep 1993 23:14:24 +0900
+        Message-ID: <ONONO.93Sep13231424@akira.fuka.info.waseda.ac.jp>
+
+  (2) xdvi-17+markring+toc+printdvi patch fix-1
+      (1)に対するバグフィックス#1。
+      作成者:小野 康一
+        From: onono@fuka.info.waseda.ac.jp (ONO Kouichi)
+        Newsgroups: fj.comp.texhax,fj.sources.d
+        Subject: xdvi-17+markring+toc+printdvi patch fix-1
+        Date: 14 Sep 1993 22:26:07 +0900
+        Message-ID: <ONONO.93Sep14222607@fuhito.fuka.info.waseda.ac.jp>
+
+  (3) xdvi-17+markpage+toc+printdvi patch fix-2
+      (1)+(2)に対するバグフィックス#2。
+      作成者:小野 康一
+        From: onono@fuka.info.waseda.ac.jp (ONO Kouichi)
+        Newsgroups: fj.comp.texhax,fj.sources
+        Subject: xdvi-17+markpage+toc+printdvi patch fix-2
+        Date: 17 Sep 1993 22:54:04 +0900
+        Message-ID: <ONONO.93Sep17XDVIpatch.fix-2@akira.fuka.info.waseda.ac.jp>
+
+  (4) tasai-ussy patch
+      (xdvi-17.tasai-ussy.patch)
+      (1)のTOCのページ番号検出機能の改善。
+      作成者:あさい(tasai)&はらかわ たくや(ussy)
+        Newsgroups: fj.comp.texhax,fj.sources.d
+        From: ussy@int.titech.ac.jp (Takuya Harakawa)
+        Subject: BugPatch for Xdvi-17.miyu.path(beta.7)
+        Message-ID: <USSY.93Nov12211358@ayame.int.titech.ac.jp>
+        Date: 12 Nov 1993 21:13:58 +0900
+
+  (5) tasai-ussy pagenumber patch
+      (xdvi-17.page.patch)
+      (1)+(4)のTOCのページ表示を絶対ページ番号から相対ページ番号に変更す
+      るパッチ。
+      作成者:あさい(tasai)&はらかわ たくや(ussy)
+        Newsgroups: fj.sources.d
+        From: ussy@int.titech.ac.jp (Takuya Harakawa)
+        Subject: UnOfficial Patch for Xdvi-17.miyu.patch(beta.7)
+        Message-ID: <USSY.93Nov12231403@ayame.int.titech.ac.jp>
+        Date: 12 Nov 1993 23:14:03 +0900
+        (上の記事のパッチには誤りがあったので以下の記事が再投稿されてい
+        る)
+        Newsgroups: fj.sources.d
+        From: ussy@int.titech.ac.jp (Takuya Harakawa)
+        Subject: an unofficial patch for Xdvi-17.miyu.patch(beta.pre7)
+        Message-ID: <USSY.93Nov15175604@kisaragi.int.titech.ac.jp>
+        Date: 15 Nov 1993 17:56:04 +0900
+        (および)
+        Newsgroups: fj.sources.d
+        From: ussy@int.titech.ac.jp (Takuya Harakawa)
+        Subject: Re: an unofficial patch for Xdvi-17.miyu.patch(beta.pre7)
+        Message-ID: <USSY.93Nov15202826@kisaragi.int.titech.ac.jp>
+        Date: 15 Nov 1993 20:28:26 +0900
+
+  (6) tasai-ussy pagenumber patch fix-1
+      (xdvi-17.pagenumber-fix.patch)
+      (1)〜(5)に対するfixおよびversion-up。
+      作成者:あさい(tasai)&はらかわ たくや(ussy)
+        Newsgroups: fj.comp.texhax,fj.sources.d
+        From: ussy@int.titech.ac.jp (Takuya Harakawa)
+        Subject: Xdvi-17 pagenumber patch fix
+        Message-ID: <USSY.93Nov18065838@ayame.int.titech.ac.jp>
+        Date: 18 Nov 1993 06:58:38 +0900
+
+  その他、fjに未投稿の以下のパッチも含んでいます。
+
+  (7) マークページリストの改良
+      連続するページ番号を10-13のように表記する。
+      作成者:小野 康一
+
+  (8) 各種バグフィックス
+      -geometry指定におけるTOCの不具合、X11R4における異常終了など。
+      作成者:小野 康一
+
+  (9) 用紙タイプをDVIフィルタ(デバイスドライバ)に渡す機能
+      DVIフィルタ(デバイスドライバ)のオプションに合わせて変換する。
+      作成者:小野 康一
+
+ (10) 環境変数、リソース、オプションによる指定
+      プリンタ名やコマンド文字列などを環境変数、リソース、オプションで指
+      定できる。
+      作成者:小野 康一
+
+ (11) 用紙タイプを起動後に設定する機能
+      Paperボタンを追加し、メニューから用紙タイプを選べるようにする。
+      作成者:小野 康一
+
+○このパッチによって使用可能になる機能
+  このパッチをあてて作ったxdviでは、以下のような機能を使うことができます。
+
+  1) Use_MARKPAGE
+  ページマーキング機能を、GNU Emacsのマークリング風に実現したものです。
+  ページのマーク(`m',`a')/アンマーク(`U',`A')、マークしたページへの移動
+  (`'',``')、マークしたページとカレントページとの交換('"')、マークを伴う
+  ページジャンプ('<','>')などを行なえます。
+  また、2)のTOCからのマーキングも可能です。
+
+  2) Use_TOC / Use_PAGENUM
+  ページ番号リストを表示し、マウスでそのページをクリックすることで、その
+  ページへ移動(左ボタン)、そのページをマーク(真中ボタン)、アンマーク(右
+  ボタン)することができます。ドラッグにより、連続するページをマーク/アン
+  マークすることもできます。また、東京工業大学のあさい&はらかわ両氏によ
+  るtasai-ussyパッチ群により、ページ番号が先頭ページを1とする絶対番号で
+  なく、実際のページ番号が表示されるようになっています。
+
+  3) Use_PRINTDVI
+  `o'またはPrintボタンでPrint-outメニューがポップアップします。ファイル
+  全体の出力やカレントページ、最後にマークしたページ、リージョン(カレン
+  トページと最後にマークしたページとの間のページ)、マークした全部のペー
+  ジをメニューから選択して出力できます。
+
+  4) Use_PAPER
+  `t'またはPaperボタンでSet Paper Typeメニューがポップアップします。用紙
+  タイプを入力またはリストメニューから選択すると画面の用紙サイズを示す枠
+  線が変化します。selFile機能で、起動後にプレヴューするDVIファイルを変更
+  したり、起動した後で用紙タイプが異なっていることに気がついた場合などに
+  使えるでしょう。Print機能を用いて出力する際に、内部変数%Z(または%z)の
+  展開に用紙タイプが用いられるので(後述)、適切な用紙タイプを選択しないと
+  正しい出力結果が得られなくなります。
+
+○動作を確認した環境
+	SunOS 4.1.3	SPARCstation	/usr/ucb/cc	X11R5
+
+○作成・インストールについて
+  以下のファイル(*1)を用意してください。
+
+  (1) xdvi PL17ソースファイル
+      (xdvi-17.tar.gz)
+  (2) miyu-patch for xdvi PL17 (beta.pre7)
+      (xdvi-17miyu.patch-beta.pre7)
+  (3) markpage+toc+printdvi+paper patch (当該パッチ)
+      (xdvi-pl17+markpage+toc+printdvi+paper.patch.gz)
+
+  次に、作業ディレクトリを作成して、そのディレクトリに移った後、
+  xdvi-17.tar.gzを展開します。そのまま、ディレクトリを移動しないで、
+  xdvi-17miyu.patch-beta.pre7.gzのパッチをあてます。このとき、GNUのツー
+  ルであるgzipおよびpatchが必要となります(*2)。
+  さらにxdvi-17+markpage+toc+printdvi+paper.patch.gzのパッチをあてます。
+
+    % gzip -d -c xdvi-17.tar.gz | tar xf -
+    % gzip -d -c xdvi-17miyu.patch-beta.pre7.gz | patch -p1
+    % gzip -d -c xdvi-pl17+markpage+toc+printdvi+paper.patch.gz | patch -p1
+
+  あとは、システムに応じてImakefileを編集した後、xmkmfを実行してMakefile
+  を生成して、makeを実行します。
+
+    % xmkmf -a
+    % make
+    % make xdvi.man
+    % make MakeTeXPK
+
+  makeが正常に終了したら、インストールします。
+
+    % make install
+    % make install.man
+    % make install.MakeTeXPK
+
+  なお、miyu-patch for xdvi PL17については、README.miyu-patchをよく読ん
+  でください。tasai-ussyパッチ群については、README.tasai-ussyをよく読ん
+  でください。
+
+  (*1) (1)〜(2)は
+       ftp://ftp.tohoku.ac.jp/pub/TeX/dviwares/xdvi/PL17
+       ftp://ftp.fuka.info.waseda.ac.jp/pub/xdvi/PL17
+       などのanonymous ftpなどから入手できます。
+       (3)は
+       ftp://ftp.fuka.info.waseda.ac.jp/pub/xdvi/PL17
+       のanonymous ftpから入手できます。
+
+  (*2) これらは
+       ftp://ftp.waseda.ac.jp/pub/GNU/prep
+       などのanonymous ftpなどから入手できます。
+
+○Use_MARKPAGEおよびUse_TOCについて
+  つけられるマークの最大数を1024、DVI ファイルの最大ページ数も同じく1024
+  としてあります。これを越えることはまずないと思いますが、もし変更する場
+  合は、ImakefileのRINGSIZEおよびMAX_PAGEを修正してください。
+
+○Use_PRINTDVIについて
+  ImakefileのUse_PRINTDVIのところは、自己サイトの環境に合わせて変更して
+  ください。%dなどの意味については、print.hの最初の方のコメントに書いて
+  あります。また、defaultではdvi2ps-jやdviselectを用いるように書いてあり
+  ます。このように、必要なページを切り出したり、プリンタ出力形式へ変換す
+  る作業はxdviの内部で行なわず、外部コマンドで処理するような仕様にしまし
+  た。したがって、これらのコマンドをあらかじめインストールしておかないと、
+  xdviからの出力ができません。dvi2ps-j, dvips, jdvi2kps, dviselectなど、
+  自己サイトの環境に合ったコマンドをインストールし、それに合わせて
+  Imakefileを修正した上でxdviを作ってください。
+  また、defaultではlprに-vオプションを与えていません。PostScriptプリンタ
+  用のフィルタによっては-vオプションをつける必要があるかも知れません。ま
+  た、defaultではdvi2ps-jの出力を一旦テンポラリファイルにリダイレクトし、
+  それをlpr -s -rで出力するようになっています。もし-rオプションがサポー
+  トされていない場合は、dvi2ps-j(ないしはそれに類するDVIフィルタ(デバイ
+  スドライバ))の出力をlprの標準入力にパイプで渡すように変更するといいで
+  しょう。
+  ただし、lprによっては、出力データが1Mbyteを越えるとそれ以降を切り捨て
+  て出力するような仕様になっているかも知れません。そのような場合はやはり
+  DVIフィルタ/デバイスドライバの出力を一旦テンポラリファイルにリダイレク
+  トし、それをlpr -sで出力し、終了後にrmするようにすればいいでしょう。た
+  だし、-rが使えないと、出力完了まで待ってrmする、という手続きを自分で書
+  かないといけませんが。面倒ならばlprの標準入力に与える方法で我慢しましょ
+  う。それでも1Mbyteを越えるくらいたくさんのページを出力したい場合は、
+  xdviの中から出力せずにシェルのコマンドラインから
+	% dvi2ps file.dvi > /tmp/file.ps
+	% lpr -s /tmp/file.ps
+	(出力完了後)
+	% rm /tmp/file.ps
+  とした方がいいような気がします:-)
+
+○内部変数(%fなど)の意味
+  print.hの最初の方のコメントにも書いてありますが、簡単に説明しておきま
+  す。Imakefile中のPRCMD???という変数は
+	PRCMDLST="cd %d; dviselect -i %F -o %D/%F:%o@%r.dvi %G; %R %D/%F:%o@%r.dvi > %D/%F:%o@%r.ps; /bin/rm %D/%F:%o@%r.dvi; %P -J'%F (Page %o)' %D/%F:%o@%r.ps"
+	/* all marked pages */
+  のように、%表記の内部変数が用いられています。これは、DVIファイルの出力
+  時に解釈されて実行されるコマンド文字列です。
+    PRCMDALL  DVIファイルの全部を出力(する時に用いられるコマンド文字列)
+    PRCMDCUR  カレントページ(現在表示しているページ)を出力
+    PRCMDMRK  最後にマークしたページを出力
+    PRCMDRGN  リージョン(カレントページと最後にマークしたページで挟まれ
+              ている区間)内のすべてのページを出力
+    PRCMDLST  マークしたすべてのページを出力
+  これらのコマンドは、Print-outメニューで選択する項目
+	All pages
+	Current page
+	Last marked page
+	Region
+	All marked pages
+  にそれぞれ対応しています。
+  コマンド文字列の解釈は、%表記の内部変数を展開することによって行なわれ
+  ます。各内部変数の意味は次の通りです。
+    %% : '%'文字
+    %f : 現在参照しているDVIファイルのファイル名(フルパス名)
+    %F : 現在参照しているDVIファイルのファイル名(basename)
+    %d : 現在参照しているDVIファイルが置かれているディレクトリ名
+         (%f == %d/%F)
+    %D : テンポラリファイルを置くディレクトリ(環境変数TMPDIRが定義されて
+         いればその値。定義されていない場合はコンパイル時のTEMPDIRの値)
+    %p : プリンタ名(環境変数PRINTERが定義されていればその値。また、
+         Print-menuで設定されるならその値)
+    %P : プリンタ出力制御コマンド文字列(環境変数PRINTCMDが定義されていれ
+         ばその値。もし定義されていない場合は、コンパイル時の定数
+         PRINTCMDの値("lpr -s -r -P%p"))
+    %z : -paperオプションで指定される用紙タイプ(小文字; ex. "a4")
+         下記の注を参照。
+    %Z : -paperオプションで指定される用紙タイプを変換テーブルでDVIフィル
+         タ(デバイスドライバ)のオプションに変換した文字列
+         (ex. "a4r" ---> "a4landscape" for dvi2ps-j)
+         下記の注を参照。
+    %r : xdviのプロセスID
+    %R : DVIフィルタ(デバイスドライバ)のコマンド文字列(環境変数DVIFILTER
+         が定義されていればそれに代入されている文字列。もし定義されてい
+         ない場合は、コンパイル時のDVIFILTERCMDの値)
+  以下はページ番号に関する内部変数です。すべて絶対ページ番号(先頭ページ
+  を1として単調増加するページ番号。\countに左右されない)で表記します。
+    %c : カレントページ番号
+    %m : 最後にマークしたページ番号
+    %s : リージョンの開始ページ番号(%cと%mの最小値)
+    %e : リージョンの終了ページ番号(%cと%mの最大値)
+    %l : マークしたページ番号リスト(マーク順); 各ページ番号は','で区切ら
+         れている
+    %L : マークしたページ番号リスト(マーク順); 各ページ番号は' 'で区切ら
+         れている
+    %t : マークしたページ番号リスト(ソートされている); 各ページ番号は','
+         で区切られている
+    %T : マークしたページ番号リスト(ソートされている); 各ページ番号は' '
+         で区切られている
+    %o : マークしたページ番号リスト(ソートされている); 連続するページの
+         場合、'-'で範囲を示す。各ページ範囲やページ番号は','で区切られ
+         ている
+    %O : マークしたページ番号リスト(ソートされている); 連続するページの
+         場合、'-'で範囲を示す。各ページ範囲やページ番号は' 'で区切られ
+         ている
+    %k : %lと同様、ただし、各ページ番号の前に'='が置かれている
+         (dviselectを仮定している)
+    %K : %Lと同様、ただし、各ページ番号の前に'='が置かれている
+         (dviselectを仮定している)
+    %a : %tと同様、ただし、各ページ番号の前に'='が置かれている
+         (dviselectを仮定している)
+    %A : %Tと同様、ただし、各ページ番号の前に'='が置かれている
+         (dviselectを仮定している)
+    %g : %oと同様、ただし、各ページ範囲やページ番号の前に'='が置かれている
+         (dviselectを仮定している)
+    %G : %Oと同様、ただし、各ページ範囲やページ番号の前に'='が置かれている
+         (dviselectを仮定している)
+  たとえば、上記のPRCMDLSTの定義で、/home/onono/doc/sample.dviをプレヴュー
+  していて、3,6,11,17ページをマークしている時に、Print-outメニューから
+  All marked pagesを選択すると、実行される文字列は以下のようになります。
+	cd /home/onono/doc;
+	dviselect -i sample.dvi -o /tmp/sample.dvi:3,6,11,17@3255.dvi
+		=3 =6 =11 =17;
+	dvi2ps -o a4 /tmp/sample.dvi:3,6,11,17@3255.dvi > /tmp/sampe.dvi:3,6,11,17@3255.ps;
+	/bin/rm /tmp/sample.dvi:3,6,11,17@3255.dvi;
+	lpr -s -r -Plp -J'sampe.dvi (Page 3,6,11,17)' /tmp/sampe.dvi:3,6,11,17@3255.ps;
+  ただし、xdviのプロセスID = 3255、プリンタ名 = lpとします。また、-paper
+  オプションはa4を指定したとします。
+
+○%z/%Zについて(xdvi -paper/dvi2ps -o/jdvi2kps -paの関係)
+  %zには、起動時の-paperオプション/.paperリソースなどで与えられた用紙サ
+  イズが代入されます。この内部変数を用いて、出力コマンド文字列の中に
+	dvi2ps -o %z
+  のように、dvi2psの用紙タイプオプションとして与えることを想定しています。
+  xdviのdefault用紙タイプ(a4)と異なるタイプ、たとえばB4サイズのdviファイ
+  ルをプレヴューする場合は-paper b4を指定してxdviを起動しておけば、正し
+  い用紙タイプで出力することができます。
+
+  しかし、xdvi -paperとdvi2ps -o, jdvi2kps -paなどで指定する用紙タイプは、
+  以下に示すように、かならずしも共通していません。
+
+      用紙タイプ名  xdvi -paper  dvi2ps-j -o  jdvi2kps -pa
+      letter        ×           ○           ×
+      legal         ○           ○           ×
+      tabloid       ×           ○           ×
+      us            ○           ×           ×
+      usr           ○           ×           ×
+      foolscap      ○           ×           ×
+      a[1-2]        ○           ×           ×
+      a[3-5]        ○           ○           ○
+      a[6-7]        ○           ×           ×
+      a4extra       ×           ×           ○
+      b[1-3]        ○           ×           ×
+      b[4-5]        ○           ○           ○
+      b[6-7]        ○           ×           ×
+      c[1-7]        ○           ×           ×
+      [a-c][1-7]r   ○           ×           ×
+
+  そこで、それぞれのDVIフィルタ(デバイスドライバ)に合わせて用紙タイプ名
+  を決める変換テーブルファイルを用意しておき、出力時にそれを参照するとい
+  う仕様にしました。内部変数%Zは、%zの用紙タイプ名を変換テーブルファイル
+  にしたがって変換した(DVIフィルタ用の)用紙タイプオプション文字列に展開
+  されます。
+
+○用紙タイプ-->DVIフィルタ(デバイスドライバ)オプション変換テーブルファイル
+  xdviの-paperオプションなどで指定した用紙タイプから、それぞれのDVIフィ
+  ルタ(デバイスドライバ)のオプションに変換するためのテーブルファイルを用
+  意しておくことができます。dvi2ps-j, jdvi2kps, dvipsなど、複数のDVIフィ
+  ルタ(デバイスドライバ)を使用する場合は、それぞれに対応する変換テーブル
+  を用意しておけば、オプションの違いを意識せずに出力させることができます。
+  また、プリンタの使用できる用紙タイプが限定される場合にも、この変換テー
+  ブルで対応することができます。
+
+  変換テーブルファイルのサンプルとして、dvi2ps-j用(xdvipaper.dvi2ps-j)と
+  jdvi2kps用(xdvipaper.jdvi2kps)とdvips用(xdvipaper.dvips)を用意してあり
+  ます。
+
+  変換テーブルファイルの書式は以下の通りです。
+
+  '#'以降は行末までコメントと見なされ、無視されます。行頭および行末の
+  whitespace(スペースおよびタブ)は無視されます。コメントとwhitespaceを除
+  いた各行は、空行であるか、または、以下の書式をしています。
+
+  書式a. <用紙タイプ>
+  書式b. <用紙タイプ>  <DVIフィルタ(デバイスドライバ)のオプション文字列>
+  書式c. =             <DVIフィルタ(デバイスドライバ)のオプション文字列>
+
+  書式bでは、<用紙タイプ>と<オプション文字列>の間に一つ以上のwhitespace
+  が必要です。書式cでは、"="と<オプション文字列>の間にwhitespaceはあって
+  もなくてもかまいません。<オプション文字列>中には、whitespaceを含ませる
+  ことができます(行末までが<オプション文字列>と見なされます)。
+
+  <用紙タイプ>には、xdviがサポートしている用紙タイプを書くことができます
+  (ex. a4r)。ワイルドカード表現や正規表現は書けません。
+
+  変換テーブルの検索は以下のように行ないます。
+
+  先頭行から、"="を持つ行または<用紙タイプ>が一致する行が見つかるまで探
+  します。もし見つかった行に<オプション文字列>があるなら(書式b, c)、それ
+  を用います。もし<オプション文字列>がないなら(書式a)、<用紙タイプ>をそ
+  のまま用います。もし一致する行(または"="を持つ行)が見つからない場合は、
+  用紙タイプをそのまま用います。
+
+  たとえば、変換テーブルファイルが以下のようになっていて、用紙サイズが
+  a4rの時、変換して得られるオプション文字列(%Zの値)は"a4 -l"になります。
+
+    ### sample
+    a4			# A4 portrait
+    b4		b4	# B4 portrait
+    a4r		a4 -l	# A4 landscape
+    =		a4	# default is A4 portrait
+
+○内部変数の再帰的展開
+  %Pおよび%Rは、コマンドとして解釈される文字列の一部分に展開されます。し
+  たがって、その文字列中にさらに内部変数を記述してある場合、それがさらに
+  展開される必要があります。そこで、この二つの変数に限り、展開を再帰的に
+  行なうようにしてあります。他の内部変数は、文字列への展開を一度だけ行な
+  うようになっています。
+  したがって、%Pおよび%Rに相当するマクロシンボルをImakefileなどで定義す
+  る場合は、その文字列中に%Pや%R自身を含まないように注意してください。
+  環境変数PRINTCMDおよびDVIFILTERを定義する場合も同様です。
+
+○カスタマイズ
+  起動時オプション、リソースおよび環境変数の参照によるカスタマイズが可能
+  になっています。
+
+  (0) 出力コマンド文字列
+      Print-outメニューから選択する出力コマンドに用いられるコマンド文字
+      列は、以下の優先順位によって定まります。
+	1. オプション
+	   (-printall, -printcurrent, -printmarked, -printregion, -printlist)
+	2. リソース
+	   (.printAll, .printCurrent, .printMarked, .printRegion, .printList)
+	3. コンパイル時default
+	   (PRCMDALL, PRCMDCUR, PRCMDMRK, PRCMDRGN, PRCMDLST)
+
+  (1) プリンタ
+      出力コマンド文字列中に現れる内部変数%pの展開によって得られるプリン
+      タ名は、以下の優先順位で定まります。
+	0. Print-outメニューにおける指定
+	1. -printerオプション
+	2. .printerリソース
+	3. 環境変数PRINTER
+	4. コンパイル時default(DVIPRINTER)
+
+  (2) テンポラリディレクトリ
+      出力コマンド文字列中に現れる内部変数%Dの展開によって得られる、「出
+      力時に作成するテンポラリファイルを置くディレクトリ」は、以下の優先
+      順位で定まります。
+	1. 環境変数TMPDIR
+	2. コンパイル時default(TEMPDIR)
+
+  (3) DVIフィルタ(デバイスドライバ)
+      出力コマンド文字列中に現れる内部変数%Rの展開によって得られる、
+     「DVIフィルタ(デバイスドライバ)として用いられるコマンド文字列」は、
+      以下の優先順位で定まります。
+	1. 環境変数DVIFILTER
+	2. コンパイル時default(DVIFILTERCMD)
+
+  (4) プリンタ出力制御コマンド
+      出力コマンド文字列中に現れる内部変数%Pの展開によって得られる、「プ
+      リンタ出力制御コマンド文字列(DVIをプリンタ依存形式へ変換するコマン
+      ドは含まず、単にファイルをプリンタへ送るためのコマンド)」は、以下
+      の優先順位で決まります。
+	1. 環境変数PRINTCMD
+	2. コンパイル時default(PRINTCMD)
+
+  (5) 用紙タイプ-->DVIフィルタ(デバイスドライバ)オプション変換テーブル
+      出力コマンド文字列中に現れる内部変数%Zの展開によって得られる、
+      「DVIフィルタ(デバイスドライバ)のオプション」へxdviの用紙タイプか
+      ら変換するためのテーブルファイル名は、以下の優先順位で決まります。
+	1. 環境変数XDVIFILTOPTTBL
+	2. コンパイル時default(FILTOPTTBLFILE)
+
+  したがって、jdvi2kpsによる出力を想定したカスタマイズをするには、
+	環境変数DVIFILTERを"jdvi2kps -p%Z"
+	環境変数XDVIFILTOPTTBLを"/usr/local/lib/TeX/xdvipaper.jdvi2kps"
+  また、dvipsによる出力を想定したカスタマイズをするには、
+	環境変数DVIFILTERを"dvips -t%Z"
+	環境変数XDVIFILTOPTTBLを"/usr/local/lib/TeX/xdvipaper.dvips"
+  にしておけばいいはずです。
+
+○独立性
+  Use_MARKPAGE, Use_TOC(Use_PAGENUM), Use_PRINTDVI, Use_PAPERは、相互に
+  独立し#define/#undefできるはずです(試していません)。もちろん、
+	#undef	Use_MARKPAGE
+	#define	Use_TOC
+	#define Use_PAGENUM
+	#define	Use_PRINTDVI
+	#define Use_PAPER
+  で作った場合は、TOC上でのマーキングができませんし(ページ移動はできる)、
+  Print-outメニューはAll pagesとCurrent pageの二つだけになるでしょう。
+  Use_TOCとUse_PAGENUMの関係についてはREADME.tasai-ussyを読んでください。
+
+○著作権
+  当該パッチの中のファイル
+	markring.c
+	markring.h
+	markpage.c
+	markpage.h
+	toc.c
+	toc.h
+	print.c
+	print.h
+	paper.c
+	paper.h
+  の著作権は、作者である
+	松浦 俊     MATSUURA Syun      syun@fuka.info.waseda.ac.jp
+	平原 厚志   HIRAHARA Atsushi   hirahara@fuka.info.waseda.ac.jp
+	小野 康一   ONO Kouichi        onono@fuka.info.waseda.ac.jp
+  に帰属します。なお、著作者を明らかにする限り、当該パッチの一部または全
+  体を改造、転送、再配布するのは自由とします。
+  また、あさい&はらかわ両氏によるtasai-ussyパッチ部分の著作権については
+  両氏にお問い合わせください。
+
+○主な変更点およびバグフィックス
+Revision 1			1993/09/13	fj.comp.texhax,fj.sources
+	markpage+toc+printdvi patch Revision 1。
+fix-1				1993/09/14	fj.comp.texhax,fj.sources.d
+Message-ID: <ONONO.93Sep14222607@fuhito.fuka.info.waseda.ac.jp>
+(1)	すでにDVIファイルをオープンしていて、'F'またはFileボタンで
+	selFileメニューから別のDVIファイルをオープンすると、TOCとマーク
+	の表示が以前のファイルのままになる、という不具合を修正。
+	[報告 : NEC技術情報システム開発株式会社 平山 度 さん]
+
+fix-2				1993/09/17	fj.comp.texhax,fj.sources
+Message-ID: <ONONO.93Sep17XDVIpatch.fix-2@akira.fuka.info.waseda.ac.jp>
+(1)	-expertオプションを用いて起動して、ボタンなしで使用している時に
+	マークすると落ちてしまう、という不具合を修正。
+	[報告 : 京都大学 上原 哲太郎 さん]
+(2)	Print-out popupウィンドウのプルダウンメニューにおけるアイテム名
+	で、``Marked page''という表現が``All marked pages''と間違え易い
+	ので、``Last marked page''に変更。
+	[提案 : 大阪大学 升谷 保博 さん]
+(3)	DVIフィルタ(デバイスドライバ)の出力をlprの標準入力に与えるという
+	仕様を、DVIフィルタ(デバイスドライバ)の出力を一旦テンポラリファ
+	イルにリダイレクトし、それをlpr -s -rで出力するという仕様に変更。
+	[提案 : 大阪大学 升谷 保博 さん]
+(4)	ULTRIX V4.0にはstrdup()がないので、xmalloc()を使ったStrDup()を用
+	いるように変更。
+	[報告 : 東京大学 南田 幸紀 さん]
+fix-3				1993/09/23
+(1)	マークページリストの表記を
+		5,8-12,27,29,35-36,41
+	のようにする内部変数%o,%O,%g,%Gを追加。
+fix-4				1993/10/02
+(1)	-geometry指定をして起動するとTOCが表示されない(resize)してもバグ
+	を修正(miyuパッチで入ったバグと思われる)。
+	[報告 : 京都大学 今村 俊幸 さん]
+(2)	X11R4でviewport widgetのサイズが0となって異常終了するバグを修正
+	(X11R4のviewport widgetの設計ミスと思われる。X11R5では起きない)。
+	[報告/提案 : 東京大学 南田 幸紀 さん]
+(3)	font_open.cで探索ディレクトリの計算を行なっている部分の(orignal
+	xdviからの)バグを修正。
+	[報告/提案 : 東京大学 南田 幸紀 さん]
+fix-5				1994/08/20
+(1)	-paperオプションによって指定される用紙タイプ(ex. "a4")を示す内部
+	変数%z,%Zを追加。
+fix-6				1995/01/28
+(1)	print.cにおいて、出力処理を子プロセスがsystem()で実行するのを、
+	execl()に変更。
+	[報告 : 東京大学 鍵本 崇 さん]
+Revision 2			1995/09/23
+	markpage+toc+printdvi patch Revision 2。
+	Paperメニュー機能の追加により、	markpage+toc+printdvi+paperパッ
+	チに名称変更。
+(1)	DVIフィルタ(デバイスドライバ)に用いるコマンド文字列を環境変数で
+	与えられるように、内部変数%Rを追加。
+	[提案 : 京都大学 上原 正三 さん]
+(2)	テンポラリファイルを置くディレクトリを環境変数で与えられるように、
+	内部変数%Dを追加。
+(3)	-paperオプションで与えられる用紙タイプを元に、変換テーブルを参照
+	して、DVIフィルタ(デバイスドライバ)の用紙タイプ指定に変換してコ
+	マンド実行できるように、内部変数%Zを変更。
+(4)	プリンタ名を起動時に指定できるように、-printerオプションおよび
+	.printerリソースを追加。
+	オプション	リソース名	クラス名
+	-printer	.printer	Printer
+(5)	出力コマンド文字列を起動時に指定できるように、オプションおよびリ
+	ソースを追加。
+	オプション	リソース名	クラス名
+	-printall	.printAll	PrintAll
+	-printcurrent	.printCurrent	PrintCurrent
+	-printmarked	.printMarked	PrintMarked
+	-printregion	.printRegion	PrintRegion
+	-printlist	.printList	PrintList
+(6)	プリンタ制御出力コマンドを環境変数で与えられるように、内部変数%P
+	を追加。
+(7)	Paperボタンおよび't'コマンドによって、用紙タイプを変更できるよう
+	にした。
+fix-1				1995/10/07
+(1)	用紙タイプを変更した時に二回redrawされるのを修正。
diff -udNr xdvik//READMEs/README.miyu-beta6 pxdvik//READMEs/README.miyu-beta6
--- xdvik//READMEs/README.miyu-beta6	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/README.miyu-beta6	2010-07-25 14:56:37.614074299 +0900
@@ -0,0 +1,239 @@
+
+                << miyu-patch for xdvi PL17 について >>
+
+○miyu-patch for xdvi PL17 とは: 
+  いままで出ている xdvi 用のパッチをまとめて, xdvi PL17 用に修正したものです。
+  収録したパッチは以下のようなものです。
+
+    1) tpic2.2 対応にするためのパッチ
+       xdvi-16-tpic2.2         (1993/02 鷲坂@NTT; fj.sources.d,fj.comp.texhax)
+       xdvi-16-tpic2.2-fix1    (1993/02 鷲坂@NTT; fj.sources.d,fj.comp.texhax)
+
+    2) DVI ファイルをメニュー形式で選択するためのパッチ
+       xdvi+selfile            (fj 未投稿？)
+
+    3) ASCII "日本語" TeX 対応にするためのパッチ
+       xdvi-16j.patch          (1992/09 野呂＠富士通国際研; fj.sources)
+
+    4) Zeit の書体倶楽部などのアウトライン・フォント対応にするためのパッチ
+       xdvi-zeit               (1993/08 林＠青山学院大学; fj.sources)
+
+    5) ghostscript を利用して ps で描いた図対応にするためのパッチ
+       xdvi-16jgs.patch        (1992/09 仙田＠京大; fj.sources.d)
+       xdvi-16jgs.patch-fix1   (1992/09 升谷＠阪大; fj.sources.d)
+       xdvi-16jgs.patch-fix2   (1992/09 升谷＠阪大; fj.sources.d)
+       xdvi-16jgs.patch-fix3   (1992/09 木本豪＠筑波大学; fj.sources.d)
+       xdvi-16jgs.patch-fix4   (1993/06 森田＠北陸先端大; fj.sources)
+       xdvi-16jgs.patch-fix5   (1993/08 森田＠北陸先端大; fj.sources.d)
+
+    6) dvips 附属の epsf.sty に対応するためのパッチ
+       (名称なし)              (fj 未投稿)
+
+    7) jdvi2kps で処理する psfrag への対応 (バグあり)
+       (名称なし)              (fj 未投稿)
+
+    8) "PS Fig" ボタンの追加
+       (名称なし)              (fj 未投稿)
+
+  それぞれについての詳細は header の下にあるファイルを参照してください。
+
+  なお, 
+  2) のパッチは鈴木＠情報科学.東京大学さん <dai@is.s.u-tokyo.ac.jp> に, 
+  6) のパッチは上原＠京大基研さん <uehara@yisun1.yukawa.kyoto-u.ac.jp> に, 
+  8) のパッチは山上＠ＳＯＮＹさん <kaol@is.crl.sony.co.jp> に, 
+  ご協力いただきました。
+
+  また, 鈴木＠情報科学.東京大学さん <dai@is.s.u-tokyo.ac.jp> には, 
+  ドキュメントの対応も協力いただきました。
+
+○インストールについて: 
+  1. ファイルの入手
+
+    まず, xdvi PL17 のソース・ファイルである xdvi-17.tar.gz と
+    それに対するパッチ xdvi-17miyu.patch-beta6.gz を入手してください (*1)。
+
+  2. パッチの適用
+
+    次に, 作業ディレクトリを作成して, そのディレクトリに移った後, 
+    xdvi-17.tar.gz を展開します。そのまま, ディレクトリを移動しないで, 
+    xdvi-17miyu.patch-beta6.gz を用いてパッチをあてます。
+    このとき, GNU のツールである gzip および patch が必要となります (*2)。
+
+        < 実行例 >
+
+      % set srcdir=$cwd
+      % mkdir xdvi-17
+      % cd xdvi-17
+      % gzip -d -c $srcdir/xdvi-17.tar.gz | tar xvf -
+      % gzip -d -c $srcdir/xdvi-17miyu.patch-beta6.gz | patch -p1
+
+  3. コンパイルの準備
+
+    システムに応じて Imakefile を編集した後, 
+    xmkmf を実行して Makefile を生成します。
+
+  3.1 Imakefile の編集
+
+    ここでは, おもにオリジナルの xdvi での設定から
+    変更された部分について述べます。
+
+    まず最初は, ファイルの先頭の Use_MAKEPK, Use_SELFILE, 
+    Use_KANJI, Use_ASCIIDNP, Use_ZEIT, Use_NTTZEIT, Use_PS についての
+    #define または #undef を変更します。
+    
+        Use_MAKEPK      MakeTeXPK を用いて, 足りないフォントを自動的に作成する
+
+        Use_SELFILE     メニュー形式のファイル選択機能を有効にする
+
+        Use_KANJI       ASCII "日本語" TeX の DVI ファイルを扱うようにする
+
+        Use_ASCIIDNP    大日本印刷のフォントを用いて 
+                        ASCII "日本語" TeX を表示する
+
+        Use_ZEIT        ASCII "日本語" TeX の DVI ファイルの表示に
+                        Zeit の書体倶楽部などのアウトライン・フォントを使用する
+        Use_NTTZEIT     NTT-JTeX の表示にもアウトライン・フォントを使用する
+
+        Use_PS          ghostscript を用いて ps の図を表示する
+
+    * さて, Use_KANJI, Use_ASCIIDNP, Use_ZEIT, Use_NTTZEIT の関係ですが。
+
+      オリジナルの英語 TeX および NTT-JTeX で作成された DVI ファイルを
+      PK フォント, GF フォント, PXL フォントを用いて表示する場合には, 
+      すべてを #undef してください。
+
+      ASCII "日本語" TeX で作成された DVI ファイルを 
+      NTT-JTeX 用の大日本印刷フォント (または渡辺フォントなど互換フォント) を
+      用いて表示する場合には, Use_KANJI と Use_ASCIIDNP を #define して, 
+      それ以外を #undef してください。
+
+      ASCII "日本語" TeX で作成された DVI ファイルを 
+      Zeit の書体倶楽部などのアウトライン・フォントを用いて表示する場合には, 
+      Use_KANJI と Use_ZEIT を #define して, Use_ASCIIDNP を #undef ください。
+      このとき, NTT-JTeX で作成された DVI も 
+      Zeit の書体倶楽部などのベクトル・フォントを用いて表示する場合には, 
+      さらに Use_NTTZEIT も #define する必要があります。
+      もし, NTT-JTeX で作成された DVI ファイルは 
+      大日本印刷フォント (またはその互換フォント) を用いて表示する場合には, 
+      Use_NTTZEIT を #undef してください。
+
+      なお, 現在のところ Use_ASCIIDNP と Use_ZEIT は
+      同時に指定することはできません。
+      もし両方とも指定されたときには, Use_ASCIIDNP が優先されます。
+
+    * Use_MAKEPK, Use_SELFILE, Use_PS は上記の値とは独立に 
+      #define また #undef を指定することができます。
+
+    次に, フォントのサーチ・パスである 
+    DEFAULT_FONT_PATH, DEFAULT_VF_PATH, DEFAULT_SUBDIR_PATH を設定します。
+
+        DEFAULT_FONT_PATH     フォントのサーチ・パスを指定する
+                              一般に, PK ファイル, GF ファイル,
+                              PXL ファイルのパスを指定しますが, 
+                              USE_ZEIT が指定する場合には, それに加えて, 
+                              ASCII "日本語" TeX の tfm ファイルのパスも
+                              指定する必要があります
+
+        DEFAULT_VF_PATH       Virtual Font のサーチ・パスを指定する
+
+        DEFAULT_SUBDIR_PATH   SEARCH_SUBDIRECTORIES が指定されているときに
+                              検索を始めるトップ・ディレクトリを指定する
+                              一般にはなにも指定しておかない方がよい
+
+    もし, Use_MAKEPK を #define した場合には,
+    MakeTeXPK がインストールされるディレクトリ MAKEPK_BINDIR と
+    makeTeXPK で作られたフォントを格納するディレクトリ MAKEPK_DESTDIR を
+    設定してください。
+
+    もし, Use_ZEIT を #define した場合には, 
+    アウトライン・フォントの設定ファイルである FontConf がインストールされる
+    ディレクトリを DEFAULT_FONTCONFDIR を設定してください。
+
+    もし, Use_PS を #define した場合には, 
+    ps のヘッダ・ファイルのサーチ・パスの DEFAULT_PS_PATH と 
+    ghostscript がインストールされているディレクトリ GHOSTSCRIPT_BINDIR を
+    設定してください。
+
+    最後は DEFS の設定です。
+    まず, マシンに応じて, DEFS に -DMSBITFIRST を設定してください。
+    これは i[34]86 以外では大抵の場合設定する必要があります。
+    次に, マシンに応じて, DEFS に -DBLONG, -DBMSHORT を設定してください。
+    -DBMLONG, -DBMSHORT は設定してもしなくても, 動作しますが, 
+    これらを適切に設定すると実行速度が著しく改善される場合があります。
+    -DBMLONG と -DBMSHORT の両方を設定すると -DBMLONG のみが有効になります。
+    次に, 解像度を -DBDPI=… で, 
+    縮小率を -DDEFAULT_SHRINK=… で設定してください。
+    解像度は, 240DPI なら -DBDPI=240, 300DPI なら -DBDPI=300, 
+    400DPI なら -DBDPI=400 と設定してください。
+    縮小率は, 好みによりますが, 
+    解像度が 240DPI なら -DDEFAULT_SHRINK=\"3\", 
+    300DPI なら -DDEFAULT_SHRINK=\"4\", 
+    400DPI なら -DDEFAULT_SHRINK=\"5\" あたりが適当です。
+    また, ウィンド移動のキー・バインディングを
+    vi ライクなものにしたいときには -DVI_KEY を設定してください。
+
+        < 実行例 >
+
+      % vi Imakefile
+      (編集)
+
+  3.2 Makefile の生成
+
+    Imakefile の設定がすんだら Makefile の生成を行ないます。
+
+        < 実行例 >
+
+      % xmkmf
+      % make includes
+      % make depend
+
+  3.3 アウトライン・フォント用ライブラリの設定
+
+    また, USE_ZEIT を Imakefile 中で #define した場合には,
+    VFlib-1.32 に移って, config.h および FontConf を編集します。
+    詳しくは Doc,euc を参照してください。
+
+        < 実行例 >
+
+      % cd VFlib-1.32
+      % vi config.h
+      (編集)
+      % vi FontConf
+      (編集)
+      % cd ..
+
+  4. コンパイル
+
+    設定が終ったらコンパイルを行ないます。
+
+        < 実行例 >
+
+      % make
+
+  5. インストール
+
+    正常にコンパイルできたら, 実行ファイルおよびマニュアルのインストールを
+    行ないます。
+
+        < 実行例 >
+
+      % make install
+      % make install.man
+
+    必要ならば, さらに MakeTeXPK のインストールも行なってください。
+
+        < 実行例 >
+
+      % make install.MakeTeXPK
+
+    *1 これらは, 
+       ftp.tohoku.ac.jp[130.34.8.9]:~ftp/pub/tex/dviwares/xdvi/PL17 などの
+       anonymous ftp などから入手できます。
+
+    *2 これらは, 
+       ftp.ecei.tohoku.ac.jp[130.34.222.67]:~ftp/pub/GNU/gzip および
+       ftp.ecei.tohoku.ac.jp[130.34.222.67]:~ftp/pub/GNU/patch 以下にあります。
+
+--
+1993年 9月15日(祝)        すぎうら しげき  <miyu@ftp.tohoku.ac.jp>
+
diff -udNr xdvik//READMEs/README.ptex pxdvik//READMEs/README.ptex
--- xdvik//READMEs/README.ptex	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/README.ptex	2010-07-25 14:56:37.614074299 +0900
@@ -0,0 +1,80 @@
+
+		  << xdvi-17+ptex patch について >>
+
+					1995/11/09
+					竹中 浩
+					lh36112@hongo.ecc.u-tokyo.ac.jp
+					KHB11235@niftyserve.or.jp
+
+○xdvi-17+ptex patch とは
+  xdvi-17 + miyu-patch for xdvi PL17 を ASCII pTeX の縦組み拡張 DVI に
+  対応させるパッチです。このパッチを当てることで xdvi での縦組み表示が
+  可能になります。
+
+○動作を確認した環境
+	linux 1.3.24 + Slackware 2.2 + JE-0.9.6
+
+○インストールについて
+
+  まず, xdvi PL17 のソース・ファイルである xdvi-17.tar.gz と、それに対
+  するパッチ xdvi-17miyu.patch-beta7.pre.gz (*1)、さらに本パッチ 
+  xdvi-17+ptex.patch  を用意します。
+
+  次に, 作業ディレクトリを作成して, そのディレクトリに移った後, 
+  xdvi-17.tar.gz を展開します。そのまま, ディレクトリを移動しないで, 
+  xdvi-17miyu.patch-beta7.pre.gz を用いてパッチをあてます。
+  このとき, GNU のツールである gzip および patch が必要となります (*2)。
+  同様に xdvi-17+ptex.patch を用いてパッチをあてます。
+
+  あとは, システムに応じて Imakefile を編集した後, 
+  xmkmf を実行して Makefile を生成して, make を実行します。
+
+  なお、miyu-patch for xdvi PL17 については、README.miyu-patch をよく
+  読んでください。
+
+  (*1) これらは, ftp://ftp.tohoku.ac.jp/pub/tex/dviwares/xdvi/PL17 な
+       どの anonymous ftp などから入手できます。
+       xdvi-17miyu.patch-beta6.gz や、Linux-JE の xdvi パッチでも OK 
+       です。
+
+  xdvi-17+markpage+toc+printdvi[+paper] patch との共存は問題ありません。
+  ただし Imakefile へのパッチあては当然うまくいかないでしょうから、
+  Imakefile.rej などを参照して適当に手動で修正してやってください。
+
+
+○Use_PTEX について
+  当然のことながら、これを define しなくては pTeX 対応になりません。試
+  してませんが、たぶん Use_ASCIIDNP とはうまく共存できないだろうと思い
+  ます。
+
+○tategaki.c について
+  xdvi-17+ptex.patch では横組み用の漢字フォントを縦組み用に修正して表
+  示します。このための修正情報のテーブルが tategaki.c に入ってます。
+
+     struct TateCorrection TateCorrectionTable[] = {
+	     { TCOR_NOP, 0, 0 },
+	     { TCOR_SHIFT, 64, 96 },	/* 2122 '、' */
+	     { TCOR_SHIFT, 64, 96 },	/* 2123 '。' */
+	     { TCOR_SHIFT, 64, 96 },	/* 2124 '，' */
+	     { TCOR_SHIFT, 64, 96 },	/* 2125 '．' */
+	     { TCOR_SHIFT, 42, 42 },	/* 2126 '・' */
+	     { TCOR_ROTATE, 0, 0 },	/* 2127 '：' */
+			:
+
+  というような具合です。
+
+  最初の項目が TCOR_NOP の場合には修正をしません。TCOR_SHIFT の場合に
+  は、位置の移動を行ないます。TCOR_ROTATE の場合には、右に90度回転して
+  から位置の移動を行ないます。'0x2121' などのように JIS の文字コードを
+  指定した場合には、その文字のフォントで代替します。
+
+  2番目、3番目の項目はそれぞれ x、y 方向の位置の移動量です。+/- 128 で
+  フォントの幅(高さ)の分だけ位置を左右(上下)にずらします。
+
+  使用するフォントや好みによって適切な修正方法・量は異なると思うので、
+  見た目にこだわる方は適当に修正してやってください。
+
+○著作権
+  日本の著作権法上放棄はできないはずですが、本パッチの著作権を積極的に
+  主張するつもりはありません。配布・改造は自由です。
+
diff -udNr xdvik//READMEs/README.tasai-ussy pxdvik//READMEs/README.tasai-ussy
--- xdvik//READMEs/README.tasai-ussy	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/README.tasai-ussy	2010-07-25 14:56:37.614074299 +0900
@@ -0,0 +1,312 @@
+
+               ** pagenumber-patch for Xdvi PL17 + etc. **
+
+○はじめに
+  xdvi-17.pagenumber.patchは、"xdvi-17+miyu-patch for xdvi PL17"をベースにした
+パッチである、"xdvi-17+markpage+toc+printdvi"に対するパッチです。
+
+○追加/変更機能
+  本パッチをあてることにより以下の機能が追加/変更されます。
+
+  1) 実際のPage番号によるTOCリスト
+    小野＠早稲田さんらによる xdvi-17+markpage+toc+printdvi パッチでは、ページ
+  番号リスト(toc)を表示する機能が追加されましたが、tocに表示されるページ番号は
+  実際のページ番号ではなく先頭からの枚数となっていました。
+    本パッチでは、実際のページ番号が表示されるように変更しました。
+
+  2) ページ移動によるtocの自動アップデート
+    'g'キーなどによるページ移動に伴って、tocのスクロールバー移動を自動的に行う
+  ように変更しました。いろいろと細工しましたので、実際に使ってみてください:-)
+
+  3) 一部キー動作の変更
+    'g'キーによる指定枚数への移動を、実際のページ番号への移動としました。これ
+  にともない、'P'キーによる絶対ページ番号を指定する機能を削除し、従来の'g'キー
+  の機能を割り当てました。
+
+○インストールについて
+  本パッチを使用するにあたって以下のファイルが必要です。
+
+        1) xdvi-17.tar.gz
+        2) xdvi-17miyu.patch-beta6
+        3) xdvi-17miyu.beta6-beta.pre7(fj.sources.d)
+        4) xdvi-pl17+markpage+toc+printdvi(fj.sources,fj.comp.texhax)
+        5) 同fix-1(fj.sources.d,fj.comp.texhax)
+        6) 同fix-2(fj.sources,fj.comp.texhax)
+        7) xdvi-17.tasai-ussy.patch(fj.sources.d,fj.comp.texhax)
+           Message-ID: <USSY.93Nov12211358@ayame.int.titech.ac.jp>
+        8) xdvi-17.pagenumber.patch(fj.sources.d)
+           Message-ID: <USSY.93Nov15175604@kisaragi.int.titech.ac.jp>
+
+  (注意)
+    7)の一部(expertモード関係)は、すでに6)で修正されていますのでrejectされても
+  問題ありません。本パッチは8)に対する修正パッチです。
+
+  1)のを展開し 2)〜8)までのパッチをあてたソースがあるディレクトリで、
+        % patch -p2 < xdvi-17.pagenumber-fix.patch
+としてパッチをあててください。
+
+○使用上の注意
+  本パッチで追加された機能は、Use_PAGENUM を Imakefile 中で define/undefine す
+ることによって使用する/しないを切替えることが可能です。
+  また、xdvi-pl17+markpage+toc+printdviにおいて Use_TOC を define していないと
+意味のないものであることに注意してください。Use_TOC を定義せずに Use_PAGENUM 
+を定義した場合、動作の保証はできません。
+
+○変更履歴
+
+Nov.12, 1993
+    Message-ID: <USSY.93Nov12231403@ayame.int.titech.ac.jp>
+    --
+    涙のファーストリリース(T_T)
+    * tocのページ番号を実際のページ番号となるようにした。
+
+Nov.15, 1993
+    Message-ID: <USSY.93Nov15175604@kisaragi.int.titech.ac.jp>
+    --
+    * Imakefileでの些細な間違いを変更
+
+Nov.18, 1993
+    --
+    正式版リリース
+    * 一部キーの動作を変更(追加機能とのバッティングを防ぐため)。
+    * ページ移動後のtoc自動アップデート機能を追加した。
+
+From ussy@int.titech.ac.jp Mon Dec 13 18:58:45 1993
+Newsgroups: fj.comp.texhax,fj.sources.d
+Path: hiromi.fuka.info.waseda.ac.jp!waseda-mail!wnoc-tyo-news!nirvana.cs.titech!cs.titech!is.titech!sys.titech.ac.jp!int.titech.ac.jp!ussy
+From: ussy@int.titech.ac.jp (Takuya Harakawa)
+Subject: BugPatch for Xdvi-17.miyu.path(beta.7)
+Content-Type: text/plain; charset=ISO-2022-JP
+Message-ID: <USSY.93Nov12211358@ayame.int.titech.ac.jp>
+Followup-To: fj.sources.d
+Sender: news@int.titech.ac.jp
+Organization: Tokyo Institute of Tech., Dept. of Intelligence Science, Japan
+Mime-Version: 1.0
+Distribution: fj
+Date: 12 Nov 1993 21:13:58 +0900
+Lines: 188
+Xref: hiromi.fuka.info.waseda.ac.jp fj.comp.texhax:3143 fj.sources.d:1547
+
+
+  はらかわ＠東工大です。
+  fj.comp.texhaxとfj.sources.dのクロスポストです。
+
+  xdvi-17+miyu.patch(beta.7)+markpage+toc+printdvi について、細かな
+バグフィックスを行いました。
+
+  修正した点は以下のとおりです(括弧内は修正した人)。
+
+・ExpertモードでページのMark/UnMarkを行うと死ぬ
+(tasai@int.titech.ac.jp: ASAI Toru)
+
+  ページ番号を表示するList Widgetが作成されていないのに、これをアップ
+デートしようとしているのが原因。アップデート処理をモードに応じてマスク
+するようにした。
+
+・マウスの中/右ボタンによるページ番号リストの選択処理 
+(ussy@int.titech.ac.jp: HARAKAWA Takuya)
+
+  リストの選択位置を単純にマウスのY座標を15で割って計算していたために、
+ページ数が多くなるとインデックスのずれが激しくなってしまう。List Widget
+の内部を参照して、正確なインデックス番号を得られるようにした。
+
+  修正パッチは shell archive してあります。
+  xdvi-17+miyu.patch(beta.7)+markpage+toc+printdvi のソースが展開して
+あるディレクトリで
+             % patch -p2 < xdvi-17.tasai-ussy.patch
+としてパッチをあててください。
+
+From ussy@int.titech.ac.jp Mon Dec 13 18:58:50 1993
+Newsgroups: fj.sources.d,fj.comp.texhax
+Path: hiromi.fuka.info.waseda.ac.jp!waseda-mail!wnoc-tyo-news!cs.titech!is.titech!sys.titech.ac.jp!int.titech.ac.jp!ussy
+From: ussy@int.titech.ac.jp (Takuya Harakawa)
+Subject: Re: BugPatch for Xdvi-17.miyu.path(beta.7)
+In-Reply-To: ussy@int.titech.ac.jp's message of Fri, 12 Nov 1993 12:13:58 GMT
+Content-Type: text/plain; charset=ISO-2022-JP
+Message-ID: <USSY.93Nov15152917@kisaragi.int.titech.ac.jp>
+Followup-To: fj.sources.d
+Sender: news@int.titech.ac.jp
+Organization: Tokyo Institute of Tech., Dept. of Intelligence Science, Japan
+References: <USSY.93Nov12211358@ayame.int.titech.ac.jp>
+Mime-Version: 1.0
+Distribution: fj
+Date: 15 Nov 1993 15:29:16 +0900
+Lines: 26
+Xref: hiromi.fuka.info.waseda.ac.jp fj.sources.d:1548 fj.comp.texhax:3144
+
+
+  はらかわ＠東工大です。
+
+>  はらかわ＠東工大です。
+>  fj.comp.texhaxとfj.sources.dのクロスポストです。
+>
+>  xdvi-17+miyu.patch(beta.7)+markpage+toc+printdvi について、細かな
+>バグフィックスを行いました。
+
+  自己フォローです(^^;
+  パッチを当てたのは...
+
+        xdvi-17+miyu.patch(beta.7)+markpage+toc+printdvi
+
+ではなくて
+
+        xdvi-17+miyu.patch(beta.pre7)+markpage+toc+printdvi
+                                ~~~
+でした。
+  バグフィックスも、改造パッチでも間違えてしまいました。:-(
+  お間違えのないように...
+
+--
+USSY / はらかわ たくや       | Tokyo Institute of Tech.,
+Email: ussy@int.titech.ac.jp | Dept. of Intelligence Science, Japan
+       USSY@Pekin etc...     | Hara Lab.(R1-520) ext.2473 in Nagatsuta
+
+From ussy@int.titech.ac.jp Mon Dec 13 18:59:08 1993
+Newsgroups: fj.sources.d
+Path: hiromi.fuka.info.waseda.ac.jp!waseda-mail!wnoc-tyo-news!cs.titech!is.titech!sys.titech.ac.jp!int.titech.ac.jp!ussy
+From: ussy@int.titech.ac.jp (Takuya Harakawa)
+Subject: UnOfficial Patch for Xdvi-17.miyu.patch(beta.7)
+Content-Type: text/plain; charset=ISO-2022-JP
+Message-ID: <USSY.93Nov12231403@ayame.int.titech.ac.jp>
+Followup-To: fj.sources.d
+Sender: news@int.titech.ac.jp
+Organization: Tokyo Institute of Tech., Dept. of Intelligence Science, Japan
+Mime-Version: 1.0
+Distribution: fj
+Date: 12 Nov 1993 23:14:03 +0900
+Lines: 242
+
+
+  はらかわ＠東工大です
+  xdvi-17+miyu.patch(beta.7)+markpage+toc+printdvi+tasai-ussy に対す
+る改造パッチです。
+
+  画面の右端に表示されているリストは、ページ番号ではなく先頭からの枚
+数が表示されているために、TOCを見ながら目的のページを参照するといっ
+たことができません。
+  これを解消するために、.dviファイルに記述されているページ番号を参照
+してリスト表示するように変更しました(ページの飛び越しなどにも対応で
+きます)。目次のページ番号の関係上、リストに表示される番号が前後する
+ことがありますが御了承ください:-<
+
+[注意] 'g'キーによるページ選択は以前のまま先頭からの枚数となっています。
+
+  改造パッチは shell archive してあります。
+  xdvi-17+miyu.patch(beta.7)+markpage+toc+printdvi+tasai-ussy のソー
+スが展開してあるディレクトリで
+             % patch -p2 < xdvi-17.page.patch
+としてパッチをあててください。
+
+From ussy@int.titech.ac.jp Mon Dec 13 18:59:28 1993
+Newsgroups: fj.sources.d
+Path: hiromi.fuka.info.waseda.ac.jp!waseda-mail!wnoc-tyo-news!cs.titech!is.titech!sys.titech.ac.jp!int.titech.ac.jp!ussy
+From: ussy@int.titech.ac.jp (Takuya Harakawa)
+Subject: an unofficial patch for Xdvi-17.miyu.patch(beta.pre7)
+Content-Type: text/plain; charset=ISO-2022-JP
+Message-ID: <USSY.93Nov15175604@kisaragi.int.titech.ac.jp>
+Sender: news@int.titech.ac.jp
+Organization: Tokyo Institute of Tech., Dept. of Intelligence Science, Japan
+Mime-Version: 1.0
+Distribution: fj
+Date: 15 Nov 1993 17:56:04 +0900
+Lines: 251
+
+
+  はらかわ＠東工大です
+
+  先日ポストした Xdvi-17 改造パッチに間違いが発見されましたので、再
+度ポストします(^^;
+  先日のパッチは破棄して、今回のパッチをあて直してください。
+ (変更点は Imakefile の一部です... Thanks to miura@cs.titech.ac.jp)
+
+---
+
+  画面の右端に表示されているリストは、ページ番号ではなく先頭からの枚
+数が表示されているために、TOCを見ながら目的のページを参照するといっ
+たことができません。
+  これを解消するために、.dviファイルに記述されているページ番号を参照
+してリスト表示するように変更しました(ページの飛び越しなどにも対応で
+きます)。目次のページ番号の関係上、リストに表示される番号が前後する
+ことがありますが御了承ください:-<
+
+[注意] 'g'キーによるページ選択は以前のまま先頭からの枚数となっています。
+
+  改造パッチは shell archive してあります。
+  xdvi-17+miyu.patch(beta.pre7)+markpage+toc+printdvi+tasai-ussy
+のソースが展開してあるディレクトリで
+             % patch -p2 < xdvi-17.page.patch
+としてパッチをあててください。
+
+From ussy@int.titech.ac.jp Mon Dec 13 18:59:32 1993
+Newsgroups: fj.sources.d
+Path: hiromi.fuka.info.waseda.ac.jp!waseda-mail!wnoc-tyo-news!cs.titech!is.titech!sys.titech.ac.jp!int.titech.ac.jp!ussy
+From: ussy@int.titech.ac.jp (Takuya Harakawa)
+Subject: Re: an unofficial patch for Xdvi-17.miyu.patch(beta.pre7)
+In-Reply-To: ussy@int.titech.ac.jp's message of Mon, 15 Nov 1993 08:56:04 GMT
+Content-Type: text/plain; charset=ISO-2022-JP
+Message-ID: <USSY.93Nov15202826@kisaragi.int.titech.ac.jp>
+Lines: 31
+Sender: news@int.titech.ac.jp
+Fcc: |/usr/local/lib/mh/rcvstore +AuthorCopy
+Organization: Tokyo Institute of Tech., Dept. of Intelligence Science, Japan
+References: <USSY.93Nov15175604@kisaragi.int.titech.ac.jp>
+Mime-Version: 1.0
+Distribution: fj
+Date: 15 Nov 1993 20:28:26 +0900
+
+
+  またまた はらかわ＠東工大です
+
+>  先日ポストした Xdvi-17 改造パッチに間違いが発見されましたので、再
+>度ポストします(^^;
+>  先日のパッチは破棄して、今回のパッチをあて直してください。
+> (変更点は Imakefile の一部です... Thanks to miura@cs.titech.ac.jp)
+
+  とは書いたものの、すでにパッチを当ててしまった方がいらっしゃるよう
+ですので、そのような方のために変更部分だけポストします。
+
+  実際に変更した部分は Imakefile の 部分で...
+
+    #define Use_PAGENUM
+    PAGE_DEFS=-DPAGENUM
+    #else
+    ...
+
+となっている部分を、
+
+    #ifdef Use_PAGENUM	         <-- 変更点
+    PAGE_DEFS=-DPAGENUM
+    #else
+    ...
+
+としただけです(情けないこってす T_T)。
+
+--
+USSY / はらかわ たくや       | Tokyo Institute of Tech.,
+Email: ussy@int.titech.ac.jp | Dept. of Intelligence Science, Japan
+       USSY@Pekin etc...     | Hara Lab.(R1-520) ext.2473 in Nagatsuta
+
+From ussy@int.titech.ac.jp Mon Dec 13 18:59:55 1993
+Newsgroups: fj.comp.texhax,fj.sources.d
+Path: hiromi.fuka.info.waseda.ac.jp!waseda-mail!wnoc-tyo-news!cs.titech!is.titech!sys.titech.ac.jp!int.titech.ac.jp!ussy
+From: ussy@int.titech.ac.jp (Takuya Harakawa)
+Subject: Xdvi-17 pagenumber patch fix
+Content-Type: text/plain; charset=ISO-2022-JP
+Message-ID: <USSY.93Nov18065838@ayame.int.titech.ac.jp>
+Followup-To: fj.sources.d
+Lines: 469
+Sender: news@int.titech.ac.jp
+Fcc: |/usr/local/lib/mh/rcvstore +AuthorCopy
+Organization: Tokyo Institute of Tech., Dept. of Intelligence Science, Japan
+Mime-Version: 1.0
+Distribution: fj
+Date: 18 Nov 1993 06:58:38 +0900
+Xref: hiromi.fuka.info.waseda.ac.jp fj.comp.texhax:3157 fj.sources.d:1556
+
+
+  はらかわ＠東工大です
+
+  xdvi-17+miyu-patcj+markpage+toc+printdvi+tasai-ussy+pagenumber(^^;
+のfix & version upパッチをお送りします。
+
+  前回 流したものにさらにパッチをあててください。
diff -udNr xdvik//READMEs/README.vf2ft pxdvik//READMEs/README.vf2ft
--- xdvik//READMEs/README.vf2ft	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/README.vf2ft	2010-07-25 14:56:37.614074299 +0900
@@ -0,0 +1,100 @@
+＊ xdvik-22.40l-j1.09-vf2ft.patch について
+
+http://www.matsusaka-u.ac.jp/~okumura/texfaq/qa/6610.html で提案されて
+いた、VFlibを使わずにfreetype2のみでxdviの日本語化を実現する方策を、と
+りあえずパッチ形式にし、また、configure時にその方策を選択できるように
+しました。
+
+	$ ./configure --with-vflib=vf2ft
+
+のようにすると、VFlib APIをFreetypeのもので置き換えます。それ以外であ
+れば、これまでのxdvi-jpパッチと同等となります。
+
+縦書き等、多々問題があると思いますが、VFlib無しでfreetype2を使えるよう
+にという試みは、選択肢が増えるという意味でも意義があるものと思います。
+
+以下、この試みの初出と思われるウェブサイトの全文引用およびtarball中の
+memoを転載させていただきます。但し、memo中で書かれている手順1,2,3の記
+述は本パッチでは該当しないので読み飛ばして構わないでしょう。
+
+
+○ xdvi-ft2.tar.gz について
+〜ここから〜
+URL: http://www.matsusaka-u.ac.jp/~okumura/texfaq/qa/6610.html
+Title: xdvi using freetype
+名前: otofuji
+日時: 2002-02-15 22:57:22
+
+乙藤@東北学院大学と申します.
+
+ばかばかしいといってしまえばそれまでですが, xdviの中で利用されている
+VFlibの関数をFreetypeの関数で置き換えるためのものを作って
+
+ftp://ftp.cs.tohoku-gakuin.ac.jp/pub/TeX/TG-Local-TeX/xdvi-ft2.tar.gz
+
+に置いておきました. パッチにもなっていませんが...
+
+xdviの利用しているフォントファイルがttfファイルかotfファイルを使って
+いる場合だけ利用できます.
+
+メリットは
+o XFree86にFreetypeが付いている状況なので, VFlibを用いずにX Window環境
+  だけで利用できる
+o FreetypeではOpentypeもサポートされているので, そのままでOpentypeが利
+  用できる
+くらいでしょうか
+
+P.S. Ghostscriptもこれができると面白いのですが.
+〜ここまで〜
+
+
+○ xdvi-ft2.tar.gz内のmemo
+〜ここから〜
+xdvikの中でFreetypeを使うことを考えた試作品です. vf2ft-utils.cだけが入っ
+ています. VFlibのコードを参考に利用させてもらっています.
+
+VFlib2を使う場合が多かったのですが, XFree86に標準でfreetypeが入ってき
+たので, なるべくX windowシステムだけで利用できないかと思って作ったもの
+です. freetypeではOpentypeフォントも利用できるので, 面白いのかもしれま
+せん.
+
+縦書きの確認はしていません.
+
+1. texk/xdvikの下に, vf2ft-utils.cを移動させ,
+   cc -c -O2 -I/usr/X11/include/freetype2 vf2ft-utils.c
+   を実行しておく.
+
+2. configure 実行後, make の前にtexk/xdvikのMakefileを修正する.
+  2.1. objects の最後に vf2ft-utils.o を追加する.
+  2.2 -lVFlib の部分を -lfreetype に変更する.
+
+3. 普通に "make", "make install"する.
+   make時に VF.h がないと文句をいうかもしれません. include 行をコメン
+   トアウトして, で大丈夫だと思います(未確認)
+
+4. vfontmapを以下のように修正する.
+
+	min	明朝体のttfファイル   or otfファイル
+	goth	ゴシックのttfファイル or otfファイル
+----
+Edition Record:  020215, 020220
+〜ここまで〜
+
+○ vfontmapの記述例
+
+Win上のUNIX的環境であるCygwin/XFree86での例となりますが、例えば
+/usr/local/share/texmf/xdvi/vfontmap に、
+
+〜ここから〜
+min	/cygdrive/c/WINDOWS/Fonts/msmincho.ttc
+goth	/cygdrive/c/WINDOWS/Fonts/msgothic.ttc
+〜ここまで〜
+
+のように記述することでASCII pTeXの日本語dviが扱えるようになります。他
+のフォント及びマッピングについては、これを参考にxdvi-jpパッチのドキュ
+メント類を参考にしてください。
+
+また、提案tarball中のsuppl.tarに入っていた、コード変換に関するサンプル
+get-mapping.c、フォントマッピングテーブルに関するサンプル
+get-origfontfile.cについては、このパッチでは反映されていませんが、検討
+すべき問題提起がされていると思います。(山田 泰司<taiji@aihara.co.jp>)
diff -udNr xdvik//READMEs/README.xdvik-22.15-j1.04.patch pxdvik//READMEs/README.xdvik-22.15-j1.04.patch
--- xdvik//READMEs/README.xdvik-22.15-j1.04.patch	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/README.xdvik-22.15-j1.04.patch	2010-07-25 14:56:37.614074299 +0900
@@ -0,0 +1,217 @@
+
+		<< xdvik-22.15-j1.04 patch について >>
+
+							2000年7月18日
+
+
+[1] xdvik-22.15-j1.04 patch とは
+
+  xdvik-22.15 に対する日本語化および機能拡張パッチです。このパッチは
+既に出回っているいくつかの日本語パッチに修正や改変を加えたものです。
+パッチの変更履歴は CHANGES.xdvik-jp を御覧下さい。
+
+
+[2] コンパイル・インストール
+
+  とりあえず、xdvik-22.15.tar.gz と xdvik-22.15-j1.04.patch.gz が同じ
+ディレクトリにあるとして…。
+
+	% gzip -dc xdvik-22.15.tar.gz | tar xf -
+	% cd xdvik-22.15
+	% gzip -dc ../xdvik-22.15-j1.04.patch.gz | patch -p1 -s
+	% ./configure
+	% make
+	# make install
+
+で、デフォルトの設定でインストールされます。
+
+  kpathsea ライブラリは既にインストール済みだから xdvi 部分だけをインス
+トールしたいという場合は、texk/xdvik に移動してから make install して下さい。
+
+  また、デフォルトでは -g オプション付で make されると思いますが、これだと
+やたらと実行ファイルが大きくなりますので、configure 実行時に
+
+	% env CFLAGS="-O2" ./configure
+
+等を指定した方がいいかもしれません。
+
+
+  設定変更は configure スクリプトのオプションで指定します。
+
+★デフォルトの紙のサイズ
+
+   --enable-a4			A4 (デフォルト)
+   --disable-a4			US letter
+
+  オリジナルの xdvik では US letter の方がデフォルトでしたが、日本語
+パッチを当てると A4 の方がデフォルトになります。
+
+
+★シェアドライブラリ
+
+  --enable-static	kpathsea ライブラリはスタティックリンク (デフォルト)
+  --enable-shared	kpathsea ライブラリはダイナミックリンク
+
+
+★明朝体とゴシック体以外の日本語書体の使用
+
+   --with-vfontmap			多書体を使う。(デフォルト)
+   --without-vfontmap			多書体を使わない。
+
+  vfontmap のデフォルトは、/usr/local/share/texmf/xdvi/vfontmap です。
+変更する場合は後述の --enable-xdvietcdir で指定します。--with-vfontmap
+の場合、この指定パスにファイルが存在しない場合は、サンプルがインストール
+されます。(既存の場合、上書きはされません)
+
+
+★日本語フォントの指定
+
+   --with-vflib		ASCII, NTT 共に VFlib を使う。(デフォルト)
+   --with-vflib=nontt	ASCII で VFlib を、NTT で PK フォントを使う。
+   --without-vflib	ASCII, NTT 共に PK フォントを使う。
+
+  --without-vflib を指定した場合は自動的に --without-vfontmap になります。
+
+
+★画面移動キーの変更
+
+   --enable-vikey		vi 風の h,j,k,l を使います。 (デフォルト)
+   --disable-vikey		xdvi 標準の l,d,u,r を使います。
+
+
+★パネルのサイズ指定
+
+   --enable-smallpanel		パネルサイズを小さめにします (デフォルト)
+   --disable-smallpanel		xdvi 標準サイズにします。
+
+
+★拡大縮小ボタン
+
+   --enable-zoombutton		拡大ボタンと縮小ボタンを付けます (デフォルト)
+   --disable-zoombutton		xdvi 標準の固定倍率への変更ボタンを付けます
+
+
+★Shrink サイズの指定
+
+   --enable-shrink=6		デフォルトの Shrink サイズを指定します。
+
+  指定しない時のデフォルトは 10 になります。数字が大きいほど表示は小さく
+なります。
+
+
+★ベース DPI の指定
+
+   --enable-bdpi=300		PK フォントのベース DPI を指定します。
+
+  指定しない時のデフォルトは 600dpi です。
+
+
+★xdvi からの印刷コマンドを指定します。
+
+   --enable-xdviprint	新しい DVISEL 機能を使って印刷します (デフォルト)
+   --disable-xdviprint	従来の PRINTDVI 機能を使って印刷します
+
+  DVISEL 機能と PRINTDVI 機能の違いは…
+
+  DVISEL
+      xdvi で指定ページの DVI を切り出し、外部コマンドにパイプで引き渡し
+      ます。外部コマンドはパイプ(標準入力)から DVI を受け取りプリントします。
+      通常、この外部コマンドには内部で dvips/dvi2ps/jdvi2kps 等を呼び出す
+      スクリプトを指定します。READMEs/README.xdvi20c-j1.0+hal2+dvisel も
+      参照して下さい。
+
+  PRINTDVI
+      xdvi で予め指定されてる印刷コマンド(%P %R など)に従い、印刷する
+      ページ等を引数指定して外部コマンド(通常 dviselect)を呼び出して、
+      指定ページを切り出し、その後プリンタドライバに合わせて紙のサイズ
+      を指定する引数の変更等をし、その引数を指定して、プリンタドライバー
+      等を動かします。READMEs/README.markpage+toc+printdvi+paper も
+      参照して下さい。
+
+  なお、DVISEL 機能を使う場合は、指定する外部コマンドを
+
+   --enable-xdviprint=/usr/libexec/xdviprint
+
+のように変更できます。デフォルトは /usr/local/bin/xdviprint です。
+指定は絶対パスで行ないます。(実行時にリソース等でも変更できます)
+
+  また、PRINTDVI 機能を使う場合は texk/xdvik/xdvi-config.h の
+PRCMDALL, PRCMDCUR, PRCMDMRK, PRCMDRGN, PRCMDLST, TEMPDIR, DVIFILTERCMD,
+FILTOPTTBLFILE の各マクロを自分の環境に合わせて変更して下さい。configure
+では変更できません。
+
+
+★印刷に使う DVI→PS フィルタ
+
+   --with-dvifilter=dvips	dvips (デフォルト)
+   --with-dvifilter=dvi2ps	dvi2ps
+   --with-dvifilter=jdvi2kps	jdvi2kps
+   --without-dvifilter		xdvi から印刷機能をなくします。
+
+  この指定は、上述オプションで DVISEL と PRINTDVI のどちらを指定したか
+で意味が変わります。
+
+  DVISEL の場合、この指定に合わせたサンプルスクリプトを上述の
+ --enable-xdviprintで指定したパスにインストールします。既にインストール
+されてる場合は上書きしませんので、この指定は意味をしません。DVISEL は
+xdvi バイナリ内にはプリンタドライバの違いは含めず、全て外部スクリプトで
+違いを吸収します。スクリプトなので、インストール後でも変更可能です。
+
+  PRINTDVI の場合、この設定を xdvi バイナリ内に埋め込み、xdvi はデフォ
+ルトでここで指定したプログラムを起動するようになります。(実行時にリソース
+等でも変更可能)
+
+  また、--without-dvifilter を指定した場合は、DVISEL 機能も PRINTDVI 機能
+も使いません。
+
+
+★設定ファイル等のインストールディレクトリ
+
+   --enable-xdvietcdir=/etc/tex		設定ファイル等のディレクトリ指定
+
+  vfontmap や xdvipaper.dvips 等のオプションテーブルがインストールされる
+ディレクトリを指定します。デフォルトは /usr/local/share/texmf/xdvi です。
+
+
+
+【特殊な設定をする場合】
+
+  これら以外の設定をする場合は、texk/xdvik/ 以下の Makefile や xdvi-config.h
+を変更して下さい。
+
+  また、「うちはまだ TeX 2.99 (ASCII jtex-1.7 等) を使ってて kpathsea
+なんてないよ」という方は、是非とも TeX 3.x (ASCII pTeX 2.x 等)のインス
+トールをお勧めしますが、一応 kpathsea をインストールせずに動かす事も
+出来るようです。:-)
+  この場合、まず texk/kpathsea/texmf.in の PKFONTS や TFMFONTS 等の
+指定を自分の環境に合わせて書き換えます。例えば、
+
+PKFONTS = .;/usr/local/lib/fonts/pk600;/usr/local/lib/fonts/pk300
+
+とします。それから configure をして、static リンクで make すれば、OK
+です。kpathsea 設定ファイルやライブラリ等がインストールされてなくても、
+ここに指定したディレクトリ(バイナリ埋め込みになる)を探します。他にも
+mf がないのなら、--without-mktexpk-default や --without-mktexmf-default
+なども指定しておいた方がいいかも知れません。
+
+
+[3] 著作権について
+
+  本パッチはかなり多くの方々の総合著作物です。パッチの著作権はそれぞれ
+のパッチ作成者にあります。詳しくは READMEs/ 以下のドキュメント群を参照して
+下さい。
+
+  本パッチの再配布は自由に行って構いませんが付属のドキュメント類 
+(READMEs/ 以下のファイル)はそのままの形で添付してください。また改変
+も自由に行って構いませんが、改変したものを配布する場合は、
+
+	xdvi-jp メーリングリスト <xdvi-jp@bi.appi.keio.ac.jp>
+
+まで連絡頂けると幸いです。バグ報告、提案、その他の連絡等も上記までお願い
+します。
+
+  また、開発に参加したい等、ML の subscribe 希望の方はまずは、guide と
+だけ書かれたメールを <xdvi-jp-ctl@bi.appi.keio.ac.jp> までお送り下さい。
+こちらは xdvi-jp ではなく xdvi-jp-ctl です。
+
+/* xdvi-jp メーリングリスト <xdvi-jp@bi.appi.keio.ac.jp> */
diff -udNr xdvik//READMEs/README.xdvik-22.40b-j1.05.patch pxdvik//READMEs/README.xdvik-22.40b-j1.05.patch
--- xdvik//READMEs/README.xdvik-22.40b-j1.05.patch	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/README.xdvik-22.40b-j1.05.patch	2010-07-25 14:56:37.614074299 +0900
@@ -0,0 +1,220 @@
+
+		<< xdvik-22.40b-j1.05 patch について >>
+
+							2001年7月08日
+
+
+[1] xdvik-22.40b-j1.05 patch とは
+
+  xdvik-22.40b に対する日本語化および機能拡張パッチです。このパッチは
+既に出回っているいくつかの日本語パッチに修正や改変を加えたものです。
+パッチの変更履歴は CHANGES.xdvik-jp を御覧下さい。
+
+
+[2] コンパイル・インストール
+
+  とりあえず、xdvik-22.40b.tar.gz と xdvik-22.40b-j1.05.patch.gz が同じ
+ディレクトリにあるとして…。
+
+	% gzip -dc xdvik-22.40b.tar.gz | tar xf -
+	% cd xdvik-22.40b
+	% gzip -dc ../xdvik-22.40b-j1.04.patch.gz | patch -p1 -s
+	% ./configure
+	% make
+	# make install
+
+で、デフォルトの設定でインストールされます。
+
+  kpathsea ライブラリは既にインストール済みだから xdvi 部分だけをインス
+トールしたいという場合は、texk/xdvik に移動してから make install して下さい。
+
+  また、デフォルトでは -g オプション付で make されると思いますが、これだと
+やたらと実行ファイルが大きくなりますので、configure 実行時に
+
+	% env CFLAGS="-O2" ./configure
+
+等を指定した方がいいかもしれません。
+
+
+  設定変更は configure スクリプトのオプションで指定します。
+
+★デフォルトの紙のサイズ
+
+   --enable-a4			A4 (デフォルト)
+   --disable-a4			US letter
+
+  オリジナルの xdvik では US letter の方がデフォルトでしたが、日本語
+パッチを当てると A4 の方がデフォルトになります。
+
+
+★シェアドライブラリ
+
+  --enable-static	kpathsea ライブラリはスタティックリンク (デフォルト)
+  --enable-shared	kpathsea ライブラリはダイナミックリンク
+
+
+★明朝体とゴシック体以外の日本語書体の使用
+
+   --with-vfontmap			多書体を使う。(デフォルト)
+   --without-vfontmap			多書体を使わない。
+
+  vfontmap のデフォルトは、/usr/local/share/texmf/xdvi/vfontmap です。
+変更する場合は後述の --enable-xdvietcdir で指定します。--with-vfontmap
+の場合、この指定パスにファイルが存在しない場合は、サンプルがインストール
+されます。(既存の場合、上書きはされません)
+
+
+★日本語フォントの指定
+
+   --with-vflib		ASCII, NTT 共に VFlib を使う。(デフォルト)
+   --with-vflib=nontt	ASCII で VFlib を、NTT で PK フォントを使う。
+   --without-vflib	ASCII, NTT 共に PK フォントを使う。
+
+  --without-vflib を指定した場合は自動的に --without-vfontmap になります。
+
+
+★画面移動キーの変更
+
+   --enable-vikey		vi 風の h,j,k,l を使います。 (デフォルト)
+   --disable-vikey		xdvi 標準の l,d,u,r を使います。
+
+
+★パネルのサイズ指定
+
+   --enable-smallpanel		パネルサイズを小さめにします。 (デフォルト)
+				実行時オプション +smallpanel で標準サイズに
+				切替えることもできます。
+   --disable-smallpanel		xdvi 標準サイズにします。
+				実行時オプション -smallpanel も無効です。
+
+
+★拡大縮小ボタン
+
+   --enable-zoombutton		拡大ボタンと縮小ボタンを付けます (デフォルト)
+   --disable-zoombutton		xdvi 標準の固定倍率への変更ボタンを付けます
+
+
+★Shrink サイズの指定
+
+   --enable-shrink=6		デフォルトの Shrink サイズを指定します。
+
+  指定しない時のデフォルトは 10 になります。数字が大きいほど表示は小さく
+なります。
+
+
+★ベース DPI の指定
+
+   --enable-bdpi=300		PK フォントのベース DPI を指定します。
+
+  指定しない時のデフォルトは 600dpi です。
+
+
+★xdvi からの印刷コマンドを指定します。
+
+   --enable-xdviprint	新しい DVISEL 機能を使って印刷します (デフォルト)
+   --disable-xdviprint	従来の PRINTDVI 機能を使って印刷します
+
+  DVISEL 機能と PRINTDVI 機能の違いは…
+
+  DVISEL
+      xdvi で指定ページの DVI を切り出し、外部コマンドにパイプで引き渡し
+      ます。外部コマンドはパイプ(標準入力)から DVI を受け取りプリントします。
+      通常、この外部コマンドには内部で dvips/dvi2ps/jdvi2kps 等を呼び出す
+      スクリプトを指定します。READMEs/README.xdvi20c-j1.0+hal2+dvisel も
+      参照して下さい。
+
+  PRINTDVI
+      xdvi で予め指定されてる印刷コマンド(%P %R など)に従い、印刷する
+      ページ等を引数指定して外部コマンド(通常 dviselect)を呼び出して、
+      指定ページを切り出し、その後プリンタドライバに合わせて紙のサイズ
+      を指定する引数の変更等をし、その引数を指定して、プリンタドライバー
+      等を動かします。READMEs/README.markpage+toc+printdvi+paper も
+      参照して下さい。
+
+  なお、DVISEL 機能を使う場合は、指定する外部コマンドを
+
+   --enable-xdviprint=/usr/libexec/xdviprint
+
+のように変更できます。デフォルトは /usr/local/bin/xdviprint です。
+指定は絶対パスで行ないます。(実行時にリソース等でも変更できます)
+
+  また、PRINTDVI 機能を使う場合は texk/xdvik/xdvi-config.h の
+PRCMDALL, PRCMDCUR, PRCMDMRK, PRCMDRGN, PRCMDLST, TEMPDIR, DVIFILTERCMD,
+FILTOPTTBLFILE の各マクロを自分の環境に合わせて変更して下さい。configure
+では変更できません。
+
+
+★印刷に使う DVI→PS フィルタ
+
+   --with-dvifilter=dvips	dvips (デフォルト)
+   --with-dvifilter=dvi2ps	dvi2ps
+   --with-dvifilter=jdvi2kps	jdvi2kps
+   --without-dvifilter		xdvi から印刷機能をなくします。
+
+  この指定は、上述オプションで DVISEL と PRINTDVI のどちらを指定したか
+で意味が変わります。
+
+  DVISEL の場合、この指定に合わせたサンプルスクリプトを上述の
+ --enable-xdviprintで指定したパスにインストールします。既にインストール
+されてる場合は上書きしませんので、この指定は意味をしません。DVISEL は
+xdvi バイナリ内にはプリンタドライバの違いは含めず、全て外部スクリプトで
+違いを吸収します。スクリプトなので、インストール後でも変更可能です。
+
+  PRINTDVI の場合、この設定を xdvi バイナリ内に埋め込み、xdvi はデフォ
+ルトでここで指定したプログラムを起動するようになります。(実行時にリソース
+等でも変更可能)
+
+  また、--without-dvifilter を指定した場合は、DVISEL 機能も PRINTDVI 機能
+も使いません。
+
+
+★設定ファイル等のインストールディレクトリ
+
+   --enable-xdvietcdir=/etc/tex		設定ファイル等のディレクトリ指定
+
+  vfontmap や xdvipaper.dvips 等のオプションテーブルがインストールされる
+ディレクトリを指定します。デフォルトは /usr/local/share/texmf/xdvi です。
+
+
+
+【特殊な設定をする場合】
+
+  これら以外の設定をする場合は、texk/xdvik/ 以下の Makefile や xdvi-config.h
+を変更して下さい。
+
+  また、「うちはまだ TeX 2.99 (ASCII jtex-1.7 等) を使ってて kpathsea
+なんてないよ」という方は、是非とも TeX 3.x (ASCII pTeX 2.x 等)のインス
+トールをお勧めしますが、一応 kpathsea をインストールせずに動かす事も
+出来るようです。:-)
+  この場合、まず texk/kpathsea/texmf.in の PKFONTS や TFMFONTS 等の
+指定を自分の環境に合わせて書き換えます。例えば、
+
+PKFONTS = .;/usr/local/lib/fonts/pk600;/usr/local/lib/fonts/pk300
+
+とします。それから configure をして、static リンクで make すれば、OK
+です。kpathsea 設定ファイルやライブラリ等がインストールされてなくても、
+ここに指定したディレクトリ(バイナリ埋め込みになる)を探します。他にも
+mf がないのなら、--without-mktexpk-default や --without-mktexmf-default
+なども指定しておいた方がいいかも知れません。
+
+
+[3] 著作権について
+
+  本パッチはかなり多くの方々の総合著作物です。パッチの著作権はそれぞれ
+のパッチ作成者にあります。詳しくは READMEs/ 以下のドキュメント群を参照して
+下さい。
+
+  本パッチの再配布は自由に行って構いませんが付属のドキュメント類 
+(READMEs/ 以下のファイル)はそのままの形で添付してください。また改変
+も自由に行って構いませんが、改変したものを配布する場合は、
+
+	xdvi-jp メーリングリスト <xdvi-jp@bi.appi.keio.ac.jp>
+
+まで連絡頂けると幸いです。バグ報告、提案、その他の連絡等も上記までお願い
+します。
+
+  また、開発に参加したい等、ML の subscribe 希望の方はまずは、guide と
+だけ書かれたメールを <xdvi-jp-ctl@bi.appi.keio.ac.jp> までお送り下さい。
+こちらは xdvi-jp ではなく xdvi-jp-ctl です。
+
+/* xdvi-jp メーリングリスト <xdvi-jp@bi.appi.keio.ac.jp> */
diff -udNr xdvik//READMEs/README.xdvik-22.40y1-j1.21 pxdvik//READMEs/README.xdvik-22.40y1-j1.21
--- xdvik//READMEs/README.xdvik-22.40y1-j1.21	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/README.xdvik-22.40y1-j1.21	2010-07-25 14:56:37.614074299 +0900
@@ -0,0 +1,239 @@
+
+		<< xdvik-22.40y1-j1.21 patch について >>
+
+							2004年2月25日
+
+
+[1] xdvik-22.40y1-j1.21 patch とは
+
+  xdvik-22.40y1 に対する日本語化および機能拡張パッチです。このパッチは
+既に出回っているいくつかの日本語パッチに修正や改変を加えたものです。
+パッチの変更履歴は CHANGES.xdvik-jp.html を御覧下さい。
+
+
+[2] コンパイル・インストール
+
+  とりあえず、xdvik-22.40y1.tar.gz と xdvik-22.40y1-j1.21.patch.gz が同じ
+ディレクトリにあるとして…。
+
+	% gzip -dc xdvik-22.40y1.tar.gz | tar xf -
+	% cd xdvik-22.40y1
+	% gzip -dc ../xdvik-22.40y1-j1.21.patch.gz | patch -p1 -s
+	% ./configure
+	% make
+	% cd texk/xdvik  ←これが重要
+	% su
+	# make install
+
+で、デフォルトの設定でインストールされます。
+
+  texk/xdvik に移動せずに make install すると、kpathsea ライブラリもイ
+ンストールしてくれますが、texmf/web2c/texmf.cnf も上書きされてしまうの
+で、通常だと ptex が動かなくなってしまいます。texmf.cnf のバックアップ
+をとっておいて書き戻して下さい。
+
+  また、デフォルトでは -g オプション付で make されると思いますが、これだと
+やたらと実行ファイルが大きくなりますので、configure 実行時に
+
+	% env CFLAGS="-O2" ./configure
+
+等を指定した方がいいかもしれません。あるいはインストール後に
+
+	# strip /usr/local/bin/xdvi.bin
+
+を実行しても同じことです。
+
+
+  設定変更は configure スクリプトのオプションで指定します。
+
+★デフォルトの紙のサイズ
+
+   --enable-a4			A4 (デフォルト)
+   --disable-a4			US letter
+
+  オリジナルの xdvik では US letter の方がデフォルトでしたが、日本語
+パッチを当てると A4 の方がデフォルトになります。
+
+
+★シェアドライブラリ
+
+  --enable-static	kpathsea ライブラリはスタティックリンク (デフォルト)
+  --enable-shared	kpathsea ライブラリはダイナミックリンク
+
+
+★明朝体とゴシック体以外の日本語書体の使用
+
+   --with-vfontmap			多書体を使う。(デフォルト)
+   --without-vfontmap			多書体を使わない。
+
+  vfontmap のデフォルトは、/usr/local/share/texmf/xdvi/vfontmap です。
+変更する場合は後述の --enable-xdvietcdir で指定します。--with-vfontmap
+の場合、この指定パスにファイルが存在しない場合は、サンプルがインストール
+されます。(既存の場合、上書きはされません。) vfontmap には
+
+"tfm name" "/etc/vfontcap entry" "{,tate}"
+
+あるいは
+
+"/font/file/name"
+   "tfm name1" "{,unicode,adobejapan,cidv}"
+   "tfm name2" "{,unicode,adobejapan,cidv}"
+
+のように記述します。後者の書き方では、同じフォントファイルを指す場合、
+tfm の名前だけを繰り返して書けばよいということです。この場合の tfm 名
+の前にはスペースまたはタブ文字を入れて下さい。
+
+★日本語フォントの指定
+
+   --with-vflib=yes	ASCII, NTT 共に VFlib を使う。(デフォルト)
+   --with-vflib=vf2ft	ASCII, NTT 共に FreeType を使う。
+   --with-vflib=nontt	ASCII で VFlib を、NTT で PK フォントを使う。
+   --without-vflib	ASCII, NTT 共に PK フォントを使う。
+
+  --without-vflib を指定した場合は自動的に --without-vfontmap になります。
+
+★画面移動キーの変更
+
+   --enable-vikey		vi 風の h,j,k,l を使います。 (デフォルト)
+   --disable-vikey		xdvi 標準の l,d,u,r を使います。
+
+
+★パネルのサイズ指定
+
+   --enable-smallpanel		パネルサイズを小さめにします。 (デフォルト)
+				実行時オプション +smallpanel で標準サイズに
+				切替えることもできます。
+   --disable-smallpanel		xdvi 標準サイズにします。
+				実行時オプション -smallpanel も無効です。
+
+
+★拡大縮小ボタン
+
+   --enable-zoombutton		拡大ボタンと縮小ボタンを付けます (デフォルト)
+   --disable-zoombutton		xdvi 標準の固定倍率への変更ボタンを付けます
+
+
+★Shrink サイズの指定
+
+   --enable-shrink=6		デフォルトの Shrink サイズを指定します。
+
+  指定しない時のデフォルトは 10 になります。数字が大きいほど表示は小さく
+なります。
+
+
+★ベース DPI の指定
+
+   --enable-bdpi=300		PK フォントのベース DPI を指定します。
+
+  指定しない時のデフォルトは 600dpi です。
+
+
+★xdvi からの印刷コマンドを指定します。
+
+   --enable-xdviprint	新しい DVISEL 機能を使って印刷します (デフォルト)
+   --disable-xdviprint	従来の PRINTDVI 機能を使って印刷します
+
+  DVISEL 機能と PRINTDVI 機能の違いは…
+
+  DVISEL
+      xdvi で指定ページの DVI を切り出し、外部コマンドにパイプで引き渡し
+      ます。外部コマンドはパイプ(標準入力)から DVI を受け取りプリントします。
+      通常、この外部コマンドには内部で dvips/dvi2ps/jdvi2kps 等を呼び出す
+      スクリプトを指定します。READMEs/README.xdvi20c-j1.0+hal2+dvisel も
+      参照して下さい。
+
+  PRINTDVI
+      xdvi で予め指定されてる印刷コマンド(%P %R など)に従い、印刷する
+      ページ等を引数指定して外部コマンド(通常 dviselect)を呼び出して、
+      指定ページを切り出し、その後プリンタドライバに合わせて紙のサイズ
+      を指定する引数の変更等をし、その引数を指定して、プリンタドライバー
+      等を動かします。READMEs/README.markpage+toc+printdvi+paper も
+      参照して下さい。
+
+  なお、DVISEL 機能を使う場合は、指定する外部コマンドを
+
+   --enable-xdviprint=/usr/libexec/xdviprint
+
+のように変更できます。デフォルトは /usr/local/bin/xdviprint です。
+指定は絶対パスで行ないます。(実行時にリソース等でも変更できます)
+
+  また、PRINTDVI 機能を使う場合は texk/xdvik/xdvi-config.h の
+PRCMDALL, PRCMDCUR, PRCMDMRK, PRCMDRGN, PRCMDLST, TEMPDIR, DVIFILTERCMD,
+FILTOPTTBLFILE の各マクロを自分の環境に合わせて変更して下さい。configure
+では変更できません。
+
+
+★印刷に使う DVI→PS フィルタ
+
+   --with-dvifilter=dvips	dvips (デフォルト)
+   --with-dvifilter=dvi2ps	dvi2ps
+   --with-dvifilter=jdvi2kps	jdvi2kps
+   --without-dvifilter		xdvi から印刷機能をなくします。
+
+  この指定は、上述オプションで DVISEL と PRINTDVI のどちらを指定したか
+で意味が変わります。
+
+  DVISEL の場合、この指定に合わせたサンプルスクリプトを上述の
+ --enable-xdviprintで指定したパスにインストールします。既にインストール
+されてる場合は上書きしませんので、この指定は意味をしません。DVISEL は
+xdvi バイナリ内にはプリンタドライバの違いは含めず、全て外部スクリプトで
+違いを吸収します。スクリプトなので、インストール後でも変更可能です。
+
+  PRINTDVI の場合、この設定を xdvi バイナリ内に埋め込み、xdvi はデフォ
+ルトでここで指定したプログラムを起動するようになります。(実行時にリソース
+等でも変更可能)
+
+  また、--without-dvifilter を指定した場合は、DVISEL 機能も PRINTDVI 機能
+も使いません。
+
+
+★設定ファイル等のインストールディレクトリ
+
+   --enable-xdvietcdir=/etc/tex		設定ファイル等のディレクトリ指定
+
+  vfontmap や xdvipaper.dvips 等のオプションテーブルがインストールされる
+ディレクトリを指定します。デフォルトは /usr/local/share/texmf/xdvi です。
+
+
+
+【特殊な設定をする場合】
+
+  これら以外の設定をする場合は、texk/xdvik/ 以下の Makefile や xdvi-config.h
+を変更して下さい。
+
+  また、「うちはまだ TeX 2.99 (ASCII jtex-1.7 等) を使ってて kpathsea
+なんてないよ」という方は、是非とも TeX 3.x (ASCII pTeX 2.x 等)のインス
+トールをお勧めしますが、一応 kpathsea をインストールせずに動かす事も
+出来るようです。:-)
+  この場合、まず texk/kpathsea/texmf.in の PKFONTS や TFMFONTS 等の
+指定を自分の環境に合わせて書き換えます。例えば、
+
+PKFONTS = .;/usr/local/lib/fonts/pk600;/usr/local/lib/fonts/pk300
+
+とします。それから configure をして、static リンクで make すれば、OK
+です。kpathsea 設定ファイルやライブラリ等がインストールされてなくても、
+ここに指定したディレクトリ(バイナリ埋め込みになる)を探します。他にも
+mf がないのなら、--without-mktexpk-default や --without-mktexmf-default
+なども指定しておいた方がいいかも知れません。
+
+
+[3] 著作権について
+
+  本パッチはかなり多くの方々の総合著作物です。パッチの著作権はそれぞれ
+のパッチ作成者にあります。詳しくは READMEs/ 以下のドキュメント群を参照して
+下さい。
+
+  本パッチの再配布は自由に行って構いませんが付属のドキュメント類 
+(READMEs/ 以下のファイル)はそのままの形で添付してください。また改変
+も自由に行って構いませんが、改変したものを配布する場合は、
+
+	xdvi-jp メーリングリスト <xdvi-jp@bi.appi.keio.ac.jp>
+
+まで連絡頂けると幸いです。バグ報告、提案、その他の連絡等も上記までお願い
+します。
+
+  また、開発に参加したい等、ML の subscribe 希望の方はまずは、guide と
+だけ書かれたメールを <xdvi-jp-ctl@bi.appi.keio.ac.jp> までお送り下さい。
+こちらは xdvi-jp ではなく xdvi-jp-ctl です。
+
+/* xdvi-jp メーリングリスト <xdvi-jp@bi.appi.keio.ac.jp> */
diff -udNr xdvik//READMEs/README.xdvik18f-j1.0.patch pxdvik//READMEs/README.xdvik18f-j1.0.patch
--- xdvik//READMEs/README.xdvik18f-j1.0.patch	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/README.xdvik18f-j1.0.patch	2010-07-25 14:56:37.614074299 +0900
@@ -0,0 +1,103 @@
+*このパッチについて
+  このパッチ (xdvik18f-j1.0.patch) は xdvik18f を日本語対応にするため
+(及び幾つかの附属機能を加えるため)のもので、xdvi PL18 に対する幾つか
+のパッチを元に若干の修正を行って作ったものです。取り敢えず日本語の表
+示に関してはうまく行くようなので、version 1.0 としました。
+
+
+*環境
+  ベクトルフォントライブラリ VFlib 2.* を用いて VFlib.a が作成されて
+いることを想定しています。
+
+
+*パッチの当て方
+  オリジナルの xdvik18f を展開したディレクトリにおいて
+
+    % patch < xdvik18f-j1.0.patch
+
+として下さい。
+
+
+*コンパイル
+  下記の設定を行ったのち、普通にコンパイルして下さい。但し OSF/1 では
+-DOSF1 オプションを付けて下さい。
+
+
+*設定について
+  各種の設定は xdefs.make (printdvi のテンプレートは config.h) で行う
+ようにしてあります。各オプションの意味は次の通りです。
+  -DNOZEIT       ASCII日本語TeX/NTT JTeX 共に dnp (互換) フォントを用いる。
+  -DNONTTZEIT    NTT JTeX は dnp (互換) フォントを用いる。
+  -DNOTOC        TOC 機能を使用しない。
+  -DNOMARKPAGE   MARKPAGE 機能を使用しない。
+  -DNOPRINTDVI   PRINTDVI 機能を使用しない。
+  -DVI_KEY       キーバインドを vi 風にする。
+  -DSMALL_PANEL  コントロールパネルが小さな画面にも収まるようにする。
+  デフォルトの設定では、日本語表示に関しては VFlib を利用し、また markpage,
+toc, printdvi の機能は使用するようになっています。
+  markpage, toc, printdvi の設定についてはオリジナルの作者による文書
+(README.markpage+toc+printdvi)を御覧下さい。
+
+
+*動作確認
+  私は DEC OSF/1 V3.0B + gcc 2.6.3 の環境の元に GNU malloc をリンク
+して xdvi を生成し、以下の点についてのみ非常に簡単なテストを行いました。
+    日本語文書(ASCII/NTT)のVFlibを用いた、又は dnp (互換) フォントによる表示
+    toc, vi_key, printdvi, small_panel の(一部の機能の)動作確認
+    eclepsf.sty, epsbox.sty による EPS ファイルの表示
+
+
+*問題点
+  取り敢えずの問題点としては
+    1. -DNOTEXXET を付けないとコンパイル出来ない。
+    2. configure script を有効に利用していない(OS 依存のオプションを
+       手で付けなければならないなど)。
+    3. \special{header=...} がうまく作動しない。
+    4. ASCII日本語TeX を dnp (互換) フォントで表示する場合、フォントが
+       見つからない時に MakeTeXPK を呼び出そうとしない。
+    5. 縦書きには対応していない。
+があげられますが、他にもいろいろ出てくると思います。
+
+
+*オリジナルのパッチについて
+  このパッチは xdvi PL18 に対するパッチのうち、
+    岡川@東京大さんの xdvi18.vflib.patch
+    内山@神戸大さんの xdvipl18_epsbox+elepsf+selfile+vikey.patch 
+      のうち selfile の部分を除いたもの
+    内山@神戸大さんが投稿された markpage, toc, printdvi, small_panel
+      の機能を付け加えるためのパッチ
+    Patrice Belleville@Simon Fraser Univ. さんの \special{header=...}
+      に対する patch
+を元に若干の修正を行う事により作成されました。これらの有用なパッチを
+作成、公開して下さった方々に感謝致します。
+  なおこれらのパッチが投稿された時の文書を HEADERS.DOC にまとめてあります。
+
+
+*xdvi PL18 に対するパッチからの変更点
+    1. font-open.c に jfm を open するコードを書き加えた。
+    2. special.c における psh_header 関数を kpathsea 利用の形に
+       書き換えた。
+    3. OSF/1 に対応させた。
+    4. 600 dpi でも表示出来るように shrink ボタンを 7 個に増やした。
+    5. その他の数々の小さな修正。
+
+
+*お願い
+  本パッチの御使用に際しては次の点について御了承ください。
+    1. 本パッチは完全を期したものではありません。バグのため不具合が生じる
+       事もありえます。これらについて本パッチの作者はいかなる形の責任をも
+       負いかねます。
+    2. 本パッチの作者は xdvi PL18 に対するパッチに加えられた改変部分に関
+       する質問以外の、あらゆる形の問い合わせには応じかねます。
+  バグフィックスや改良は大歓迎です。ニュースに直接投稿して頂いても結構で
+すが、その際には私まで一言メールを下さると助かります(全ての記事をフォロー
+している訳ではありませんので)。
+
+
+*謝辞
+  最後になりましたが、大変丁寧なアドバイスを頂いた北川 勝浩@大阪大さん
+に感謝致します。
+
+中山 一昭
+東京大学大学院理学系研究科
+nakayama@monet.phys.s.u-tokyo.ac.jp
diff -udNr xdvik//READMEs/README.xdvik18f-j1.1p5.patch pxdvik//READMEs/README.xdvik18f-j1.1p5.patch
--- xdvik//READMEs/README.xdvik18f-j1.1p5.patch	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/README.xdvik18f-j1.1p5.patch	2010-07-25 14:56:37.614074299 +0900
@@ -0,0 +1,322 @@
+*xdvik18f-j1.1p5.patch について
+
+					千葉大学 総合情報処理センター
+					山賀正人 (yamaga@ipc.chiba-u.ac.jp)
+
+
+  このパッチは xdvi (xdvik-18f) で日本語 (ASCII-pTeX および NTT-JTeX) 
+を表示できるようにするパッチです。
+
+このパッチは以前 中山＠東大(現:信州大)さん が作られた xdvik18f-j1.0 パッ
+チに以下の修整を加えたものです。
+
+         1. 小野＠早稲田さん 他による xdvi-17 の markpage+toc+printdvi 
+            パッチに相当する部分を markpage+toc+printdvi+paper パッチ
+            に置き換え
+
+         2. 竹中＠東大さんによる xdvi-17 の pTeX 縦書き用パッチを適応
+            (内山＠神戸大 さんによる作業)
+
+         3. 明朝体とゴシック体以外の日本語表示可能
+ 
+         4. いくつかのバグの修整
+
+中山さんのパッチについては添付の READMEs/README.xdvik18f-j1.0.patch を
+参照してください。
+
+
+
+[1] コンパイル・インストール
+
+ (1) ソースを展開
+
+     % gunzip -c xdvik-18f.tar.gz | tar xvf -
+
+ (2) パッチをあてる
+
+     % cd xdvik-18f/xdvik
+     % patch -p < (somewhere)/xdvik18f-j1.1p5.patch
+
+ (3) xdefs.make を自分の環境に併せて変更
+
+     % vi xdefs.make または mule xdefs.make
+
+     まず FILTOPTTBLDIR を自分の環境に合わせて変更します。FILTOPTTBLDIR
+     は xdvi から直接プリントアウトする場合に用いる dvi --> ps フィルタ
+     コマンドのオプション変換テーブルファイル xdvipaper.* の置き場所を
+     指定するものです。
+
+     また dvi --> ps フィルタとして default の dvi2ps-j 以外を使用する
+     場合は xdefs.make の FILTOPTTBLFILE と config.h の DVIFILTERCMD 
+     も変更します。その他に default のプリンタやプリントアウトコマンド
+     を変更したい場合は config.h の DVIPRINTER や PRINTCMD をそれぞれ
+     変更してください。
+
+     この markpage+toc+printdvi+paper パッチ部分の機能についての詳細は 
+     READMEs/README.markpage+toc+printdvi+paper を参照してください。
+
+     更に以下の３通りのうち、いずれかを選択してください。
+    
+ (3-1) VFlib を用いる場合
+
+     xdefs.make 中の DEFAULT_FONTMAP を自分の環境に併せて変更します。
+
+  *********************************************************************
+  *  DEFAULT_FONTMAP で指定するファイル名は日本語フォントを VFlib の  *
+  *  どのフォントにマップするかを指定するファイルです。               *
+  *                                                                   *
+  *          vfontmap は VFlib の vfontcap とは別のものです。         *
+  *                                                                   *
+  *  詳しいことは [2] で説明します。                                  *
+  *********************************************************************
+
+     ただし日本語多書体表示機能を利用しない場合はこの設定は必要ありません。
+     その替わり XDEFS に -DNOVFONTMAP を指定してください。
+
+ (3-2) VFlib を用いずに大日本印刷の pk フォントを用いる場合
+
+     xdefs.make 中の XDEFSに -DNOZEIT を指定し、VFLIB の行をコメント
+     アウトしてください。この場合 vfontmap による日本語多書体表示機能は
+     使えません。
+
+ (3-3) NTT-JTeX に対してのみ大日本印刷の pk フォントを用いる場合
+
+     xdefs.make 中の XDEFS に -DNONTTZEIT を指定してください。この場合
+     ASCII-pTeX に対しては日本語多書体表示機能が使えますが NTT-JTeX に
+     対しては使えません。
+
+
+ (4) トップディレクトリで configure --> make
+
+     % cd ..
+     % ./configure
+     % make
+
+ (5) インストール
+
+     % su
+
+     # make install
+   
+    (注) 既に TeX (3.1415以降)がインストールされている場合はディレクト
+         リ xdvik に移動してから make install したほうが良いでしょう。
+
+
+
+[2] 明朝体とゴシック体以外の日本語を表示させる方法
+
+  まずマップファイル (default では /usr/local/lib/texmf/xdvi/vfontmap) 
+に以下のように記述しておきます。
+
+	mgoth	maru
+	fmin	fmin
+	fgoth	goth
+
+間にスペース、もしくはタブを入れて第一カラムに "dvi ファイル中のフォント名"、
+第二カラムに "VFlib の vfontcap に登録されたフォント名" のように記述しておく
+だけで新たに xdvi を再コンパイルすることなく、自由に日本語の書体を追加する
+ことができます。
+
+またこのマップファイル中に明朝体とゴシック体の二書体を指定しない場合は
+default で
+
+	min	min	# for ASCII
+	nmin	min	# for ASCII
+	goth	goth	# for ASCII
+	ngoth	goth	# for ASCII
+	dm	min	# for NTT
+	dg	goth	# for NTT
+
+と設定されます。
+
+このマップファイル中では # 以降がコメントとして扱われます。またこのマッ
+プファイルは環境変数 VFONTMAP および起動時のオプション 
+
+	-vfontmap [マップファイル名]
+
+または X の resource
+
+	xdvi*vfontmap:	[マップファイル名]
+
+で変更可能です。ただし優先準位は
+
+	1. 起動時のオプション
+	2. X の resource (xdvi*vfontmap)
+	3. 環境変数 VFONTMAP
+
+の順に低くなっていきます。
+
+  この vfontmap を用いた機能のうち NTT-JTeX への対応部分は 川地＠東大 
+さん による xdvik18f-j1.0+vfontmap-ntt.patch を参考にさせていただいて
+おります。
+
+# NTT-JTeX で日本語の多書体を扱うためのスタイルファイルなどについては
+# 川地さんの作成なさった Web page
+#
+# 	http://www.cim.pe.u-tokyo.ac.jp/~kawachi/software/xdvik18f.html
+#
+# を参照してください。
+#
+# また ASCII-pTeX で多書体を扱う方法は VFlib に付属の jTeX/README.euc 
+# や doc/QA.txt などをご覧ください。
+
+
+
+[3] 著作権について
+
+  本パッチは東大の中山さんのパッチ xdvik18f-j1.0.patch を含んでおりま
+すが、その中山さんのパッチに含まれていた部分および本パッチから新たに組
+み込まれたコードの著作権は以下の方々にあります。
+
+          miyu patch に起因する部分
+                 杉浦茂樹さん <miyu@akiu.gw.tohoku.ac.jp>
+                 他
+
+                 (詳細は竹中さんによる READMEs/README.jp-patch
+                  をご覧ください)
+
+          pTeX 縦書き対応部分
+                 竹中浩さん <lh36112@hongo.ecc.u-tokyo.ac.jp>
+                 (xdvi-17jp.960209 より)
+
+          markpage+toc+printdvi+paper パッチに起因する部分 
+                 松浦俊さん <syun@fuka.info.waseda.ac.jp>
+                 平原厚志さん <hirahara@fuka.info.waseda.ac.jp>
+                 小野康一さん <onono@fuka.info.waseda.ac.jp>
+                 他
+
+                 (詳細は小野さんによる
+                  READMEs/README.markpage+toc+printdvi+paper
+                  をご覧ください)
+
+  また本パッチのうち vfontmap に関わる部分 (vfontmap.c) の著作権は山賀
+(yamaga@ipc.chiba-u.ac.jp)にありますが、それ以外の部分に関しては山賀は
+パッチのとりまとめを行っただけですので著作権を一切主張いたしません。同
+様に内山＠神戸大さんも
+
+   「パッチをつくる作業をしたのみで, 著作権の主張をするものではない」
+
+と明言なさっています。
+
+
+
+[4] その他の修整点
+
+ (1) default の Shrink factor を 4 にした(xdvi.c)
+
+ (2) -help オプションでのヘルプメッセージを修整(xdvi.c)
+
+ (3) xdvi.1 の内容を修整するために mksedscript と xdvi.man を修整
+	(プリントアウトコマンドの設定値などを config.h から拾うように)
+
+ (4) Shrink を変更すると core dump するバグの修正(zeit.c)
+
+     ※ Hayakawa Koichi さん と 内山＠神戸大 さん からのご指摘によるものです。
+
+ (5) FreeBSD でコンパイル可能に
+
+     ※ 萩原＠農工大さんが fj.comp.texhax に投稿された patches.tgz
+        (HITOSHI.96Apr30100219@mail01.tuat.ac.jp)に含まれている
+        freebsd.patch より
+
+ (6) \" が Shrink の変更についていかないバグ、及び NTT-JTeX で「投」の
+     文字が Shrink の変更についていかないバグの修整(dvi_init.c)
+
+     ※ 高村＠NTT HI研 さん からいただいたパッチです。
+
+ (7) 一部の FreeBSD で Segmentation Fault するバグの修整 (vfontmap.c)
+
+     ※ 森田＠京大 さん からいただいたパッチです。
+
+ (8) ASCII pTeX 日本語フォント (jfm) に関しては virtual font を先に読ま
+     ないように (font-open.c) また Linux でコンパイル可能に
+
+     ※ 内山＠神戸大 さん からいただいたパッチです。
+
+ (9) FreeBSD, Linux 上で selfile ウィンドウのスクロールバーが正しく表示
+     されないバグの修整 (sfinternal.h)
+
+     ※ 中山＠信州大 さん からいただいたパッチです。
+
+(10) SMALL_PANEL を指定した場合ページ番号の表示部分が画面からはみ出て
+     しまうバグの修整 (toc.c)
+
+     ※ 萩原＠農工大 さん からいただいたパッチです。
+
+(11) pstricks を使っている場合に PS の図が正しく表示されないバグの修正
+     (special.c)
+
+     ※ 中山＠信州大 さん からいただいたパッチです。
+
+(12) SunOS4.1.3_U1 の cc でコンパイルできるように
+     (dvi_init.c, special.c, xdvi.h)
+
+     ※ 近藤＠茨城大 さん からいただいたパッチです。
+
+(13) 東京書籍印刷同様の写研フォントにあわせたフォント名でも vfontmap
+     の機能が使えるように (dvi_init.c)
+
+     ※ 大岩＠東大 さん からいただいたパッチです。
+
+        fj.comp.texhax
+              <G540001.97Feb24012306@ecc-as52.komaba.ecc.u-tokyo.ac.jp>
+
+(14) 縦書き表示に関する誤動作を修正 (dvi_draw.c, dvi_init.c, xdvi.h)
+
+     ※ 竹中＠東大 さん の xdvi-17 に対するパッチを 大岩＠東大 さん
+        によって xdvik-18f に適応したものです。
+
+        fj.comp.texhax
+              <no7pvxq2pg9.fsf@ecc-as01.hongo.ecc.u-tokyo.ac.jp>
+              <G540001.97Feb25061004@ecc-as51.komaba.ecc.u-tokyo.ac.jp>
+              <G540001.97Feb25174119@ecc-as52.komaba.ecc.u-tokyo.ac.jp>
+
+	<http://www.komaba.ecc.u-tokyo.ac.jp/~g540001/pub/unix/
+                                            xdvik18f-j1.1p1-vfix.patch>
+
+(15) -DNOZEIT, -DNONTTZEIT, -DNOPRINTDVI に対して正常に動作するように
+     (font-open.c, xdvi.c, dvi_init.c, vfontmap.c, print.c)
+
+(16) ASCIIDNP でも pTeX の縦書きが表示できるように (dvi_init.c, pk.c)
+
+(17) ASCIIDNP で pTeX の min8 のフォントを表示しようとすると core dump する
+     バグの修正、および縦書きの表示で（）〈〉などがずれてしまうバグの修正
+     (dvi_init.c, tategaki.c)
+
+     ※ 竹野＠新潟工科大 さん からいただいたパッチです。
+
+
+
+[5] 注意事項
+
+  本パッチの再配布は自由に行って構いませんが付属のドキュメント類 
+(READMEs 以下のファイル)は必ずそのままの形で添付してください。また改変
+も自由に行って構いませんが、改変したものを配布する場合は山賀
+(yamaga@ipc.chiba-u.ac.jp)まで御連絡ください。またその際にも私からお願
+いすることになると思いますが、上で上げた各パッチの著作権保有者には必ず
+連絡をしてください。
+
+
+
+[6] 最後に
+
+  本パッチ作成にあたりご協力いただいた多くの皆様に感謝いたします。特に
+電子メールにより御助言を賜わった以下の方々に対し、そのお名前を列挙する
+ことで感謝の意を表したいと思います。
+
+      内山 孝憲 様
+      小野 康一 様
+      杉浦 茂樹 様
+      竹野 茂治 様
+      竹中 浩   様
+      中山 一昭 様
+      萩原 斉   様
+
+      (五十音順)
+
+このパッチに関する質問やご意見ご感想は
+
+		yamaga@ipc.chiba-u.ac.jp
+
+まで。
+						平成９年３月３日（月）
diff -udNr xdvik//READMEs/README.xdvik20a-j1.1.patch pxdvik//READMEs/README.xdvik20a-j1.1.patch
--- xdvik//READMEs/README.xdvik20a-j1.1.patch	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/README.xdvik20a-j1.1.patch	2010-07-25 14:56:37.614074299 +0900
@@ -0,0 +1,273 @@
+*xdvik20a-j1.1.patch について
+
+					千葉大学 総合情報処理センター
+					山賀正人 (yamaga@ipc.chiba-u.ac.jp)
+
+
+  このパッチは xdvi (xdvik-20a) で日本語 (ASCII-pTeX および NTT-JTeX) 
+を表示できるようにするパッチです。
+
+このパッチは xdvik-18f に対する日本語化および機能拡張パッチ
+xdvik18f-j1.1p5.patch を xdvik-20a に適用したものです。
+# この作業は 籠谷＠岡山大 さん によって行われました。
+
+xdvik18f-j1.1p5.patch については添付の READMEs/README.xdvik18f-j1.1p5.patch
+を参照してください。
+
+
+
+[1] コンパイル・インストール
+
+ (1) ソースを展開
+
+     % gunzip -c xdvik-20a.tar.gz | tar xvf -
+
+
+ (2) パッチをあてる
+
+     % cd xdvik-20a/xdvik
+     % patch -p < (somewhere)/xdvik20a-j1.1*.patch
+
+
+ (3) トップディレクトリで configure を実行し Makefile を作成する
+
+     % cd ..
+     % ./configure
+
+     ただし日本語フォントに何を使うか、また xdvi から直接プリントアウトする
+     場合に用いる dvi --> ps フィルタとして何を使うかで configure 実行時の
+     オプションが以下のように異なるので注意してください。
+
+     何もオプションを付けないで configure を実行した場合は ASCII, NTT 双方で
+     日本語フォントに VFlib を用い、明朝体とゴシック体以外の日本語も使えるよう
+     になります。また dvi --> ps フィルタとしては dvips を使います。
+
+   (3-1) ASCII, NTT 双方で pk フォントを使う場合
+
+          --without-vflib
+
+   (3-2) NTT では pk フォント、ASCII では VFlib を使う場合
+
+          --with-vflib=asciionly または --with-vflib=nontt
+
+   (3-3) 明朝体とゴシック体以外の日本語を使わない場合
+
+          --without-vfontmap
+
+       ただし --without-vflib を指定している場合は自動的にこのオプションが
+       指定されたのと同義になります。
+
+   (3-4) dvi --> ps フィルタとして dvi2ps を使う場合
+
+          --with-dvifilter=dvi2ps
+
+   (3-5) dvi --> ps フィルタとして jdvi2kps を使う場合
+
+          --with-dvifilter=jdvi2kps
+
+
+ (4) Makefile を環境に合わせて変更 (デフォルトの解像度と Shrink サイズの指定)
+
+    % vi xdvik/Makefile または mule xdvik/Makefile
+
+     XDEFS にオプションを加えて指定します。デフォルトでは 600dpi で Shrink
+     サイズ "6" になっていますが、多くの場合 "8" くらいが適当だと思います。
+     また小さなディスプレイ用に SMALL_PANEL を指定した場合は "10" くらい
+     がよいと思います。適当に変更してください。
+
+        (例 1) -DSHRINK=\"8\"
+        (例 2) -DSHRINK=\"10\" -DSMALL_PANEL
+        (例 3) -DBDPI=300 -DSHRINK=\"4\"
+        (例 4) -DBDPI=300 -DSHRINK=\"5\" -DSMALL_PANEL
+
+
+ (5) config.h を自分の環境に合わせて変更
+
+     % vi xdvik/config.h または mule xdvik/config.h
+
+   (5-1) プリントアウトに関する設定
+
+     default のプリンタやプリントアウトコマンドを変更したい場合は
+     DVIPRINTER や PRINTCMD をそれぞれ変更してください。
+
+     更に xdvi から直接プリントアウトする場合に用いる dvi --> ps フィルタ
+     コマンドのオプション変換テーブルファイル xdvipaper.* の置き場所
+     (default では /usr/local/share/texmf/xdvi) を変えたい場合は config.h
+     の FILTOPTTBLFILE を変更するだけでなく、xdvik/Makefile の
+     FILTOPTTBLDIR も変更してください。
+
+     この markpage+toc+printdvi+paper パッチ部分の機能についての詳細は 
+     READMEs/README.markpage+toc+printdvi+paper を参照してください。
+
+   (5-2) 日本語多書体表示機能に関する設定
+
+     configure 実行時に --without-vfontmap を指定している場合は
+     ここでの変更は必要ありません。
+
+     DEFAULT_FONTMAP を自分の環境に合わせて変更します。default では
+     /usr/local/share/texmf/xdvi/vfontmap です。
+
+  *********************************************************************
+  *  DEFAULT_FONTMAP で指定するファイル名は日本語フォントを VFlib の  *
+  *  どのフォントにマップするかを指定するファイルです。               *
+  *                                                                   *
+  *          vfontmap は VFlib の vfontcap とは別のものです。         *
+  *                                                                   *
+  *  詳しいことは [3] で説明します。                                  *
+  *********************************************************************
+
+
+ (6) コンパイルしてインストール
+
+     % make
+     % su
+
+     # make install
+
+
+
+[2] color special の表示
+
+    起動時にオプションで -usecolor と指定するか、リソースに
+
+        xdvi*colorSpecial: on
+
+    と記述しておいてください。詳しくは竹中＠東大さんによる
+    READMEs/README.jp-patch をご覧ください。
+
+
+
+[3] 明朝体とゴシック体以外の日本語を表示させる方法
+
+  まずマップファイル (デフォルトでは /usr/local/share/texmf/xdvi/vfontmap) 
+に以下のように記述しておきます。
+
+	mgoth	maru
+	fmin	fmin
+	fgoth	goth
+
+間にスペース、もしくはタブを入れて第一カラムに "dvi ファイル中のフォント名"、
+第二カラムに "VFlib の vfontcap に登録されたフォント名" のように記述しておく
+だけで新たに xdvi を再コンパイルすることなく、自由に日本語の書体を追加する
+ことができます。
+
+またこのマップファイル中に明朝体とゴシック体の二書体を指定しない場合は
+デフォルトで
+
+	min	min	# for ASCII
+	nmin	min	# for ASCII
+	goth	goth	# for ASCII
+	ngoth	goth	# for ASCII
+	dm	min	# for NTT
+	dg	goth	# for NTT
+
+と設定されます。
+
+このマップファイル中では # 以降がコメントとして扱われます。またこのマッ
+プファイルは環境変数 VFONTMAP および起動時のオプション 
+
+	-vfontmap [マップファイル名]
+
+または X の resource
+
+	xdvi*vfontmap:	[マップファイル名]
+
+で変更可能です。ただし優先準位は
+
+	1. カレントディレクトリの vfontmap
+	2. 起動時のオプション
+	3. X の resource (xdvi*vfontmap)
+	4. 環境変数 VFONTMAP
+
+の順に低くなっていきます。
+
+  この vfontmap を用いた機能のうち NTT-JTeX への対応部分は 川地＠東大 
+さん による xdvik18f-j1.0+vfontmap-ntt.patch を参考にさせていただいて
+おります。
+
+# NTT-JTeX で日本語の多書体を扱うためのスタイルファイルなどについては
+# 川地さんの作成なさった Web page
+#
+# 	http://www.cim.pe.u-tokyo.ac.jp/~kawachi/software/xdvik18f.html
+#
+# を参照してください。
+#
+# また ASCII-pTeX で多書体を扱う方法は VFlib に付属の jTeX/README.euc 
+# や doc/QA.txt などをご覧ください。
+
+
+
+[4] 著作権について
+
+  本パッチは東大の中山さんのパッチ xdvik18f-j1.0.patch を含んでおりま
+すが、その中山さんのパッチに含まれていた部分および本パッチから新たに組
+み込まれたコードの著作権は以下の方々にあります。
+
+          miyu patch に起因する部分
+                 杉浦茂樹さん <miyu@akiu.gw.tohoku.ac.jp>
+                 他
+
+                 (詳細は竹中さんによる READMEs/README.jp-patch
+                  をご覧ください)
+
+          pTeX 縦書き対応部分および color special 対応部分
+                 竹中浩さん <lh36112@hongo.ecc.u-tokyo.ac.jp>
+                 (xdvi-17jp.960209 より)
+
+          markpage+toc+printdvi+paper パッチに起因する部分 
+                 松浦俊さん <syun@fuka.info.waseda.ac.jp>
+                 平原厚志さん <hirahara@fuka.info.waseda.ac.jp>
+                 小野康一さん <onono@fuka.info.waseda.ac.jp>
+                 他
+
+                 (詳細は小野さんによる
+                  READMEs/README.markpage+toc+printdvi+paper
+                  をご覧ください)
+
+  また本パッチのうち vfontmap に関わる部分 (vfontmap.c) の著作権は山賀
+(yamaga@ipc.chiba-u.ac.jp)にありますが、それ以外の部分に関しては山賀は
+パッチのとりまとめを行っただけですので著作権を一切主張いたしません。
+
+
+
+[5] 変更履歴
+
+  xdvik18f-j1.1p5.patch からの機能面での変更点については
+ChangeLog.xdvik20a-j1.1 をご覧ください。
+
+
+
+[6] 注意事項
+
+  本パッチの再配布は自由に行って構いませんが付属のドキュメント類 
+(READMEs 以下のファイル)は必ずそのままの形で添付してください。また改変
+も自由に行って構いませんが、改変したものを配布する場合は山賀
+(yamaga@ipc.chiba-u.ac.jp)まで御連絡ください。またその際にも私からお願
+いすることになると思いますが、上で上げた各パッチの著作権保有者には必ず
+連絡をしてください。
+
+
+
+[7] 最後に
+
+  本パッチ作成にあたりご協力いただいた多くの皆様に感謝いたします。特に
+電子メールにより御助言を賜わった以下の方々に対し、そのお名前を列挙する
+ことで感謝の意を表したいと思います。
+
+      内山 孝憲 様
+      小野 康一 様
+      籠谷 裕人 様
+      杉浦 茂樹 様
+      竹野 茂治 様
+      竹中 浩   様
+      中山 一昭 様
+      萩原 斉   様
+
+      (五十音順)
+
+このパッチに関する質問やご意見ご感想は
+
+		yamaga@ipc.chiba-u.ac.jp
+
+まで。
+						平成９年１２月３１日（水）
diff -udNr xdvik//READMEs/README.xdvik20c-j1.0+hal2+dvisel pxdvik//READMEs/README.xdvik20c-j1.0+hal2+dvisel
--- xdvik//READMEs/README.xdvik20c-j1.0+hal2+dvisel	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/README.xdvik20c-j1.0+hal2+dvisel	2010-07-25 14:56:37.614074299 +0900
@@ -0,0 +1,179 @@
+
+		<< xdvik20c+hal2+dvisel patch について >>
+
+				1999/03/04
+				渡辺 毅
+				watanabe@komadori.planet.sci.kobe-u.ac.jp
+
+○xdvik20c+hal2+dvisel patch とは
+
+  xdvik20c-j1.0p0e に対するバグフィックス/機能追加パッチです。
+
+
+○追加/変更点
+
+ 1) はやし@姫路工業大学さんの xdvi-17jp+toc+hal2 patch の一部をマージ
+
+  xdvi-17jp+toc+hal2 patch については READMEs/README.jp+toc+hal2 を
+御覧下さい。このパッチは基本的には xdvi-17jp に xdvi-21 から取ってきた
+変更点を加えるというもののため、ベースが xdvik-20c に移った今、その
+ほとんどが適応済みになっています。ここでは、まだ適応されてない以下の
+点をマージしました。
+
+   1.1) 固定倍率に移行する shrink ボタンをやめて、自在に拡大縮小ができる
+     ズームボタンを付けた。
+
+     jp+toc+hal2 patch ではソースをそのまま書き換えてましたが、選択可能な
+   ように #ifdef ZOOM_BUTTON に入れました。#undef にしておくと、オリジナル
+   のままです。Makefile.in には -DZOOM_BUTTON を入れておきましたので、必要
+   ない場合は消してから make して下さい。キーバインドは 'Z' (拡大ズーム)、
+   'z'(縮小ズーム) に割り当ててあります。
+
+   1.2) TOC 部のページ数表記で、ページ番号がバラバラな DVI ファイルだと
+     出力桁数がおかしくなる問題を解決。
+
+     巻末 Appendix だけページ番号が別に振ってある場合とかだと、こういう
+   問題が起こりそうですね。詳しくは README.jp+toc+hal2 を御覧下さい。
+
+
+ 2) PRINTDVI の改良(?)版 DVISEL (拙作未発表)
+
+  Print ボタンを押すと、xdvi 上からプリントアウトできるという機能は非常
+に便利な機能で、作者様には感謝感謝です。うちの研究室回りにも TeX のプリ
+ントアウト方法は、xdvi 上から行なうやりかたしか知らない者がごろごろい
+ます(苦笑)。まあ、それは別にいいんですが、この PRINTDVI 機能はちょっと
+うっとうしい点が少しあります(^^)。
+
+  * 制御コマンドが % だらけでややこしい。:-)
+     …PRINTDVI は初期バージョンから、% シーケンスがまた増えてます。この
+   まま、新機能が追加されるたびに、%w %v …と増やしていくとすれば、頭の
+   痛い話です。:-)
+
+  * dviselect が縦書きに対応していない
+     …これは PRINTDVI の問題ではなく、しかも対応させようと思えば、たぶん
+   十行ほどの追加で済むと思うので、既に誰かが対応させてるかも知れません
+   が…。
+
+  * 制御コマンドがバイナリ埋め込みなので柔軟性に欠ける
+     …これは特に FreeBSD や Linux などのパッケージを使う時に感じます。
+   もちろん、PRINTDVI 初期バージョンとは違って今はリソースでも変更は効き
+   ますが、バイナリパッケージを作る側から見ても、ユーザーが dvips, dvi2ps,
+   jdvi2kps のどれを使うかを一方的に決めて作らなければならないというのは
+   結構嫌ですよね?(^^;;)
+
+また、xdvi の特徴として次の点があります。
+
+  * xdvi は TeX の各ページが DVI ファイルの何バイト目から始まるのかを
+  配列として持ってるので、その配列を参照するだけで指定ページの DVI だけを
+  切り出すのはたやすくできる。
+
+という訳で、解決方法…。dviselect 機能は xdvi で内包させる!!
+
+
+  そもそも、% シーケンスがなぜこんなに多いのかといえば、dviselect に
+引数を渡すためです。dviselect を xdvi 内部で持てば、外部コマンドに引き
+渡すべき情報はほとんど無くなるので、% シーケンスはほとんど必要ありません。
+
+  次に、現在、print-out メニューで全ページ、カレントページ、最終マーク
+ページ、リージョン、マークリストのどれかを選べるので、そのそれぞれに印刷
+コマンドを設定していますが、dviselect 機能を xdvi で持てば、外部コマンド
+は選択された DVI を印刷するという一つだけで済む事になります。
+
+  ならば、無理して、dvips, dvi2ps, jdvi2kps のどれを使うかをバイナリ埋め
+込みなどにせずに、外部コマンドは一つのスクリプトを指定し、そのスクリプト
+内で、上記のどれかのコマンドを呼び出すようにすれば、かなりすっきりします。
+つまり、xdvi のバイナリには外部コマンド(スクリプト)一つを埋め込むだけで
+済み、そのマシンの環境がどういうものかは全て印刷スクリプト側で吸収できる
+のです。バイナリパッケージを使う場合でもスクリプトなら柔軟性に富んでます。
+
+  ここで、外部コマンド(スクリプト)にファイルで渡すとすれば、テンポラリー
+ファイル名などがまたややこしい問題になるので、UNIX らしくパイプで渡す事に
+しましょう。DVI がファイルである事を強要するプリンタドライバーを使う場合は、
+スクリプト側でテンポラリーファイルを作るとすれば、これで、テンポラリー
+ファイル名を xdvi 内部に埋め込む必要性も無くなりました。つまり、外部コマ
+ンドに渡すべき項目は、プリンタ名、紙のサイズの二つだけです。
+
+  という訳で、DVISEL を define すると、上記 dviselect 機能を内包し、外部
+スクリプト(デフォルトは /usr/local/bin/xdviprint。-xdviprint オプションや
+.xdviPrint リソースでも変更可)に切り出した DVI ファイルをパイプで渡すよう
+になります。プリンタ名と紙のサイズは引数で渡します。
+  スクリプト側は DVI ファイルを標準入力から読みとり印刷するスクリプトに
+します。dvips を使ったサンプルがインストールされますので、そのままでも
+使えるとは思いますが、好きに編集して下さい。:-)
+  DVISEL を define すると、% シーケンスのコマンド指定等はできなくなります。
+
+  なお、PRINTDVI では、landscape 等のオプションの違いを xdvipaper.dvips
+等の変換ファイルを使って、xdvi 内部で変換していました。これも、どのプリ
+ンタドライバーを使うかを xdvi 内部に埋め込まないという方針から、xdvi
+内部ではこの変換処理をしません。この処理はスクリプト側でするようにします。
+インストールされるサンプル・スクリプトではこの処理をしてますので、従来の
+PRINTDVI を使ってた時と同じ機能が実現できてるとは思いますが、スクリプトの
+この部分も好きに書き換えて使って下さい。:-)
+
+  補足ですが、DVISEL 機能は PRINTDVI ルーチンを全部置き換えたものではなく、
+そのほとんどは PRINTDVI のルーチンを使って実現しています。dviselect のソース
+は使わず一から書き足しました。
+
+  また、DVISEL 機能が出力する切り出した DVI と、dviselect コマンドが出力する
+DVI は同じではありません。違いは、dviselect ではフォント番号のリナンバー
+を行なってるのに、この DVISEL 機能はそれを行なってない点です。
+  DVI ファイルではフォント番号 0〜63番までは 1バイトでフォントチェンジが
+できるが、64番以上だとフォントチェンジに 2バイトかかるという仕様になって
+ます。従って、オリジナルの DVI ファイルではフォントを 65種類以上使って
+るが、指定印刷ページでは合計 64種類以下のフォントしか使われてない場合、
+dviselect では出力 DVI で使われてない欠番のフォント番号を埋めて全て
+1バイトのフォントチェンジにしてしまう事ができますが、この DVISEL 機能は
+オリジナルの DVI ファイルのフォント番号をそのまま使います。従って、
+dviselect の出力する DVI よりサイズが大きくなる可能性があります。
+
+  もっとも、私は 65種類以上ものフォントを使った TeX なんて見た事ないし、
+どうせ印刷する時に一時的に使ってすぐ消す DVI の出力で数バイトを節約して
+もしょうがないので、フォント番号のリナンバーは行なわない事にしました。:-)
+DVI ファイル中で使われてるフォント番号が飛び飛びなのは問題ありません。
+TeX 自体そういう DVI を吐きます。:-)
+
+
+ 3) その他 (拙作未発表)
+
+   3.1) SMALL_PANEL の数値の見直し
+
+     画面の小さいノートパソコン等で使う時には SMALL_PANEL 機能は便利です
+   が、小さくするあまりボタンとスクロールバーが重なったりしてて格好悪い
+   です。一般に SMALL_PANEL を使いたい人は画面の縦方向に余裕がないけど、
+   横方向にはまだ余裕があると思われます。また、縦方向に小さ過ぎる場合は
+   ウィンドーをリサイズすれば済みますが、横方向はリサイズしてもパネル部分
+   の大きさは変わらないので、横方向に小さ過ぎて見にくいのは直しにくいです。
+   という訳で、全体のバランスを見直してみました。
+
+   3.2) 「XDvi*international: True」なんて、設定をすると、TOC でマウス
+     真中ボタンを押した時に押した位置と違う位置がマークされてしまう。
+     また、SELFILE 時に文字化けしたり、表示がずれたりする。
+
+     こんな設定にしてる人はいないかも知れませんが(^^;;)、Athena Widget
+   で i18n にする時には XFontStruct を使ってる部分は全部書き換えなきゃ
+   …というやつです。:-)
+     一応、X11R4 以前を使ってる人を考えて(いるのか? ^^;;)、#ifdef 付きで
+   変更しておきました。:-)  テストはしてません。X11R4 なんて無い(笑)。
+
+   3.3) マニュアルのオプション説明部分に付いて
+
+     xdvi の man のオプション部分の説明はオプションのアルファベット順に
+   記述されてると思われるが、PRINTDVI で追加されたオプションは後ろに
+   追加されてて、アルファベット順になってないので、ソートし直した。:-)
+
+
+○覚書 (敢えて TODO とは書かない(笑))
+
+  * かつて色々あった xdvi-17 用パッチのうち、xdvik-20c 用パッチでまだ取り
+ 込まれてない機能としては、xdvi-17jp.960209 にあった、
+    5.  DVI ファイル中の文字列の検索機能。
+    6.  -remote オプションの追加。
+ が挙げられます。
+
+
+○最後に
+
+  著作権はそれぞれのパッチの作者にあります。詳しくは READMEs/ ディレク
+トリ以下のファイル群などを見て下さい。
+
+/* Takeshi WATANABE <watanabe@komadori.planet.sci.kobe-u.ac.jp> */
diff -udNr xdvik//READMEs/README.xdvik20c-j1.0p1.patch pxdvik//READMEs/README.xdvik20c-j1.0p1.patch
--- xdvik//READMEs/README.xdvik20c-j1.0p1.patch	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//READMEs/README.xdvik20c-j1.0p1.patch	2010-07-25 14:56:37.614074299 +0900
@@ -0,0 +1,43 @@
+xdvik20c-j1.0p1.patch について
+
+                                         筑波大学 社会工学研究科
+                                         中右 浩二 (knakau@sk.tsukuba.ac.jp)
+
+用途：
+   このパッチは、xdvi (xdvik-20c) が日本語を表示できるように変更を
+   加えるパッチです。(ASCII-pTeX, NTT-JTeX)
+
+謝辞：
+   このパッチは xdvi-20a-j1.1p15.patch 無くしては存在しません。
+   その製作には、山賀＠千葉大さんを初めとする多くの方が携わって
+   おられます。その努力に感謝しつつ、このパッチを使いましょう。
+
+出所：
+   このパッチは基本的に xdvik20a-j1.1p15.patch に変更を加え、
+   xdvik-20cに対応させたものです。その際の主な変更点は、
+   以下の二点です。
+
+     ● xdvik-20側のファイル名の変更に伴うパッチ内容の変更。
+     ● xdvik-20の内容変更に伴うパッチ当て条件の変更。
+
+   xdvik20c-j1.0p1から、内山＠慶応大さんの貢献により、jisx0212
+   の補助漢字を利用できるようになりました。この利用については、
+   下記のページが参考にして下さい。
+   福井＠東大さん http://www.tooyoo.l.u-tokyo.ac.jp/fkr/makejvf.html
+   内山＠慶大さん http://macptex.appi.keio.ac.jp/~uchiyama/gaiji.html
+
+インストール：
+   インストールについては、linux, Digital UNIXの場合の
+   インストール手順について、詳細に記録しておきました。
+   詳しくは、下記のURLを御覧ください。
+   http://ecopolis.sk.tsukuba.ac.jp/~knakau/unix/
+
+   また、README.xdvik20a-j1.1.patch に山賀＠千葉大さんによる
+   詳細な記述があります。そちらも併せて参考にして下さい。
+
+注意点：
+   インストール時に設定変更を行うファイル名が 20a から 20c の間で
+   変更されています。ご注意下さい。
+
+     ● Makefile       (変更無し)
+     ● xdvi-config.h  (以前の config.h に相当)
diff -udNr xdvik//ac/withenable.ac pxdvik//ac/withenable.ac
--- xdvik//ac/withenable.ac	2010-05-10 18:49:37.000000000 +0900
+++ pxdvik//ac/withenable.ac	2010-07-25 14:56:37.614074299 +0900
@@ -6,5 +6,5 @@
 dnl extra_dirs = texk/xdvik/squeeze
 dnl
 ## configure options and TL libraries required for xdvik
-KPSE_ENABLE_PROG([xdvik], [kpathsea t1lib], [x])
-m4_include(kpse_TL[texk/xdvik/ac/xdvik.ac])
+KPSE_ENABLE_PROG([pxdvik], [kpathsea t1lib freetype2 zlib], [x])
+m4_include(kpse_TL[texk/pxdvik/ac/xdvik.ac])
diff -udNr xdvik//aclocal.m4 pxdvik//aclocal.m4
--- xdvik//aclocal.m4	2009-12-14 21:42:29.000000000 +0900
+++ pxdvik//aclocal.m4	2010-07-25 14:56:37.614074299 +0900
@@ -1005,9 +1005,11 @@
 m4_include([m4/xdvi-sys-streams.m4])
 m4_include([m4/xdvi-sys-sunos4.m4])
 m4_include([../../m4/kpse-common.m4])
+m4_include([../../m4/kpse-freetype2-flags.m4])
 m4_include([../../m4/kpse-kpathsea-flags.m4])
 m4_include([../../m4/kpse-t1lib-flags.m4])
 m4_include([../../m4/kpse-warnings.m4])
+m4_include([../../m4/kpse-zlib-flags.m4])
 m4_include([../../m4/libtool.m4])
 m4_include([../../m4/ltoptions.m4])
 m4_include([../../m4/ltsugar.m4])
diff -udNr xdvik//c-auto.in pxdvik//c-auto.in
--- xdvik//c-auto.in	2009-11-23 23:20:21.000000000 +0900
+++ pxdvik//c-auto.in	2010-07-25 14:56:37.630073321 +0900
@@ -78,6 +78,9 @@
 /* Define to 1 if you have the <float.h> header file. */
 #undef HAVE_FLOAT_H
 
+/* Using fontconfig */
+#undef HAVE_FONTCONFIG
+
 /* Define to 1 if you have the `fork' function. */
 #undef HAVE_FORK
 
@@ -356,6 +359,9 @@
 /* Define to the version of this package. */
 #undef PACKAGE_VERSION
 
+/* Enabled Japanese pTeX support. */
+#undef PTEX
+
 /* Define as the return type of signal handlers (`int' or `void'). */
 #undef RETSIGTYPE
 
diff -udNr xdvik//dvi-draw.c pxdvik//dvi-draw.c
--- xdvik//dvi-draw.c	2009-06-22 23:29:44.000000000 +0900
+++ pxdvik//dvi-draw.c	2010-07-25 15:03:46.225418563 +0900
@@ -57,6 +57,7 @@
 #include "special.h"
 #include "tfmload.h"
 #include "read-mapfile.h"
+#include "ptexmap.h"
 #include "my-snprintf.h"
 #include "kpathsea/tex-file.h"
 #include "mag.h"
@@ -980,7 +981,12 @@
 static const char *dvi_table2[] = {
     "FNT1", "FNT2", "FNT3", "FNT4", "XXX1", "XXX2", "XXX3", "XXX4",
     "FNTDEF1", "FNTDEF2", "FNTDEF3", "FNTDEF4", "PRE", "POST", "POSTPOST",
-    "SREFL", "EREFL", NULL, NULL, NULL, NULL
+    "SREFL", "EREFL", NULL, NULL, NULL,
+#ifdef PTEX
+    "DIRECTION"
+#else /* !PTEX */
+    NULL
+#endif /* !PTEX */
 };
 
 static void
@@ -1105,6 +1111,142 @@
     return n;
 }
 
+extern	double	bbox_matrix[2][2];
+extern	Boolean	bbox_scaled, bbox_rotated;
+
+static void moveH(int dir, long dx)
+{
+    if (TATE) {
+	DVI_H -= dx * bbox_matrix[1][0];
+	DVI_V += dx * bbox_matrix[0][0];
+    } else {
+	DVI_H += dir * dx * bbox_matrix[0][0];
+	DVI_V += dir * dx * bbox_matrix[1][0];
+    }
+    PXL_V = pixel_conv(DVI_V);
+}
+
+static void moveV(int dir, long dy)
+{
+    if (TATE) {
+	DVI_H -= dy * bbox_matrix[1][1];
+	DVI_V += dy * bbox_matrix[0][1];
+    } else {
+	DVI_H += dir * dy * bbox_matrix[0][1];
+	DVI_V += dir * dy * bbox_matrix[1][1];
+    }
+    PXL_V = pixel_conv(DVI_V);
+}
+
+#define PUSH_POSITION do { \
+	dvi_h_sav = DVI_H; \
+	dvi_v_sav = DVI_V; \
+	pxl_v_sav = PXL_V; } while (0)
+#define POP_POSITION do { \
+	DVI_H = dvi_h_sav; \
+	DVI_V = dvi_v_sav; \
+	PXL_V = pxl_v_sav; } while (0)
+#define DEFINE_POSITION_VAL \
+	long dvi_h_sav, dvi_v_sav, pxl_v_sav
+
+#ifndef   WORDS_BIGENDIAN
+#define EXTREME_LEFT_BIT   (1 << 0)
+#define EXTREME_RIGHT_BIT  ((bmUnitT)(1 << (BMBITS-1)))
+#define SHIFT_RIGHT(a)     ((a) <<= 1)
+#else  /* WORDS_BIGENDIAN */
+#define EXTREME_LEFT_BIT   ((bmUnitT)(1 << (BMBITS-1)))
+#define EXTREME_RIGHT_BIT  (1 << 0)
+#define SHIFT_RIGHT(a)     ((a) >>= 1)
+#endif /* WORDS_BIGENDIAN */
+
+static	void
+bbox_scale_bitmap(struct glyph *g)
+{
+    bmUnitT *new_ptr;
+    int xmax, ymax, xmin, ymin, x, y;
+    double d;
+ 
+    if (g->bitmap3.bits) {
+	if (g->matrix[0][0] == (float) bbox_matrix[0][0]
+	    && g->matrix[0][1] == (float) bbox_matrix[0][1]
+	    && g->matrix[1][0] == (float) bbox_matrix[1][0]
+	    && g->matrix[1][1] == (float) bbox_matrix[1][1])
+	    return;
+	else
+	    free(g->bitmap.bits);
+    } else {
+	g->bitmap3 = g->bitmap;
+	g->x3 = g->x;
+	g->y3 = g->y;
+    }
+
+    xmax = ymax = xmin = ymin = 0;
+    x = g->bitmap3.w * bbox_matrix[0][0];
+    y = g->bitmap3.w * bbox_matrix[1][0];
+    if (xmax < x) xmax = x;
+    else if (xmin > x) xmin = x;
+    if (ymax < y) ymax = y;
+    else if (ymin > y) ymin = y;
+    x = g->bitmap3.w * bbox_matrix[0][0] + g->bitmap3.h * bbox_matrix[0][1];
+    y = g->bitmap3.w * bbox_matrix[1][0] + g->bitmap3.h * bbox_matrix[1][1];
+    if (xmax < x) xmax = x;
+    else if (xmin > x) xmin = x;
+    if (ymax < y) ymax = y;
+    else if (ymin > y) ymin = y;
+    x = g->bitmap3.h * bbox_matrix[0][1];
+    y = g->bitmap3.h * bbox_matrix[1][1];
+    if (xmax < x) xmax = x;
+    else if (xmin > x) xmin = x;
+    if (ymax < y) ymax = y;
+    else if (ymin > y) ymin = y;
+    xmin--; ymin--; xmax++; ymax++;
+
+    d = bbox_matrix[0][0] * bbox_matrix[1][1]
+	- bbox_matrix[0][1] * bbox_matrix[1][0];
+
+    g->x = g->x3 * bbox_matrix[0][0] + g->y3 * bbox_matrix[0][1] - xmin;
+    g->y = g->x3 * bbox_matrix[1][0] + g->y3 * bbox_matrix[1][1] - ymin;
+    g->matrix[0][0] = (float) bbox_matrix[0][0];
+    g->matrix[0][1] = (float) bbox_matrix[0][1];
+    g->matrix[1][0] = (float) bbox_matrix[1][0];
+    g->matrix[1][1] = (float) bbox_matrix[1][1];
+
+    free_bitmap2(g);
+    g->bitmap.w = xmax - xmin + 1;
+    g->bitmap.h = ymax - ymin + 1;
+    alloc_bitmap(&g->bitmap);
+    clear_bitmap(&g->bitmap);
+
+    new_ptr = (bmUnitT *) g->bitmap.bits;
+    for (y = ymin; y <= ymax; y++) {
+	register bmUnitT m, *cp;
+
+	cp = new_ptr;
+	m = EXTREME_LEFT_BIT;
+	for (x = xmin; x <= xmax; x++) {
+	    int bx, by;
+	    bx = (x * bbox_matrix[1][1] - y * bbox_matrix[0][1]) / d;
+	    by = (y * bbox_matrix[0][0] - x * bbox_matrix[1][0]) / d;
+	    if (bx >= 0 && bx < g->bitmap3.w
+		&& by >= 0 && by < g->bitmap3.h
+		&& *((bmUnitT *)g->bitmap3.bits
+		     + by * (g->bitmap3.bytes_wide / BMBYTES) + bx / BMBITS)
+#ifndef	WORDS_BIGENDIAN
+		& (1 << (bx % BMBITS)))
+#else
+		& (1 << (BMBITS - 1 - bx % BMBITS)))
+#endif
+		    *cp |= m;
+	    if (m == EXTREME_RIGHT_BIT) {
+		m = EXTREME_LEFT_BIT;
+		++cp;
+	    }
+	    else SHIFT_RIGHT(m);
+	}
+	new_ptr = ADD(new_ptr, g->bitmap.bytes_wide);
+    }
+}
+
 static void
 shrink_glyph(struct glyph *g)
 {
@@ -1195,6 +1337,89 @@
 	print_bitmap(&g->bitmap2);
 }
 
+#ifdef PTEX
+void
+rotate_bitmap(struct bitmap *bm)
+{
+      struct bitmap new_bm;
+      bmUnitT *old_ptr, *new_ptr, *cp;
+      int    x, y;
+      bmUnitT m1, m2;
+ 
+      new_bm.h = bm->w;
+      new_bm.w = bm->h;
+      alloc_bitmap(&new_bm);
+      clear_bitmap(&new_bm);
+      old_ptr = ADD(bm->bits, bm->bytes_wide * bm->h);
+      new_ptr = (bmUnitT *)new_bm.bits;
+
+      m1 = EXTREME_LEFT_BIT;
+      for (y = 0; y < bm->h; y++) {
+	old_ptr = SUB(old_ptr, bm->bytes_wide);
+	cp = old_ptr;
+	m2 = EXTREME_LEFT_BIT;
+	for (x = 0; x < bm->w; x++) {
+	  if (*cp & m2)
+	    *ADD(new_ptr, x*new_bm.bytes_wide) |= m1;
+	  if (m2 == EXTREME_RIGHT_BIT) {
+	    m2 = EXTREME_LEFT_BIT;
+	    ++cp;
+	  }
+	  else SHIFT_RIGHT(m2);
+	}
+	if (m1 == EXTREME_RIGHT_BIT) {
+	  m1 = EXTREME_LEFT_BIT;
+	  ++new_ptr;
+	}
+	else SHIFT_RIGHT(m1);
+      }
+
+      free(bm->bits);
+      *bm = new_bm;
+}
+
+
+void
+reverse_rotate_bitmap(struct bitmap *bm)
+{
+      struct bitmap new_bm;
+      bmUnitT *old_ptr, *new_ptr, *cp;
+      int    x, y;
+      bmUnitT m1, m2;
+
+      new_bm.h = bm->w;
+      new_bm.w = bm->h;
+      alloc_bitmap(&new_bm);
+      clear_bitmap(&new_bm);
+      old_ptr = (bmUnitT *)bm->bits;
+      new_ptr = (bmUnitT *)new_bm.bits;
+
+      m1 = EXTREME_LEFT_BIT;
+      for (y = 0; y < bm->h; y++) {
+	cp = old_ptr;
+	old_ptr = ADD(old_ptr, bm->bytes_wide);
+	m2 = EXTREME_LEFT_BIT;
+	for (x = bm->w; x--;) {
+	  if (*cp & m2)
+	    *ADD(new_ptr, x * new_bm.bytes_wide) |= m1;
+	  if (m2 == EXTREME_RIGHT_BIT) {
+	    m2 = EXTREME_LEFT_BIT;
+	    ++cp;
+	  }
+	  else SHIFT_RIGHT(m2);
+	}
+	if (m1 == EXTREME_RIGHT_BIT) {
+	  m1 = EXTREME_LEFT_BIT;
+	  ++new_ptr;
+	}
+	else SHIFT_RIGHT(m1);
+      }
+
+      free(bm->bits);
+      *bm = new_bm;
+}
+#endif /* PTEX */
+
 #ifdef	GREY
 
 #ifdef RGB_ANTI_ALIASING
@@ -1408,6 +1633,7 @@
 				 BMBITS, 0);
 	size = g->image2->bytes_per_line * g->bitmap2.h;
 	g->pixmap2 = g->image2->data = xmalloc(size != 0 ? size : 1);
+	ASSERT(g->pixmap2_gc2 == NULL, "pixmap2_gc2 is not NULL.");
     }
     /* ... and the pixmap used for globals.gc.fore2: */
     if (globals.gc.fore2 != NULL && g->pixmap2_gc2 == NULL) {
@@ -1775,9 +2001,11 @@
 		ch = xone(fp);
 		xskip(fp, (long)ch + (long)xone(fp));
 		break;
+#ifndef PTEX
 	    case M4:	/* unrecognizable */
 		XDVI_FATAL((stderr, "unknown op-code %d", ch));
 		break;
+#endif /* !PTEX */
 	    case M5:	/* doesn't belong */
 		dvi_fmt_error("spcl_scan: shouldn't happen: %s encountered",
 			      dvi_table2[ch - (FNTNUM0 + 64)]);
@@ -1891,6 +2119,37 @@
  *	Routines to print characters.
  */
 
+#ifdef PTEX
+static void
+set_char_rotate_glyph(struct glyph *g, int reverse_rotate)
+{
+    if (g->tdir != TATE) {
+	int tmp;
+	if (!reverse_rotate) {
+	    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;
+	free_bitmap2(g);
+    }
+}
+#endif /* PTEX */
+
+static setcharRetvalT
+common_set_char(
+#ifdef TEXXET
+		wide_ubyte,
+#endif
+		struct glyph *);
+
 setcharRetvalT
 set_char(
 #ifdef TEXXET
@@ -1899,9 +2158,6 @@
 	 wide_ubyte ch)
 {
     struct glyph *g;
-#ifdef TEXXET
-    long dvi_h_sav;
-#endif
 
     if (ch > maxchar)
 	realloc_font(currinf.fontp, (wide_ubyte)ch);
@@ -1930,14 +2186,41 @@
 	    print_char((ubyte) ch, g);
 	currinf.fontp->timestamp = ++current_timestamp;
     }
+#ifdef PTEX
+    set_char_rotate_glyph(g, TATE == currinf.fontp->dir);
+#endif /* PTEX */
+#ifdef TEXXET
+    common_set_char(cmd, g);
+#else
+    return common_set_char(g);
+#endif
+}
 
+static setcharRetvalT
+common_set_char(
 #ifdef TEXXET
-    dvi_h_sav = DVI_H;
-    if (currinf.dir < 0)
-	DVI_H -= g->dvi_adv;
+		wide_ubyte cmd,
+#endif
+		struct glyph *g)
+{
+#ifdef	TEXXET
+    DEFINE_POSITION_VAL;
+    PUSH_POSITION;
+    if (! TATE && currinf.dir < 0)
+	moveH(1, -g->dvi_adv);
 
     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;
+	    free_bitmap2(g);
+	}
 	
 #ifdef RGB_ANTI_ALIASING
 	if (currwin.shrinkfactor == -1) {
@@ -1979,9 +2262,9 @@
 #ifdef TEXXET
     }
     if (cmd == PUT1 || (resource.omega && cmd == PUT2))
-	DVI_H = dvi_h_sav;
-    else if (currinf.dir > 0)
-	DVI_H += g->dvi_adv;
+	POP_POSITION;
+    else if (TATE || currinf.dir > 0)
+	moveH(1, g->dvi_adv);
     return;
 #else
     return g->dvi_adv;
@@ -2010,6 +2293,33 @@
 #endif
 }
 
+#ifdef PTEX
+setcharRetvalT
+set_char2(
+#ifdef TEXXET
+	 wide_ubyte cmd,
+#endif
+	 wide_ubyte ch)
+{
+    struct glyph *g;
+
+    g = currinf.fontp->kglyph[ch];
+    if (g == NULL || g->bitmap.bits == NULL) {
+	(*currinf.fontp->read_char)(currinf.fontp, ch);
+	g = currinf.fontp->kglyph[ch];
+	free_bitmap2(g);
+	g->tdir = currinf.fontp->dir;
+	if (globals.debug & DBG_BITMAP) print_char((ubyte) ch, g);
+    }
+    set_char_rotate_glyph(g, g->tdir);
+#ifdef TEXXET
+    common_set_char(cmd, g);
+#else
+    return common_set_char(g);
+#endif
+}
+#endif /* PTEX */
+
 setcharRetvalT
 load_n_set_char(
 #ifdef TEXXET
@@ -2058,7 +2368,7 @@
     wide_ubyte oldmaxchar;
     static ubyte c;
 #ifdef TEXXET
-    long dvi_h_sav;
+    DEFINE_POSITION_VAL;
 #endif
 
     if (ch > maxchar)
@@ -2074,9 +2384,9 @@
 #endif
     }
 #ifdef TEXXET
-    dvi_h_sav = DVI_H;
-    if (currinf.dir < 0)
-	DVI_H -= m->dvi_adv;
+    PUSH_POSITION;
+    if (! TATE && currinf.dir < 0)
+	moveH(1, -m->dvi_adv);
     if (scan_frame == NULL) {
 #endif
 	oldinfo = currinf;
@@ -2101,9 +2411,9 @@
 #ifdef TEXXET
     }
     if (cmd == PUT1 || (resource.omega && cmd == PUT2))
-	DVI_H = dvi_h_sav;
-    else if (currinf.dir > 0)
-	DVI_H += m->dvi_adv;
+	POP_POSITION;
+    else if (TATE || currinf.dir > 0)
+	moveH(1, m->dvi_adv);
     return;
 #else
     return m->dvi_adv;
@@ -2140,9 +2450,59 @@
  *	Set rule.  Arguments are coordinates of lower left corner.
  */
 
+static	void
+set_rotated_rule(long h, long w)
+{
+    XPoint points[4];
+
+    points[0].x = PXL_H - currwin.base_x;
+    points[0].y = PXL_V - currwin.base_y;
+#ifdef PTEX
+    if (TATE) {
+	points[1].x = -w * bbox_matrix[1][0];
+	points[1].y = w * bbox_matrix[0][0];
+	points[2].x = h * bbox_matrix[1][1];
+	points[2].y = -h * bbox_matrix[0][1];
+    } else
+#endif /* PTEX */
+    {
+	points[1].x = DIR * w * bbox_matrix[0][0];
+	points[1].y = DIR * w * bbox_matrix[1][0];
+	points[2].x = -h * bbox_matrix[0][1];
+	points[2].y = -h * bbox_matrix[1][1];
+    }
+    points[3].x = -points[1].x;
+    points[3].y = -points[1].y;
+
+    if (--globals.ev.ctr == 0) {
+	if (read_events(EV_NOWAIT) & EV_GE_MAG_GONE) {
+	    /* fprintf(stderr, "longjmp1!\n"); */
+	    longjmp(globals.ev.canit, 1);
+	}
+    }
+#if COLOR
+    if (fg_active != fg_current)
+	do_color_change();
+#endif
+    XFillPolygon(DISP, currwin.win,
+		 htex_inside_href ? globals.gc.high: globals.gc.rule,
+		 points, 4, Convex, CoordModePrevious);
+}
+
 static void
 set_rule(int h, int w)
 {
+    if (bbox_rotated) {
+	set_rotated_rule(h, w);
+	return;
+    }
+    h = h * bbox_matrix[1][1];
+    w = w * bbox_matrix[0][0];
+#ifdef PTEX
+    if (TATE)
+	put_rule(PXL_H, PXL_V, (unsigned int)h, (unsigned int)w);
+    else
+#endif /* PTEX */
 #ifdef TEXXET
     put_rule(PXL_H - (currinf.dir < 0 ? w - 1 : 0), PXL_V - h + 1,
 	     (unsigned int)w, (unsigned int)h);
@@ -2187,7 +2547,7 @@
 #ifdef TEXXET
 	    (*currinf.set_char_p) (ch, ch);
 #else
-	    DVI_H += (*currinf.set_char_p) (ch);
+	    moveH(1, (*currinf.set_char_p) (ch));
 #endif
 	}
 	else if (FNTNUM0 <= ch && ch <= (ubyte) (FNTNUM0 + 63)) {
@@ -2204,7 +2564,7 @@
 #else
 		a = (*currinf.set_char_p) (xone(fp));
 		if (ch != PUT1)
-		    DVI_H += a;
+		    moveH(1, a);
 #endif
 		break;
 
@@ -2219,7 +2579,7 @@
 #else
 		    a = (*currinf.set_char_p) (xnum(fp, 2));
 		    if (ch != PUT2)
-			DVI_H += a;
+			moveH(1, a);
 #endif
 		}
 		break;
@@ -2237,7 +2597,7 @@
 		    ) {
 		    set_rule(pixel_round(xspell_conv(a)), pixel_round(b));
 		}
-		DVI_H += DIR * b;
+		moveH(DIR, b);
 		break;
 
 	    case PUTRULE:
@@ -2261,6 +2621,9 @@
 		DVI_V = OFFSET_Y;
 		PXL_V = pixel_conv(DVI_V);
 		WW = XX = YY = ZZ = 0;
+		bbox_matrix[0][0] = bbox_matrix[1][1] = 1.0;
+		bbox_matrix[0][1] = bbox_matrix[1][0] = 0.0;
+		bbox_scaled = bbox_rotated = False;
 		break;
 
 	    case EOP:
@@ -2355,7 +2718,7 @@
 	    case RIGHT2:
 	    case RIGHT3:
 	    case RIGHT4:
-		DVI_H += DIR * xspell_conv(xsnum(fp, ch - RIGHT1 + 1));
+		moveH(DIR, xspell_conv(xsnum(fp, ch - RIGHT1 + 1)));
 		break;
 
 	    case W1:
@@ -2364,7 +2727,7 @@
 	    case W4:
 		WW = xspell_conv(xsnum(fp, ch - W0));
 	    case W0:
-		DVI_H += DIR * WW;
+		moveH(DIR, WW);
 		break;
 
 	    case X1:
@@ -2373,15 +2736,14 @@
 	    case X4:
 		XX = xspell_conv(xsnum(fp, ch - X0));
 	    case X0:
-		DVI_H += DIR * XX;
+		moveH(DIR, XX);
 		break;
 
 	    case DOWN1:
 	    case DOWN2:
 	    case DOWN3:
 	    case DOWN4:
-		DVI_V += xspell_conv(xsnum(fp, ch - DOWN1 + 1));
-		PXL_V = pixel_conv(DVI_V);
+		moveV(1, xspell_conv(xsnum(fp, ch - DOWN1 + 1)));
 		break;
 
 	    case Y1:
@@ -2390,8 +2752,7 @@
 	    case Y4:
 		YY = xspell_conv(xsnum(fp, ch - Y0));
 	    case Y0:
-		DVI_V += YY;
-		PXL_V = pixel_conv(DVI_V);
+		moveV(1, YY);
 		break;
 
 	    case Z1:
@@ -2400,8 +2761,7 @@
 	    case Z4:
 		ZZ = xspell_conv(xsnum(fp, ch - Z0));
 	    case Z0:
-		DVI_V += ZZ;
-		PXL_V = pixel_conv(DVI_V);
+		moveV(1, ZZ);
 		break;
 
 	    case FNT1:
@@ -2448,6 +2808,11 @@
 		dvi_fmt_error("%s:%d: draw_part: shouldn't happen: %s encountered",
 			      __FILE__, __LINE__, dvi_table2[ch - (FNTNUM0 + 64)]);
 		break;
+#ifdef PTEX
+	    case TDIR:
+		TATE = xone(fp);
+		break;
+#endif /* PTEX */
 
 	    default:
 		dvi_fmt_error("%s:%d: draw_part: unknown op-code %d", __FILE__, __LINE__, ch);
@@ -3240,7 +3605,15 @@
     last_dvi_h1 = DVI_H;
     last_u_glyph = u_glyph;
     last_pxl_v = pxl_v1;
+#ifdef PTEX
+    if (currinf.fontp->flags & FONT_KANJI) {
+    last_dvi_h2 = DVI_H + currinf.fontp->kglyph[ch]->dvi_adv;
+    } else {
+#endif /* PTEX */
     last_dvi_h2 = DVI_H + currinf.fontp->glyph[ch].dvi_adv;
+#ifdef PTEX
+    }
+#endif /* PTEX */
     last_x = x2;
 }
 
@@ -3299,25 +3672,56 @@
 	}
 #ifdef TEXXET
 	if (geom_scan_frame == NULL) {
-	    long dvi_h_sav = DVI_H;
-	    if (currinf.dir < 0)
-		DVI_H -= g->dvi_adv;
+	    DEFINE_POSITION_VAL;
+	    PUSH_POSITION;
+	    if (! TATE && currinf.dir < 0)
+		moveH(1, -g->dvi_adv);
 #endif
 	    x = G_PXL_H - g->x;
 	    y = PXL_V - g->y;
 	    do_char(ch, currinf, info, PXL_V, y, x, x + g->bitmap.w - 1, g);
 #ifdef TEXXET
-	    DVI_H = dvi_h_sav;
+	    POP_POSITION;
 	}
 #endif
 	return DIR * g->dvi_adv;
     }
+#ifdef PTEX
+    else if (currinf.set_char_p == set_char2) {
+	struct glyph *g;
+	long x, y;
+
+	g = currinf.fontp->kglyph[ch];
+	if (g == NULL || g->bitmap.bits == NULL) {
+	    (*currinf.fontp->read_char)(currinf.fontp, ch);
+	    g = currinf.fontp->kglyph[ch];
+	    free_bitmap2(g);
+	    g->tdir = currinf.fontp->dir;
+	}
+
+#ifdef TEXXET
+	if (geom_scan_frame == NULL) {
+	    DEFINE_POSITION_VAL;
+	    PUSH_POSITION;
+	    if (! TATE && currinf.dir < 0)
+		moveH(1, -g->dvi_adv);
+#endif
+	    x = G_PXL_H - g->x;
+	    y = PXL_V - g->y;
+	    do_char(ch, currinf, info, PXL_V, y, x, x + g->bitmap.w - 1, g);
+#ifdef TEXXET
+	    POP_POSITION;
+	}
+#endif
+	return DIR * g->dvi_adv;
+    }
+#endif /* PTEX */
     else if (currinf.set_char_p == set_vf_char) {
 	struct macro *m;
 	struct drawinf oldinfo;
 	wide_ubyte oldmaxchar;
 #ifdef TEXXET
-	long dvi_h_sav;
+	DEFINE_POSITION_VAL;
 #endif
 
 	if (ch > maxchar)
@@ -3325,9 +3729,9 @@
 	if ((m = &currinf.fontp->macro[ch])->pos == NULL)
 	    return 0;	/* catch the error later */
 #ifdef TEXXET
-	dvi_h_sav = DVI_H;
-	if (currinf.dir < 0)
-	    DVI_H -= m->dvi_adv;
+	PUSH_POSITION;
+	if (! TATE && currinf.dir < 0)
+	    moveH(1, -m->dvi_adv);
 	if (geom_scan_frame == NULL) {
 #endif
 	    oldinfo = currinf;
@@ -3343,7 +3747,7 @@
 	    currinf = oldinfo;
 	    maxchar = oldmaxchar;
 #ifdef TEXXET
-	    DVI_H = dvi_h_sav;
+	    POP_POSITION;
 	}
 #endif
 	return DIR * m->dvi_adv;
@@ -3359,13 +3763,14 @@
 	if (status == FAILURE_BLANK)
 	    return 0;
 	if (geom_scan_frame == NULL) {
-	    long dvi_h_sav = DVI_H;
-	    if (currinf.dir < 0)
-		DVI_H -= g->dvi_adv;
+	    DEFINE_POSITION_VAL;
+	    PUSH_POSITION;
+	    if (! TATE && currinf.dir < 0)
+		moveH(1, -g->dvi_adv);
 	    x = G_PXL_H - g->x;
 	    y = PXL_V - g->y;
 	    do_char(ch, currinf, info, PXL_V, y, x, x + g->bitmap.w - 1, g);
-	    DVI_H = dvi_h_sav;
+	    POP_POSITION;
 	}
 #else
 	g = get_t1_glyph(ch, &status, True);
@@ -3385,6 +3790,11 @@
     return 0;
 }
 
+#define xmoveH(dir,dx)   \
+	do { moveH(dir,dx); PXL_V = xpixel_conv(DVI_V); } while(0)
+#define xmoveV(dir,dy)   \
+	do { moveV(dir,dy); PXL_V = xpixel_conv(DVI_V); } while(0)
+
 /*
  *	Handle a character in geometric scanning routine.
  */
@@ -3445,27 +3855,58 @@
 	}
 #ifdef TEXXET
 	if (geom_scan_frame == NULL) {
-	    long dvi_h_sav = DVI_H;
-	    if (currinf.dir < 0)
-		DVI_H -= g->dvi_adv;
+	    DEFINE_POSITION_VAL;
+	    PUSH_POSITION;
+	    if (! TATE && currinf.dir < 0)
+		moveH(1, -g->dvi_adv);
 #endif
 	    x = G_PXL_H - g->x;
 	    y = PXL_V - g->y;
 	    g_info->geom_box(info, x, y,
 			     x + g->bitmap.w - 1, y + g->bitmap.h - 1);
+#ifdef TEXXET
+	    POP_POSITION;
+	}
+#endif
+	return DIR * g->dvi_adv;
+    }
+#ifdef PTEX
+    else if (currinf.set_char_p == set_char2) {
+	struct glyph *g;
+	long x, y;
+
+	g = currinf.fontp->kglyph[ch];
+	if (g == NULL || g->bitmap.bits == NULL) {
+	    (*currinf.fontp->read_char)(currinf.fontp, ch);
+	    g = currinf.fontp->kglyph[ch];
+	    free_bitmap2(g);
+	    g->tdir = currinf.fontp->dir;
+	}
 
 #ifdef TEXXET
-	    DVI_H = dvi_h_sav;
+	if (geom_scan_frame == NULL) {
+	    DEFINE_POSITION_VAL;
+	    PUSH_POSITION;
+	    if (! TATE && currinf.dir < 0)
+		moveH(1, -g->dvi_adv);
+#endif
+	    x = G_PXL_H - g->x;
+	    y = PXL_V - g->y;
+	    g_info->geom_box(info, x, y,
+			     x + g->bitmap.w - 1, y + g->bitmap.h - 1);
+#ifdef TEXXET
+	    POP_POSITION;
 	}
 #endif
 	return DIR * g->dvi_adv;
     }
+#endif /* PTEX */
     else if (currinf.set_char_p == set_vf_char) {
 	struct macro *m;
 	struct drawinf oldinfo;
 	wide_ubyte oldmaxchar;
 #ifdef TEXXET
-	long dvi_h_sav;
+	DEFINE_POSITION_VAL;
 #endif
 
 	if (ch > maxchar)
@@ -3473,9 +3914,9 @@
 	if ((m = &currinf.fontp->macro[ch])->pos == NULL)
 	    return 0;	/* catch the error later */
 #ifdef TEXXET
-	dvi_h_sav = DVI_H;
-	if (currinf.dir < 0)
-	    DVI_H -= m->dvi_adv;
+	PUSH_POSITION;
+	if (! TATE && currinf.dir < 0)
+	    moveH(1, -m->dvi_adv);
 	if (geom_scan_frame == NULL) {
 #endif
 	    oldinfo = currinf;
@@ -3491,7 +3932,7 @@
 	    currinf = oldinfo;
 	    maxchar = oldmaxchar;
 #ifdef TEXXET
-	    DVI_H = dvi_h_sav;
+	    POP_POSITION;
 	}
 #endif
 	return DIR * m->dvi_adv;
@@ -3507,14 +3948,15 @@
 	if (status == FAILURE_BLANK)
 	    return 0;
 	if (geom_scan_frame == NULL) {
-	    long dvi_h_sav = DVI_H;
-	    if (currinf.dir < 0)
-		DVI_H -= g->dvi_adv;
+	    DEFINE_POSITION_VAL;
+	    PUSH_POSITION;
+	    if (! TATE && currinf.dir < 0)
+		moveH(1, -g->dvi_adv);
 	    x = G_PXL_H - g->x;
 	    y = PXL_V - g->y;
 	    g_info->geom_box(info, x, y,
 			     x + g->bitmap.w - 1, y + g->bitmap.h - 1);
-	    DVI_H = dvi_h_sav;
+	    POP_POSITION;
 	}
 #else
 	g = get_t1_glyph(ch, &status, False);
@@ -3543,21 +3985,35 @@
 geom_do_rule(struct scan_info *info, long h, long w)
 {
     long x, y;
+    struct geom_info *g_info = info->data;
 #ifdef TEXXET
-    long dvi_h_save = DVI_H;
+    DEFINE_POSITION_VAL;
+    PUSH_POSITION;
 #endif
-    struct geom_info *g_info = info->data;
-    
+
+    if (bbox_rotated) {
+	fprintf(stderr, "geom_do_rotated_rule(h, w) is not implemented!\n");
+	return;
+    }
+    h = h * bbox_matrix[1][1];
+    w = w * bbox_matrix[0][0];
+
 #ifdef TEXXET
-    if (currinf.dir < 0)
-	DVI_H -= w - 1;
+    if (! TATE && currinf.dir < 0)
+	moveH(1, - w + 1);
 #endif
     x = G_PXL_H;
     y = PXL_V;
+#ifdef PTEX
+    if (TATE)
+	g_info->geom_box(info, x, y, x + xpixel_round(h) - 1,
+			 y + xpixel_round(w) - 1);
+    else
+#endif /* PTEX */
     g_info->geom_box(info, x, y - xpixel_round(h) + 1,
 		     x + xpixel_round(w) - 1, y);
 #ifdef TEXXET
-    DVI_H = dvi_h_save;
+    POP_POSITION;
 #endif
 }
 
@@ -3587,7 +4043,7 @@
     for (;;) {
 	ch = xone(fp);
 	if (ch <= (ubyte)(SETCHAR0 + 127))
-	    DVI_H += char_proc(fp, info, ch);
+	    xmoveH(1, char_proc(fp, info, ch));
 	else if (FNTNUM0 <= ch && ch <= (ubyte) (FNTNUM0 + 63)) {
 	    change_font((unsigned long)(ch - FNTNUM0));
 	}
@@ -3599,7 +4055,7 @@
 	    case PUT1:
 		a = char_proc(fp, info, xone(fp));
 		if (ch != PUT1)
-		    DVI_H += a;
+		    xmoveH(1, a);
 		break;
 
 	    case SET2:
@@ -3613,7 +4069,7 @@
 #else
 		    a = char_proc(fp, info, xnum(fp, 2));
 		    if (ch != PUT2)
-			DVI_H += a;
+			xmoveH(1, a);
 #endif
 		}
 		break;
@@ -3633,7 +4089,7 @@
 		    if (info->geom_special != NULL)
 			geom_do_rule(info, xspell_conv(a), b);
 		}
-		DVI_H += DIR * b;
+		moveH(DIR, b);
 		break;
 
 	    case PUTRULE:
@@ -3754,7 +4210,7 @@
 	    case RIGHT2:
 	    case RIGHT3:
 	    case RIGHT4:
-		DVI_H += DIR * xspell_conv(xsnum(fp, ch - RIGHT1 + 1));
+		xmoveH(DIR, xspell_conv(xsnum(fp, ch - RIGHT1 + 1)));
 		break;
 
 	    case W1:
@@ -3763,7 +4219,7 @@
 	    case W4:
 		WW = xspell_conv(xsnum(fp, ch - W0));
 	    case W0:
-		DVI_H += DIR * WW;
+		xmoveH(DIR, WW);
 		break;
 
 	    case X1:
@@ -3772,15 +4228,14 @@
 	    case X4:
 		XX = xspell_conv(xsnum(fp, ch - X0));
 	    case X0:
-		DVI_H += DIR * XX;
+		xmoveH(DIR, XX);
 		break;
 
 	    case DOWN1:
 	    case DOWN2:
 	    case DOWN3:
 	    case DOWN4:
-		DVI_V += xspell_conv(xsnum(fp, ch - DOWN1 + 1));
-		PXL_V = xpixel_conv(DVI_V);
+		xmoveV(1, xspell_conv(xsnum(fp, ch - DOWN1 + 1)));
 		break;
 
 	    case Y1:
@@ -3789,8 +4244,7 @@
 	    case Y4:
 		YY = xspell_conv(xsnum(fp, ch - Y0));
 	    case Y0:
-		DVI_V += YY;
-		PXL_V = xpixel_conv(DVI_V);
+		xmoveV(1, YY);
 		break;
 
 	    case Z1:
@@ -3799,8 +4253,7 @@
 	    case Z4:
 		ZZ = xspell_conv(xsnum(fp, ch - Z0));
 	    case Z0:
-		DVI_V += ZZ;
-		PXL_V = xpixel_conv(DVI_V);
+		xmoveV(1, ZZ);
 		break;
 
 	    case FNT1:
@@ -3837,6 +4290,12 @@
 		xskip(fp, a + (long)xone(fp));
 		break;
 
+#ifdef PTEX
+	    case TDIR:
+		TATE = xone(fp);
+		break;
+#endif /* PTEX */
+
 #ifndef TEXXET
 	    case SREFL:
 	    case EREFL:
@@ -5062,7 +5521,9 @@
     } while (0);
     
     if (filename != NULL) {
-	return T1_LoadEncoding(filename);
+        char **ret = T1_LoadEncoding(filename);
+        free(filename);
+	return ret;
     }
     return NULL;
 }
@@ -5729,7 +6190,7 @@
     Boolean found_no_map_files = True;
     
     if (file == NULL)
-	file = "xdvi.cfg";
+	file = "pxdvi.cfg";
     
     filename = kpse_find_file(file, kpse_program_text_format, 1);
     if (filename == NULL) {
@@ -5802,6 +6263,21 @@
 	    }
 	    i = new_encoding(enc, ptr);
 	    TRACE_T1((stderr, "Encoding[%d]: '%s' = '%s' -> '%s'", i, enc, name, ptr));
+	}
+	else if (strcmp(keyword, "ptexmap") == 0) {
+	    if ((ptr = strtok(NULL, delim)) == NULL) {
+		XDVI_WARNING((stderr, "Syntax error in entry \"%s\"", buffer));
+		continue;
+	    }
+	    read_ptexmap_file(ptr);
+	}
+	else if (strcmp(keyword, "replace") == 0) {
+	    if ((name = strtok(NULL, delim)) == NULL ||
+                (ptr  = strtok(NULL, delim)) == NULL) {
+		XDVI_WARNING((stderr, "Syntax error in entry \"%s\"", buffer));
+		continue;
+	    }
+	    add_replace_dictionary(name, ptr);
 	} else {
 	    /* again, nag them with a popup so that they'll do something about this ... */
 	    popup_message(globals.widgets.top_level,
diff -udNr xdvik//dvi-draw.h pxdvik//dvi-draw.h
--- xdvik//dvi-draw.h	2006-01-18 06:41:51.000000000 +0900
+++ pxdvik//dvi-draw.h	2010-07-25 14:56:37.634074578 +0900
@@ -82,6 +82,11 @@
 #define XX      currinf.data.x
 #define YY      currinf.data.y
 #define ZZ      currinf.data.z
+#ifdef PTEX
+#define TATE    currinf.data.tdir
+#else /* !PTEX */
+#define TATE    False
+#endif /* !PTEX */
 
 extern void draw_page(void);
 extern void source_reverse_search(int, int, wide_bool);
@@ -131,6 +136,13 @@
 			       wide_ubyte cmd,
 #endif
 			       wide_ubyte ch);
+#ifdef PTEX
+extern setcharRetvalT set_char2(
+#ifdef TEXXET
+				wide_ubyte cmd,
+#endif
+				wide_ubyte ch);
+#endif /* PTEX */
 extern setcharRetvalT load_n_set_char(
 #ifdef TEXXET
 				      wide_ubyte cmd,
diff -udNr xdvik//dvi-init.c pxdvik//dvi-init.c
--- xdvik//dvi-init.c	2009-11-10 19:28:49.000000000 +0900
+++ pxdvik//dvi-init.c	2010-07-25 14:56:37.638074508 +0900
@@ -31,6 +31,8 @@
 
 #include "dvi-init.h"
 #include "dvi-draw.h"
+#include "zeit.h"
+#include "ptexmap.h"
 #include "util.h"
 #include "x_util.h"
 #include "exit-handlers.h"
@@ -74,6 +76,10 @@
 #define	VF_PRE		247
 #define	VF_ID_BYTE	202
 #define	VF_MAGIC	((VF_PRE << 8) | VF_ID_BYTE)
+#ifdef PTEX
+#define	JFMS_MAGIC	11
+#define	JFMS_TATEMAGIC	9
+#endif /* PTEX */
 
 /* font stuff */
 struct font *tn_table[TNTABLELEN];
@@ -177,8 +183,22 @@
 delete_glyphs(struct font *fontp)
 {
     struct glyph *g;
+#ifdef PTEX
+    int n, maxchar;
 
+    maxchar = (fontp->flags & FONT_KANJI) ? KTABLESIZE : fontp->maxchar + 1;
+    for (n = 0; n < maxchar; ++n) {
+	g = (fontp->flags & FONT_KANJI) ? fontp->kglyph[n] : &fontp->glyph[n];
+	if (g == NULL) continue;
+#else /* !PTEX */
     for (g = fontp->glyph; g <= fontp->glyph + fontp->maxchar; ++g) {
+#endif /* !PTEX */
+	free_bitmap2(g);
+    }
+}
+
+void free_bitmap2(struct glyph *g) {
+    {
 	if (g->bitmap2.bits) {
 	    free(g->bitmap2.bits);
 	    g->bitmap2.bits = NULL;
@@ -251,7 +271,23 @@
 		}
 		else {
 		    delete_glyphs(fontp);
+#ifdef PTEX
+		    if (fontp->flags & FONT_KANJI) {
+			int n;
+			for (n = 0; n < KTABLESIZE; ++n) {
+			    if (fontp->kglyph[n] != NULL) {
+				free(fontp->kglyph[n]);
+			    }
+			}
+			free(fontp->kglyph);
+		    }
+		    else {
+#endif /* PTEX */
 		    free((char *)fontp->glyph);
+		    fontp->glyph = NULL;
+#ifdef PTEX
+		    }
+#endif /* PTEX */
 		}
 		free((char *)fontp);
 	    }
@@ -292,7 +328,11 @@
 	struct glyph *g;
 
 	for (f = font_head; f != NULL; f = f->next)
-	    if ((f->flags & FONT_LOADED) && !(f->flags & FONT_VIRTUAL))
+	    if ((f->flags & FONT_LOADED) && !(f->flags & FONT_VIRTUAL)
+#ifdef PTEX
+		&& !(f->flags & FONT_KANJI)
+#endif /* PTEX */
+		)
 		for (g = f->glyph; g <= f->glyph + f->maxchar; ++g)
 		    g->fg = NULL;
     }
@@ -415,6 +455,10 @@
      * appear before the main window comes up ...
      */
 
+#ifdef PTEX
+    fontp->dir = 0;
+#endif /* PTEX */
+
     fontp->file = font_open(
 #if DELAYED_MKTEXPK
 			    load_font_now,
@@ -486,6 +530,12 @@
     fontp->fsize = size_found;
     fontp->timestamp = ++current_timestamp;
     fontp->maxchar = maxchar = 255;
+#ifdef PTEX
+    if (iskanjifont(fontp->fontname)) {
+	fontp->flags |= FONT_KANJI;
+	fontp->set_char_p = set_char2;
+    } else
+#endif /* PTEX */
     fontp->set_char_p = set_char;
     magic = get_bytes(fontp->file, 2);
 
@@ -504,6 +554,13 @@
 	else
 	    (void)read_VF_index(fontp, (wide_bool)hushcs);
 	break;
+#ifdef PTEX
+    case JFMS_MAGIC:
+    case JFMS_TATEMAGIC:
+	fontp->dir = (magic == JFMS_TATEMAGIC);
+	read_ZEIT_index(fontp);
+	return True;
+#endif /* PTEX */
     default:
 	XDVI_FATAL((stderr, "Cannot recognize format for font file %s", fontp->filename));
 	break;
@@ -751,7 +808,13 @@
 	TRACE_FILES((stderr, "process_preamble: fp = %p, errflag = %d, returning False", (void *)fp, *errflag));
 	return False;
     }
-    if (get_byte(fp) != 2) {
+#ifdef PTEX
+    k = get_byte(fp);
+    if (k != 2 && k != 3)
+#else /* !PTEX */
+    if (get_byte(fp) != 2)
+#endif /* !PTEX */
+    {
 	*errflag = WRONG_DVI_VERSION;
 	TRACE_FILES((stderr, "process_preamble: fp = %p, errflag = %d, returning False", (void *)fp, *errflag));
 	return False;
@@ -813,7 +876,12 @@
 	fseek(fp, --pos, SEEK_SET);
 	byte = get_byte(fp);
     }
-    if (byte != 2) {
+#ifdef PTEX
+    if (byte != 2 && byte != 3)
+#else /* !PTEX */
+    if (byte != 2)
+#endif /* !PTEX */
+    {
 	*errflag = WRONG_DVI_VERSION;
 	TRACE_FILES((stderr, "find_postamble: returning FALSE"));
 	return False;
diff -udNr xdvik//dvi-init.h pxdvik//dvi-init.h
--- xdvik//dvi-init.h	2008-07-02 00:42:36.000000000 +0900
+++ pxdvik//dvi-init.h	2010-07-25 14:56:37.638074508 +0900
@@ -95,6 +95,12 @@
     char *pixmap2_gc2;	    /* separate image data for drawing image to globals.gc.fore2 */
 #endif /* GREY */
     struct bitmap bitmap2;  /* shrunken bitmap for character */
+#ifdef PTEX
+    int     tdir;
+#endif /* PTEX */
+    short x3, y3;		/* x and y offset in pixels (backup) */
+    struct bitmap bitmap3;	/* bitmap for character (backup) */
+    float matrix[2][2];
 };
 
 /*
@@ -126,6 +132,9 @@
 #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 */
+#ifdef PTEX
+#define	FONT_KANJI	8	/* if font is kanji */
+#endif
 
 /* forward declarations */
 struct font;
@@ -151,6 +160,11 @@
     struct glyph *glyph;
     /* these fields are used by (loaded) virtual fonts */
     struct font **vf_table;	/* list of fonts used by this vf */
+#ifdef PTEX
+    struct glyph **kglyph;
+    int ft2_index;
+    int dir;
+#endif /* PTEX */
     struct tn *vf_chain;	/* ditto, if TeXnumber >= VFTABLELEN */
     struct font *first_font;	/* first font defined */
     struct macro *macro;
@@ -166,6 +180,7 @@
 };
 
 
+extern void free_bitmap2(struct glyph *g);
 extern void reset_fonts(void);
 #if COLOR
 extern void reset_colors(void);
diff -udNr xdvik//dvi.h pxdvik//dvi.h
--- xdvik//dvi.h	2006-01-18 06:41:51.000000000 +0900
+++ pxdvik//dvi.h	2010-07-25 14:56:37.638074508 +0900
@@ -61,4 +61,8 @@
 #define	SREFL		250
 #define	EREFL		251
 
+#ifdef PTEX
+#define TDIR            255
+#endif  /* PTEX */
+
 #define	TRAILER		223	/* Trailing bytes at end of file */
diff -udNr xdvik//dvisel.c pxdvik//dvisel.c
--- xdvik//dvisel.c	2008-07-02 00:42:36.000000000 +0900
+++ pxdvik//dvisel.c	2010-07-25 14:56:37.638074508 +0900
@@ -28,6 +28,7 @@
 #include <string.h>
 #include <ctype.h>
 
+#include "xdvi-config.h"
 #include "dvi.h"
 #include "pagesel.h"
 #include "dvisel.h"
diff -udNr xdvik//encodings.c pxdvik//encodings.c
--- xdvik//encodings.c	2009-11-10 19:28:49.000000000 +0900
+++ pxdvik//encodings.c	2010-07-25 14:56:37.638074508 +0900
@@ -69,10 +69,12 @@
 #if HAVE_ICONV_H
 # include <iconv.h>
 static iconv_t m_iconv_gb_ucs4 = (iconv_t)(-1);
+static iconv_t m_iconv_jis_ucs4 = (iconv_t)(-1);
 #endif /* HAVE_ICONV_H */
 
 #include <ctype.h>
 
+#include "ptexmap.h"
 #include "util.h"
 #include "encodings.h"
 #include "my-snprintf.h"
@@ -3021,9 +3023,68 @@
 	iconv_close(m_iconv_gb_ucs4);
 	m_iconv_gb_ucs4 = (iconv_t)(-1);
     }
+    if (m_iconv_jis_ucs4 != (iconv_t)(-1)) {
+	iconv_close(m_iconv_jis_ucs4);
+	m_iconv_jis_ucs4 = (iconv_t)(-1);
+    }
 #endif /* HAVE_ICONV_H */
 }
 
+#ifdef PTEX
+/* convert a JIS char to unicode (UCS-4) using iconv() */
+static uint32_t
+jis2unicode(wide_ubyte jis)
+{
+#if HAVE_ICONV_H
+    uint32_t u = 0;
+    unsigned char jis_seq[8] = { 
+	0x1b, 0x24, 0x42, /* JIS X 0208-1983 */
+	(unsigned char)(jis >> 8), (unsigned char)jis,
+	0x1b, 0x28, 0x42, /* ASCII */
+    };
+    unsigned char unicode[4];
+    size_t from = sizeof jis_seq;
+    size_t to = sizeof unicode;
+    static Boolean initialized = False;
+    char *from_ptr = (char *)jis_seq;
+    char *to_ptr = (char *)unicode;
+
+    if (m_iconv_jis_ucs4 == (iconv_t)(-1)) {
+	if (initialized)
+	    return 0;
+	initialized = True;
+	m_iconv_jis_ucs4 = iconv_open(
+#ifdef WORDS_BIGENDIAN
+				     "UCS-4BE",
+#else
+				     "UCS-4LE",
+#endif
+				     "ISO-2022-JP");
+	if (m_iconv_jis_ucs4 == (iconv_t)(-1)) {
+	    XDVI_ERROR((stderr, "jis2unicode: iconv_open() failed: %s", strerror(errno)));
+	    return 0;
+	}
+    }
+    if (iconv(m_iconv_jis_ucs4, (iconv_char_pptrT)&from_ptr, &from, &to_ptr, &to) == (size_t)(-1)) {
+	XDVI_ERROR((stderr, "jis2unicode: can't convert JIS to unicode: %s", strerror(errno)));
+	return 0;
+    }
+    memcpy(&u, unicode, sizeof unicode);
+    return u;
+#else /* HAVE_ICONV_H */
+    static Boolean warned = False;
+
+    if (!warned) {
+        popup_message(globals.widgets.top_level,
+                      MSG_WARN, NULL, "This version of xdvi has been compiled without iconv support - "
+                      "cannot convert Kanji character to UTF-8");
+        warned = True;
+    }
+    return 0;
+#endif /* HAVE_ICONV_H */
+}
+#endif /* PTEX */
+
 /* convert a CJK char to unicode (UCS-4) using iconv() */
 static uint32_t
 cjk2unicode(unsigned char *cjk)
@@ -3577,6 +3638,24 @@
     
     TRACE_FIND_VERBOSE((stderr, "guess_encoding: |%s|, char 0x%.4X", fontname, ch));
 
+#ifdef PTEX
+    if (iskanjifont(fontname)) {
+	struct ptexmap *map = getkanjifont(fontname);
+	switch (map->encoding) {
+	case ENC_JIS_H:
+	case ENC_JIS_V:
+	    TRACE_FIND_VERBOSE((stderr, "guess_encoding: Kanji fonts (JIS encoding)"));
+	    return jis2unicode(ch);
+	case ENC_UNICODE_H:
+	case ENC_UNICODE_V:
+	    TRACE_FIND_VERBOSE((stderr, "guess_encoding: Kanji fonts (Unicode encoding)"));
+	    return ch;
+	default:
+	    TRACE_FIND_VERBOSE((stderr, "guess_encoding: Kanji fonts (Unsupported encoding)"));
+	    return '?';
+	}
+    }
+#endif  /* PTEX */
     /* our encoding vectors only have size 256 */
     if (ch > 255) {
 	XDVI_WARNING((stderr, "guess_encoding: font index %lu too large", (unsigned long)ch));
diff -udNr xdvik//font-open.c pxdvik//font-open.c
--- xdvik//font-open.c	2008-07-02 00:42:36.000000000 +0900
+++ pxdvik//font-open.c	2010-07-25 14:56:37.638074508 +0900
@@ -27,6 +27,7 @@
 #include "xdvi-config.h"
 #include "xdvi.h"
 #include "dvi-draw.h"
+#include "ptexmap.h"
 #include "util.h"
 #include "events.h"
 #include "dvi-init.h"
@@ -289,7 +290,7 @@
 #endif
 	  Boolean use_t1lib)
 {
-    char *name;
+    char *name = NULL;
     kpse_glyph_file_type file_ret;
 #if DELAYED_MKTEXPK
     Boolean message_done = False;
@@ -303,15 +304,15 @@
     fontp->filename = NULL;
     *dpi_ret = fontp->fsize;
 
-    if (resource.omega) { /* for omega, first try 16-bit ovf's, then 8-bit vf's. */
-	name = kpse_find_ovf(fontp->fontname);
-	if (name == NULL)
-	    name = kpse_find_vf(fontp->fontname);
-    }
-    else {
-	name = kpse_find_vf(fontp->fontname);
-    }
-    
+#ifdef PTEX
+     /* for kanji, first try jfm's, then 8-bit vf's (not 16bit ovf's). */
+    if (iskanjifont(fontp->fontname)) name = kpse_find_tfm(fontp->fontname);
+    else
+#endif /* PTEX */
+     /* for omega, first try 16-bit ovf's, then 8-bit vf's. */
+    if (resource.omega) name = kpse_find_ovf(fontp->fontname);
+    if (name == NULL)   name = kpse_find_vf(fontp->fontname);
+
 #ifdef T1LIB
     if (resource.t1lib) {
 	*t1id = -1;
diff -udNr xdvik//fontconfig.c pxdvik//fontconfig.c
--- xdvik//fontconfig.c	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//fontconfig.c	2010-07-25 14:56:37.638074508 +0900
@@ -0,0 +1,92 @@
+#include "xdvi-config.h"
+#include "xdvi.h"
+#include <stdio.h>
+#include "util.h"
+#include "string-utils.h"
+
+#ifdef	PTEX
+#include "kpathsea/tex-file.h"
+
+#if	HAVE_FONTCONFIG
+#include <fontconfig/fontconfig.h>
+
+char *fc_match(char *name)
+{
+    FcFontSet   *fs;
+    FcPattern   *pat;
+    FcResult    result;
+    FcPattern   *match;
+    char        *ret = NULL;
+    static int inited = false;
+
+    if (!inited) {
+        if (FcInit() == 0) {
+            XDVI_WARNING((stderr, "fontconfig: Can't init library.\n"));
+            return NULL;
+        }
+        inited = true;
+    }
+
+    pat = FcNameParse((FcChar8 *)name);
+    FcConfigSubstitute(0, pat, FcMatchPattern);
+    FcDefaultSubstitute(pat);
+    fs = FcFontSetCreate();
+    match = FcFontMatch(0, pat, &result);
+    if (match != NULL) FcFontSetAdd(fs, match);
+    if (pat != NULL) FcPatternDestroy(pat);
+
+    if (fs != NULL) {
+        if (fs->nfont > 0) {
+            FcChar8   *file;
+            if (FcPatternGetString(fs->fonts[0], FC_FILE, 0, &file)
+                == FcResultMatch) {
+                ret = strdup(file);
+            }
+        }
+        FcFontSetDestroy(fs);
+    }
+    if (kpathsea_debug) {
+        fprintf(stderr, "fontconfig:fc_match(%s) => %s\n", name, ret);
+    }
+    return ret;
+}
+
+char *fc_convert(char *name) {
+    char *tmp, *s;
+
+    if (str_is_suffix(".otf", name, false)) return NULL;
+    if (str_is_suffix(".ttf", name, false)) return NULL;
+    if (str_is_suffix(".ttc", name, false)) return NULL;
+    tmp = strdup(name);
+    s = strstr(tmp, "-Light");   if (s != NULL) *s = '\0';
+    s = strstr(tmp, "-Medium");  if (s != NULL) *s = '\0';
+    s = strstr(tmp, "-Regular"); if (s != NULL) *s = '\0';
+    s = fc_match(tmp);
+    free(tmp);
+    return s;
+}
+#endif	/* HAVE_FONTCONFIG */
+
+
+const char *get_ptex_font_pathname(char *name)
+{
+    char *s = NULL;
+    FILE *fp;
+
+    if ((fp=XFOPEN(name, "r")) != NULL) {
+	fclose(fp);
+	s = name;
+    }
+
+    if (s == NULL) s = kpse_find_file(name, kpse_opentype_format, true);
+    if (s == NULL) s = kpse_find_file(name, kpse_truetype_format, true);
+    if (s == NULL) s = kpse_find_file(name, kpse_miscfonts_format, true);
+    if (s == NULL) s = kpse_find_file(name, kpse_program_text_format, true);
+#if	HAVE_FONTCONFIG
+    if (s == NULL) s = fc_convert(name);
+#endif	/* HAVE_FONTCONFIG */
+    if (s == NULL) s = name;
+    return s;
+}
+
+#endif	/* PTEX */
diff -udNr xdvik//fontconfig.h pxdvik//fontconfig.h
--- xdvik//fontconfig.h	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//fontconfig.h	2010-07-25 14:56:37.638074508 +0900
@@ -0,0 +1,6 @@
+
+#ifdef	PTEX
+
+char *get_ptex_font_pathname(char *name);
+
+#endif /* PTEX */
diff -udNr xdvik//ft2.c pxdvik//ft2.c
--- xdvik//ft2.c	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//ft2.c	2010-07-25 14:56:37.638074508 +0900
@@ -0,0 +1,249 @@
+#include "xdvi-config.h"
+#include "xdvi.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef	PTEX
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_SYNTHESIS_H
+
+#include "kpathsea/tex-file.h"
+#include "ft2.h"
+#include "dvi-init.h"
+#include "util.h"
+#include "ptexmap.h"
+#include "ft2vert.h"
+#include "fontconfig.h"
+#include "jisx0208.h"
+
+static struct jisv_st {
+    int low, hi;
+} jisv[] = {
+    /* converted from CMap 'V' */
+    /* sed -e '/^</!d' -e 's|<\(....\)> <\(....\)>.*|  { 0x\1, 0x\2 },|' < V */
+    { 0x2122, 0x2123 },
+    { 0x2131, 0x2132 },
+    { 0x213c, 0x213e },
+    { 0x2141, 0x2145 },
+    { 0x214a, 0x215b },
+    { 0x2161, 0x2161 },
+    { 0x2421, 0x2421 },
+    { 0x2423, 0x2423 },
+    { 0x2425, 0x2425 },
+    { 0x2427, 0x2427 },
+    { 0x2429, 0x2429 },
+    { 0x2443, 0x2443 },
+    { 0x2463, 0x2463 },
+    { 0x2465, 0x2465 },
+    { 0x2467, 0x2467 },
+    { 0x246e, 0x246e },
+    { 0x2521, 0x2521 },
+    { 0x2523, 0x2523 },
+    { 0x2525, 0x2525 },
+    { 0x2527, 0x2527 },
+    { 0x2529, 0x2529 },
+    { 0x2543, 0x2543 },
+    { 0x2563, 0x2563 },
+    { 0x2565, 0x2565 },
+    { 0x2567, 0x2567 },
+    { 0x256e, 0x256e },
+    { 0x2575, 0x2576 },
+};
+
+Boolean is_jis_vertical(int jis)
+{
+    size_t i;
+
+    for (i=0; i<sizeof(jisv)/sizeof(*jisv); i++) {
+	if (jisv[i].low <= jis && jis <= jisv[i].hi) return True;
+    }
+    return False;
+}
+
+static FT_Library  library = NULL;
+
+static int ft_fonts_num = 0;
+static int ft_fonts_max = 0;
+static struct ft_font {
+    FT_Face face;
+    short   height;
+    short   width;
+    short   ascend;
+    int     encoding;
+    Boolean bold;
+    struct ft2vert_st *ft2vert;
+} *ft_fonts;
+
+static void ft2_init(void)
+{
+    int ft_error = FT_Init_FreeType( &library );
+    if (ft_error != 0) {
+	XDVI_WARNING(( stderr, "FreeType2: Initialization error.\n" ));
+	exit(100);
+    }
+}
+
+int ft2_open_font(struct ptexmap *map)
+{
+    int ft_error;
+    char *fontpath = get_ptex_font_pathname(map->font_filename);
+    struct ft_font *font;
+
+    if (library == NULL) ft2_init();
+    if (map->ft2_index >= 0) {  /* already opened */
+	return map->ft2_index;
+    }
+
+    if (ft_fonts_num == ft_fonts_max) {
+	if (ft_fonts_max == 0) ft_fonts_max = 8;
+	else                   ft_fonts_max *= 2;
+	ft_fonts = xrealloc(ft_fonts, sizeof(ft_fonts[0]) * ft_fonts_max);
+    }
+    font = &ft_fonts[ft_fonts_num];
+
+    memset(font, 0, sizeof(*font));
+    ft_error = FT_New_Face(library, fontpath, map->face_index, &font->face);
+    free(fontpath);
+    if (ft_error != 0) {
+	XDVI_WARNING(( stderr, "FreeType2: Open Font Error (%s).  "
+		       "Error code = %d \n", fontpath, ft_error ));
+    } else {
+	font->encoding = map->encoding;
+	if (map->encoding == ENC_JIS_V || map->encoding == ENC_UNICODE_V) {
+	    font->ft2vert = ft2vert_init(font->face);
+	}
+	font->bold = (map->variant & VAR_BOLD);
+	if (map->variant & VAR_ITALIC) map->slant = 0.3;
+	if (map->extend != 1.0 || map->slant != 0.0) {
+	    /* for debug (attention upper if condition) */
+	    /* FT_Vector vector = { 30 * (1<<6), -30 * (1<<6) }; */
+
+	    /* t1_modify_fm() in tetex-src-3.0/texk/dvipsk/writet1.c */
+	    FT_Matrix matrix;
+	    matrix.xx = (int)(map->extend * (1<<16));
+	    matrix.xy = (int)(map->extend * map->slant * (1<<16));
+	    matrix.yx = 0;
+	    matrix.yy = 1<<16;
+	    FT_Set_Transform( font->face, &matrix, 0 );
+	    /* TODO: vertical font */
+	}
+    }
+    return (map->ft2_index = ft_fonts_num++);
+}
+
+static FT_UInt glyph_index(const int char_code, struct ft_font *font)
+{
+    FT_UInt i = char_code;  /* JIS or UNICODE or GID */
+
+    if (font->encoding == ENC_JIS_H || font->encoding == ENC_JIS_V) {
+	i = jis2uni(i);
+    }
+    if (font->encoding != ENC_IDENTITY) { /* unicode -> gid */
+	i = FT_Get_Char_Index(font->face, i);
+    }
+    if ((font->encoding == ENC_JIS_V && is_jis_vertical(char_code)) ||
+	font->encoding == ENC_UNICODE_V) {
+	i = ft2vert_get_gid(font->ft2vert, i);
+    }
+    return i;
+}
+
+static void glyph_to_bitmap(struct bitmap *bm, FT_GlyphSlot g, int ascend)
+{
+    int x, xmax, xshift;
+    int y, ymax, yoffset;
+    unsigned char *src, *dst;
+
+    dst  = bm->bits;
+    src  = g->bitmap.buffer;
+    xmax = g->bitmap.pitch;
+    ymax = g->bitmap.rows;
+
+    if ( g->bitmap_left >= 0 ) {  /* to right */
+	if ( g->bitmap_left % 8 != 0 ) xmax++;
+	if ( xmax > bm->bytes_wide - g->bitmap_left/8 ) {
+	    xmax = bm->bytes_wide - g->bitmap_left/8;
+	}
+	dst   += g->bitmap_left / 8;
+	xshift = g->bitmap_left % 8;
+    } else { /* to left */
+	xmax  -=   (-g->bitmap_left) / 8;
+	src   +=   (-g->bitmap_left) / 8;
+	xshift = -((-g->bitmap_left) % 8);
+	if ( xmax > bm->bytes_wide ) xmax = bm->bytes_wide;
+    } /* We love plus % plus, we hate minus % plus. */
+    assert( xmax <= bm->bytes_wide );
+
+    yoffset = ascend - g->bitmap_top;
+    if ( yoffset >= 0 ) { /* to down */
+	dst += yoffset * bm->bytes_wide;
+	if (ymax > bm->h - yoffset) ymax = bm->h - yoffset;
+    } else { /* to up */
+	src  += (-yoffset) * g->bitmap.pitch;
+	ymax -= (-yoffset);
+	if ( ymax > bm->h ) ymax = bm->h;
+    }
+
+    if ( xmax<=0 || ymax<=0 ) return;
+    for ( y=0; y<ymax; y++ ) {
+	if ( xshift == 0 ) {
+	    for ( x=0; x<xmax; x++ ) *dst++ = *src++;
+	} else if ( xshift > 0 ) {
+	    for ( x=0; x<xmax-1; x++ ) {
+		*dst++ |= *src   >> xshift;
+		*dst   |= *src++ << (8 - xshift);
+	    }
+	    dst++; src++;
+	} else {
+	    for ( x=0; x<xmax-1; x++ ) {
+		*dst   |= *src++ << -xshift;
+		*dst++ |= *src   >> (8 + xshift);
+	    }
+	    *dst++ |= *src++ << -xshift;
+	}
+	src += g->bitmap.pitch - xmax;
+	dst += bm->bytes_wide  - xmax;
+    }
+    dst -= bm->bytes_wide - xmax;
+    /* fprintf(stderr, "dst-bm->bits=%d, ", (char*)dst-(char*)bm->bits); */
+    /* fprintf(stderr, "size=%d\n", bm->bytes_wide * bm->h); */
+    assert((char*)dst <= (char*)bm->bits + bm->bytes_wide * bm->h);
+}
+
+int ft2_get_bitmap(int char_code, int ft2_index, struct bitmap *bm)
+{
+    struct ft_font *font = &ft_fonts[ft2_index];
+    FT_Face face = font->face;
+
+    clear_bitmap(bm);
+    if (face == NULL) return 0;
+
+    if ( font->width != bm->w || font->height != bm->h ) {
+	FT_Set_Pixel_Sizes( face, bm->w, bm->h );
+	font->width  = bm->w;
+	font->height = bm->h;
+	font->ascend =
+	    bm->h * face->ascender
+	    /  (face->ascender - face->descender);
+    }
+
+    if ( FT_Load_Glyph( face, glyph_index(char_code,font), FT_LOAD_DEFAULT )
+	 != 0 ) {
+	XDVI_WARNING(( stderr, "FreeType2: Failed in load glyph. "
+		       "(char=0x%X)\n", char_code ));
+	fill_bitmap(bm);
+	return 0;
+    }
+    if ( font->bold ) FT_GlyphSlot_Embolden( face->glyph );
+    if ( FT_Render_Glyph( face->glyph, FT_RENDER_MODE_MONO ) != 0 ) {
+	XDVI_WARNING(( stderr, "FreeType2: Failed in render glyph. "
+		       "(char=0x%X)\n", char_code ));
+	fill_bitmap(bm);
+	return 0;
+    }
+    glyph_to_bitmap( bm, face->glyph, font->ascend );
+    return font->ascend;
+}
+
+#endif	/* PTEX */
diff -udNr xdvik//ft2.h pxdvik//ft2.h
--- xdvik//ft2.h	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//ft2.h	2010-07-25 14:56:37.638074508 +0900
@@ -0,0 +1,6 @@
+
+struct ptexmap;	/* forward declaration */
+struct bitmap;	/* forward declaration */
+
+int ft2_open_font(struct ptexmap *map);
+int ft2_get_bitmap(int char_code, int ft2_index, struct bitmap *bm);
diff -udNr xdvik//ft2vert.c pxdvik//ft2vert.c
--- xdvik//ft2vert.c	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//ft2vert.c	2010-07-25 14:56:37.638074508 +0900
@@ -0,0 +1,399 @@
+/*
+ * "ft2vert.c"
+ * 
+ * Converter to vertical glyph ID by handling GSUB vrt2/vert feature
+ * requires FreeType-2.1.10 or latter
+ *
+ * (C) 2005 Nobuyuki TSUCHIMURA
+ *
+ * This file is free
+ * software; you can redistribute it and/or modify it under the terms of
+ * the GNU Library General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  This library is distributed in the hope
+ * that it will be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.  See the GNU Library General Public License for more details.
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * using such Lookup
+ *   ScriptTag == 'kana'
+ *   DefaultLangSys or LangSysTag == 'JAN '
+ *   FeatureTag == 'vrt2' or 'vert'
+ *
+ * [reference]
+ * http://partners.adobe.com/public/developer/opentype/index_table_formats1.html
+ * http://partners.adobe.com/public/developer/opentype/index_table_formats.html
+ * http://partners.adobe.com/public/developer/opentype/index_tag9.html#vrt2
+ */
+
+#include "xdvi-config.h"
+#include "xdvi.h"
+#ifdef	PTEX
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_OPENTYPE_VALIDATE_H
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "ft2vert.h"
+
+#define TAG_KANA FT_MAKE_TAG('k', 'a', 'n', 'a')
+#define TAG_JAN  FT_MAKE_TAG('J', 'A', 'N', ' ')
+#define TAG_VERT FT_MAKE_TAG('v', 'e', 'r', 't')
+#define TAG_VRT2 FT_MAKE_TAG('v', 'r', 't', '2')
+
+#define MALLOC(ptr, size) ptr = xmalloc(sizeof((ptr)[0]) * (size))
+#define BYTE2(p) ((p) += 2, (int)(p)[-2] << 8  | (p)[-1])
+#define BYTE4(p) ((p) += 4, (int)(p)[-4] << 24 | (int)(p)[-3] << 16 | \
+		  (int)(p)[-2] << 8 | (p)[-1])
+
+struct ft2vert_st {
+    int SubTableCount;
+    struct SubTable_st {
+	struct SingleSubst_st {
+	    FT_UInt SubstFormat;
+	    FT_UInt DeltaGlyphID; /* SubstFormat == 1 */
+	    int     GlyphCount;   /* SubstFormat == 2 */
+	    FT_UInt *Substitute;  /* SubstFormat == 2 */
+	} SingleSubst;
+	struct Coverage_st {
+	    FT_UInt CoverageFormat;
+	    int     GlyphCount;   /* CoverageFormat == 1 */
+	    FT_UInt *GlyphArray;  /* CoverageFormat == 1 */
+	    int     RangeCount;   /* CoverageFormat == 2 */
+	    struct  RangeRecord_st
+		   *RangeRecord;  /* CoverageFormat == 2 */
+	} Coverage;
+    } *SubTable;
+    FT_Bytes kanaFeature;
+    FT_Bytes vertLookup;
+    FT_Bytes vrt2Lookup;
+};
+
+struct RangeRecord_st {
+    FT_UInt Start;
+    FT_UInt End;
+};
+
+
+int isInIndex(FT_Bytes s, int index) {
+    int i, count;
+
+    if (s == NULL) return FALSE;
+    count = BYTE2(s);
+    for (i=0; i<count; i++) {
+	if (index == BYTE2(s)) return TRUE;
+    }
+    return FALSE;
+}
+
+
+/**********  Debug ***************/
+
+#ifdef DEBUG
+static FT_Bytes gsub_top;
+
+void print_offset(char *message, const FT_Bytes ptr) {
+    printf("%s offset = %x\n", message, ptr - gsub_top);
+}
+
+char *tag_to_string(FT_Tag tag) {
+    static char str[5];
+    str[0] = tag >> 24;
+    str[1] = tag >> 16;
+    str[2] = tag >> 8;
+    str[3] = tag;
+    return str;
+}
+
+void hex_dump(const FT_Bytes top) {
+    int i, j;
+    FT_Bytes s = top;
+
+    for (j=0; j<100; j++) {
+	printf("%04x : ", j*8);
+	for (i=0; i<8; i++) {
+	    printf("%02x ", s[i+j*8]);
+	}
+	printf("\n");
+    }
+}
+#endif /* DEBUG */
+
+/**********  Lookup part ***************/
+
+void scan_Coverage(struct ft2vert_st *ret, const FT_Bytes top) {
+    int i;
+    FT_Bytes s = top;
+    struct Coverage_st *t;
+
+    t = &ret->SubTable[ret->SubTableCount].Coverage;
+    t->CoverageFormat = BYTE2(s);
+    switch (t->CoverageFormat) {
+    case 1: 
+	t->GlyphCount = BYTE2(s);
+	MALLOC(t->GlyphArray, t->GlyphCount);
+	for (i=0; i<t->GlyphCount; i++) {
+	    t->GlyphArray[i] = BYTE2(s);
+	}
+	break;
+    case 2:
+	t->RangeCount = BYTE2(s);
+	MALLOC(t->RangeRecord, t->RangeCount);
+	for (i=0; i<t->RangeCount; i++) {
+	    t->RangeRecord[i].Start = BYTE2(s);
+	    t->RangeRecord[i].End   = BYTE2(s);
+	    s += 2; /* drop StartCoverageIndex */
+	}
+	break;
+    default:
+	fprintf(stderr, "scan_Coverage: unknown CoverageFormat (%d).",
+		t->CoverageFormat);
+	exit(1);
+    }
+    ret->SubTableCount++;
+}
+
+void scan_SubTable(struct ft2vert_st *ret, const FT_Bytes top) {
+    int i;
+    FT_Bytes s = top;
+    FT_Offset Coverage;
+    struct SingleSubst_st *t;
+
+    t = &ret->SubTable[ret->SubTableCount].SingleSubst;
+    t->SubstFormat = BYTE2(s);
+    Coverage       = BYTE2(s);
+    scan_Coverage(ret, top + Coverage);
+    switch (t->SubstFormat) {
+    case 1: /* SingleSubstFormat1 */
+	t->DeltaGlyphID = BYTE2(s);
+	break;
+    case 2: /* SingleSubstFormat2 */
+	t->GlyphCount   = BYTE2(s);
+	MALLOC(t->Substitute, t->GlyphCount);
+	for (i=0; i<t->GlyphCount; i++) {
+	    t->Substitute[i] = BYTE2(s);
+	}
+	break;
+    default:
+	fprintf(stderr, "scan_SubTable: unknown SubstFormat (%d).",
+		t->SubstFormat);
+	exit(1);
+    }
+}
+
+void scan_Lookup(struct ft2vert_st *ret, const FT_Bytes top) {
+    int i;
+    FT_Bytes s = top;
+    FT_UShort LookupType;
+    FT_UShort LookupFlag;
+    FT_UShort SubTableCount;
+    FT_UShort SubTable;
+
+    LookupType    = BYTE2(s);
+    LookupFlag    = BYTE2(s);
+    SubTableCount = BYTE2(s);
+    SubTable      = BYTE2(s);
+
+    MALLOC(ret->SubTable, SubTableCount);
+    for (i=0; i<SubTableCount; i++) {
+	scan_SubTable(ret, top + SubTable);
+    }
+    if (ret->SubTableCount != SubTableCount) {
+	fprintf(stderr, "warning (scan_Lookup): "
+		"SubTableCount (=%d) is not expected (=%d).\n",
+		ret->SubTableCount, SubTableCount);
+    }
+}
+
+
+void scan_LookupList(struct ft2vert_st *ret, const FT_Bytes top) {
+    int i;
+    FT_Bytes s = top;
+    int LookupCount;
+
+    LookupCount = BYTE2(s);
+
+    for (i=0; i<LookupCount; i++) {
+	FT_Bytes t = top + BYTE2(s);
+	if (isInIndex(ret->vertLookup, i)) {
+	    scan_Lookup(ret, t);
+	}
+    }
+}
+
+/********** Feature part ****************/
+
+void scan_FeatureList(struct ft2vert_st *ret, const FT_Bytes top) {
+    int i;
+    FT_Bytes s = top;
+    int FeatureCount;
+
+    FeatureCount = BYTE2(s);
+
+    for (i=0; i<FeatureCount; i++) {
+	FT_Tag FeatureTag = BYTE4(s);
+	FT_Offset Feature = BYTE2(s);
+	if (!isInIndex(ret->kanaFeature, i)) continue;
+	if (FeatureTag == TAG_VERT) {
+	    ret->vertLookup = top + Feature + 2;
+	} else if (FeatureTag == TAG_VRT2) {
+	    ret->vrt2Lookup = top + Feature + 2;
+	}
+    }
+}
+
+/********** Script part ****************/
+
+void scan_LangSys(struct ft2vert_st *ret, const FT_Bytes top) {
+    if (ret->kanaFeature == NULL) ret->kanaFeature = top + 4;
+}
+
+void scan_Script(struct ft2vert_st *ret, const FT_Bytes top) {
+    int i;
+    FT_Bytes s = top;
+    FT_Offset DefaultLangSys;
+    int LangSysCount;
+
+    DefaultLangSys = BYTE2(s);
+    if (DefaultLangSys != 0) {
+	scan_LangSys(ret, top + DefaultLangSys);
+    }
+    LangSysCount = BYTE2(s);
+
+    for (i=0; i<LangSysCount; i++) {
+	FT_Tag LangSysTag = BYTE4(s);
+	FT_Bytes t = top + BYTE2(s);
+	if (LangSysTag == TAG_JAN) {
+	    scan_LangSys(ret, t);
+	}
+    }
+}
+
+void scan_ScriptList(struct ft2vert_st *ret, const FT_Bytes top) {
+    int i;
+    FT_Bytes s = top;
+    int ScriptCount;
+
+    ScriptCount = BYTE2(s);
+
+    for (i=0; i<ScriptCount; i++) {
+	FT_Tag ScriptTag = BYTE4(s);
+	FT_Bytes t = top + BYTE2(s);
+	if (ScriptTag == TAG_KANA) {
+	    scan_Script(ret, t);
+	}
+    }
+}
+
+/********** header part *****************/
+
+void scan_GSUB_Header(struct ft2vert_st *ret, const FT_Bytes top) {
+    FT_Bytes s = top;
+    FT_Fixed  Version;
+    FT_Offset ScriptList;
+    FT_Offset FeatureList;
+    FT_Offset LookupList;
+
+#ifdef DEBUG
+    gsub_top    = top;
+#endif /* DEBUG */
+    Version     = BYTE4(s);
+    ScriptList  = BYTE2(s);
+    FeatureList = BYTE2(s);
+    LookupList  = BYTE2(s);
+
+    if (Version != 0x00010000) {
+	fprintf(stderr, "warning: GSUB Version (=%.1f) is not 1.0\n",
+		(double)Version / 0x10000);
+    }
+
+    scan_ScriptList (ret, top + ScriptList);
+    scan_FeatureList(ret, top + FeatureList);
+    /* vrt2 has higher priority over vert */
+    if (ret->vrt2Lookup != NULL) ret->vertLookup = ret->vrt2Lookup;
+    scan_LookupList (ret, top + LookupList);
+}
+
+struct ft2vert_st *ft2vert_init(FT_Face face) {
+    struct ft2vert_st *ret;
+    int ft_error;
+    FT_Bytes dummy, GSUB_table;
+
+    MALLOC(ret, 1);
+    ret->SubTableCount = 0;
+    ret->vertLookup  = NULL;
+    ret->vrt2Lookup  = NULL;
+    ret->kanaFeature = NULL;
+    ft_error =
+	FT_OpenType_Validate( face, FT_VALIDATE_GSUB,
+			      &dummy, &dummy, &dummy, &GSUB_table, &dummy);
+    if (ft_error == FT_Err_Unimplemented_Feature) {
+        fprintf(stderr, "warning: FT_OpenType_Validate is disabled. "
+                "Replace FreeType2 with otvalid-enabled version.\n");
+        return ret;
+    } else if (ft_error != 0 || GSUB_table == 0) {
+	fprintf(stderr, "warning: %s has no GSUB table.\n",
+		face->family_name);
+	return ret;
+    }
+    scan_GSUB_Header(ret, GSUB_table);
+    if (ret->SubTableCount == 0) {
+	fprintf(stderr, "warning: %s has no vrt2/vert feature.\n",
+		face->family_name);
+    }
+    free((void*)GSUB_table);
+    return ret;
+}
+
+/********** converting part *****************/
+
+static FT_UInt get_vert_nth_gid(struct SubTable_st *t, FT_UInt gid, int n) {
+    switch (t->SingleSubst.SubstFormat) {
+    case 1:
+	return gid + t->SingleSubst.DeltaGlyphID;
+    case 2:
+	return t->SingleSubst.Substitute[n];
+    }
+    fprintf(stderr, "get_vert_nth_gid: internal error");
+    exit(1);
+    return 0;
+}
+
+
+FT_UInt ft2vert_get_gid(struct ft2vert_st *ft2vert, FT_UInt gid) {
+    int i, k;
+    int j = 0; /* StartCoverageIndex */
+
+    for (k=0; k<ft2vert->SubTableCount; k++) {
+	struct SubTable_st *t = &ft2vert->SubTable[k];
+	switch (t->Coverage.CoverageFormat) {
+	case 1:
+	    for (i=0; i<t->Coverage.GlyphCount; i++) {
+		if (t->Coverage.GlyphArray[i] == gid) {
+		    return get_vert_nth_gid(t, gid, i);
+		}
+	    }
+	    break;
+	case 2:
+	    for (i=0; i<t->Coverage.RangeCount; i++) {
+		struct RangeRecord_st *r = &t->Coverage.RangeRecord[i];
+		if (r->Start <= gid && gid <= r->End) {
+		    return get_vert_nth_gid(t, gid, gid - r->Start + j);
+		}
+		j += r->End - r->Start + 1;
+	    }
+	    break;
+	default:
+	    fprintf(stderr, "ft2vert_get_gid: internal error");
+	    exit(1);
+	}
+    }
+    return gid;
+}
+
+#endif	/* PTEX */
diff -udNr xdvik//ft2vert.h pxdvik//ft2vert.h
--- xdvik//ft2vert.h	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//ft2vert.h	2010-07-25 14:56:37.638074508 +0900
@@ -0,0 +1,7 @@
+
+/* store GSUB feature vert/vrt2 */
+struct ft2vert_st *ft2vert_init(FT_Face face);
+
+/* convert horizontal glyph index to vertical glyph index
+ */
+FT_UInt ft2vert_get_gid(struct ft2vert_st *ft2vert, FT_UInt gid);
diff -udNr xdvik//gui/help-window.c pxdvik//gui/help-window.c
--- xdvik//gui/help-window.c	2009-06-29 08:47:26.000000000 +0900
+++ pxdvik//gui/help-window.c	2010-07-25 14:56:37.638074508 +0900
@@ -307,6 +307,9 @@
 #ifdef T1LIB
 	"- T1lib (direct rendering of PS fonts) enabled\n",
 #endif
+#ifdef PTEX
+	"- FreeType2 (Kanji font rendering) enabled\n",
+#endif /* PTEX */
 #if HAVE_ICONV_H
 	"- Iconv support compiled in\n",
 #if USE_LANGINFO
diff -udNr xdvik//jfm.c pxdvik//jfm.c
--- xdvik//jfm.c	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//jfm.c	2010-07-25 14:56:37.638074508 +0900
@@ -0,0 +1,94 @@
+#include "xdvi-config.h"
+#include "xdvi.h"
+#ifdef	PTEX
+
+#include "jfm.h"
+#include "util.h"
+
+#ifndef	SEEK_SET
+#define	SEEK_SET	0
+#endif
+
+/**** read_jfm0: borrowed from jxdvi-NEWS ****/
+static int read_jfm0(FILE *fp, struct jfm *j)
+{
+	int i;
+
+	fseek(fp, 0L, SEEK_SET);
+
+	/* read jfm table field. */
+	for (i = 0; i <= J_NP; i++)
+	    j->table[i] = (short) get_bytes(fp, 2);
+
+	/* read jfm header */
+	j->check_sum = get_bytes(fp, 4);
+	j->design_size = get_bytes(fp, 4);
+	fseek(fp, (long) (4 * (j->table[J_LH] - 2)), 1);
+    
+	/* read jfm char_type */
+	j->type = xmalloc(sizeof(struct jfm_char_type) * j->table[J_NT]);
+	for (i=0; i < j->table[J_NT]; i++) {
+	    j->type[i].code = (short) get_bytes(fp, 2);
+	    j->type[i].index = (short) get_bytes(fp, 2);
+	}
+    
+	/* read jfm char_info */
+	j->info = xmalloc(sizeof(struct jfm_char_info) * (j->table[J_EC] + 1));
+	for (i = 0; i <= j->table[J_EC]; i++) {
+	    j->info[i].width_ix = (unsigned char) get_byte(fp);
+	    j->info[i].height_depth_ix = (unsigned char) get_byte(fp);
+	    j->info[i].italic_ix_tag = (unsigned char) get_byte(fp);
+	    j->info[i].remainder_ix = (unsigned char) get_byte(fp);
+	}
+    
+	/* read jfm width */
+	j->width = xmalloc(sizeof(unsigned long) * j->table[J_NW]);
+	for (i = 0; i < j->table[J_NW]; i++)
+	    j->width[i] = get_bytes(fp, 4);
+
+	/* read jfm height */
+	j->height = xmalloc(sizeof(unsigned long) * j->table[J_NH]);
+	for (i = 0; i < j->table[J_NH]; i++)
+	    j->height[i] = get_bytes(fp, 4);
+
+	/* read jfm depth */
+	j->depth = xmalloc(sizeof(unsigned long) * j->table[J_ND]);
+	for (i = 0; i < j->table[J_ND]; i++)
+	    j->depth[i] = get_bytes(fp, 4);
+
+	/* read jfm italic */
+	j->italic = xmalloc(sizeof(unsigned long) * j->table[J_NI]);
+	for (i = 0; i < j->table[J_NI]; i++)
+	    j->italic[i] = get_bytes(fp, 4);
+	return 0;
+}
+
+static int jfms_max = 0;
+static int jfms_num = 0;
+static struct jfm *jfms = NULL;
+
+struct jfm *read_jfm(FILE *fp, char *fontname)
+{
+	int i;
+	struct jfm *j;
+
+	for (i=0; i<jfms_num; i++) {
+	    if (strcmp(fontname, jfms[i].fontname) == 0) return &jfms[i];
+	}
+
+	if (jfms_num == jfms_max) {
+	    if (jfms_max == 0) jfms_max = 8;
+	    else               jfms_max *= 2;
+	    jfms = xrealloc( jfms, sizeof(jfms[0]) * jfms_max );
+	}
+	j = &jfms[jfms_num];
+
+	if (read_jfm0(fp, j)) {
+	    fprintf(stderr, "Cannot open metric file: %s\n", fontname);
+	    return NULL;
+	}
+	j->fontname = xstrdup(fontname);
+	jfms_num++;
+	return j;
+}
+#endif	/* PTEX */
diff -udNr xdvik//jfm.h pxdvik//jfm.h
--- xdvik//jfm.h	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//jfm.h	2010-07-25 14:56:37.638074508 +0900
@@ -0,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	*fontname;			/* 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(FILE *fp, char *fontname);
diff -udNr xdvik//jisx0208.c pxdvik//jisx0208.c
--- xdvik//jisx0208.c	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//jisx0208.c	2010-07-25 14:56:37.638074508 +0900
@@ -0,0 +1,1199 @@
+/* This file was derived from "src/VF_Ftype.c" in VFlib2-2.25.6
+   by Dr. Kakugawa on 2006/4/19.
+   Fixed one element of table (UnicodeTbl[0][0]) 0x000 -> 0x3000.
+   Confirmed that the table is consistent with Adobe Japan
+   CMap 'H' and 'UniJIS-UCS2-H'.
+   Deleted category 85--92 which is out of JIS X 0208.
+ */
+
+/* This file is part of VFlib
+ *
+ * Copyright (C) 1995-1999 Hirotsugu KAKUGAWA.   All rights reserved.
+ *
+ * This file is part of the VFlib Library.  This library is free
+ * software; you can redistribute it and/or modify it under the terms of
+ * the GNU Library General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  This library is distributed in the hope
+ * that it will be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.  See the GNU Library General Public License for more details.
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "xdvi-config.h"
+#include "xdvi.h"
+#ifdef	PTEX
+#include "jisx0208.h"
+
+#define MAXJIS 84
+
+static unsigned short jis2uni_table[MAXJIS][94] = {
+  { /* category 01 */
+    0x3000, 0x3001, 0x3002, 0xFF0C, 0xFF0E, 0x30FB, 0xFF1A, 0xFF1B,
+    0xFF1F, 0xFF01, 0x309B, 0x309C, 0x00B4, 0xFF40, 0x00A8, 0xFF3E,
+    0xFFE3, 0xFF3F, 0x30FD, 0x30FE, 0x309D, 0x309E, 0x3003, 0x4EDD,
+    0x3005, 0x3006, 0x3007, 0x30FC, 0x2015, 0x2010, 0xFF0F, 0xFF3C,
+    0xFF5E, 0x2225, 0xFF5C, 0x2026, 0x2025, 0x2018, 0x2019, 0x201C,
+    0x201D, 0xFF08, 0xFF09, 0x3014, 0x3015, 0xFF3B, 0xFF3D, 0xFF5B,
+    0xFF5D, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, 0x300D, 0x300E,
+    0x300F, 0x3010, 0x3011, 0xFF0B, 0xFF0D, 0x00B1, 0x00D7, 0x00F7,
+    0xFF1D, 0x2260, 0xFF1C, 0xFF1E, 0x2266, 0x2267, 0x221E, 0x2234,
+    0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFFE5, 0xFF04,
+    0xFFE0, 0xFFE1, 0xFF05, 0xFF03, 0xFF06, 0xFF0A, 0xFF20, 0x00A7,
+    0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7},
+  { /* category 02 */
+    0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x203B,
+    0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, 0x2283, 0x222A,
+    0x2229, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x2227, 0x2228, 0xFFE2, 0x21D2, 0x21D4, 0x2200, 0x2203,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x2220, 0x22A5, 0x2312, 0x2202, 0x2207,
+    0x2261, 0x2252, 0x226A, 0x226B, 0x221A, 0x223D, 0x221D, 0x2235,
+    0x222B, 0x222C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x212B, 0x2030, 0x266F, 0x266D, 0x266A, 0x2020, 0x2021,
+    0x00B6, 0x0000, 0x0000, 0x0000, 0x0000, 0x25EF},
+  { /* category 03 */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF10,
+    0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18,
+    0xFF19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28,
+    0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30,
+    0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38,
+    0xFF39, 0xFF3A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48,
+    0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50,
+    0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58,
+    0xFF59, 0xFF5A, 0x0000, 0x0000, 0x0000, 0x0000},
+  { /* category 04 */
+    0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
+    0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050,
+    0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
+    0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 0x3060,
+    0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+    0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070,
+    0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
+    0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080,
+    0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
+    0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090,
+    0x3091, 0x3092, 0x3093, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
+  { /* category 05 */
+    0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8,
+    0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0,
+    0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8,
+    0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0,
+    0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8,
+    0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0,
+    0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8,
+    0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0,
+    0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8,
+    0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0,
+    0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
+  { /* category 06 */
+    0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+    0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0,
+    0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8,
+    0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0,
+    0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
+  { /* category 07 */
+    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
+    0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E,
+    0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
+    0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E,
+    0x042F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
+    0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E,
+    0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
+    0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E,
+    0x044F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
+  { /* category 08 */
+    0x2500, 0x2502, 0x250C, 0x2510, 0x2518, 0x2514, 0x251C, 0x252C,
+    0x2524, 0x2534, 0x253C, 0x2501, 0x2503, 0x250F, 0x2513, 0x251B,
+    0x2517, 0x2523, 0x2533, 0x252B, 0x253B, 0x254B, 0x2520, 0x252F,
+    0x2528, 0x2537, 0x253F, 0x251D, 0x2530, 0x2525, 0x2538, 0x2542,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
+  { /* category 09 */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
+  { /* category 10 */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
+  { /* category 11 */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
+  { /* category 12 */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
+  { /* category 13 */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
+  { /* category 14 */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
+  { /* category 15 */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
+  { /* category 16 */
+    0x4E9C, 0x5516, 0x5A03, 0x963F, 0x54C0, 0x611B, 0x6328, 0x59F6,
+    0x9022, 0x8475, 0x831C, 0x7A50, 0x60AA, 0x63E1, 0x6E25, 0x65ED,
+    0x8466, 0x82A6, 0x9BF5, 0x6893, 0x5727, 0x65A1, 0x6271, 0x5B9B,
+    0x59D0, 0x867B, 0x98F4, 0x7D62, 0x7DBE, 0x9B8E, 0x6216, 0x7C9F,
+    0x88B7, 0x5B89, 0x5EB5, 0x6309, 0x6697, 0x6848, 0x95C7, 0x978D,
+    0x674F, 0x4EE5, 0x4F0A, 0x4F4D, 0x4F9D, 0x5049, 0x56F2, 0x5937,
+    0x59D4, 0x5A01, 0x5C09, 0x60DF, 0x610F, 0x6170, 0x6613, 0x6905,
+    0x70BA, 0x754F, 0x7570, 0x79FB, 0x7DAD, 0x7DEF, 0x80C3, 0x840E,
+    0x8863, 0x8B02, 0x9055, 0x907A, 0x533B, 0x4E95, 0x4EA5, 0x57DF,
+    0x80B2, 0x90C1, 0x78EF, 0x4E00, 0x58F1, 0x6EA2, 0x9038, 0x7A32,
+    0x8328, 0x828B, 0x9C2F, 0x5141, 0x5370, 0x54BD, 0x54E1, 0x56E0,
+    0x59FB, 0x5F15, 0x98F2, 0x6DEB, 0x80E4, 0x852D},
+  { /* category 17 */
+    0x9662, 0x9670, 0x96A0, 0x97FB, 0x540B, 0x53F3, 0x5B87, 0x70CF,
+    0x7FBD, 0x8FC2, 0x96E8, 0x536F, 0x9D5C, 0x7ABA, 0x4E11, 0x7893,
+    0x81FC, 0x6E26, 0x5618, 0x5504, 0x6B1D, 0x851A, 0x9C3B, 0x59E5,
+    0x53A9, 0x6D66, 0x74DC, 0x958F, 0x5642, 0x4E91, 0x904B, 0x96F2,
+    0x834F, 0x990C, 0x53E1, 0x55B6, 0x5B30, 0x5F71, 0x6620, 0x66F3,
+    0x6804, 0x6C38, 0x6CF3, 0x6D29, 0x745B, 0x76C8, 0x7A4E, 0x9834,
+    0x82F1, 0x885B, 0x8A60, 0x92ED, 0x6DB2, 0x75AB, 0x76CA, 0x99C5,
+    0x60A6, 0x8B01, 0x8D8A, 0x95B2, 0x698E, 0x53AD, 0x5186, 0x5712,
+    0x5830, 0x5944, 0x5BB4, 0x5EF6, 0x6028, 0x63A9, 0x63F4, 0x6CBF,
+    0x6F14, 0x708E, 0x7114, 0x7159, 0x71D5, 0x733F, 0x7E01, 0x8276,
+    0x82D1, 0x8597, 0x9060, 0x925B, 0x9D1B, 0x5869, 0x65BC, 0x6C5A,
+    0x7525, 0x51F9, 0x592E, 0x5965, 0x5F80, 0x5FDC},
+  { /* category 18 */
+    0x62BC, 0x65FA, 0x6A2A, 0x6B27, 0x6BB4, 0x738B, 0x7FC1, 0x8956,
+    0x9D2C, 0x9D0E, 0x9EC4, 0x5CA1, 0x6C96, 0x837B, 0x5104, 0x5C4B,
+    0x61B6, 0x81C6, 0x6876, 0x7261, 0x4E59, 0x4FFA, 0x5378, 0x6069,
+    0x6E29, 0x7A4F, 0x97F3, 0x4E0B, 0x5316, 0x4EEE, 0x4F55, 0x4F3D,
+    0x4FA1, 0x4F73, 0x52A0, 0x53EF, 0x5609, 0x590F, 0x5AC1, 0x5BB6,
+    0x5BE1, 0x79D1, 0x6687, 0x679C, 0x67B6, 0x6B4C, 0x6CB3, 0x706B,
+    0x73C2, 0x798D, 0x79BE, 0x7A3C, 0x7B87, 0x82B1, 0x82DB, 0x8304,
+    0x8377, 0x83EF, 0x83D3, 0x8766, 0x8AB2, 0x5629, 0x8CA8, 0x8FE6,
+    0x904E, 0x971E, 0x868A, 0x4FC4, 0x5CE8, 0x6211, 0x7259, 0x753B,
+    0x81E5, 0x82BD, 0x86FE, 0x8CC0, 0x96C5, 0x9913, 0x99D5, 0x4ECB,
+    0x4F1A, 0x89E3, 0x56DE, 0x584A, 0x58CA, 0x5EFB, 0x5FEB, 0x602A,
+    0x6094, 0x6062, 0x61D0, 0x6212, 0x62D0, 0x6539},
+  { /* category 19 */
+    0x9B41, 0x6666, 0x68B0, 0x6D77, 0x7070, 0x754C, 0x7686, 0x7D75,
+    0x82A5, 0x87F9, 0x958B, 0x968E, 0x8C9D, 0x51F1, 0x52BE, 0x5916,
+    0x54B3, 0x5BB3, 0x5D16, 0x6168, 0x6982, 0x6DAF, 0x788D, 0x84CB,
+    0x8857, 0x8A72, 0x93A7, 0x9AB8, 0x6D6C, 0x99A8, 0x86D9, 0x57A3,
+    0x67FF, 0x86CE, 0x920E, 0x5283, 0x5687, 0x5404, 0x5ED3, 0x62E1,
+    0x64B9, 0x683C, 0x6838, 0x6BBB, 0x7372, 0x78BA, 0x7A6B, 0x899A,
+    0x89D2, 0x8D6B, 0x8F03, 0x90ED, 0x95A3, 0x9694, 0x9769, 0x5B66,
+    0x5CB3, 0x697D, 0x984D, 0x984E, 0x639B, 0x7B20, 0x6A2B, 0x6A7F,
+    0x68B6, 0x9C0D, 0x6F5F, 0x5272, 0x559D, 0x6070, 0x62EC, 0x6D3B,
+    0x6E07, 0x6ED1, 0x845B, 0x8910, 0x8F44, 0x4E14, 0x9C39, 0x53F6,
+    0x691B, 0x6A3A, 0x9784, 0x682A, 0x515C, 0x7AC3, 0x84B2, 0x91DC,
+    0x938C, 0x565B, 0x9D28, 0x6822, 0x8305, 0x8431},
+  { /* category 20 */
+    0x7CA5, 0x5208, 0x82C5, 0x74E6, 0x4E7E, 0x4F83, 0x51A0, 0x5BD2,
+    0x520A, 0x52D8, 0x52E7, 0x5DFB, 0x559A, 0x582A, 0x59E6, 0x5B8C,
+    0x5B98, 0x5BDB, 0x5E72, 0x5E79, 0x60A3, 0x611F, 0x6163, 0x61BE,
+    0x63DB, 0x6562, 0x67D1, 0x6853, 0x68FA, 0x6B3E, 0x6B53, 0x6C57,
+    0x6F22, 0x6F97, 0x6F45, 0x74B0, 0x7518, 0x76E3, 0x770B, 0x7AFF,
+    0x7BA1, 0x7C21, 0x7DE9, 0x7F36, 0x7FF0, 0x809D, 0x8266, 0x839E,
+    0x89B3, 0x8ACC, 0x8CAB, 0x9084, 0x9451, 0x9593, 0x9591, 0x95A2,
+    0x9665, 0x97D3, 0x9928, 0x8218, 0x4E38, 0x542B, 0x5CB8, 0x5DCC,
+    0x73A9, 0x764C, 0x773C, 0x5CA9, 0x7FEB, 0x8D0B, 0x96C1, 0x9811,
+    0x9854, 0x9858, 0x4F01, 0x4F0E, 0x5371, 0x559C, 0x5668, 0x57FA,
+    0x5947, 0x5B09, 0x5BC4, 0x5C90, 0x5E0C, 0x5E7E, 0x5FCC, 0x63EE,
+    0x673A, 0x65D7, 0x65E2, 0x671F, 0x68CB, 0x68C4},
+  { /* category 21 */
+    0x6A5F, 0x5E30, 0x6BC5, 0x6C17, 0x6C7D, 0x757F, 0x7948, 0x5B63,
+    0x7A00, 0x7D00, 0x5FBD, 0x898F, 0x8A18, 0x8CB4, 0x8D77, 0x8ECC,
+    0x8F1D, 0x98E2, 0x9A0E, 0x9B3C, 0x4E80, 0x507D, 0x5100, 0x5993,
+    0x5B9C, 0x622F, 0x6280, 0x64EC, 0x6B3A, 0x72A0, 0x7591, 0x7947,
+    0x7FA9, 0x87FB, 0x8ABC, 0x8B70, 0x63AC, 0x83CA, 0x97A0, 0x5409,
+    0x5403, 0x55AB, 0x6854, 0x6A58, 0x8A70, 0x7827, 0x6775, 0x9ECD,
+    0x5374, 0x5BA2, 0x811A, 0x8650, 0x9006, 0x4E18, 0x4E45, 0x4EC7,
+    0x4F11, 0x53CA, 0x5438, 0x5BAE, 0x5F13, 0x6025, 0x6551, 0x673D,
+    0x6C42, 0x6C72, 0x6CE3, 0x7078, 0x7403, 0x7A76, 0x7AAE, 0x7B08,
+    0x7D1A, 0x7CFE, 0x7D66, 0x65E7, 0x725B, 0x53BB, 0x5C45, 0x5DE8,
+    0x62D2, 0x62E0, 0x6319, 0x6E20, 0x865A, 0x8A31, 0x8DDD, 0x92F8,
+    0x6F01, 0x79A6, 0x9B5A, 0x4EA8, 0x4EAB, 0x4EAC},
+  { /* category 22 */
+    0x4F9B, 0x4FA0, 0x50D1, 0x5147, 0x7AF6, 0x5171, 0x51F6, 0x5354,
+    0x5321, 0x537F, 0x53EB, 0x55AC, 0x5883, 0x5CE1, 0x5F37, 0x5F4A,
+    0x602F, 0x6050, 0x606D, 0x631F, 0x6559, 0x6A4B, 0x6CC1, 0x72C2,
+    0x72ED, 0x77EF, 0x80F8, 0x8105, 0x8208, 0x854E, 0x90F7, 0x93E1,
+    0x97FF, 0x9957, 0x9A5A, 0x4EF0, 0x51DD, 0x5C2D, 0x6681, 0x696D,
+    0x5C40, 0x66F2, 0x6975, 0x7389, 0x6850, 0x7C81, 0x50C5, 0x52E4,
+    0x5747, 0x5DFE, 0x9326, 0x65A4, 0x6B23, 0x6B3D, 0x7434, 0x7981,
+    0x79BD, 0x7B4B, 0x7DCA, 0x82B9, 0x83CC, 0x887F, 0x895F, 0x8B39,
+    0x8FD1, 0x91D1, 0x541F, 0x9280, 0x4E5D, 0x5036, 0x53E5, 0x533A,
+    0x72D7, 0x7396, 0x77E9, 0x82E6, 0x8EAF, 0x99C6, 0x99C8, 0x99D2,
+    0x5177, 0x611A, 0x865E, 0x55B0, 0x7A7A, 0x5076, 0x5BD3, 0x9047,
+    0x9685, 0x4E32, 0x6ADB, 0x91E7, 0x5C51, 0x5C48},
+  { /* category 23 */
+    0x6398, 0x7A9F, 0x6C93, 0x9774, 0x8F61, 0x7AAA, 0x718A, 0x9688,
+    0x7C82, 0x6817, 0x7E70, 0x6851, 0x936C, 0x52F2, 0x541B, 0x85AB,
+    0x8A13, 0x7FA4, 0x8ECD, 0x90E1, 0x5366, 0x8888, 0x7941, 0x4FC2,
+    0x50BE, 0x5211, 0x5144, 0x5553, 0x572D, 0x73EA, 0x578B, 0x5951,
+    0x5F62, 0x5F84, 0x6075, 0x6176, 0x6167, 0x61A9, 0x63B2, 0x643A,
+    0x656C, 0x666F, 0x6842, 0x6E13, 0x7566, 0x7A3D, 0x7CFB, 0x7D4C,
+    0x7D99, 0x7E4B, 0x7F6B, 0x830E, 0x834A, 0x86CD, 0x8A08, 0x8A63,
+    0x8B66, 0x8EFD, 0x981A, 0x9D8F, 0x82B8, 0x8FCE, 0x9BE8, 0x5287,
+    0x621F, 0x6483, 0x6FC0, 0x9699, 0x6841, 0x5091, 0x6B20, 0x6C7A,
+    0x6F54, 0x7A74, 0x7D50, 0x8840, 0x8A23, 0x6708, 0x4EF6, 0x5039,
+    0x5026, 0x5065, 0x517C, 0x5238, 0x5263, 0x55A7, 0x570F, 0x5805,
+    0x5ACC, 0x5EFA, 0x61B2, 0x61F8, 0x62F3, 0x6372},
+  { /* category 24 */
+    0x691C, 0x6A29, 0x727D, 0x72AC, 0x732E, 0x7814, 0x786F, 0x7D79,
+    0x770C, 0x80A9, 0x898B, 0x8B19, 0x8CE2, 0x8ED2, 0x9063, 0x9375,
+    0x967A, 0x9855, 0x9A13, 0x9E78, 0x5143, 0x539F, 0x53B3, 0x5E7B,
+    0x5F26, 0x6E1B, 0x6E90, 0x7384, 0x73FE, 0x7D43, 0x8237, 0x8A00,
+    0x8AFA, 0x9650, 0x4E4E, 0x500B, 0x53E4, 0x547C, 0x56FA, 0x59D1,
+    0x5B64, 0x5DF1, 0x5EAB, 0x5F27, 0x6238, 0x6545, 0x67AF, 0x6E56,
+    0x72D0, 0x7CCA, 0x88B4, 0x80A1, 0x80E1, 0x83F0, 0x864E, 0x8A87,
+    0x8DE8, 0x9237, 0x96C7, 0x9867, 0x9F13, 0x4E94, 0x4E92, 0x4F0D,
+    0x5348, 0x5449, 0x543E, 0x5A2F, 0x5F8C, 0x5FA1, 0x609F, 0x68A7,
+    0x6A8E, 0x745A, 0x7881, 0x8A9E, 0x8AA4, 0x8B77, 0x9190, 0x4E5E,
+    0x9BC9, 0x4EA4, 0x4F7C, 0x4FAF, 0x5019, 0x5016, 0x5149, 0x516C,
+    0x529F, 0x52B9, 0x52FE, 0x539A, 0x53E3, 0x5411},
+  { /* category 25 */
+    0x540E, 0x5589, 0x5751, 0x57A2, 0x597D, 0x5B54, 0x5B5D, 0x5B8F,
+    0x5DE5, 0x5DE7, 0x5DF7, 0x5E78, 0x5E83, 0x5E9A, 0x5EB7, 0x5F18,
+    0x6052, 0x614C, 0x6297, 0x62D8, 0x63A7, 0x653B, 0x6602, 0x6643,
+    0x66F4, 0x676D, 0x6821, 0x6897, 0x69CB, 0x6C5F, 0x6D2A, 0x6D69,
+    0x6E2F, 0x6E9D, 0x7532, 0x7687, 0x786C, 0x7A3F, 0x7CE0, 0x7D05,
+    0x7D18, 0x7D5E, 0x7DB1, 0x8015, 0x8003, 0x80AF, 0x80B1, 0x8154,
+    0x818F, 0x822A, 0x8352, 0x884C, 0x8861, 0x8B1B, 0x8CA2, 0x8CFC,
+    0x90CA, 0x9175, 0x9271, 0x783F, 0x92FC, 0x95A4, 0x964D, 0x9805,
+    0x9999, 0x9AD8, 0x9D3B, 0x525B, 0x52AB, 0x53F7, 0x5408, 0x58D5,
+    0x62F7, 0x6FE0, 0x8C6A, 0x8F5F, 0x9EB9, 0x514B, 0x523B, 0x544A,
+    0x56FD, 0x7A40, 0x9177, 0x9D60, 0x9ED2, 0x7344, 0x6F09, 0x8170,
+    0x7511, 0x5FFD, 0x60DA, 0x9AA8, 0x72DB, 0x8FBC},
+  { /* category 26 */
+    0x6B64, 0x9803, 0x4ECA, 0x56F0, 0x5764, 0x58BE, 0x5A5A, 0x6068,
+    0x61C7, 0x660F, 0x6606, 0x6839, 0x68B1, 0x6DF7, 0x75D5, 0x7D3A,
+    0x826E, 0x9B42, 0x4E9B, 0x4F50, 0x53C9, 0x5506, 0x5D6F, 0x5DE6,
+    0x5DEE, 0x67FB, 0x6C99, 0x7473, 0x7802, 0x8A50, 0x9396, 0x88DF,
+    0x5750, 0x5EA7, 0x632B, 0x50B5, 0x50AC, 0x518D, 0x6700, 0x54C9,
+    0x585E, 0x59BB, 0x5BB0, 0x5F69, 0x624D, 0x63A1, 0x683D, 0x6B73,
+    0x6E08, 0x707D, 0x91C7, 0x7280, 0x7815, 0x7826, 0x796D, 0x658E,
+    0x7D30, 0x83DC, 0x88C1, 0x8F09, 0x969B, 0x5264, 0x5728, 0x6750,
+    0x7F6A, 0x8CA1, 0x51B4, 0x5742, 0x962A, 0x583A, 0x698A, 0x80B4,
+    0x54B2, 0x5D0E, 0x57FC, 0x7895, 0x9DFA, 0x4F5C, 0x524A, 0x548B,
+    0x643E, 0x6628, 0x6714, 0x67F5, 0x7A84, 0x7B56, 0x7D22, 0x932F,
+    0x685C, 0x9BAD, 0x7B39, 0x5319, 0x518A, 0x5237},
+  { /* category 27 */
+    0x5BDF, 0x62F6, 0x64AE, 0x64E6, 0x672D, 0x6BBA, 0x85A9, 0x96D1,
+    0x7690, 0x9BD6, 0x634C, 0x9306, 0x9BAB, 0x76BF, 0x6652, 0x4E09,
+    0x5098, 0x53C2, 0x5C71, 0x60E8, 0x6492, 0x6563, 0x685F, 0x71E6,
+    0x73CA, 0x7523, 0x7B97, 0x7E82, 0x8695, 0x8B83, 0x8CDB, 0x9178,
+    0x9910, 0x65AC, 0x66AB, 0x6B8B, 0x4ED5, 0x4ED4, 0x4F3A, 0x4F7F,
+    0x523A, 0x53F8, 0x53F2, 0x55E3, 0x56DB, 0x58EB, 0x59CB, 0x59C9,
+    0x59FF, 0x5B50, 0x5C4D, 0x5E02, 0x5E2B, 0x5FD7, 0x601D, 0x6307,
+    0x652F, 0x5B5C, 0x65AF, 0x65BD, 0x65E8, 0x679D, 0x6B62, 0x6B7B,
+    0x6C0F, 0x7345, 0x7949, 0x79C1, 0x7CF8, 0x7D19, 0x7D2B, 0x80A2,
+    0x8102, 0x81F3, 0x8996, 0x8A5E, 0x8A69, 0x8A66, 0x8A8C, 0x8AEE,
+    0x8CC7, 0x8CDC, 0x96CC, 0x98FC, 0x6B6F, 0x4E8B, 0x4F3C, 0x4F8D,
+    0x5150, 0x5B57, 0x5BFA, 0x6148, 0x6301, 0x6642},
+  { /* category 28 */
+    0x6B21, 0x6ECB, 0x6CBB, 0x723E, 0x74BD, 0x75D4, 0x78C1, 0x793A,
+    0x800C, 0x8033, 0x81EA, 0x8494, 0x8F9E, 0x6C50, 0x9E7F, 0x5F0F,
+    0x8B58, 0x9D2B, 0x7AFA, 0x8EF8, 0x5B8D, 0x96EB, 0x4E03, 0x53F1,
+    0x57F7, 0x5931, 0x5AC9, 0x5BA4, 0x6089, 0x6E7F, 0x6F06, 0x75BE,
+    0x8CEA, 0x5B9F, 0x8500, 0x7BE0, 0x5072, 0x67F4, 0x829D, 0x5C61,
+    0x854A, 0x7E1E, 0x820E, 0x5199, 0x5C04, 0x6368, 0x8D66, 0x659C,
+    0x716E, 0x793E, 0x7D17, 0x8005, 0x8B1D, 0x8ECA, 0x906E, 0x86C7,
+    0x90AA, 0x501F, 0x52FA, 0x5C3A, 0x6753, 0x707C, 0x7235, 0x914C,
+    0x91C8, 0x932B, 0x82E5, 0x5BC2, 0x5F31, 0x60F9, 0x4E3B, 0x53D6,
+    0x5B88, 0x624B, 0x6731, 0x6B8A, 0x72E9, 0x73E0, 0x7A2E, 0x816B,
+    0x8DA3, 0x9152, 0x9996, 0x5112, 0x53D7, 0x546A, 0x5BFF, 0x6388,
+    0x6A39, 0x7DAC, 0x9700, 0x56DA, 0x53CE, 0x5468},
+  { /* category 29 */
+    0x5B97, 0x5C31, 0x5DDE, 0x4FEE, 0x6101, 0x62FE, 0x6D32, 0x79C0,
+    0x79CB, 0x7D42, 0x7E4D, 0x7FD2, 0x81ED, 0x821F, 0x8490, 0x8846,
+    0x8972, 0x8B90, 0x8E74, 0x8F2F, 0x9031, 0x914B, 0x916C, 0x96C6,
+    0x919C, 0x4EC0, 0x4F4F, 0x5145, 0x5341, 0x5F93, 0x620E, 0x67D4,
+    0x6C41, 0x6E0B, 0x7363, 0x7E26, 0x91CD, 0x9283, 0x53D4, 0x5919,
+    0x5BBF, 0x6DD1, 0x795D, 0x7E2E, 0x7C9B, 0x587E, 0x719F, 0x51FA,
+    0x8853, 0x8FF0, 0x4FCA, 0x5CFB, 0x6625, 0x77AC, 0x7AE3, 0x821C,
+    0x99FF, 0x51C6, 0x5FAA, 0x65EC, 0x696F, 0x6B89, 0x6DF3, 0x6E96,
+    0x6F64, 0x76FE, 0x7D14, 0x5DE1, 0x9075, 0x9187, 0x9806, 0x51E6,
+    0x521D, 0x6240, 0x6691, 0x66D9, 0x6E1A, 0x5EB6, 0x7DD2, 0x7F72,
+    0x66F8, 0x85AF, 0x85F7, 0x8AF8, 0x52A9, 0x53D9, 0x5973, 0x5E8F,
+    0x5F90, 0x6055, 0x92E4, 0x9664, 0x50B7, 0x511F},
+  { /* category 30 */
+    0x52DD, 0x5320, 0x5347, 0x53EC, 0x54E8, 0x5546, 0x5531, 0x5617,
+    0x5968, 0x59BE, 0x5A3C, 0x5BB5, 0x5C06, 0x5C0F, 0x5C11, 0x5C1A,
+    0x5E84, 0x5E8A, 0x5EE0, 0x5F70, 0x627F, 0x6284, 0x62DB, 0x638C,
+    0x6377, 0x6607, 0x660C, 0x662D, 0x6676, 0x677E, 0x68A2, 0x6A1F,
+    0x6A35, 0x6CBC, 0x6D88, 0x6E09, 0x6E58, 0x713C, 0x7126, 0x7167,
+    0x75C7, 0x7701, 0x785D, 0x7901, 0x7965, 0x79F0, 0x7AE0, 0x7B11,
+    0x7CA7, 0x7D39, 0x8096, 0x83D6, 0x848B, 0x8549, 0x885D, 0x88F3,
+    0x8A1F, 0x8A3C, 0x8A54, 0x8A73, 0x8C61, 0x8CDE, 0x91A4, 0x9266,
+    0x937E, 0x9418, 0x969C, 0x9798, 0x4E0A, 0x4E08, 0x4E1E, 0x4E57,
+    0x5197, 0x5270, 0x57CE, 0x5834, 0x58CC, 0x5B22, 0x5E38, 0x60C5,
+    0x64FE, 0x6761, 0x6756, 0x6D44, 0x72B6, 0x7573, 0x7A63, 0x84B8,
+    0x8B72, 0x91B8, 0x9320, 0x5631, 0x57F4, 0x98FE},
+  { /* category 31 */
+    0x62ED, 0x690D, 0x6B96, 0x71ED, 0x7E54, 0x8077, 0x8272, 0x89E6,
+    0x98DF, 0x8755, 0x8FB1, 0x5C3B, 0x4F38, 0x4FE1, 0x4FB5, 0x5507,
+    0x5A20, 0x5BDD, 0x5BE9, 0x5FC3, 0x614E, 0x632F, 0x65B0, 0x664B,
+    0x68EE, 0x699B, 0x6D78, 0x6DF1, 0x7533, 0x75B9, 0x771F, 0x795E,
+    0x79E6, 0x7D33, 0x81E3, 0x82AF, 0x85AA, 0x89AA, 0x8A3A, 0x8EAB,
+    0x8F9B, 0x9032, 0x91DD, 0x9707, 0x4EBA, 0x4EC1, 0x5203, 0x5875,
+    0x58EC, 0x5C0B, 0x751A, 0x5C3D, 0x814E, 0x8A0A, 0x8FC5, 0x9663,
+    0x976D, 0x7B25, 0x8ACF, 0x9808, 0x9162, 0x56F3, 0x53A8, 0x9017,
+    0x5439, 0x5782, 0x5E25, 0x63A8, 0x6C34, 0x708A, 0x7761, 0x7C8B,
+    0x7FE0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968F, 0x745E,
+    0x9AC4, 0x5D07, 0x5D69, 0x6570, 0x67A2, 0x8DA8, 0x96DB, 0x636E,
+    0x6749, 0x6919, 0x83C5, 0x9817, 0x96C0, 0x88FE},
+  { /* category 32 */
+    0x6F84, 0x647A, 0x5BF8, 0x4E16, 0x702C, 0x755D, 0x662F, 0x51C4,
+    0x5236, 0x52E2, 0x59D3, 0x5F81, 0x6027, 0x6210, 0x653F, 0x6574,
+    0x661F, 0x6674, 0x68F2, 0x6816, 0x6B63, 0x6E05, 0x7272, 0x751F,
+    0x76DB, 0x7CBE, 0x8056, 0x58F0, 0x88FD, 0x897F, 0x8AA0, 0x8A93,
+    0x8ACB, 0x901D, 0x9192, 0x9752, 0x9759, 0x6589, 0x7A0E, 0x8106,
+    0x96BB, 0x5E2D, 0x60DC, 0x621A, 0x65A5, 0x6614, 0x6790, 0x77F3,
+    0x7A4D, 0x7C4D, 0x7E3E, 0x810A, 0x8CAC, 0x8D64, 0x8DE1, 0x8E5F,
+    0x78A9, 0x5207, 0x62D9, 0x63A5, 0x6442, 0x6298, 0x8A2D, 0x7A83,
+    0x7BC0, 0x8AAC, 0x96EA, 0x7D76, 0x820C, 0x8749, 0x4ED9, 0x5148,
+    0x5343, 0x5360, 0x5BA3, 0x5C02, 0x5C16, 0x5DDD, 0x6226, 0x6247,
+    0x64B0, 0x6813, 0x6834, 0x6CC9, 0x6D45, 0x6D17, 0x67D3, 0x6F5C,
+    0x714E, 0x717D, 0x65CB, 0x7A7F, 0x7BAD, 0x7DDA},
+  { /* category 33 */
+    0x7E4A, 0x7FA8, 0x817A, 0x821B, 0x8239, 0x85A6, 0x8A6E, 0x8CCE,
+    0x8DF5, 0x9078, 0x9077, 0x92AD, 0x9291, 0x9583, 0x9BAE, 0x524D,
+    0x5584, 0x6F38, 0x7136, 0x5168, 0x7985, 0x7E55, 0x81B3, 0x7CCE,
+    0x564C, 0x5851, 0x5CA8, 0x63AA, 0x66FE, 0x66FD, 0x695A, 0x72D9,
+    0x758F, 0x758E, 0x790E, 0x7956, 0x79DF, 0x7C97, 0x7D20, 0x7D44,
+    0x8607, 0x8A34, 0x963B, 0x9061, 0x9F20, 0x50E7, 0x5275, 0x53CC,
+    0x53E2, 0x5009, 0x55AA, 0x58EE, 0x594F, 0x723D, 0x5B8B, 0x5C64,
+    0x531D, 0x60E3, 0x60F3, 0x635C, 0x6383, 0x633F, 0x63BB, 0x64CD,
+    0x65E9, 0x66F9, 0x5DE3, 0x69CD, 0x69FD, 0x6F15, 0x71E5, 0x4E89,
+    0x75E9, 0x76F8, 0x7A93, 0x7CDF, 0x7DCF, 0x7D9C, 0x8061, 0x8349,
+    0x8358, 0x846C, 0x84BC, 0x85FB, 0x88C5, 0x8D70, 0x9001, 0x906D,
+    0x9397, 0x971C, 0x9A12, 0x50CF, 0x5897, 0x618E},
+  { /* category 34 */
+    0x81D3, 0x8535, 0x8D08, 0x9020, 0x4FC3, 0x5074, 0x5247, 0x5373,
+    0x606F, 0x6349, 0x675F, 0x6E2C, 0x8DB3, 0x901F, 0x4FD7, 0x5C5E,
+    0x8CCA, 0x65CF, 0x7D9A, 0x5352, 0x8896, 0x5176, 0x63C3, 0x5B58,
+    0x5B6B, 0x5C0A, 0x640D, 0x6751, 0x905C, 0x4ED6, 0x591A, 0x592A,
+    0x6C70, 0x8A51, 0x553E, 0x5815, 0x59A5, 0x60F0, 0x6253, 0x67C1,
+    0x8235, 0x6955, 0x9640, 0x99C4, 0x9A28, 0x4F53, 0x5806, 0x5BFE,
+    0x8010, 0x5CB1, 0x5E2F, 0x5F85, 0x6020, 0x614B, 0x6234, 0x66FF,
+    0x6CF0, 0x6EDE, 0x80CE, 0x817F, 0x82D4, 0x888B, 0x8CB8, 0x9000,
+    0x902E, 0x968A, 0x9EDB, 0x9BDB, 0x4EE3, 0x53F0, 0x5927, 0x7B2C,
+    0x918D, 0x984C, 0x9DF9, 0x6EDD, 0x7027, 0x5353, 0x5544, 0x5B85,
+    0x6258, 0x629E, 0x62D3, 0x6CA2, 0x6FEF, 0x7422, 0x8A17, 0x9438,
+    0x6FC1, 0x8AFE, 0x8338, 0x51E7, 0x86F8, 0x53EA},
+  { /* category 35 */
+    0x53E9, 0x4F46, 0x9054, 0x8FB0, 0x596A, 0x8131, 0x5DFD, 0x7AEA,
+    0x8FBF, 0x68DA, 0x8C37, 0x72F8, 0x9C48, 0x6A3D, 0x8AB0, 0x4E39,
+    0x5358, 0x5606, 0x5766, 0x62C5, 0x63A2, 0x65E6, 0x6B4E, 0x6DE1,
+    0x6E5B, 0x70AD, 0x77ED, 0x7AEF, 0x7BAA, 0x7DBB, 0x803D, 0x80C6,
+    0x86CB, 0x8A95, 0x935B, 0x56E3, 0x58C7, 0x5F3E, 0x65AD, 0x6696,
+    0x6A80, 0x6BB5, 0x7537, 0x8AC7, 0x5024, 0x77E5, 0x5730, 0x5F1B,
+    0x6065, 0x667A, 0x6C60, 0x75F4, 0x7A1A, 0x7F6E, 0x81F4, 0x8718,
+    0x9045, 0x99B3, 0x7BC9, 0x755C, 0x7AF9, 0x7B51, 0x84C4, 0x9010,
+    0x79E9, 0x7A92, 0x8336, 0x5AE1, 0x7740, 0x4E2D, 0x4EF2, 0x5B99,
+    0x5FE0, 0x62BD, 0x663C, 0x67F1, 0x6CE8, 0x866B, 0x8877, 0x8A3B,
+    0x914E, 0x92F3, 0x99D0, 0x6A17, 0x7026, 0x732A, 0x82E7, 0x8457,
+    0x8CAF, 0x4E01, 0x5146, 0x51CB, 0x558B, 0x5BF5},
+  { /* category 36 */
+    0x5E16, 0x5E33, 0x5E81, 0x5F14, 0x5F35, 0x5F6B, 0x5FB4, 0x61F2,
+    0x6311, 0x66A2, 0x671D, 0x6F6E, 0x7252, 0x753A, 0x773A, 0x8074,
+    0x8139, 0x8178, 0x8776, 0x8ABF, 0x8ADC, 0x8D85, 0x8DF3, 0x929A,
+    0x9577, 0x9802, 0x9CE5, 0x52C5, 0x6357, 0x76F4, 0x6715, 0x6C88,
+    0x73CD, 0x8CC3, 0x93AE, 0x9673, 0x6D25, 0x589C, 0x690E, 0x69CC,
+    0x8FFD, 0x939A, 0x75DB, 0x901A, 0x585A, 0x6802, 0x63B4, 0x69FB,
+    0x4F43, 0x6F2C, 0x67D8, 0x8FBB, 0x8526, 0x7DB4, 0x9354, 0x693F,
+    0x6F70, 0x576A, 0x58F7, 0x5B2C, 0x7D2C, 0x722A, 0x540A, 0x91E3,
+    0x9DB4, 0x4EAD, 0x4F4E, 0x505C, 0x5075, 0x5243, 0x8C9E, 0x5448,
+    0x5824, 0x5B9A, 0x5E1D, 0x5E95, 0x5EAD, 0x5EF7, 0x5F1F, 0x608C,
+    0x62B5, 0x633A, 0x63D0, 0x68AF, 0x6C40, 0x7887, 0x798E, 0x7A0B,
+    0x7DE0, 0x8247, 0x8A02, 0x8AE6, 0x8E44, 0x9013},
+  { /* category 37 */
+    0x90B8, 0x912D, 0x91D8, 0x9F0E, 0x6CE5, 0x6458, 0x64E2, 0x6575,
+    0x6EF4, 0x7684, 0x7B1B, 0x9069, 0x93D1, 0x6EBA, 0x54F2, 0x5FB9,
+    0x64A4, 0x8F4D, 0x8FED, 0x9244, 0x5178, 0x586B, 0x5929, 0x5C55,
+    0x5E97, 0x6DFB, 0x7E8F, 0x751C, 0x8CBC, 0x8EE2, 0x985B, 0x70B9,
+    0x4F1D, 0x6BBF, 0x6FB1, 0x7530, 0x96FB, 0x514E, 0x5410, 0x5835,
+    0x5857, 0x59AC, 0x5C60, 0x5F92, 0x6597, 0x675C, 0x6E21, 0x767B,
+    0x83DF, 0x8CED, 0x9014, 0x90FD, 0x934D, 0x7825, 0x783A, 0x52AA,
+    0x5EA6, 0x571F, 0x5974, 0x6012, 0x5012, 0x515A, 0x51AC, 0x51CD,
+    0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5B95, 0x5CF6, 0x5D8B,
+    0x60BC, 0x6295, 0x642D, 0x6771, 0x6843, 0x68BC, 0x68DF, 0x76D7,
+    0x6DD8, 0x6E6F, 0x6D9B, 0x706F, 0x71C8, 0x5F53, 0x75D8, 0x7977,
+    0x7B49, 0x7B54, 0x7B52, 0x7CD6, 0x7D71, 0x5230},
+  { /* category 38 */
+    0x8463, 0x8569, 0x85E4, 0x8A0E, 0x8B04, 0x8C46, 0x8E0F, 0x9003,
+    0x900F, 0x9419, 0x9676, 0x982D, 0x9A30, 0x95D8, 0x50CD, 0x52D5,
+    0x540C, 0x5802, 0x5C0E, 0x61A7, 0x649E, 0x6D1E, 0x77B3, 0x7AE5,
+    0x80F4, 0x8404, 0x9053, 0x9285, 0x5CE0, 0x9D07, 0x533F, 0x5F97,
+    0x5FB3, 0x6D9C, 0x7279, 0x7763, 0x79BF, 0x7BE4, 0x6BD2, 0x72EC,
+    0x8AAD, 0x6803, 0x6A61, 0x51F8, 0x7A81, 0x6934, 0x5C4A, 0x9CF6,
+    0x82EB, 0x5BC5, 0x9149, 0x701E, 0x5678, 0x5C6F, 0x60C7, 0x6566,
+    0x6C8C, 0x8C5A, 0x9041, 0x9813, 0x5451, 0x66C7, 0x920D, 0x5948,
+    0x90A3, 0x5185, 0x4E4D, 0x51EA, 0x8599, 0x8B0E, 0x7058, 0x637A,
+    0x934B, 0x6962, 0x99B4, 0x7E04, 0x7577, 0x5357, 0x6960, 0x8EDF,
+    0x96E3, 0x6C5D, 0x4E8C, 0x5C3C, 0x5F10, 0x8FE9, 0x5302, 0x8CD1,
+    0x8089, 0x8679, 0x5EFF, 0x65E5, 0x4E73, 0x5165},
+  { /* category 39 */
+    0x5982, 0x5C3F, 0x97EE, 0x4EFB, 0x598A, 0x5FCD, 0x8A8D, 0x6FE1,
+    0x79B0, 0x7962, 0x5BE7, 0x8471, 0x732B, 0x71B1, 0x5E74, 0x5FF5,
+    0x637B, 0x649A, 0x71C3, 0x7C98, 0x4E43, 0x5EFC, 0x4E4B, 0x57DC,
+    0x56A2, 0x60A9, 0x6FC3, 0x7D0D, 0x80FD, 0x8133, 0x81BF, 0x8FB2,
+    0x8997, 0x86A4, 0x5DF4, 0x628A, 0x64AD, 0x8987, 0x6777, 0x6CE2,
+    0x6D3E, 0x7436, 0x7834, 0x5A46, 0x7F75, 0x82AD, 0x99AC, 0x4FF3,
+    0x5EC3, 0x62DD, 0x6392, 0x6557, 0x676F, 0x76C3, 0x724C, 0x80CC,
+    0x80BA, 0x8F29, 0x914D, 0x500D, 0x57F9, 0x5A92, 0x6885, 0x6973,
+    0x7164, 0x72FD, 0x8CB7, 0x58F2, 0x8CE0, 0x966A, 0x9019, 0x877F,
+    0x79E4, 0x77E7, 0x8429, 0x4F2F, 0x5265, 0x535A, 0x62CD, 0x67CF,
+    0x6CCA, 0x767D, 0x7B94, 0x7C95, 0x8236, 0x8584, 0x8FEB, 0x66DD,
+    0x6F20, 0x7206, 0x7E1B, 0x83AB, 0x99C1, 0x9EA6},
+  { /* category 40 */
+    0x51FD, 0x7BB1, 0x7872, 0x7BB8, 0x8087, 0x7B48, 0x6AE8, 0x5E61,
+    0x808C, 0x7551, 0x7560, 0x516B, 0x9262, 0x6E8C, 0x767A, 0x9197,
+    0x9AEA, 0x4F10, 0x7F70, 0x629C, 0x7B4F, 0x95A5, 0x9CE9, 0x567A,
+    0x5859, 0x86E4, 0x96BC, 0x4F34, 0x5224, 0x534A, 0x53CD, 0x53DB,
+    0x5E06, 0x642C, 0x6591, 0x677F, 0x6C3E, 0x6C4E, 0x7248, 0x72AF,
+    0x73ED, 0x7554, 0x7E41, 0x822C, 0x85E9, 0x8CA9, 0x7BC4, 0x91C6,
+    0x7169, 0x9812, 0x98EF, 0x633D, 0x6669, 0x756A, 0x76E4, 0x78D0,
+    0x8543, 0x86EE, 0x532A, 0x5351, 0x5426, 0x5983, 0x5E87, 0x5F7C,
+    0x60B2, 0x6249, 0x6279, 0x62AB, 0x6590, 0x6BD4, 0x6CCC, 0x75B2,
+    0x76AE, 0x7891, 0x79D8, 0x7DCB, 0x7F77, 0x80A5, 0x88AB, 0x8AB9,
+    0x8CBB, 0x907F, 0x975E, 0x98DB, 0x6A0B, 0x7C38, 0x5099, 0x5C3E,
+    0x5FAE, 0x6787, 0x6BD8, 0x7435, 0x7709, 0x7F8E},
+  { /* category 41 */
+    0x9F3B, 0x67CA, 0x7A17, 0x5339, 0x758B, 0x9AED, 0x5F66, 0x819D,
+    0x83F1, 0x8098, 0x5F3C, 0x5FC5, 0x7562, 0x7B46, 0x903C, 0x6867,
+    0x59EB, 0x5A9B, 0x7D10, 0x767E, 0x8B2C, 0x4FF5, 0x5F6A, 0x6A19,
+    0x6C37, 0x6F02, 0x74E2, 0x7968, 0x8868, 0x8A55, 0x8C79, 0x5EDF,
+    0x63CF, 0x75C5, 0x79D2, 0x82D7, 0x9328, 0x92F2, 0x849C, 0x86ED,
+    0x9C2D, 0x54C1, 0x5F6C, 0x658C, 0x6D5C, 0x7015, 0x8CA7, 0x8CD3,
+    0x983B, 0x654F, 0x74F6, 0x4E0D, 0x4ED8, 0x57E0, 0x592B, 0x5A66,
+    0x5BCC, 0x51A8, 0x5E03, 0x5E9C, 0x6016, 0x6276, 0x6577, 0x65A7,
+    0x666E, 0x6D6E, 0x7236, 0x7B26, 0x8150, 0x819A, 0x8299, 0x8B5C,
+    0x8CA0, 0x8CE6, 0x8D74, 0x961C, 0x9644, 0x4FAE, 0x64AB, 0x6B66,
+    0x821E, 0x8461, 0x856A, 0x90E8, 0x5C01, 0x6953, 0x98A8, 0x847A,
+    0x8557, 0x4F0F, 0x526F, 0x5FA9, 0x5E45, 0x670D},
+  { /* category 42 */
+    0x798F, 0x8179, 0x8907, 0x8986, 0x6DF5, 0x5F17, 0x6255, 0x6CB8,
+    0x4ECF, 0x7269, 0x9B92, 0x5206, 0x543B, 0x5674, 0x58B3, 0x61A4,
+    0x626E, 0x711A, 0x596E, 0x7C89, 0x7CDE, 0x7D1B, 0x96F0, 0x6587,
+    0x805E, 0x4E19, 0x4F75, 0x5175, 0x5840, 0x5E63, 0x5E73, 0x5F0A,
+    0x67C4, 0x4E26, 0x853D, 0x9589, 0x965B, 0x7C73, 0x9801, 0x50FB,
+    0x58C1, 0x7656, 0x78A7, 0x5225, 0x77A5, 0x8511, 0x7B86, 0x504F,
+    0x5909, 0x7247, 0x7BC7, 0x7DE8, 0x8FBA, 0x8FD4, 0x904D, 0x4FBF,
+    0x52C9, 0x5A29, 0x5F01, 0x97AD, 0x4FDD, 0x8217, 0x92EA, 0x5703,
+    0x6355, 0x6B69, 0x752B, 0x88DC, 0x8F14, 0x7A42, 0x52DF, 0x5893,
+    0x6155, 0x620A, 0x66AE, 0x6BCD, 0x7C3F, 0x83E9, 0x5023, 0x4FF8,
+    0x5305, 0x5446, 0x5831, 0x5949, 0x5B9D, 0x5CF0, 0x5CEF, 0x5D29,
+    0x5E96, 0x62B1, 0x6367, 0x653E, 0x65B9, 0x670B},
+  { /* category 43 */
+    0x6CD5, 0x6CE1, 0x70F9, 0x7832, 0x7E2B, 0x80DE, 0x82B3, 0x840C,
+    0x84EC, 0x8702, 0x8912, 0x8A2A, 0x8C4A, 0x90A6, 0x92D2, 0x98FD,
+    0x9CF3, 0x9D6C, 0x4E4F, 0x4EA1, 0x508D, 0x5256, 0x574A, 0x59A8,
+    0x5E3D, 0x5FD8, 0x5FD9, 0x623F, 0x66B4, 0x671B, 0x67D0, 0x68D2,
+    0x5192, 0x7D21, 0x80AA, 0x81A8, 0x8B00, 0x8C8C, 0x8CBF, 0x927E,
+    0x9632, 0x5420, 0x982C, 0x5317, 0x50D5, 0x535C, 0x58A8, 0x64B2,
+    0x6734, 0x7267, 0x7766, 0x7A46, 0x91E6, 0x52C3, 0x6CA1, 0x6B86,
+    0x5800, 0x5E4C, 0x5954, 0x672C, 0x7FFB, 0x51E1, 0x76C6, 0x6469,
+    0x78E8, 0x9B54, 0x9EBB, 0x57CB, 0x59B9, 0x6627, 0x679A, 0x6BCE,
+    0x54E9, 0x69D9, 0x5E55, 0x819C, 0x6795, 0x9BAA, 0x67FE, 0x9C52,
+    0x685D, 0x4EA6, 0x4FE3, 0x53C8, 0x62B9, 0x672B, 0x6CAB, 0x8FC4,
+    0x4FAD, 0x7E6D, 0x9EBF, 0x4E07, 0x6162, 0x6E80},
+  { /* category 44 */
+    0x6F2B, 0x8513, 0x5473, 0x672A, 0x9B45, 0x5DF3, 0x7B95, 0x5CAC,
+    0x5BC6, 0x871C, 0x6E4A, 0x84D1, 0x7A14, 0x8108, 0x5999, 0x7C8D,
+    0x6C11, 0x7720, 0x52D9, 0x5922, 0x7121, 0x725F, 0x77DB, 0x9727,
+    0x9D61, 0x690B, 0x5A7F, 0x5A18, 0x51A5, 0x540D, 0x547D, 0x660E,
+    0x76DF, 0x8FF7, 0x9298, 0x9CF4, 0x59EA, 0x725D, 0x6EC5, 0x514D,
+    0x68C9, 0x7DBF, 0x7DEC, 0x9762, 0x9EBA, 0x6478, 0x6A21, 0x8302,
+    0x5984, 0x5B5F, 0x6BDB, 0x731B, 0x76F2, 0x7DB2, 0x8017, 0x8499,
+    0x5132, 0x6728, 0x9ED9, 0x76EE, 0x6762, 0x52FF, 0x9905, 0x5C24,
+    0x623B, 0x7C7E, 0x8CB0, 0x554F, 0x60B6, 0x7D0B, 0x9580, 0x5301,
+    0x4E5F, 0x51B6, 0x591C, 0x723A, 0x8036, 0x91CE, 0x5F25, 0x77E2,
+    0x5384, 0x5F79, 0x7D04, 0x85AC, 0x8A33, 0x8E8D, 0x9756, 0x67F3,
+    0x85AE, 0x9453, 0x6109, 0x6108, 0x6CB9, 0x7652},
+  { /* category 45 */
+    0x8AED, 0x8F38, 0x552F, 0x4F51, 0x512A, 0x52C7, 0x53CB, 0x5BA5,
+    0x5E7D, 0x60A0, 0x6182, 0x63D6, 0x6709, 0x67DA, 0x6E67, 0x6D8C,
+    0x7336, 0x7337, 0x7531, 0x7950, 0x88D5, 0x8A98, 0x904A, 0x9091,
+    0x90F5, 0x96C4, 0x878D, 0x5915, 0x4E88, 0x4F59, 0x4E0E, 0x8A89,
+    0x8F3F, 0x9810, 0x50AD, 0x5E7C, 0x5996, 0x5BB9, 0x5EB8, 0x63DA,
+    0x63FA, 0x64C1, 0x66DC, 0x694A, 0x69D8, 0x6D0B, 0x6EB6, 0x7194,
+    0x7528, 0x7AAF, 0x7F8A, 0x8000, 0x8449, 0x84C9, 0x8981, 0x8B21,
+    0x8E0A, 0x9065, 0x967D, 0x990A, 0x617E, 0x6291, 0x6B32, 0x6C83,
+    0x6D74, 0x7FCC, 0x7FFC, 0x6DC0, 0x7F85, 0x87BA, 0x88F8, 0x6765,
+    0x83B1, 0x983C, 0x96F7, 0x6D1B, 0x7D61, 0x843D, 0x916A, 0x4E71,
+    0x5375, 0x5D50, 0x6B04, 0x6FEB, 0x85CD, 0x862D, 0x89A7, 0x5229,
+    0x540F, 0x5C65, 0x674E, 0x68A8, 0x7406, 0x7483},
+  { /* category 46 */
+    0x75E2, 0x88CF, 0x88E1, 0x91CC, 0x96E2, 0x9678, 0x5F8B, 0x7387,
+    0x7ACB, 0x844E, 0x63A0, 0x7565, 0x5289, 0x6D41, 0x6E9C, 0x7409,
+    0x7559, 0x786B, 0x7C92, 0x9686, 0x7ADC, 0x9F8D, 0x4FB6, 0x616E,
+    0x65C5, 0x865C, 0x4E86, 0x4EAE, 0x50DA, 0x4E21, 0x51CC, 0x5BEE,
+    0x6599, 0x6881, 0x6DBC, 0x731F, 0x7642, 0x77AD, 0x7A1C, 0x7CE7,
+    0x826F, 0x8AD2, 0x907C, 0x91CF, 0x9675, 0x9818, 0x529B, 0x7DD1,
+    0x502B, 0x5398, 0x6797, 0x6DCB, 0x71D0, 0x7433, 0x81E8, 0x8F2A,
+    0x96A3, 0x9C57, 0x9E9F, 0x7460, 0x5841, 0x6D99, 0x7D2F, 0x985E,
+    0x4EE4, 0x4F36, 0x4F8B, 0x51B7, 0x52B1, 0x5DBA, 0x601C, 0x73B2,
+    0x793C, 0x82D3, 0x9234, 0x96B7, 0x96F6, 0x970A, 0x9E97, 0x9F62,
+    0x66A6, 0x6B74, 0x5217, 0x52A3, 0x70C8, 0x88C2, 0x5EC9, 0x604B,
+    0x6190, 0x6F23, 0x7149, 0x7C3E, 0x7DF4, 0x806F},
+  { /* category 47 */
+    0x84EE, 0x9023, 0x932C, 0x5442, 0x9B6F, 0x6AD3, 0x7089, 0x8CC2,
+    0x8DEF, 0x9732, 0x52B4, 0x5A41, 0x5ECA, 0x5F04, 0x6717, 0x697C,
+    0x6994, 0x6D6A, 0x6F0F, 0x7262, 0x72FC, 0x7BED, 0x8001, 0x807E,
+    0x874B, 0x90CE, 0x516D, 0x9E93, 0x7984, 0x808B, 0x9332, 0x8AD6,
+    0x502D, 0x548C, 0x8A71, 0x6B6A, 0x8CC4, 0x8107, 0x60D1, 0x67A0,
+    0x9DF2, 0x4E99, 0x4E98, 0x9C10, 0x8A6B, 0x85C1, 0x8568, 0x6900,
+    0x6E7E, 0x7897, 0x8155, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
+  { /* category 48 */
+    0x5F0C, 0x4E10, 0x4E15, 0x4E2A, 0x4E31, 0x4E36, 0x4E3C, 0x4E3F,
+    0x4E42, 0x4E56, 0x4E58, 0x4E82, 0x4E85, 0x8C6B, 0x4E8A, 0x8212,
+    0x5F0D, 0x4E8E, 0x4E9E, 0x4E9F, 0x4EA0, 0x4EA2, 0x4EB0, 0x4EB3,
+    0x4EB6, 0x4ECE, 0x4ECD, 0x4EC4, 0x4EC6, 0x4EC2, 0x4ED7, 0x4EDE,
+    0x4EED, 0x4EDF, 0x4EF7, 0x4F09, 0x4F5A, 0x4F30, 0x4F5B, 0x4F5D,
+    0x4F57, 0x4F47, 0x4F76, 0x4F88, 0x4F8F, 0x4F98, 0x4F7B, 0x4F69,
+    0x4F70, 0x4F91, 0x4F6F, 0x4F86, 0x4F96, 0x5118, 0x4FD4, 0x4FDF,
+    0x4FCE, 0x4FD8, 0x4FDB, 0x4FD1, 0x4FDA, 0x4FD0, 0x4FE4, 0x4FE5,
+    0x501A, 0x5028, 0x5014, 0x502A, 0x5025, 0x5005, 0x4F1C, 0x4FF6,
+    0x5021, 0x5029, 0x502C, 0x4FFE, 0x4FEF, 0x5011, 0x5006, 0x5043,
+    0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505A, 0x5056, 0x506C,
+    0x5078, 0x5080, 0x509A, 0x5085, 0x50B4, 0x50B2},
+  { /* category 49 */
+    0x50C9, 0x50CA, 0x50B3, 0x50C2, 0x50D6, 0x50DE, 0x50E5, 0x50ED,
+    0x50E3, 0x50EE, 0x50F9, 0x50F5, 0x5109, 0x5101, 0x5102, 0x5116,
+    0x5115, 0x5114, 0x511A, 0x5121, 0x513A, 0x5137, 0x513C, 0x513B,
+    0x513F, 0x5140, 0x5152, 0x514C, 0x5154, 0x5162, 0x7AF8, 0x5169,
+    0x516A, 0x516E, 0x5180, 0x5182, 0x56D8, 0x518C, 0x5189, 0x518F,
+    0x5191, 0x5193, 0x5195, 0x5196, 0x51A4, 0x51A6, 0x51A2, 0x51A9,
+    0x51AA, 0x51AB, 0x51B3, 0x51B1, 0x51B2, 0x51B0, 0x51B5, 0x51BD,
+    0x51C5, 0x51C9, 0x51DB, 0x51E0, 0x8655, 0x51E9, 0x51ED, 0x51F0,
+    0x51F5, 0x51FE, 0x5204, 0x520B, 0x5214, 0x520E, 0x5227, 0x522A,
+    0x522E, 0x5233, 0x5239, 0x524F, 0x5244, 0x524B, 0x524C, 0x525E,
+    0x5254, 0x526A, 0x5274, 0x5269, 0x5273, 0x527F, 0x527D, 0x528D,
+    0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8FA8},
+  { /* category 50 */
+    0x8FA7, 0x52AC, 0x52AD, 0x52BC, 0x52B5, 0x52C1, 0x52CD, 0x52D7,
+    0x52DE, 0x52E3, 0x52E6, 0x98ED, 0x52E0, 0x52F3, 0x52F5, 0x52F8,
+    0x52F9, 0x5306, 0x5308, 0x7538, 0x530D, 0x5310, 0x530F, 0x5315,
+    0x531A, 0x5323, 0x532F, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346,
+    0x5345, 0x4E17, 0x5349, 0x534D, 0x51D6, 0x535E, 0x5369, 0x536E,
+    0x5918, 0x537B, 0x5377, 0x5382, 0x5396, 0x53A0, 0x53A6, 0x53A5,
+    0x53AE, 0x53B0, 0x53B6, 0x53C3, 0x7C12, 0x96D9, 0x53DF, 0x66FC,
+    0x71EE, 0x53EE, 0x53E8, 0x53ED, 0x53FA, 0x5401, 0x543D, 0x5440,
+    0x542C, 0x542D, 0x543C, 0x542E, 0x5436, 0x5429, 0x541D, 0x544E,
+    0x548F, 0x5475, 0x548E, 0x545F, 0x5471, 0x5477, 0x5470, 0x5492,
+    0x547B, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54C7, 0x54A2,
+    0x54B8, 0x54A5, 0x54AC, 0x54C4, 0x54C8, 0x54A8},
+  { /* category 51 */
+    0x54AB, 0x54C2, 0x54A4, 0x54BE, 0x54BC, 0x54D8, 0x54E5, 0x54E6,
+    0x550F, 0x5514, 0x54FD, 0x54EE, 0x54ED, 0x54FA, 0x54E2, 0x5539,
+    0x5540, 0x5563, 0x554C, 0x552E, 0x555C, 0x5545, 0x5556, 0x5557,
+    0x5538, 0x5533, 0x555D, 0x5599, 0x5580, 0x54AF, 0x558A, 0x559F,
+    0x557B, 0x557E, 0x5598, 0x559E, 0x55AE, 0x557C, 0x5583, 0x55A9,
+    0x5587, 0x55A8, 0x55DA, 0x55C5, 0x55DF, 0x55C4, 0x55DC, 0x55E4,
+    0x55D4, 0x5614, 0x55F7, 0x5616, 0x55FE, 0x55FD, 0x561B, 0x55F9,
+    0x564E, 0x5650, 0x71DF, 0x5634, 0x5636, 0x5632, 0x5638, 0x566B,
+    0x5664, 0x562F, 0x566C, 0x566A, 0x5686, 0x5680, 0x568A, 0x56A0,
+    0x5694, 0x568F, 0x56A5, 0x56AE, 0x56B6, 0x56B4, 0x56C2, 0x56BC,
+    0x56C1, 0x56C3, 0x56C0, 0x56C8, 0x56CE, 0x56D1, 0x56D3, 0x56D7,
+    0x56EE, 0x56F9, 0x5700, 0x56FF, 0x5704, 0x5709},
+  { /* category 52 */
+    0x5708, 0x570B, 0x570D, 0x5713, 0x5718, 0x5716, 0x55C7, 0x571C,
+    0x5726, 0x5737, 0x5738, 0x574E, 0x573B, 0x5740, 0x574F, 0x5769,
+    0x57C0, 0x5788, 0x5761, 0x577F, 0x5789, 0x5793, 0x57A0, 0x57B3,
+    0x57A4, 0x57AA, 0x57B0, 0x57C3, 0x57C6, 0x57D4, 0x57D2, 0x57D3,
+    0x580A, 0x57D6, 0x57E3, 0x580B, 0x5819, 0x581D, 0x5872, 0x5821,
+    0x5862, 0x584B, 0x5870, 0x6BC0, 0x5852, 0x583D, 0x5879, 0x5885,
+    0x58B9, 0x589F, 0x58AB, 0x58BA, 0x58DE, 0x58BB, 0x58B8, 0x58AE,
+    0x58C5, 0x58D3, 0x58D1, 0x58D7, 0x58D9, 0x58D8, 0x58E5, 0x58DC,
+    0x58E4, 0x58DF, 0x58EF, 0x58FA, 0x58F9, 0x58FB, 0x58FC, 0x58FD,
+    0x5902, 0x590A, 0x5910, 0x591B, 0x68A6, 0x5925, 0x592C, 0x592D,
+    0x5932, 0x5938, 0x593E, 0x7AD2, 0x5955, 0x5950, 0x594E, 0x595A,
+    0x5958, 0x5962, 0x5960, 0x5967, 0x596C, 0x5969},
+  { /* category 53 */
+    0x5978, 0x5981, 0x599D, 0x4F5E, 0x4FAB, 0x59A3, 0x59B2, 0x59C6,
+    0x59E8, 0x59DC, 0x598D, 0x59D9, 0x59DA, 0x5A25, 0x5A1F, 0x5A11,
+    0x5A1C, 0x5A09, 0x5A1A, 0x5A40, 0x5A6C, 0x5A49, 0x5A35, 0x5A36,
+    0x5A62, 0x5A6A, 0x5A9A, 0x5ABC, 0x5ABE, 0x5ACB, 0x5AC2, 0x5ABD,
+    0x5AE3, 0x5AD7, 0x5AE6, 0x5AE9, 0x5AD6, 0x5AFA, 0x5AFB, 0x5B0C,
+    0x5B0B, 0x5B16, 0x5B32, 0x5AD0, 0x5B2A, 0x5B36, 0x5B3E, 0x5B43,
+    0x5B45, 0x5B40, 0x5B51, 0x5B55, 0x5B5A, 0x5B5B, 0x5B65, 0x5B69,
+    0x5B70, 0x5B73, 0x5B75, 0x5B78, 0x6588, 0x5B7A, 0x5B80, 0x5B83,
+    0x5BA6, 0x5BB8, 0x5BC3, 0x5BC7, 0x5BC9, 0x5BD4, 0x5BD0, 0x5BE4,
+    0x5BE6, 0x5BE2, 0x5BDE, 0x5BE5, 0x5BEB, 0x5BF0, 0x5BF6, 0x5BF3,
+    0x5C05, 0x5C07, 0x5C08, 0x5C0D, 0x5C13, 0x5C20, 0x5C22, 0x5C28,
+    0x5C38, 0x5C39, 0x5C41, 0x5C46, 0x5C4E, 0x5C53},
+  { /* category 54 */
+    0x5C50, 0x5C4F, 0x5B71, 0x5C6C, 0x5C6E, 0x4E62, 0x5C76, 0x5C79,
+    0x5C8C, 0x5C91, 0x5C94, 0x599B, 0x5CAB, 0x5CBB, 0x5CB6, 0x5CBC,
+    0x5CB7, 0x5CC5, 0x5CBE, 0x5CC7, 0x5CD9, 0x5CE9, 0x5CFD, 0x5CFA,
+    0x5CED, 0x5D8C, 0x5CEA, 0x5D0B, 0x5D15, 0x5D17, 0x5D5C, 0x5D1F,
+    0x5D1B, 0x5D11, 0x5D14, 0x5D22, 0x5D1A, 0x5D19, 0x5D18, 0x5D4C,
+    0x5D52, 0x5D4E, 0x5D4B, 0x5D6C, 0x5D73, 0x5D76, 0x5D87, 0x5D84,
+    0x5D82, 0x5DA2, 0x5D9D, 0x5DAC, 0x5DAE, 0x5DBD, 0x5D90, 0x5DB7,
+    0x5DBC, 0x5DC9, 0x5DCD, 0x5DD3, 0x5DD2, 0x5DD6, 0x5DDB, 0x5DEB,
+    0x5DF2, 0x5DF5, 0x5E0B, 0x5E1A, 0x5E19, 0x5E11, 0x5E1B, 0x5E36,
+    0x5E37, 0x5E44, 0x5E43, 0x5E40, 0x5E4E, 0x5E57, 0x5E54, 0x5E5F,
+    0x5E62, 0x5E64, 0x5E47, 0x5E75, 0x5E76, 0x5E7A, 0x9EBC, 0x5E7F,
+    0x5EA0, 0x5EC1, 0x5EC2, 0x5EC8, 0x5ED0, 0x5ECF},
+  { /* category 55 */
+    0x5ED6, 0x5EE3, 0x5EDD, 0x5EDA, 0x5EDB, 0x5EE2, 0x5EE1, 0x5EE8,
+    0x5EE9, 0x5EEC, 0x5EF1, 0x5EF3, 0x5EF0, 0x5EF4, 0x5EF8, 0x5EFE,
+    0x5F03, 0x5F09, 0x5F5D, 0x5F5C, 0x5F0B, 0x5F11, 0x5F16, 0x5F29,
+    0x5F2D, 0x5F38, 0x5F41, 0x5F48, 0x5F4C, 0x5F4E, 0x5F2F, 0x5F51,
+    0x5F56, 0x5F57, 0x5F59, 0x5F61, 0x5F6D, 0x5F73, 0x5F77, 0x5F83,
+    0x5F82, 0x5F7F, 0x5F8A, 0x5F88, 0x5F91, 0x5F87, 0x5F9E, 0x5F99,
+    0x5F98, 0x5FA0, 0x5FA8, 0x5FAD, 0x5FBC, 0x5FD6, 0x5FFB, 0x5FE4,
+    0x5FF8, 0x5FF1, 0x5FDD, 0x60B3, 0x5FFF, 0x6021, 0x6060, 0x6019,
+    0x6010, 0x6029, 0x600E, 0x6031, 0x601B, 0x6015, 0x602B, 0x6026,
+    0x600F, 0x603A, 0x605A, 0x6041, 0x606A, 0x6077, 0x605F, 0x604A,
+    0x6046, 0x604D, 0x6063, 0x6043, 0x6064, 0x6042, 0x606C, 0x606B,
+    0x6059, 0x6081, 0x608D, 0x60E7, 0x6083, 0x609A},
+  { /* category 56 */
+    0x6084, 0x609B, 0x6096, 0x6097, 0x6092, 0x60A7, 0x608B, 0x60E1,
+    0x60B8, 0x60E0, 0x60D3, 0x60B4, 0x5FF0, 0x60BD, 0x60C6, 0x60B5,
+    0x60D8, 0x614D, 0x6115, 0x6106, 0x60F6, 0x60F7, 0x6100, 0x60F4,
+    0x60FA, 0x6103, 0x6121, 0x60FB, 0x60F1, 0x610D, 0x610E, 0x6147,
+    0x613E, 0x6128, 0x6127, 0x614A, 0x613F, 0x613C, 0x612C, 0x6134,
+    0x613D, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159, 0x615A,
+    0x616B, 0x6174, 0x616F, 0x6165, 0x6171, 0x615F, 0x615D, 0x6153,
+    0x6175, 0x6199, 0x6196, 0x6187, 0x61AC, 0x6194, 0x619A, 0x618A,
+    0x6191, 0x61AB, 0x61AE, 0x61CC, 0x61CA, 0x61C9, 0x61F7, 0x61C8,
+    0x61C3, 0x61C6, 0x61BA, 0x61CB, 0x7F79, 0x61CD, 0x61E6, 0x61E3,
+    0x61F6, 0x61FA, 0x61F4, 0x61FF, 0x61FD, 0x61FC, 0x61FE, 0x6200,
+    0x6208, 0x6209, 0x620D, 0x620C, 0x6214, 0x621B},
+  { /* category 57 */
+    0x621E, 0x6221, 0x622A, 0x622E, 0x6230, 0x6232, 0x6233, 0x6241,
+    0x624E, 0x625E, 0x6263, 0x625B, 0x6260, 0x6268, 0x627C, 0x6282,
+    0x6289, 0x627E, 0x6292, 0x6293, 0x6296, 0x62D4, 0x6283, 0x6294,
+    0x62D7, 0x62D1, 0x62BB, 0x62CF, 0x62FF, 0x62C6, 0x64D4, 0x62C8,
+    0x62DC, 0x62CC, 0x62CA, 0x62C2, 0x62C7, 0x629B, 0x62C9, 0x630C,
+    0x62EE, 0x62F1, 0x6327, 0x6302, 0x6308, 0x62EF, 0x62F5, 0x6350,
+    0x633E, 0x634D, 0x641C, 0x634F, 0x6396, 0x638E, 0x6380, 0x63AB,
+    0x6376, 0x63A3, 0x638F, 0x6389, 0x639F, 0x63B5, 0x636B, 0x6369,
+    0x63BE, 0x63E9, 0x63C0, 0x63C6, 0x63E3, 0x63C9, 0x63D2, 0x63F6,
+    0x63C4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436, 0x651D,
+    0x6417, 0x6428, 0x640F, 0x6467, 0x646F, 0x6476, 0x644E, 0x652A,
+    0x6495, 0x6493, 0x64A5, 0x64A9, 0x6488, 0x64BC},
+  { /* category 58 */
+    0x64DA, 0x64D2, 0x64C5, 0x64C7, 0x64BB, 0x64D8, 0x64C2, 0x64F1,
+    0x64E7, 0x8209, 0x64E0, 0x64E1, 0x62AC, 0x64E3, 0x64EF, 0x652C,
+    0x64F6, 0x64F4, 0x64F2, 0x64FA, 0x6500, 0x64FD, 0x6518, 0x651C,
+    0x6505, 0x6524, 0x6523, 0x652B, 0x6534, 0x6535, 0x6537, 0x6536,
+    0x6538, 0x754B, 0x6548, 0x6556, 0x6555, 0x654D, 0x6558, 0x655E,
+    0x655D, 0x6572, 0x6578, 0x6582, 0x6583, 0x8B8A, 0x659B, 0x659F,
+    0x65AB, 0x65B7, 0x65C3, 0x65C6, 0x65C1, 0x65C4, 0x65CC, 0x65D2,
+    0x65DB, 0x65D9, 0x65E0, 0x65E1, 0x65F1, 0x6772, 0x660A, 0x6603,
+    0x65FB, 0x6773, 0x6635, 0x6636, 0x6634, 0x661C, 0x664F, 0x6644,
+    0x6649, 0x6641, 0x665E, 0x665D, 0x6664, 0x6667, 0x6668, 0x665F,
+    0x6662, 0x6670, 0x6683, 0x6688, 0x668E, 0x6689, 0x6684, 0x6698,
+    0x669D, 0x66C1, 0x66B9, 0x66C9, 0x66BE, 0x66BC},
+  { /* category 59 */
+    0x66C4, 0x66B8, 0x66D6, 0x66DA, 0x66E0, 0x663F, 0x66E6, 0x66E9,
+    0x66F0, 0x66F5, 0x66F7, 0x670F, 0x6716, 0x671E, 0x6726, 0x6727,
+    0x9738, 0x672E, 0x673F, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746,
+    0x675E, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67A9,
+    0x677C, 0x676A, 0x678C, 0x678B, 0x67A6, 0x67A1, 0x6785, 0x67B7,
+    0x67EF, 0x67B4, 0x67EC, 0x67B3, 0x67E9, 0x67B8, 0x67E4, 0x67DE,
+    0x67DD, 0x67E2, 0x67EE, 0x67B9, 0x67CE, 0x67C6, 0x67E7, 0x6A9C,
+    0x681E, 0x6846, 0x6829, 0x6840, 0x684D, 0x6832, 0x684E, 0x68B3,
+    0x682B, 0x6859, 0x6863, 0x6877, 0x687F, 0x689F, 0x688F, 0x68AD,
+    0x6894, 0x689D, 0x689B, 0x6883, 0x6AAE, 0x68B9, 0x6874, 0x68B5,
+    0x68A0, 0x68BA, 0x690F, 0x688D, 0x687E, 0x6901, 0x68CA, 0x6908,
+    0x68D8, 0x6922, 0x6926, 0x68E1, 0x690C, 0x68CD},
+  { /* category 60 */
+    0x68D4, 0x68E7, 0x68D5, 0x6936, 0x6912, 0x6904, 0x68D7, 0x68E3,
+    0x6925, 0x68F9, 0x68E0, 0x68EF, 0x6928, 0x692A, 0x691A, 0x6923,
+    0x6921, 0x68C6, 0x6979, 0x6977, 0x695C, 0x6978, 0x696B, 0x6954,
+    0x697E, 0x696E, 0x6939, 0x6974, 0x693D, 0x6959, 0x6930, 0x6961,
+    0x695E, 0x695D, 0x6981, 0x696A, 0x69B2, 0x69AE, 0x69D0, 0x69BF,
+    0x69C1, 0x69D3, 0x69BE, 0x69CE, 0x5BE8, 0x69CA, 0x69DD, 0x69BB,
+    0x69C3, 0x69A7, 0x6A2E, 0x6991, 0x69A0, 0x699C, 0x6995, 0x69B4,
+    0x69DE, 0x69E8, 0x6A02, 0x6A1B, 0x69FF, 0x6B0A, 0x69F9, 0x69F2,
+    0x69E7, 0x6A05, 0x69B1, 0x6A1E, 0x69ED, 0x6A14, 0x69EB, 0x6A0A,
+    0x6A12, 0x6AC1, 0x6A23, 0x6A13, 0x6A44, 0x6A0C, 0x6A72, 0x6A36,
+    0x6A78, 0x6A47, 0x6A62, 0x6A59, 0x6A66, 0x6A48, 0x6A38, 0x6A22,
+    0x6A90, 0x6A8D, 0x6AA0, 0x6A84, 0x6AA2, 0x6AA3},
+  { /* category 61 */
+    0x6A97, 0x8617, 0x6ABB, 0x6AC3, 0x6AC2, 0x6AB8, 0x6AB3, 0x6AAC,
+    0x6ADE, 0x6AD1, 0x6ADF, 0x6AAA, 0x6ADA, 0x6AEA, 0x6AFB, 0x6B05,
+    0x8616, 0x6AFA, 0x6B12, 0x6B16, 0x9B31, 0x6B1F, 0x6B38, 0x6B37,
+    0x76DC, 0x6B39, 0x98EE, 0x6B47, 0x6B43, 0x6B49, 0x6B50, 0x6B59,
+    0x6B54, 0x6B5B, 0x6B5F, 0x6B61, 0x6B78, 0x6B79, 0x6B7F, 0x6B80,
+    0x6B84, 0x6B83, 0x6B8D, 0x6B98, 0x6B95, 0x6B9E, 0x6BA4, 0x6BAA,
+    0x6BAB, 0x6BAF, 0x6BB2, 0x6BB1, 0x6BB3, 0x6BB7, 0x6BBC, 0x6BC6,
+    0x6BCB, 0x6BD3, 0x6BDF, 0x6BEC, 0x6BEB, 0x6BF3, 0x6BEF, 0x9EBE,
+    0x6C08, 0x6C13, 0x6C14, 0x6C1B, 0x6C24, 0x6C23, 0x6C5E, 0x6C55,
+    0x6C62, 0x6C6A, 0x6C82, 0x6C8D, 0x6C9A, 0x6C81, 0x6C9B, 0x6C7E,
+    0x6C68, 0x6C73, 0x6C92, 0x6C90, 0x6CC4, 0x6CF1, 0x6CD3, 0x6CBD,
+    0x6CD7, 0x6CC5, 0x6CDD, 0x6CAE, 0x6CB1, 0x6CBE},
+  { /* category 62 */
+    0x6CBA, 0x6CDB, 0x6CEF, 0x6CD9, 0x6CEA, 0x6D1F, 0x884D, 0x6D36,
+    0x6D2B, 0x6D3D, 0x6D38, 0x6D19, 0x6D35, 0x6D33, 0x6D12, 0x6D0C,
+    0x6D63, 0x6D93, 0x6D64, 0x6D5A, 0x6D79, 0x6D59, 0x6D8E, 0x6D95,
+    0x6FE4, 0x6D85, 0x6DF9, 0x6E15, 0x6E0A, 0x6DB5, 0x6DC7, 0x6DE6,
+    0x6DB8, 0x6DC6, 0x6DEC, 0x6DDE, 0x6DCC, 0x6DE8, 0x6DD2, 0x6DC5,
+    0x6DFA, 0x6DD9, 0x6DE4, 0x6DD5, 0x6DEA, 0x6DEE, 0x6E2D, 0x6E6E,
+    0x6E2E, 0x6E19, 0x6E72, 0x6E5F, 0x6E3E, 0x6E23, 0x6E6B, 0x6E2B,
+    0x6E76, 0x6E4D, 0x6E1F, 0x6E43, 0x6E3A, 0x6E4E, 0x6E24, 0x6EFF,
+    0x6E1D, 0x6E38, 0x6E82, 0x6EAA, 0x6E98, 0x6EC9, 0x6EB7, 0x6ED3,
+    0x6EBD, 0x6EAF, 0x6EC4, 0x6EB2, 0x6ED4, 0x6ED5, 0x6E8F, 0x6EA5,
+    0x6EC2, 0x6E9F, 0x6F41, 0x6F11, 0x704C, 0x6EEC, 0x6EF8, 0x6EFE,
+    0x6F3F, 0x6EF2, 0x6F31, 0x6EEF, 0x6F32, 0x6ECC},
+  { /* category 63 */
+    0x6F3E, 0x6F13, 0x6EF7, 0x6F86, 0x6F7A, 0x6F78, 0x6F81, 0x6F80,
+    0x6F6F, 0x6F5B, 0x6FF3, 0x6F6D, 0x6F82, 0x6F7C, 0x6F58, 0x6F8E,
+    0x6F91, 0x6FC2, 0x6F66, 0x6FB3, 0x6FA3, 0x6FA1, 0x6FA4, 0x6FB9,
+    0x6FC6, 0x6FAA, 0x6FDF, 0x6FD5, 0x6FEC, 0x6FD4, 0x6FD8, 0x6FF1,
+    0x6FEE, 0x6FDB, 0x7009, 0x700B, 0x6FFA, 0x7011, 0x7001, 0x700F,
+    0x6FFE, 0x701B, 0x701A, 0x6F74, 0x701D, 0x7018, 0x701F, 0x7030,
+    0x703E, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70AF, 0x70F1,
+    0x70AC, 0x70B8, 0x70B3, 0x70AE, 0x70DF, 0x70CB, 0x70DD, 0x70D9,
+    0x7109, 0x70FD, 0x711C, 0x7119, 0x7165, 0x7155, 0x7188, 0x7166,
+    0x7162, 0x714C, 0x7156, 0x716C, 0x718F, 0x71FB, 0x7184, 0x7195,
+    0x71A8, 0x71AC, 0x71D7, 0x71B9, 0x71BE, 0x71D2, 0x71C9, 0x71D4,
+    0x71CE, 0x71E0, 0x71EC, 0x71E7, 0x71F5, 0x71FC},
+  { /* category 64 */
+    0x71F9, 0x71FF, 0x720D, 0x7210, 0x721B, 0x7228, 0x722D, 0x722C,
+    0x7230, 0x7232, 0x723B, 0x723C, 0x723F, 0x7240, 0x7246, 0x724B,
+    0x7258, 0x7274, 0x727E, 0x7282, 0x7281, 0x7287, 0x7292, 0x7296,
+    0x72A2, 0x72A7, 0x72B9, 0x72B2, 0x72C3, 0x72C6, 0x72C4, 0x72CE,
+    0x72D2, 0x72E2, 0x72E0, 0x72E1, 0x72F9, 0x72F7, 0x500F, 0x7317,
+    0x730A, 0x731C, 0x7316, 0x731D, 0x7334, 0x732F, 0x7329, 0x7325,
+    0x733E, 0x734E, 0x734F, 0x9ED8, 0x7357, 0x736A, 0x7368, 0x7370,
+    0x7378, 0x7375, 0x737B, 0x737A, 0x73C8, 0x73B3, 0x73CE, 0x73BB,
+    0x73C0, 0x73E5, 0x73EE, 0x73DE, 0x74A2, 0x7405, 0x746F, 0x7425,
+    0x73F8, 0x7432, 0x743A, 0x7455, 0x743F, 0x745F, 0x7459, 0x7441,
+    0x745C, 0x7469, 0x7470, 0x7463, 0x746A, 0x7476, 0x747E, 0x748B,
+    0x749E, 0x74A7, 0x74CA, 0x74CF, 0x74D4, 0x73F1},
+  { /* category 65 */
+    0x74E0, 0x74E3, 0x74E7, 0x74E9, 0x74EE, 0x74F2, 0x74F0, 0x74F1,
+    0x74F8, 0x74F7, 0x7504, 0x7503, 0x7505, 0x750C, 0x750E, 0x750D,
+    0x7515, 0x7513, 0x751E, 0x7526, 0x752C, 0x753C, 0x7544, 0x754D,
+    0x754A, 0x7549, 0x755B, 0x7546, 0x755A, 0x7569, 0x7564, 0x7567,
+    0x756B, 0x756D, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, 0x758A,
+    0x7589, 0x7582, 0x7594, 0x759A, 0x759D, 0x75A5, 0x75A3, 0x75C2,
+    0x75B3, 0x75C3, 0x75B5, 0x75BD, 0x75B8, 0x75BC, 0x75B1, 0x75CD,
+    0x75CA, 0x75D2, 0x75D9, 0x75E3, 0x75DE, 0x75FE, 0x75FF, 0x75FC,
+    0x7601, 0x75F0, 0x75FA, 0x75F2, 0x75F3, 0x760B, 0x760D, 0x7609,
+    0x761F, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630,
+    0x763B, 0x7647, 0x7648, 0x7646, 0x765C, 0x7658, 0x7661, 0x7662,
+    0x7668, 0x7669, 0x766A, 0x7667, 0x766C, 0x7670},
+  { /* category 66 */
+    0x7672, 0x7676, 0x7678, 0x767C, 0x7680, 0x7683, 0x7688, 0x768B,
+    0x768E, 0x7696, 0x7693, 0x7699, 0x769A, 0x76B0, 0x76B4, 0x76B8,
+    0x76B9, 0x76BA, 0x76C2, 0x76CD, 0x76D6, 0x76D2, 0x76DE, 0x76E1,
+    0x76E5, 0x76E7, 0x76EA, 0x862F, 0x76FB, 0x7708, 0x7707, 0x7704,
+    0x7729, 0x7724, 0x771E, 0x7725, 0x7726, 0x771B, 0x7737, 0x7738,
+    0x7747, 0x775A, 0x7768, 0x776B, 0x775B, 0x7765, 0x777F, 0x777E,
+    0x7779, 0x778E, 0x778B, 0x7791, 0x77A0, 0x779E, 0x77B0, 0x77B6,
+    0x77B9, 0x77BF, 0x77BC, 0x77BD, 0x77BB, 0x77C7, 0x77CD, 0x77D7,
+    0x77DA, 0x77DC, 0x77E3, 0x77EE, 0x77FC, 0x780C, 0x7812, 0x7926,
+    0x7820, 0x792A, 0x7845, 0x788E, 0x7874, 0x7886, 0x787C, 0x789A,
+    0x788C, 0x78A3, 0x78B5, 0x78AA, 0x78AF, 0x78D1, 0x78C6, 0x78CB,
+    0x78D4, 0x78BE, 0x78BC, 0x78C5, 0x78CA, 0x78EC},
+  { /* category 67 */
+    0x78E7, 0x78DA, 0x78FD, 0x78F4, 0x7907, 0x7912, 0x7911, 0x7919,
+    0x792C, 0x792B, 0x7940, 0x7960, 0x7957, 0x795F, 0x795A, 0x7955,
+    0x7953, 0x797A, 0x797F, 0x798A, 0x799D, 0x79A7, 0x9F4B, 0x79AA,
+    0x79AE, 0x79B3, 0x79B9, 0x79BA, 0x79C9, 0x79D5, 0x79E7, 0x79EC,
+    0x79E1, 0x79E3, 0x7A08, 0x7A0D, 0x7A18, 0x7A19, 0x7A20, 0x7A1F,
+    0x7980, 0x7A31, 0x7A3B, 0x7A3E, 0x7A37, 0x7A43, 0x7A57, 0x7A49,
+    0x7A61, 0x7A62, 0x7A69, 0x9F9D, 0x7A70, 0x7A79, 0x7A7D, 0x7A88,
+    0x7A97, 0x7A95, 0x7A98, 0x7A96, 0x7AA9, 0x7AC8, 0x7AB0, 0x7AB6,
+    0x7AC5, 0x7AC4, 0x7ABF, 0x9083, 0x7AC7, 0x7ACA, 0x7ACD, 0x7ACF,
+    0x7AD5, 0x7AD3, 0x7AD9, 0x7ADA, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE6,
+    0x7AED, 0x7AF0, 0x7B02, 0x7B0F, 0x7B0A, 0x7B06, 0x7B33, 0x7B18,
+    0x7B19, 0x7B1E, 0x7B35, 0x7B28, 0x7B36, 0x7B50},
+  { /* category 68 */
+    0x7B7A, 0x7B04, 0x7B4D, 0x7B0B, 0x7B4C, 0x7B45, 0x7B75, 0x7B65,
+    0x7B74, 0x7B67, 0x7B70, 0x7B71, 0x7B6C, 0x7B6E, 0x7B9D, 0x7B98,
+    0x7B9F, 0x7B8D, 0x7B9C, 0x7B9A, 0x7B8B, 0x7B92, 0x7B8F, 0x7B5D,
+    0x7B99, 0x7BCB, 0x7BC1, 0x7BCC, 0x7BCF, 0x7BB4, 0x7BC6, 0x7BDD,
+    0x7BE9, 0x7C11, 0x7C14, 0x7BE6, 0x7BE5, 0x7C60, 0x7C00, 0x7C07,
+    0x7C13, 0x7BF3, 0x7BF7, 0x7C17, 0x7C0D, 0x7BF6, 0x7C23, 0x7C27,
+    0x7C2A, 0x7C1F, 0x7C37, 0x7C2B, 0x7C3D, 0x7C4C, 0x7C43, 0x7C54,
+    0x7C4F, 0x7C40, 0x7C50, 0x7C58, 0x7C5F, 0x7C64, 0x7C56, 0x7C65,
+    0x7C6C, 0x7C75, 0x7C83, 0x7C90, 0x7CA4, 0x7CAD, 0x7CA2, 0x7CAB,
+    0x7CA1, 0x7CA8, 0x7CB3, 0x7CB2, 0x7CB1, 0x7CAE, 0x7CB9, 0x7CBD,
+    0x7CC0, 0x7CC5, 0x7CC2, 0x7CD8, 0x7CD2, 0x7CDC, 0x7CE2, 0x9B3B,
+    0x7CEF, 0x7CF2, 0x7CF4, 0x7CF6, 0x7CFA, 0x7D06},
+  { /* category 69 */
+    0x7D02, 0x7D1C, 0x7D15, 0x7D0A, 0x7D45, 0x7D4B, 0x7D2E, 0x7D32,
+    0x7D3F, 0x7D35, 0x7D46, 0x7D73, 0x7D56, 0x7D4E, 0x7D72, 0x7D68,
+    0x7D6E, 0x7D4F, 0x7D63, 0x7D93, 0x7D89, 0x7D5B, 0x7D8F, 0x7D7D,
+    0x7D9B, 0x7DBA, 0x7DAE, 0x7DA3, 0x7DB5, 0x7DC7, 0x7DBD, 0x7DAB,
+    0x7E3D, 0x7DA2, 0x7DAF, 0x7DDC, 0x7DB8, 0x7D9F, 0x7DB0, 0x7DD8,
+    0x7DDD, 0x7DE4, 0x7DDE, 0x7DFB, 0x7DF2, 0x7DE1, 0x7E05, 0x7E0A,
+    0x7E23, 0x7E21, 0x7E12, 0x7E31, 0x7E1F, 0x7E09, 0x7E0B, 0x7E22,
+    0x7E46, 0x7E66, 0x7E3B, 0x7E35, 0x7E39, 0x7E43, 0x7E37, 0x7E32,
+    0x7E3A, 0x7E67, 0x7E5D, 0x7E56, 0x7E5E, 0x7E59, 0x7E5A, 0x7E79,
+    0x7E6A, 0x7E69, 0x7E7C, 0x7E7B, 0x7E83, 0x7DD5, 0x7E7D, 0x8FAE,
+    0x7E7F, 0x7E88, 0x7E89, 0x7E8C, 0x7E92, 0x7E90, 0x7E93, 0x7E94,
+    0x7E96, 0x7E8E, 0x7E9B, 0x7E9C, 0x7F38, 0x7F3A},
+  { /* category 70 */
+    0x7F45, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F50, 0x7F51, 0x7F55, 0x7F54,
+    0x7F58, 0x7F5F, 0x7F60, 0x7F68, 0x7F69, 0x7F67, 0x7F78, 0x7F82,
+    0x7F86, 0x7F83, 0x7F88, 0x7F87, 0x7F8C, 0x7F94, 0x7F9E, 0x7F9D,
+    0x7F9A, 0x7FA3, 0x7FAF, 0x7FB2, 0x7FB9, 0x7FAE, 0x7FB6, 0x7FB8,
+    0x8B71, 0x7FC5, 0x7FC6, 0x7FCA, 0x7FD5, 0x7FD4, 0x7FE1, 0x7FE6,
+    0x7FE9, 0x7FF3, 0x7FF9, 0x98DC, 0x8006, 0x8004, 0x800B, 0x8012,
+    0x8018, 0x8019, 0x801C, 0x8021, 0x8028, 0x803F, 0x803B, 0x804A,
+    0x8046, 0x8052, 0x8058, 0x805A, 0x805F, 0x8062, 0x8068, 0x8073,
+    0x8072, 0x8070, 0x8076, 0x8079, 0x807D, 0x807F, 0x8084, 0x8086,
+    0x8085, 0x809B, 0x8093, 0x809A, 0x80AD, 0x5190, 0x80AC, 0x80DB,
+    0x80E5, 0x80D9, 0x80DD, 0x80C4, 0x80DA, 0x80D6, 0x8109, 0x80EF,
+    0x80F1, 0x811B, 0x8129, 0x8123, 0x812F, 0x814B},
+  { /* category 71 */
+    0x968B, 0x8146, 0x813E, 0x8153, 0x8151, 0x80FC, 0x8171, 0x816E,
+    0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818A, 0x8180, 0x8182,
+    0x81A0, 0x8195, 0x81A4, 0x81A3, 0x815F, 0x8193, 0x81A9, 0x81B0,
+    0x81B5, 0x81BE, 0x81B8, 0x81BD, 0x81C0, 0x81C2, 0x81BA, 0x81C9,
+    0x81CD, 0x81D1, 0x81D9, 0x81D8, 0x81C8, 0x81DA, 0x81DF, 0x81E0,
+    0x81E7, 0x81FA, 0x81FB, 0x81FE, 0x8201, 0x8202, 0x8205, 0x8207,
+    0x820A, 0x820D, 0x8210, 0x8216, 0x8229, 0x822B, 0x8238, 0x8233,
+    0x8240, 0x8259, 0x8258, 0x825D, 0x825A, 0x825F, 0x8264, 0x8262,
+    0x8268, 0x826A, 0x826B, 0x822E, 0x8271, 0x8277, 0x8278, 0x827E,
+    0x828D, 0x8292, 0x82AB, 0x829F, 0x82BB, 0x82AC, 0x82E1, 0x82E3,
+    0x82DF, 0x82D2, 0x82F4, 0x82F3, 0x82FA, 0x8393, 0x8303, 0x82FB,
+    0x82F9, 0x82DE, 0x8306, 0x82DC, 0x8309, 0x82D9},
+  { /* category 72 */
+    0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350,
+    0x8345, 0x832F, 0x832B, 0x8317, 0x8318, 0x8385, 0x839A, 0x83AA,
+    0x839F, 0x83A2, 0x8396, 0x8323, 0x838E, 0x8387, 0x838A, 0x837C,
+    0x83B5, 0x8373, 0x8375, 0x83A0, 0x8389, 0x83A8, 0x83F4, 0x8413,
+    0x83EB, 0x83CE, 0x83FD, 0x8403, 0x83D8, 0x840B, 0x83C1, 0x83F7,
+    0x8407, 0x83E0, 0x83F2, 0x840D, 0x8422, 0x8420, 0x83BD, 0x8438,
+    0x8506, 0x83FB, 0x846D, 0x842A, 0x843C, 0x855A, 0x8484, 0x8477,
+    0x846B, 0x84AD, 0x846E, 0x8482, 0x8469, 0x8446, 0x842C, 0x846F,
+    0x8479, 0x8435, 0x84CA, 0x8462, 0x84B9, 0x84BF, 0x849F, 0x84D9,
+    0x84CD, 0x84BB, 0x84DA, 0x84D0, 0x84C1, 0x84C6, 0x84D6, 0x84A1,
+    0x8521, 0x84FF, 0x84F4, 0x8517, 0x8518, 0x852C, 0x851F, 0x8515,
+    0x8514, 0x84FC, 0x8540, 0x8563, 0x8558, 0x8548},
+  { /* category 73 */
+    0x8541, 0x8602, 0x854B, 0x8555, 0x8580, 0x85A4, 0x8588, 0x8591,
+    0x858A, 0x85A8, 0x856D, 0x8594, 0x859B, 0x85EA, 0x8587, 0x859C,
+    0x8577, 0x857E, 0x8590, 0x85C9, 0x85BA, 0x85CF, 0x85B9, 0x85D0,
+    0x85D5, 0x85DD, 0x85E5, 0x85DC, 0x85F9, 0x860A, 0x8613, 0x860B,
+    0x85FE, 0x85FA, 0x8606, 0x8622, 0x861A, 0x8630, 0x863F, 0x864D,
+    0x4E55, 0x8654, 0x865F, 0x8667, 0x8671, 0x8693, 0x86A3, 0x86A9,
+    0x86AA, 0x868B, 0x868C, 0x86B6, 0x86AF, 0x86C4, 0x86C6, 0x86B0,
+    0x86C9, 0x8823, 0x86AB, 0x86D4, 0x86DE, 0x86E9, 0x86EC, 0x86DF,
+    0x86DB, 0x86EF, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, 0x86FB,
+    0x8711, 0x8709, 0x870D, 0x86F9, 0x870A, 0x8734, 0x873F, 0x8737,
+    0x873B, 0x8725, 0x8729, 0x871A, 0x8760, 0x875F, 0x8778, 0x874C,
+    0x874E, 0x8774, 0x8757, 0x8768, 0x876E, 0x8759},
+  { /* category 74 */
+    0x8753, 0x8763, 0x876A, 0x8805, 0x87A2, 0x879F, 0x8782, 0x87AF,
+    0x87CB, 0x87BD, 0x87C0, 0x87D0, 0x96D6, 0x87AB, 0x87C4, 0x87B3,
+    0x87C7, 0x87C6, 0x87BB, 0x87EF, 0x87F2, 0x87E0, 0x880F, 0x880D,
+    0x87FE, 0x87F6, 0x87F7, 0x880E, 0x87D2, 0x8811, 0x8816, 0x8815,
+    0x8822, 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883B, 0x8844,
+    0x8842, 0x8852, 0x8859, 0x885E, 0x8862, 0x886B, 0x8881, 0x887E,
+    0x889E, 0x8875, 0x887D, 0x88B5, 0x8872, 0x8882, 0x8897, 0x8892,
+    0x88AE, 0x8899, 0x88A2, 0x888D, 0x88A4, 0x88B0, 0x88BF, 0x88B1,
+    0x88C3, 0x88C4, 0x88D4, 0x88D8, 0x88D9, 0x88DD, 0x88F9, 0x8902,
+    0x88FC, 0x88F4, 0x88E8, 0x88F2, 0x8904, 0x890C, 0x890A, 0x8913,
+    0x8943, 0x891E, 0x8925, 0x892A, 0x892B, 0x8941, 0x8944, 0x893B,
+    0x8936, 0x8938, 0x894C, 0x891D, 0x8960, 0x895E},
+  { /* category 75 */
+    0x8966, 0x8964, 0x896D, 0x896A, 0x896F, 0x8974, 0x8977, 0x897E,
+    0x8983, 0x8988, 0x898A, 0x8993, 0x8998, 0x89A1, 0x89A9, 0x89A6,
+    0x89AC, 0x89AF, 0x89B2, 0x89BA, 0x89BD, 0x89BF, 0x89C0, 0x89DA,
+    0x89DC, 0x89DD, 0x89E7, 0x89F4, 0x89F8, 0x8A03, 0x8A16, 0x8A10,
+    0x8A0C, 0x8A1B, 0x8A1D, 0x8A25, 0x8A36, 0x8A41, 0x8A5B, 0x8A52,
+    0x8A46, 0x8A48, 0x8A7C, 0x8A6D, 0x8A6C, 0x8A62, 0x8A85, 0x8A82,
+    0x8A84, 0x8AA8, 0x8AA1, 0x8A91, 0x8AA5, 0x8AA6, 0x8A9A, 0x8AA3,
+    0x8AC4, 0x8ACD, 0x8AC2, 0x8ADA, 0x8AEB, 0x8AF3, 0x8AE7, 0x8AE4,
+    0x8AF1, 0x8B14, 0x8AE0, 0x8AE2, 0x8AF7, 0x8ADE, 0x8ADB, 0x8B0C,
+    0x8B07, 0x8B1A, 0x8AE1, 0x8B16, 0x8B10, 0x8B17, 0x8B20, 0x8B33,
+    0x97AB, 0x8B26, 0x8B2B, 0x8B3E, 0x8B28, 0x8B41, 0x8B4C, 0x8B4F,
+    0x8B4E, 0x8B49, 0x8B56, 0x8B5B, 0x8B5A, 0x8B6B},
+  { /* category 76 */
+    0x8B5F, 0x8B6C, 0x8B6F, 0x8B74, 0x8B7D, 0x8B80, 0x8B8C, 0x8B8E,
+    0x8B92, 0x8B93, 0x8B96, 0x8B99, 0x8B9A, 0x8C3A, 0x8C41, 0x8C3F,
+    0x8C48, 0x8C4C, 0x8C4E, 0x8C50, 0x8C55, 0x8C62, 0x8C6C, 0x8C78,
+    0x8C7A, 0x8C82, 0x8C89, 0x8C85, 0x8C8A, 0x8C8D, 0x8C8E, 0x8C94,
+    0x8C7C, 0x8C98, 0x621D, 0x8CAD, 0x8CAA, 0x8CBD, 0x8CB2, 0x8CB3,
+    0x8CAE, 0x8CB6, 0x8CC8, 0x8CC1, 0x8CE4, 0x8CE3, 0x8CDA, 0x8CFD,
+    0x8CFA, 0x8CFB, 0x8D04, 0x8D05, 0x8D0A, 0x8D07, 0x8D0F, 0x8D0D,
+    0x8D10, 0x9F4E, 0x8D13, 0x8CCD, 0x8D14, 0x8D16, 0x8D67, 0x8D6D,
+    0x8D71, 0x8D73, 0x8D81, 0x8D99, 0x8DC2, 0x8DBE, 0x8DBA, 0x8DCF,
+    0x8DDA, 0x8DD6, 0x8DCC, 0x8DDB, 0x8DCB, 0x8DEA, 0x8DEB, 0x8DDF,
+    0x8DE3, 0x8DFC, 0x8E08, 0x8E09, 0x8DFF, 0x8E1D, 0x8E1E, 0x8E10,
+    0x8E1F, 0x8E42, 0x8E35, 0x8E30, 0x8E34, 0x8E4A},
+  { /* category 77 */
+    0x8E47, 0x8E49, 0x8E4C, 0x8E50, 0x8E48, 0x8E59, 0x8E64, 0x8E60,
+    0x8E2A, 0x8E63, 0x8E55, 0x8E76, 0x8E72, 0x8E7C, 0x8E81, 0x8E87,
+    0x8E85, 0x8E84, 0x8E8B, 0x8E8A, 0x8E93, 0x8E91, 0x8E94, 0x8E99,
+    0x8EAA, 0x8EA1, 0x8EAC, 0x8EB0, 0x8EC6, 0x8EB1, 0x8EBE, 0x8EC5,
+    0x8EC8, 0x8ECB, 0x8EDB, 0x8EE3, 0x8EFC, 0x8EFB, 0x8EEB, 0x8EFE,
+    0x8F0A, 0x8F05, 0x8F15, 0x8F12, 0x8F19, 0x8F13, 0x8F1C, 0x8F1F,
+    0x8F1B, 0x8F0C, 0x8F26, 0x8F33, 0x8F3B, 0x8F39, 0x8F45, 0x8F42,
+    0x8F3E, 0x8F4C, 0x8F49, 0x8F46, 0x8F4E, 0x8F57, 0x8F5C, 0x8F62,
+    0x8F63, 0x8F64, 0x8F9C, 0x8F9F, 0x8FA3, 0x8FAD, 0x8FAF, 0x8FB7,
+    0x8FDA, 0x8FE5, 0x8FE2, 0x8FEA, 0x8FEF, 0x9087, 0x8FF4, 0x9005,
+    0x8FF9, 0x8FFA, 0x9011, 0x9015, 0x9021, 0x900D, 0x901E, 0x9016,
+    0x900B, 0x9027, 0x9036, 0x9035, 0x9039, 0x8FF8},
+  { /* category 78 */
+    0x904F, 0x9050, 0x9051, 0x9052, 0x900E, 0x9049, 0x903E, 0x9056,
+    0x9058, 0x905E, 0x9068, 0x906F, 0x9076, 0x96A8, 0x9072, 0x9082,
+    0x907D, 0x9081, 0x9080, 0x908A, 0x9089, 0x908F, 0x90A8, 0x90AF,
+    0x90B1, 0x90B5, 0x90E2, 0x90E4, 0x6248, 0x90DB, 0x9102, 0x9112,
+    0x9119, 0x9132, 0x9130, 0x914A, 0x9156, 0x9158, 0x9163, 0x9165,
+    0x9169, 0x9173, 0x9172, 0x918B, 0x9189, 0x9182, 0x91A2, 0x91AB,
+    0x91AF, 0x91AA, 0x91B5, 0x91B4, 0x91BA, 0x91C0, 0x91C1, 0x91C9,
+    0x91CB, 0x91D0, 0x91D6, 0x91DF, 0x91E1, 0x91DB, 0x91FC, 0x91F5,
+    0x91F6, 0x921E, 0x91FF, 0x9214, 0x922C, 0x9215, 0x9211, 0x925E,
+    0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923F, 0x924B,
+    0x9250, 0x929C, 0x9296, 0x9293, 0x929B, 0x925A, 0x92CF, 0x92B9,
+    0x92B7, 0x92E9, 0x930F, 0x92FA, 0x9344, 0x932E},
+  { /* category 79 */
+    0x9319, 0x9322, 0x931A, 0x9323, 0x933A, 0x9335, 0x933B, 0x935C,
+    0x9360, 0x937C, 0x936E, 0x9356, 0x93B0, 0x93AC, 0x93AD, 0x9394,
+    0x93B9, 0x93D6, 0x93D7, 0x93E8, 0x93E5, 0x93D8, 0x93C3, 0x93DD,
+    0x93D0, 0x93C8, 0x93E4, 0x941A, 0x9414, 0x9413, 0x9403, 0x9407,
+    0x9410, 0x9436, 0x942B, 0x9435, 0x9421, 0x943A, 0x9441, 0x9452,
+    0x9444, 0x945B, 0x9460, 0x9462, 0x945E, 0x946A, 0x9229, 0x9470,
+    0x9475, 0x9477, 0x947D, 0x945A, 0x947C, 0x947E, 0x9481, 0x947F,
+    0x9582, 0x9587, 0x958A, 0x9594, 0x9596, 0x9598, 0x9599, 0x95A0,
+    0x95A8, 0x95A7, 0x95AD, 0x95BC, 0x95BB, 0x95B9, 0x95BE, 0x95CA,
+    0x6FF6, 0x95C3, 0x95CD, 0x95CC, 0x95D5, 0x95D4, 0x95D6, 0x95DC,
+    0x95E1, 0x95E5, 0x95E2, 0x9621, 0x9628, 0x962E, 0x962F, 0x9642,
+    0x964C, 0x964F, 0x964B, 0x9677, 0x965C, 0x965E},
+  { /* category 80 */
+    0x965D, 0x965F, 0x9666, 0x9672, 0x966C, 0x968D, 0x9698, 0x9695,
+    0x9697, 0x96AA, 0x96A7, 0x96B1, 0x96B2, 0x96B0, 0x96B4, 0x96B6,
+    0x96B8, 0x96B9, 0x96CE, 0x96CB, 0x96C9, 0x96CD, 0x894D, 0x96DC,
+    0x970D, 0x96D5, 0x96F9, 0x9704, 0x9706, 0x9708, 0x9713, 0x970E,
+    0x9711, 0x970F, 0x9716, 0x9719, 0x9724, 0x972A, 0x9730, 0x9739,
+    0x973D, 0x973E, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, 0x975C,
+    0x9760, 0x9764, 0x9766, 0x9768, 0x52D2, 0x976B, 0x9771, 0x9779,
+    0x9785, 0x977C, 0x9781, 0x977A, 0x9786, 0x978B, 0x978F, 0x9790,
+    0x979C, 0x97A8, 0x97A6, 0x97A3, 0x97B3, 0x97B4, 0x97C3, 0x97C6,
+    0x97C8, 0x97CB, 0x97DC, 0x97ED, 0x9F4F, 0x97F2, 0x7ADF, 0x97F6,
+    0x97F5, 0x980F, 0x980C, 0x9838, 0x9824, 0x9821, 0x9837, 0x983D,
+    0x9846, 0x984F, 0x984B, 0x986B, 0x986F, 0x9870},
+  { /* category 81 */
+    0x9871, 0x9874, 0x9873, 0x98AA, 0x98AF, 0x98B1, 0x98B6, 0x98C4,
+    0x98C3, 0x98C6, 0x98E9, 0x98EB, 0x9903, 0x9909, 0x9912, 0x9914,
+    0x9918, 0x9921, 0x991D, 0x991E, 0x9924, 0x9920, 0x992C, 0x992E,
+    0x993D, 0x993E, 0x9942, 0x9949, 0x9945, 0x9950, 0x994B, 0x9951,
+    0x9952, 0x994C, 0x9955, 0x9997, 0x9998, 0x99A5, 0x99AD, 0x99AE,
+    0x99BC, 0x99DF, 0x99DB, 0x99DD, 0x99D8, 0x99D1, 0x99ED, 0x99EE,
+    0x99F1, 0x99F2, 0x99FB, 0x99F8, 0x9A01, 0x9A0F, 0x9A05, 0x99E2,
+    0x9A19, 0x9A2B, 0x9A37, 0x9A45, 0x9A42, 0x9A40, 0x9A43, 0x9A3E,
+    0x9A55, 0x9A4D, 0x9A5B, 0x9A57, 0x9A5F, 0x9A62, 0x9A65, 0x9A64,
+    0x9A69, 0x9A6B, 0x9A6A, 0x9AAD, 0x9AB0, 0x9ABC, 0x9AC0, 0x9ACF,
+    0x9AD1, 0x9AD3, 0x9AD4, 0x9ADE, 0x9ADF, 0x9AE2, 0x9AE3, 0x9AE6,
+    0x9AEF, 0x9AEB, 0x9AEE, 0x9AF4, 0x9AF1, 0x9AF7},
+  { /* category 82 */
+    0x9AFB, 0x9B06, 0x9B18, 0x9B1A, 0x9B1F, 0x9B22, 0x9B23, 0x9B25,
+    0x9B27, 0x9B28, 0x9B29, 0x9B2A, 0x9B2E, 0x9B2F, 0x9B32, 0x9B44,
+    0x9B43, 0x9B4F, 0x9B4D, 0x9B4E, 0x9B51, 0x9B58, 0x9B74, 0x9B93,
+    0x9B83, 0x9B91, 0x9B96, 0x9B97, 0x9B9F, 0x9BA0, 0x9BA8, 0x9BB4,
+    0x9BC0, 0x9BCA, 0x9BB9, 0x9BC6, 0x9BCF, 0x9BD1, 0x9BD2, 0x9BE3,
+    0x9BE2, 0x9BE4, 0x9BD4, 0x9BE1, 0x9C3A, 0x9BF2, 0x9BF1, 0x9BF0,
+    0x9C15, 0x9C14, 0x9C09, 0x9C13, 0x9C0C, 0x9C06, 0x9C08, 0x9C12,
+    0x9C0A, 0x9C04, 0x9C2E, 0x9C1B, 0x9C25, 0x9C24, 0x9C21, 0x9C30,
+    0x9C47, 0x9C32, 0x9C46, 0x9C3E, 0x9C5A, 0x9C60, 0x9C67, 0x9C76,
+    0x9C78, 0x9CE7, 0x9CEC, 0x9CF0, 0x9D09, 0x9D08, 0x9CEB, 0x9D03,
+    0x9D06, 0x9D2A, 0x9D26, 0x9DAF, 0x9D23, 0x9D1F, 0x9D44, 0x9D15,
+    0x9D12, 0x9D41, 0x9D3F, 0x9D3E, 0x9D46, 0x9D48},
+  { /* category 83 */
+    0x9D5D, 0x9D5E, 0x9D64, 0x9D51, 0x9D50, 0x9D59, 0x9D72, 0x9D89,
+    0x9D87, 0x9DAB, 0x9D6F, 0x9D7A, 0x9D9A, 0x9DA4, 0x9DA9, 0x9DB2,
+    0x9DC4, 0x9DC1, 0x9DBB, 0x9DB8, 0x9DBA, 0x9DC6, 0x9DCF, 0x9DC2,
+    0x9DD9, 0x9DD3, 0x9DF8, 0x9DE6, 0x9DED, 0x9DEF, 0x9DFD, 0x9E1A,
+    0x9E1B, 0x9E1E, 0x9E75, 0x9E79, 0x9E7D, 0x9E81, 0x9E88, 0x9E8B,
+    0x9E8C, 0x9E92, 0x9E95, 0x9E91, 0x9E9D, 0x9EA5, 0x9EA9, 0x9EB8,
+    0x9EAA, 0x9EAD, 0x9761, 0x9ECC, 0x9ECE, 0x9ECF, 0x9ED0, 0x9ED4,
+    0x9EDC, 0x9EDE, 0x9EDD, 0x9EE0, 0x9EE5, 0x9EE8, 0x9EEF, 0x9EF4,
+    0x9EF6, 0x9EF7, 0x9EF9, 0x9EFB, 0x9EFC, 0x9EFD, 0x9F07, 0x9F08,
+    0x76B7, 0x9F15, 0x9F21, 0x9F2C, 0x9F3E, 0x9F4A, 0x9F52, 0x9F54,
+    0x9F63, 0x9F5F, 0x9F60, 0x9F61, 0x9F66, 0x9F67, 0x9F6C, 0x9F6A,
+    0x9F77, 0x9F72, 0x9F76, 0x9F95, 0x9F9C, 0x9FA0},
+  { /* category 84 */
+    0x582F, 0x69C7, 0x9059, 0x7464, 0x51DC, 0x7199, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
+};
+
+/* JIS (ku-ten) -> unicode */
+int jis2uni(int jis)
+{
+  int ku, ten;
+
+  ku = (jis >> 8) - 0x20;
+  if (ku < 1 || ku > MAXJIS) return (0);
+  ten = (jis % 256) - 0x20;
+  if (ten < 1 || ten > 94) return (0);
+  return ((int)jis2uni_table[ku - 1][ten - 1]);
+}
+
+#endif	/* PTEX */
+
+
+#ifdef TEST
+#if HAVE_ICONV_H
+# include <iconv.h>
+/* convert a JIS char to unicode (UCS-4) using iconv() */
+static uint32_t
+jis2unicode(wide_ubyte jis)
+{
+    uint32_t u = 0;
+    unsigned char jis_seq[8] = { 
+	0x1b, 0x24, 0x42, /* JIS X 0208-1983 */
+	(unsigned char)(jis >> 8), (unsigned char)jis,
+	0x1b, 0x28, 0x42, /* ASCII */
+    };
+    unsigned char unicode[4];
+    size_t from = sizeof jis_seq;
+    size_t to = sizeof unicode;
+    static Boolean initialized = False;
+    static iconv_t m_iconv_jis_ucs4 = (iconv_t)(-1);
+    char *from_ptr = (char *)jis_seq;
+    char *to_ptr = (char *)unicode;
+
+    if (m_iconv_jis_ucs4 == (iconv_t)(-1)) {
+	if (initialized) return 0;
+	initialized = True;
+	m_iconv_jis_ucs4 = iconv_open(
+#ifdef WORDS_BIGENDIAN
+				     "UCS-4BE",
+#else
+				     "UCS-4LE",
+#endif
+				     "ISO-2022-JP");
+	if (m_iconv_jis_ucs4 == (iconv_t)(-1)) return 0;
+    }
+    if (iconv(m_iconv_jis_ucs4, (iconv_char_pptrT)&from_ptr, &from, &to_ptr, &to) == (size_t)(-1)) {
+	return 0;
+    }
+    memcpy(&u, unicode, sizeof unicode);
+    return u;
+}
+
+int main(int argc, char **argv) {
+    int hi, low;
+    for (hi=0; hi<MAXJIS; hi++) {
+	for (low=0; low<94; low++) {
+	    int jis = (hi << 8) + low + 0x2121;
+	    int mine = jis2uni(jis);
+	    int iconv = jis2unicode(jis);
+	    if (mine != iconv) {
+		printf("0x%x(%c%c) mine=0x%04x, iconv=0x%04x\n",
+		       jis, (jis>>8)|0x80, (jis&0xff)|0x80, mine, iconv);
+	    }
+	}
+    }
+    return 0;
+}
+#endif /* HAVE_ICONV_H */
+#endif /* TEST */
diff -udNr xdvik//jisx0208.h pxdvik//jisx0208.h
--- xdvik//jisx0208.h	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//jisx0208.h	2010-07-25 14:56:37.638074508 +0900
@@ -0,0 +1,3 @@
+
+/* JIS -> unicode */
+int jis2uni(int jis);
diff -udNr xdvik//main.c pxdvik//main.c
--- xdvik//main.c	2009-11-10 19:28:49.000000000 +0900
+++ pxdvik//main.c	2010-07-25 14:56:37.638074508 +0900
@@ -30,6 +30,14 @@
 #undef STRINGIFY
 #undef TOSTRING
 
+#ifdef	PTEX
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#if	HAVE_FONTCONFIG
+#include <fontconfig/fontconfig.h>
+#endif	/* HAVE_FONTCONFIG */
+#endif	/* PTEX */
+
 static char XtRBool3[] = "Bool3";	/* resource for Bool3 */
 
 /* get these before setting `application_resources' */
@@ -750,7 +758,7 @@
 static void
 display_version_info(void)
 {
-    printf("%s version %s ", XDVIK_PROGNAME, XDVI_VERSION);
+    printf("%s version %s ", XDVIK_PROGNAME, XDVI_TERSE_VERSION_INFO);
 #ifdef MOTIF
     printf("(%s, runtime version %d.%d)\n",
 	   /* 	   XmVERSION, XmREVISION, XmUPDATE_LEVEL, */
@@ -759,7 +767,14 @@
 #else
     printf("%s\n", XDVI_GUI);
 #endif
-    printf("Libraries: %s, T1lib version %s\n", kpathsea_version_string, T1LIB_VERSIONSTRING);
+    printf("Libraries: %s, T1lib version %s", kpathsea_version_string, T1LIB_VERSIONSTRING);
+#ifdef PTEX
+    printf(", FreeType version %d.%d.%d", FREETYPE_MAJOR, FREETYPE_MINOR, FREETYPE_PATCH);
+#if HAVE_FONTCONFIG
+    printf(", Fontconfig version %d.%d.%d", FC_MAJOR, FC_MINOR, FC_REVISION);
+#endif /* HAVE_FONTCONFIG */
+#endif /* !PTEX */
+    printf("\n");
 }
 
 
diff -udNr xdvik//pk.c pxdvik//pk.c
--- xdvik//pk.c	2009-03-31 23:59:37.000000000 +0900
+++ pxdvik//pk.c	2010-07-25 14:56:37.638074508 +0900
@@ -201,6 +201,9 @@
 
     g->dvi_adv = fontp->dimconv * fpwidth;
 
+#ifdef PTEX
+    g->tdir = fontp->dir;
+#endif /* PTEX */
     if (globals.debug & DBG_PK) {
 	if (g->bitmap.w != 0)
 	    printf(", size=%dx%d, dvi_adv=%ld", g->bitmap.w, g->bitmap.h,
diff -udNr xdvik//psgs.c pxdvik//psgs.c
--- xdvik//psgs.c	2009-11-10 19:28:49.000000000 +0900
+++ pxdvik//psgs.c	2010-07-25 14:56:37.642073810 +0900
@@ -80,6 +80,16 @@
 extern const char psheader[];
 extern unsigned psheaderlen;
 
+/*
+** Modified 22/03/95.
+*/
+
+extern void psh_includeall();
+
+/*
+** End Modified.
+*/
+
 Boolean gs_postpone_prescan = False;
 
 /* global procedures (besides initGS) */
@@ -699,6 +709,19 @@
 	destroy_gs();
 	return False;
     }
+
+    /*
+    ** Modified 22/03/95.
+    */
+
+    GS_active = True; /*Just for now */
+    psh_includeall();
+    GS_active = False; /* Now, fixed! */
+
+    /*
+    ** End Modified.
+    */
+
     if (resource.postscript == 0)
 	toggle_gs(0);	/* if we got a 'v' already */
     else {
diff -udNr xdvik//ptexmap.c pxdvik//ptexmap.c
--- xdvik//ptexmap.c	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//ptexmap.c	2010-07-25 14:56:37.642073810 +0900
@@ -0,0 +1,229 @@
+#include "xdvi-config.h"
+#include "xdvi.h"
+#include "ptexmap.h"
+#include "util.h"
+#include "kpathsea/tex-file.h"
+#ifdef	PTEX
+#include "ft2.h"
+#include <ctype.h>
+
+#define NUM(a)	  ((int)(sizeof(a)/sizeof(*(a))))
+
+static int dictionaries_num = 0;
+static int dictionaries_max = 0;
+static struct dictionary {
+    char *key, *word;
+} *dictionaries = NULL;
+
+static struct dictionary *get_dictionary(char *key)
+{
+    int i;
+
+    if (key == NULL) return NULL;
+    for (i=0; i<dictionaries_num; i++) {
+	if (strcmp(key, dictionaries[i].key) == 0) {
+	    return &dictionaries[i];
+	}
+    }
+    return NULL;
+}
+
+void add_replace_dictionary(char *key, char *word)
+{
+    struct dictionary *d;
+
+    d = get_dictionary(key);
+    if (d == NULL) {
+	if (dictionaries_num == dictionaries_max) {
+	    if (dictionaries_max == 0) dictionaries_max = 16;
+	    else		       dictionaries_max *= 2;
+	    dictionaries = xrealloc(dictionaries,
+			     sizeof(dictionaries[0]) * dictionaries_max);
+	}
+	d = &dictionaries[dictionaries_num++];
+	d->key  = xstrdup(key);
+    } else {
+	XDVI_WARNING((stderr, "Duplication of replace entry '%s' was found. "
+		      "Overwrites '%s' with '%s'.\n", key, d->word, word));
+	free(d->word);
+    }
+
+    d->word = xstrdup(word);
+}
+
+static char *replace_string(char *key)
+{
+    struct dictionary *d = get_dictionary(key);
+    if (d == NULL) return key;
+    return d->word;
+}
+
+
+static int ptexmaps_num = 0;
+static int ptexmaps_max = 0;
+static struct ptexmap *ptexmaps = NULL;
+
+struct ptexmap *getkanjifont(const char *jfm_name)
+{
+    int i;
+
+    for (i=0; i<ptexmaps_num; i++) {
+	if (strcmp(jfm_name, ptexmaps[i].jfm_name) == 0) {
+	    return &ptexmaps[i];
+	}
+    }
+    return NULL;
+}
+
+static struct ptexmap *add_fontmap2(char *jfm, char *font, int encoding,
+				    char *map_filename)
+{
+    struct ptexmap *map;
+
+    map = getkanjifont(jfm);
+    if (map == NULL) {
+	if (ptexmaps_num == ptexmaps_max) {
+	    if (ptexmaps_max == 0) ptexmaps_max = 8;
+	    else		   ptexmaps_max *= 2;
+	    ptexmaps = xrealloc(ptexmaps, sizeof(ptexmaps[0]) * ptexmaps_max);
+	}
+	map = &ptexmaps[ptexmaps_num++];
+	map->jfm_name = xstrdup(jfm);
+    } else {
+	XDVI_WARNING((stderr, "A ptexmap entry for '%s' in \"%s\" duplicates "
+		      "a former entry in \"%s\". Overwrites.\n",
+		      jfm, map_filename, map->map_filename));
+	free(map->font_filename);
+    }
+
+    map->face_index = 0;
+    map->ft2_index = -1;
+    if (sscanf(font, ":%d:", &map->face_index) == 1) {
+	font = strchr(font+1, ':') + 1;
+    }
+    map->font_filename  = xstrdup(replace_string(font));
+    map->encoding = encoding;
+    map->extend = 1.0;
+    map->slant  = 0.0;
+    map->variant = 0;
+    map->map_filename = map_filename;
+    return map;
+}
+
+int str2encoding(char *enc_name) {
+    int i;
+    static struct {
+	char *enc_name;
+	int encoding;
+    } encodes[] = {
+	{ "JIS-H",      ENC_JIS_H },
+	{ "JIS-V",      ENC_JIS_V },
+	{ "Unicode-H",  ENC_UNICODE_H },
+	{ "Unicode-V",  ENC_UNICODE_V },
+	{ "Identity-H", ENC_IDENTITY },
+	{ "Identity-V", ENC_IDENTITY },
+	/* caution: Identity-H = Identity-V */
+    };
+
+    if (enc_name == NULL) return ENC_UNKNOWN;
+    for (i=0; i<NUM(encodes); i++) {
+	if (strcmp(enc_name, encodes[i].enc_name) == 0) {
+	    return encodes[i].encoding;
+	}
+    }
+    return ENC_UNKNOWN;
+}
+
+static int add_fontmap(char *line, char *map_filename)
+{
+    struct ptexmap *map;
+    char *s, *jfm, *font, *enc;
+    int encoding = 0;
+    float *ptr = NULL;
+
+    jfm  = strtok(line, " \t");
+    enc  = replace_string(strtok(NULL, " \t"));
+    font = strtok(NULL, " \t,!");
+    encoding = str2encoding(enc);
+
+    if (jfm == NULL) return true; /* empty line */
+
+    if (font == NULL) {
+	XDVI_WARNING((stderr, "A font name for \"%s\" is empty.\n",
+		      jfm));
+	return true;
+    }
+
+    if (encoding == ENC_UNKNOWN) {
+	XDVI_WARNING((stderr, "Unknown encode \"%s\" for \"%s\".\n",
+		      enc, jfm));
+	return true;
+    }
+
+    if (globals.debug & DBG_PK) {
+	fprintf(stderr, "JFM name is \"%s\".\n", jfm);
+	fprintf(stderr, "Font filename is \"%s\".\n", font);
+	fprintf(stderr, "Font is %s encode (#%d).\n", enc, encoding);
+    }
+
+    map = add_fontmap2(jfm, font, encoding, map_filename);
+
+    while ((s=strtok(NULL, " \t,\r\n")) != NULL) {
+	if      (strcmp(s, "-e") == 0) ptr = &map->extend;
+	else if (strcmp(s, "-s") == 0) ptr = &map->slant;
+	else if (strcmp(s, "Bold") == 0)   map->variant |= VAR_BOLD;
+	else if (strcmp(s, "Italic") == 0) map->variant |= VAR_ITALIC;
+	else if (strcmp(s, "BoldItalic") == 0) {
+	    map->variant |= VAR_BOLD | VAR_ITALIC;
+	} else if ((isdigit(*s) || *s == '.' || *s == '-') && ptr != NULL) {
+	    *ptr = atof(s);
+	} else return false;
+    }
+    return true;
+}
+
+
+char *get_ptexmap_name(char *filename)
+{
+    char *s = NULL;
+    FILE *fp;
+
+    if ((fp=fopen(filename, "r")) != NULL) {
+	fclose(fp);
+	s = xstrdup(filename);
+    }
+    if (s == NULL) s = kpse_find_file(filename, kpse_fontmap_format, true);
+    return s;
+}
+
+
+void read_ptexmap_file(char *filename)
+{
+    FILE *fp;
+    char *s;
+    char line[BUFSIZ], line_orig[BUFSIZ];
+
+    filename = get_ptexmap_name(filename);
+    /* 'filename' will stored in ptexmap structure,
+       so we can't free(filename) in this function. */
+    if ((fp = fopen(filename, "r")) == NULL) {
+	XDVI_WARNING((stderr, "Warning: Can't open \"%s\"\n", filename));
+	return;
+    }
+    if (globals.debug & DBG_FILES) {
+	TRACE_FILES((stderr, "read_ptexmap_file for |%s|", filename));
+    }
+
+    while (fgets(line, BUFSIZ, fp) != NULL) {
+	if ((s=strchr(line,'\n')) != NULL) *s = '\0'; /* break \n */
+	strcpy(line_orig, line);
+	if ((s=strchr(line,'%'))  != NULL) *s = '\0'; /* break comment */
+	if ((s=strchr(line,'#'))  != NULL) *s = '\0'; /* break comment */
+
+	if (!add_fontmap(line, filename)) {
+	    XDVI_WARNING((stderr, "'%s', Unknown option.\n", line_orig));
+	}
+    }
+    fclose(fp);
+}
+#endif	/* PTEX */
diff -udNr xdvik//ptexmap.h pxdvik//ptexmap.h
--- xdvik//ptexmap.h	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//ptexmap.h	2010-07-25 14:56:37.642073810 +0900
@@ -0,0 +1,22 @@
+
+#ifdef PTEX
+struct ptexmap {
+    char *jfm_name;
+    char *font_filename;
+    int ft2_index;
+    int face_index;
+    enum { ENC_UNKNOWN, ENC_JIS_H, ENC_JIS_V, ENC_UNICODE_H, ENC_UNICODE_V,
+	   ENC_IDENTITY } encoding;
+    enum { VAR_BOLD = 0x01, VAR_ITALIC = 0x02 } variant;
+    float extend, slant;
+    char *sfd_name;
+    char *csi;
+    char *map_filename; /* only for warning message */
+};
+
+void read_ptexmap_file(char *filename);
+struct ptexmap *getkanjifont(const char *jfm_name);
+#define iskanjifont(jfm_name) (getkanjifont(jfm_name) != NULL)
+
+void add_replace_dictionary(char *key, char *word);
+#endif	/* PTEX */
diff -udNr xdvik//special.c pxdvik//special.c
--- xdvik//special.c	2008-07-02 00:42:36.000000000 +0900
+++ pxdvik//special.c	2010-07-25 14:56:37.642073810 +0900
@@ -691,6 +691,12 @@
   contains these coordinates.
 */
 
+double	bbox_matrix[2][2] = {{1.0, 0.0}, {0.0, 1.0}};
+Boolean	bbox_scaled = False, bbox_rotated = False;
+
+#define	bbox_xscale	bbox_matrix[0][0]
+#define	bbox_yscale	bbox_matrix[1][1]
+
 static void
 append_bbox_info(int x, int y, int w, int h, int angle)
 {
@@ -735,25 +741,24 @@
 	    do_color_change();
 #endif
 
-	if (bbox_angle == 0) {
-	    ycorner -= bbox_voffset;
-	    XDrawRectangle(DISP, currwin.win, globals.gc.high, xcorner, ycorner, bbox_width, bbox_height);
+	if (! bbox_rotated) {
+	    ycorner -= bbox_voffset * bbox_yscale;
+	    XDrawRectangle(DISP, currwin.win, globals.gc.high, xcorner, ycorner, bbox_width, bbox_height * bbox_yscale);
 	    if (resource.postscript == 0) {
 		if (htex_inside_href) {
-		    htex_set_anchorsize(xcorner, ycorner, xcorner + bbox_width, ycorner + bbox_height);
+		    htex_set_anchorsize(xcorner, ycorner, xcorner + bbox_width,
+					ycorner + bbox_height * bbox_yscale);
 		    htex_set_objecttype(HTEX_IMG);
 		}
 	    }
 	}
 	else {
-	    float sin_a = sin(bbox_angle * (TWOPI / 360));
-	    float cos_a = cos(bbox_angle * (TWOPI / 360));
 	    float a, b, c, d;
 
-	    a = cos_a * bbox_width;
-	    b = -sin_a * bbox_width;
-	    c = -sin_a * bbox_height;
-	    d = -cos_a * bbox_height;
+	    a = bbox_matrix[0][0] * bbox_width;
+	    b = bbox_matrix[1][0] * bbox_width;
+	    c = -bbox_matrix[0][1] * bbox_height;
+	    d = -bbox_matrix[1][1] * bbox_height;
 
 	    XDrawLine(DISP, currwin.win, globals.gc.high,
 		      xcorner, ycorner,
@@ -907,6 +912,11 @@
 }
 
 
+typedef struct {
+  double matrix[2][2];
+  double x, y;
+} ROTATE_STACK;
+
 /*
  * dumb parsing of PostScript - search for rotation H. Zeller 1/97
  * Returns true if we find a potentially non-supported command that
@@ -916,16 +926,180 @@
 ps_parseraw(const char *PostScript_cmd)
 {
     const char *p;
+    double xscale, yscale, angle, sin_a, cos_a, a, b, c, d;
+    int n;
+    static int rotate_stack_len = 0;
+    static int rotate_stack_ptr = 0;
+    static ROTATE_STACK *rotate_stack = NULL;
+
+    p = strstr(PostScript_cmd, "currentpoint grestore moveto");
+    if (p != NULL) {
+	if (rotate_stack_ptr > 0) {
+	    double r;
+	    rotate_stack_ptr--;
+	    r = sqrt(((DVI_H - rotate_stack[rotate_stack_ptr].x)
+		      * (DVI_H - rotate_stack[rotate_stack_ptr].x)
+		      + (DVI_V - rotate_stack[rotate_stack_ptr].y)
+		      * (DVI_V - rotate_stack[rotate_stack_ptr].y))
+		     / (bbox_matrix[0][0] * bbox_matrix[0][0]
+			+ bbox_matrix[1][0] * bbox_matrix[1][0]))
+		* (rotate_stack[rotate_stack_ptr].matrix[0][0]
+		   * bbox_matrix[1][0]
+		   - rotate_stack[rotate_stack_ptr].matrix[1][0]
+		   * bbox_matrix[0][0])
+		/ (rotate_stack[rotate_stack_ptr].matrix[0][0]
+		   * rotate_stack[rotate_stack_ptr].matrix[0][0]
+		   + rotate_stack[rotate_stack_ptr].matrix[1][0]
+		   * rotate_stack[rotate_stack_ptr].matrix[1][0]);
+	    DVI_H += r * rotate_stack[rotate_stack_ptr].matrix[1][0];
+	    DVI_V += r * rotate_stack[rotate_stack_ptr].matrix[0][0];
+	    PXL_V = pixel_conv(DVI_V);
+	    bcopy(rotate_stack[rotate_stack_ptr].matrix, bbox_matrix,
+		  sizeof(bbox_matrix));
+	    bbox_rotated
+		= (bbox_matrix[0][1] != 0.0 || bbox_matrix[1][0] != 0.0)
+		? True : False;
+	    bbox_scaled
+		= (bbox_rotated
+		   || bbox_matrix[0][0] != 1.0 || bbox_matrix[1][1] != 1.0)
+		? True : False;
+	}
+	if (globals.debug & DBG_PS)
+	    fprintf(stderr, "current angle %f: %s\n",
+		    bbox_matrix[0][0] != 0
+		    ? -atan(bbox_matrix[1][0] / bbox_matrix[0][0])
+		    * (360 / TWOPI)
+		    : bbox_matrix[1][0] >= 0 ? (double)90 : (double)-90,
+		    PostScript_cmd);
+    }
 
-    bbox_angle = 0;
     p = strstr(PostScript_cmd, "rotate");
     if (p != NULL) {
 	while (*p != '\0' && !isdigit((int)*p))
 	    --p;
 	while (*p != '\0' && isdigit((int)*p))
 	    --p;
+	if (*p == '.') --p;
+	while (*p != '\0' && isdigit(*p)) --p;
 	if (*p != '+' && *p != '-')
 	    ++p;
+	n = sscanf(p, "%lf neg rotate", &angle);
+	if (n != 1) {
+	    fprintf(stderr, "%s:  cannot get angle.\n", globals.program_name);
+	    angle = 0.0;
+	}
+	if (rotate_stack_ptr >= rotate_stack_len) {
+	    rotate_stack_len += 0x10;
+	    rotate_stack = (ROTATE_STACK *)
+		xrealloc(rotate_stack,
+			 sizeof(ROTATE_STACK) * rotate_stack_len);
+	}
+	bcopy(bbox_matrix, rotate_stack[rotate_stack_ptr].matrix,
+	      sizeof(bbox_matrix));
+	rotate_stack[rotate_stack_ptr].x = DVI_H;
+	rotate_stack[rotate_stack_ptr].y = DVI_V;
+	rotate_stack_ptr++;
+
+	sin_a = sin(-angle * (TWOPI / 360));
+	cos_a = cos(-angle * (TWOPI / 360));
+	a =   bbox_matrix[0][0] * cos_a + bbox_matrix[0][1] * sin_a;
+	b = - bbox_matrix[0][0] * sin_a + bbox_matrix[0][1] * cos_a;
+	c =   bbox_matrix[1][0] * cos_a + bbox_matrix[1][1] * sin_a;
+	d = - bbox_matrix[1][0] * sin_a + bbox_matrix[1][1] * cos_a;
+	bbox_matrix[0][0] = a;
+	bbox_matrix[0][1] = b;
+	bbox_matrix[1][0] = c;
+	bbox_matrix[1][1] = d;
+	bbox_rotated = (b != 0.0 || c != 0.0) ? True : False;
+	bbox_scaled
+	    = (bbox_rotated
+	       || bbox_matrix[0][0] != 1.0 || bbox_matrix[1][1] != 1.0)
+	    ? True : False;
+	if (globals.debug & DBG_PS)
+	    fprintf(stderr, "current angle %f: %s\n",
+		    bbox_matrix[0][0] != 0
+		    ? -atan(bbox_matrix[1][0] / bbox_matrix[0][0])
+		    * (360 / TWOPI)
+		    : bbox_matrix[1][0] >= 0 ? (double)90 : (double)-90,
+		    PostScript_cmd);
+    }
+
+    p = strstr(PostScript_cmd, "scale");
+    if (p != NULL) {
+	if (strncmp(p - 4, "div", 3) == 0) {
+	    while (*p != '\0' && !isdigit(*p)) --p;
+	    while (*p != '\0' && isdigit(*p)) --p;
+	    if (*p == '.') --p;
+	    while (*p != '\0' && isdigit(*p)) --p;
+	    while (*p != '\0' && !isdigit(*p)) --p;
+	    while (*p != '\0' && isdigit(*p)) --p;
+	    while (*p != '\0' && !isdigit(*p)) --p;
+	    while (*p != '\0' && isdigit(*p)) --p;
+	    if (*p == '.') --p;
+	    while (*p != '\0' && isdigit(*p)) --p;
+	    while (*p != '\0' && !isdigit(*p)) --p;
+	    while (*p != '\0' && isdigit(*p)) --p;
+	    ++p;
+	    n = sscanf(p, "1 %lf div 1 %lf div scale", &xscale, &yscale);
+	    if (n == 2) {
+#ifdef PTEX
+		if(TATE) {
+		    double temp;
+		    temp = xscale;
+		    xscale = 1.0/yscale;
+		    yscale = 1.0/temp;
+		}
+		else {
+		    xscale = 1.0/xscale;
+		    yscale = 1.0/yscale;
+		}
+#else
+		xscale = 1.0/xscale;
+		yscale = 1.0/yscale;
+#endif
+	    } else {
+		fprintf(stderr,
+			"%s:  cannot get scaling factors.\n",
+			globals.program_name);
+		xscale = yscale = 1.0;
+	    }
+	} else {
+	    while (*p != '\0' && !isdigit(*p)) --p;
+	    while (*p != '\0' && isdigit(*p)) --p;
+	    if (*p == '.') --p;
+	    while (*p != '\0' && isdigit(*p)) --p;
+	    while (*p != '\0' && !isdigit(*p)) --p;
+	    while (*p != '\0' && isdigit(*p)) --p;
+	    if (*p == '.') --p;
+	    while (*p != '\0' && isdigit(*p)) --p;
+	    if (*p != '+' && *p != '-') ++p;
+	    n = sscanf(p, "%lf %lf scale", &xscale, &yscale);
+#ifdef PTEX
+	    if(TATE) {
+		double temp;
+		temp = xscale;
+		xscale = yscale;
+		yscale = temp;
+	    }
+#endif
+	    if (n != 2) {
+		fprintf(stderr,
+			"%s:  cannot get scaling factors.\n",
+			globals.program_name);
+		xscale = yscale = 1.0;
+	    }
+	}
+	bbox_matrix[0][0] *= xscale;
+	bbox_matrix[0][1] *= yscale;
+	bbox_matrix[1][0] *= xscale;
+	bbox_matrix[1][1] *= yscale;
+	bbox_scaled
+	    = (bbox_rotated
+	       || bbox_matrix[0][0] != 1.0 || bbox_matrix[1][1] != 1.0)
+	    ? True : False;
+	if (globals.debug & DBG_PS)
+	    fprintf(stderr, "current scale %f,%f: %s\n",
+		    bbox_xscale, bbox_yscale, PostScript_cmd);
 	sscanf(p, "%d neg rotate", &bbox_angle);
 	return True;
     }
@@ -1403,7 +1577,6 @@
     if (strncmp(cp, ":[begin]", 8) == 0) {
 	cp += 8;
 	bbox_valid = False;
-	bbox_angle = 0;
 	if (sscanf(cp, "%d %d\n", &raww, &rawh) >= 2) {
 	    bbox_valid = True;
 	    bbox_width = pixel_conv(spell_conv(raww));
@@ -1477,10 +1650,10 @@
 #endif	    
 	/* also raw PostScript, but no extra colon to skip */
 #if PS
-	if (INSIDE_MANE_WIN) {
-	    if (ps_parseraw(cp))
+	if (ps_parseraw(cp) && INSIDE_MANE_WIN)
 		have_raw_postscript = True;
 	    
+	if (INSIDE_MANE_WIN) {
 	    if (psfig_begun)
 		psp.drawraw(cp);
 	    else {
@@ -1518,6 +1691,10 @@
 #define	KEY_URY	keyval[3]
 #define	KEY_RWI	keyval[4]
 #define	KEY_RHI	keyval[5]
+#define	KEY_HSZ	keyval[6]
+#define	KEY_VSZ	keyval[7]
+#define	KEY_HSC	keyval[10]
+#define	KEY_VSC	keyval[11]
 
 #define	NKEYS	(sizeof keytab /sizeof *keytab)
 #define	N_ARGLESS_KEYS 1
@@ -1531,7 +1708,7 @@
     unsigned int len;
     char *q;
     int flags = 0;
-    double keyval[6] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
+    double keyval[12] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
 
     filename = cp;
     if (*cp == '\'' || *cp == '"') {
@@ -1633,6 +1810,314 @@
     bbox_valid = False;
 }
 
+/***************************************************************
+  Following two functions, DirName() and get_boudig_box()
+  come from ps.c in miyu-patch for xdvi PL17. 
+***************************************************************/
+
+static  char *
+DirName(f1, f2)
+        char    *f1;
+        char    *f2;
+{
+        char    *p1, *p2, *q1;
+        static char     buf[BUFSIZ];
+
+#ifndef VMS
+        if (*f2 == '/')
+                return f2;
+#endif  /* !VMS */
+
+        for (p1 = p2 = f1, q1 = buf; *p1; p1++, q1++) {
+#ifndef VMS
+            if (*p1 == '/')
+#else
+            if (*p1 == ':')
+#endif  /* !VMS */
+                p2 = p1 + 1;
+            *q1 = *p1;
+        }
+        strcpy(buf + (p2 - f1), f2);
+
+        return buf;
+}
+
+int
+get_bounding_box(psfile, llx, lly, urx, ury)
+        char    *psfile;
+        double   *llx;
+        double   *lly;
+        double   *urx;
+        double   *ury;
+{
+        FILE    *fptr;
+        char    buf[BUFSIZ];
+
+        if ((fptr = xfopen(psfile, "r")) == NULL) {
+            perror(psfile);
+            return -1;
+        }
+
+        for (;;) {
+            if (fgets(buf, BUFSIZ, fptr) == NULL) {
+                fprintf(stderr, "%s:unexpected EOF.\n", psfile);
+                fclose(fptr);
+                return -1;
+            }
+            if (strncmp(buf, "%%BoundingBox:", 14) == 0) {
+                if (sscanf(buf + 14, "%lf %lf %lf %lf", llx, lly, urx, ury) < 4) {
+                    fprintf(stderr, "\\special: ERROR.\n");
+                    fclose(fptr);
+                    return -1;
+                }
+                break;
+            }
+        }
+
+        fclose(fptr);
+
+        return 0;
+}
+
+
+/***************************************************************
+  The originai eps_special() is merged with psSpecial() in ps.c  
+  (miyu-patch for xdvi PL17). 
+***************************************************************/
+static        void
+epsbox_special(cp)
+      char    *cp;
+{
+      char    *filename;
+      static  char            *buffer = NULL;
+      char    *p;
+      char    *q;
+      double  keyval[12];
+      char    *tmpfilename;
+      char*   fileext[] = { ".ps", ".eps", ".epsf", "**" };
+      int     extmax = 6;
+      FILE    *fp;
+
+        float   hsize = 0.0, vsize = 0.0;
+        float   hscale = 0.0, vscale = 0.0;
+      char *ptr;
+
+      p = cp;
+      if ((ptr = strtok(p, "{}")) == NULL) {
+        fprintf(stderr, "\\special: ERROR.\n");
+        return;
+      }
+      hsize = atof(ptr);
+      if ((ptr = strtok(NULL, "{}")) == NULL) {
+        fprintf(stderr, "\\special: ERROR.\n");
+        return;
+      }
+      vsize = atof(ptr);
+      if ((ptr = strtok(NULL, "{}")) == NULL) {
+        fprintf(stderr, "\\special: ERROR.\n");
+        return;
+      }
+      filename = DirName(globals.dvi_name, ptr);
+
+      if ((fp = xfopen(filename, "r")) == NULL) {
+	  int i;
+	  tmpfilename=xmalloc(strlen(filename)+extmax);
+	  for (i = 0; strcmp(fileext[i], "**") != 0; i++) {
+	      strcpy(tmpfilename, filename);
+	      strcat(tmpfilename, fileext[i]);
+	      if ((fp = xfopen(tmpfilename, "r")) != NULL)
+		  break;
+	  }
+	  if (fp == NULL) {
+	      perror(tmpfilename);
+	      return;
+	  }
+	  strcpy(filename, tmpfilename);
+	  free(tmpfilename);
+      }
+      fclose(fp);
+
+      if (get_bounding_box(filename,
+                           &KEY_LLX, &KEY_LLY,
+                           &KEY_URX, &KEY_URY))
+        return;
+      
+      if (hsize != 0.0)
+        hscale = hsize / (KEY_URX - KEY_LLX);
+      if (vsize != 0.0)
+        vscale = vsize / (KEY_URY - KEY_LLY);
+
+      if (hscale == 0.0 && vscale == 0.0)
+        hscale = vscale = 1.0;
+      else if (hscale == 0.0)
+        hscale = vscale;
+      else if (vscale == 0.0)
+        vscale = hscale;
+      
+      KEY_RWI = hsize;
+      KEY_RHI = vsize;
+
+      if (buffer == NULL)
+          buffer = xmalloc(BUFSIZ);
+
+      strcpy(buffer, "@beginspecial");
+      q = buffer + strlen(buffer);
+      sprintf(q, " /@scaleunit 1 def");
+      q += strlen(q);
+      sprintf(q, " %f @hoffset", -KEY_LLX * hscale);
+      q += strlen(q);
+      sprintf(q, " %f @voffset", -KEY_LLY * vscale);
+      q += strlen(q);
+      sprintf(q, " %f @hscale", hscale);
+      q += strlen(q);
+      sprintf(q, " %f @vscale", vscale);
+      q += strlen(q);
+      strcpy(q, " @setspecial\n");
+
+
+      bbox_valid = True;
+      bbox_width = hsize * dimconv / currwin.shrinkfactor + 0.5;
+      bbox_voffset = bbox_height = vsize * dimconv / currwin.shrinkfactor + 0.5;
+
+      if (currwin.win == mane.win) {
+#if   PS
+          psp.drawbegin(PXL_H - currwin.base_x, PXL_V - currwin.base_y,
+              buffer);
+          /* talk directly with the DPSHandler here */
+          send_ps_file(filename, kpse_pict_format);
+          psp.drawend(" @endspecial");
+#else
+          draw_bbox();
+#endif
+      }
+      bbox_valid = False;
+}
+
+static        void
+elepsf_special(cp)
+      char    *cp;
+{
+      char    *filename;
+      static  char            *buffer;
+      static  unsigned int    buflen  = 0;
+      unsigned int            len;
+      char    *p;
+      char    *q;
+      int     flags   = 0;
+      double  keyval[12] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+                              0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
+        float   hsize = 0.0, vsize = 0.0;
+        float   hscale = 0.0, vscale = 0.0;
+
+      p = cp;
+      filename = p;
+      if (*p == '\'' || *p == '"') {
+          do ++p;
+          while (*p != '\0' && *p != *filename);
+          ++filename;
+      }
+      else
+          while (*p != '\0' && *p != ' ' && *p != '\t') ++p;
+      if (*p != '\0') *p++ = '\0';
+      while (*p == ' ' || *p == '\t') ++p;
+
+      filename = DirName(globals.dvi_name, filename);
+
+      if (get_bounding_box(filename,
+                           &KEY_LLX, &KEY_LLY,
+                           &KEY_URX, &KEY_URY))
+        return;
+
+      len = strlen(p) + NKEYS + 512;
+      if (buflen < len) {
+          if (buflen != 0) free(buffer);
+          buflen = len;
+          buffer = xmalloc(buflen);
+      }
+      strcpy(buffer, "@beginspecial");
+      q = buffer + strlen(buffer);
+      sprintf(q, " /@scaleunit 1 def");
+      q += strlen(q);
+      while (*p != '\0') {
+          char *p1 = p;
+          size_t keyno;
+
+          while (*p1 != '=' && !isspace(*p1) && *p1 != '\0') ++p1;
+          for (keyno = 0;; ++keyno) {
+              if (keyno >= NKEYS) {
+                  if (globals.warn_spec_now)
+                      fprintf(stderr,
+                          "unknown keyword (%*s) in \\special will be ignored\n",
+                          (int) (p1 - p), p);
+                  break;
+              }
+              if (memcmp(p, keytab[keyno], p1 - p) == 0) {
+                  if (keyno >= N_ARGLESS_KEYS) {
+                      if (*p1 == '=') ++p1;
+                      if (keyno < N_ARGLESS_KEYS + 12) {
+                          keyval[keyno - N_ARGLESS_KEYS] = atof(p1);
+                          flags |= (1 << (keyno - N_ARGLESS_KEYS));
+                      }
+                      *q++ = ' ';
+                      while (!isspace(*p1) && *p1 != '\0') p1++;
+                  }
+                  break;
+              }
+          }
+          p = p1;
+          while (!isspace(*p) && *p != '\0') ++p;
+          while (isspace(*p)) ++p;
+      }
+
+      hsize = KEY_HSZ;
+      vsize = KEY_VSZ;
+      hscale = KEY_HSC;
+      vscale = KEY_VSC;
+      if (hsize != 0.0)
+        hscale = hsize / (KEY_URX - KEY_LLX);
+      if (vsize != 0.0)
+        vscale = vsize / (KEY_URY - KEY_LLY);
+
+      KEY_RWI = KEY_URX - KEY_LLX;
+      KEY_RHI = KEY_URY - KEY_LLY;
+
+      if (hscale == 0.0 && vscale == 0.0)
+        hscale = vscale = 1.0;
+      else if (hscale == 0.0)
+        hscale = vscale;
+      else if (vscale == 0.0)
+        vscale = hscale;
+      
+      KEY_RHI *= vscale;
+      KEY_RWI *= hscale;
+
+      sprintf(q, " %f @hoffset", -KEY_LLX * hscale);
+      q += strlen(q);
+      sprintf(q, " %f @voffset", -KEY_URY * vscale);
+      q += strlen(q);
+      sprintf(q, " %f @hscale", hscale);
+      q += strlen(q);
+      sprintf(q, " %f @vscale", vscale);
+      q += strlen(q);
+      strcpy(q, " @setspecial\n");
+
+      bbox_valid = True;
+      bbox_width = KEY_RWI * dimconv / currwin.shrinkfactor + 0.5;
+      bbox_voffset = 0.0; 
+        bbox_height = KEY_RHI * dimconv / currwin.shrinkfactor + 0.5;
+
+	if (currwin.win == mane.win) {
+#if	PS
+	    psp.drawbegin(PXL_H - currwin.base_x, PXL_V - currwin.base_y, buffer);
+	/* talk directly with the DPSHandler here */
+	send_ps_file(filename, kpse_pict_format);
+	psp.drawend(" @endspecial");
+#else
+	draw_bbox();
+#endif
+    }
+    bbox_valid = False;
+}
 
 static void
 quote_special(char *cp)
@@ -2325,6 +2810,223 @@
 }
 
 /*
+** Modified 22/3/95.
+*/
+
+typedef struct psh_node {
+    char *this_file;
+    struct psh_node *next;
+} t_pshnode;
+
+static t_pshnode *psh_head = (t_pshnode *) NULL, *psh_tail = (t_pshnode *) NULL;
+
+/*
+** Include one header file.
+*/
+
+static void psh_includehfile(cp, beginning)
+char *cp;
+int beginning;
+
+{
+    static char rawstring[] = " stop\n%%xdvimark\nH userdict begin\0";
+
+    if (!beginning)
+        psp.drawbegin(PXL_H - currwin.base_x, PXL_V - currwin.base_y, "");
+    psp.drawraw(rawstring);
+    send_ps_file(cp, kpse_pict_format);
+    psp.drawend(" end\n");
+}
+
+/*
+** Include all header files.
+*/
+
+void psh_includeall()
+
+{
+    t_pshnode *this_node;
+
+    this_node = psh_head;
+    while (this_node != (t_pshnode *) NULL) {
+	psh_includehfile(this_node->this_file, 1);
+	this_node = this_node->next;
+    }
+}
+
+/*
+** Deal with the "header=<file>" special.
+*/
+
+static void psh_header(cp)
+char *cp;
+
+{
+    t_pshnode *this_node;
+    char *psheader;
+
+    /*
+    ** Find the file.
+    */
+
+    psheader = kpse_find_file ( cp+7, kpse_tex_ps_header_format, true );
+
+    if (psheader) {
+
+        /*
+	** Include the file directly in /userdict.
+	*/
+
+	/* psh_includehfile(psheader, 0); */
+	/* deleted by Kazuaki NAKAYAMA (nakayama@ripms.shinshu-u.ac.jp) */
+
+	/*
+	** Add a new node to the list of header files.
+	*/
+
+	this_node = (t_pshnode *) xmalloc(sizeof(t_pshnode));
+	this_node->this_file = strcpy(xmalloc((strlen(psheader) + 1) * sizeof(char)), psheader);
+	this_node->next = (t_pshnode *) NULL;
+	if (psh_head == (t_pshnode *) NULL)
+	    psh_head = psh_tail = this_node;
+	else {
+	    psh_tail->next = this_node;
+	    psh_tail = this_node;
+	}
+
+    } else
+	XDVI_WARNING((stderr, "Included PostScript header file %s not found", cp + 7));
+}
+
+/*
+** End Modifications
+*/
+ 
+/* color support (^^;)*/
+#if COLOR
+/* Cyan/Magenta/Yellow/Black to Red/Green/Blue */
+static void
+cmyk_to_rgb(c, m, y, k, r, g, b)
+	double  c, m, y, k;
+	double  *r, *g, *b;
+{
+    double red, green, blue;
+
+    if (k > 0.9999) {
+	red = green = blue = 0.0;
+    } else if (k < 0.0001) {
+	red   = 1.0 - c;
+	green = 1.0 - m;
+	blue  = 1.0 - y;
+    } else {
+	red   = (1.0 - c) * (1.0 - k);
+	green = (1.0 - m) * (1.0 - k);
+	blue  = (1.0 - y) * (1.0 - k);
+    }
+    *r = (red   < 0.0) ? 0.0 : (red   > 1.0) ? 1.0 : red;
+    *g = (green < 0.0) ? 0.0 : (green > 1.0) ? 1.0 : green;
+    *b = (blue  < 0.0) ? 0.0 : (blue  > 1.0) ? 1.0 : blue;
+}
+
+/* Hue/Saturation/Brightness to Red/Green/Blue */
+static void
+hsb_to_rgb(h, s, v, r, g, b)
+	double  h, s, v;
+	double  *r, *g, *b;
+{
+    double red, green, blue, h6, f, p, q, t;
+
+    if (s < 0.0001) {
+	red = green = blue = v;
+    } else {
+	h6 = h * 6.0;
+	f = h6 - (int)h6;
+	p = v * (1.0 - s);
+	q = v * (1.0 - s * f);
+	t = p - q + v;
+
+	switch ((int)h6) {
+	  case 0:  red = v; green = t; blue = p; break; /* Red     - Yellow  */
+	  case 1:  red = q; green = v; blue = p; break; /* Yellow  - Green   */
+	  case 2:  red = p; green = v; blue = t; break; /* Green   - Cyan    */
+	  case 3:  red = p; green = q; blue = v; break; /* Cyan    - Blue    */
+	  case 4:  red = t; green = p; blue = v; break; /* Blue    - Magenta */
+	  case 5:  red = v; green = p; blue = q; break; /* Magenta - Red     */
+	  default: red = green = blue = 0.0; break;
+	}
+    }
+    *r = (red   < 0.0) ? 0.0 : (red   > 1.0) ? 1.0 : red;
+    *g = (green < 0.0) ? 0.0 : (green > 1.0) ? 1.0 : green;
+    *b = (blue  < 0.0) ? 0.0 : (blue  > 1.0) ? 1.0 : blue;
+}
+
+static void
+color_warn()
+{
+    puts("Cannot allocate colormap entry: displayed colors are not exact.\n\
+That is because other applications may be using too many colors.\n\
+If you want more exact colors, let such a application exit and \"Reread\".");
+    fflush(stdout);
+}
+#endif /* COLOR */
+
+#ifdef COLOR
+#define RGB 0
+#define CMYK 1
+#define HSB 2
+#endif
+
+static void
+dvi2ps_color_special(cp, colfmt)
+	char *cp;
+	unsigned char colfmt;
+{
+#if 0 /* COLOR */ /* ADHOC FIX */
+    char	buf[BUFSIZ];
+    double	r, g, b;
+    XColor	fc, bc;
+
+    /* if (!use_color) return; */
+
+    if (colfmt == RGB) {
+	sscanf(cp, " %lf %lf %lf", &r, &g, &b);
+    }
+    else if (colfmt == CMYK) {
+	double c, m, y, k;
+	sscanf(cp, " %lf %lf %lf %lf", &c, &m, &y, &k);
+	cmyk_to_rgb(c, m, y, k, &r, &g, &b);
+    }
+    else if (colfmt == HSB) {
+	double h, s, v;
+	sscanf(cp, " %lf %lf %lf", &h, &s, &v);
+	hsb_to_rgb(h, s, v, &r, &g, &b);
+    }
+    sprintf(buf, "rgbi:%f/%f/%f", r, g, b);
+
+    fore_color_data.red =   (unsigned short)(r * ((unsigned short)~0) +.5);
+    fore_color_data.green = (unsigned short)(g * ((unsigned short)~0) +.5);
+    fore_color_data.blue =  (unsigned short)(b * ((unsigned short)~0) +.5);
+
+    if (XAllocNamedColor(DISP, our_colormap, buf, &fc, &bc) == True) {
+	if (color_allocated_top >= color_allocated_len) {
+	    color_allocated_len += 0x10;
+	    color_allocated = (Pixel *)
+		xrealloc(color_allocated,
+			 sizeof(Pixel) * color_allocated_len);
+	}
+	color_allocated[color_allocated_top++]
+	    = fore_color_data.pixel = fc.pixel;
+	init_colors();
+	reset_fonts();
+    } else if (!color_warn_done) {
+	color_warn();
+	color_warn_done = True;
+    }
+#endif
+}
+
+
+/*
  *	The following copyright message applies to the rest of this file.  --PV
  */
 
@@ -2453,6 +3155,16 @@
 #endif
 	return;
     }
+
+    if (memicmp(cp, "epsfile=", 8) == 0) {
+	elepsf_special(cp + 8);
+	return;
+    }
+    if (memicmp(cp, "postscriptbox{", 14) == 0) {
+	epsbox_special(cp + 14);
+	return;
+    }
+
     if (memicmp(cp, "html:", 5) == 0) {
 	htex_do_special(cp + 5, len - 5);
 	return;
@@ -2465,6 +3177,22 @@
 	    color_special(cp + 6);
 	return;
     }
+    if (memicmp(cp, "rgb=", 4) == 0) {
+	dvi2ps_color_special(cp + 4, RGB);
+	return;
+    }
+    if (memicmp(cp, "cmyk=", 5) == 0) {
+	dvi2ps_color_special(cp + 5, CMYK);
+	return;
+    }
+    if (memicmp(cp, "hsb=", 4) == 0) {
+	dvi2ps_color_special(cp + 4, HSB);
+	return;
+    }
+    if (memicmp(cp, "background ", 11) == 0) {
+	/* already scanned */
+	return;
+    }
 #endif
     
     /* these should have been scanned */
@@ -2555,6 +3283,8 @@
 	case CMD('b', 'k'):
 	    blacken_last();
 	    return;
+	case CMD('h', 'e'):
+	    psh_header(cp); return;
 	case CMD('i', 'p'):	/* throw away the path -- jansteen */
 	    path_len = 0;
 	    return;
diff -udNr xdvik//tests/Makefile.in pxdvik//tests/Makefile.in
--- xdvik//tests/Makefile.in	2010-02-22 21:09:38.000000000 +0900
+++ pxdvik//tests/Makefile.in	2010-07-25 14:56:37.642073810 +0900
@@ -54,9 +54,11 @@
 	$(top_srcdir)/m4/xdvi-sys-streams.m4 \
 	$(top_srcdir)/m4/xdvi-sys-sunos4.m4 \
 	$(top_srcdir)/../../m4/kpse-common.m4 \
+	$(top_srcdir)/../../m4/kpse-freetype2-flags.m4 \
 	$(top_srcdir)/../../m4/kpse-kpathsea-flags.m4 \
 	$(top_srcdir)/../../m4/kpse-t1lib-flags.m4 \
 	$(top_srcdir)/../../m4/kpse-warnings.m4 \
+	$(top_srcdir)/../../m4/kpse-zlib-flags.m4 \
 	$(top_srcdir)/../../m4/libtool.m4 \
 	$(top_srcdir)/../../m4/ltoptions.m4 \
 	$(top_srcdir)/../../m4/ltsugar.m4 \
@@ -131,6 +133,11 @@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FONTCONFIGCPPFLAGS = @FONTCONFIGCPPFLAGS@
+FREETYPE2_DEPEND = @FREETYPE2_DEPEND@
+FREETYPE2_INCLUDES = @FREETYPE2_INCLUDES@
+FREETYPE2_LIBS = @FREETYPE2_LIBS@
+FT2_CONFIG = @FT2_CONFIG@
 GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
@@ -182,6 +189,9 @@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+ZLIB_DEPEND = @ZLIB_DEPEND@
+ZLIB_INCLUDES = @ZLIB_INCLUDES@
+ZLIB_LIBS = @ZLIB_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
diff -udNr xdvik//texmf/XDvi pxdvik//texmf/XDvi
--- xdvik//texmf/XDvi	2008-07-02 00:42:36.000000000 +0900
+++ pxdvik//texmf/XDvi	2010-07-25 14:56:37.642073810 +0900
@@ -125,7 +125,7 @@
 !!!------------------------------------------------------------------------------
 !!! background color and font:
 *tipShell.background: cornsilk
-*tipShell.fontSet: -*-helvetica-medium-r-*-*-12-*-*-*-*-*-*
+*tipShell.fontSet: -*-helvetica-medium-r-*-*-12-*-*-*-*-*-*,-*-*-medium-r-*-*-12-*-*-*-*-*-*,
 
 !!! time the mouse needs to stay on a button until tooltips pop up,
 !!! in milliseconds; set to a negative value to disable:
@@ -133,11 +133,24 @@
 
 
 !!!------------------------------------------------------------------------------
+!!!-------------------------------- Xaw i18n ------------------------------------
+!!!------------------------------------------------------------------------------
+!!! note: when i18n'ed, *font and *fontSet should have same size of font
+*international: true
+*inputMethod: kinput2
+*preeditType: OverTheSpot,OffTheSpot,Root
+!!! note: xdviSelFile can not be i18n'ed (bug?)
+xdviSelFile*international: false
+
+
+!!!------------------------------------------------------------------------------
 !!!------------------------------ Fonts and colors ------------------------------
 !!!------------------------------------------------------------------------------
-*font:     -*-helvetica-medium-r-*-*-12-*-*-*-*-*-*
+*font:    -*-helvetica-medium-r-*-*-12-*-*-*-*-*-*
+*fontSet: -*-helvetica-medium-r-*-*-12-*-*-*-*-*-*,-*-*-medium-r-*-*-12-*-*-*-*-*-*
 !!! Use a smaller font for the statusline in the Xaw version:
-*statusline.font: -*-helvetica-medium-r-*-*-10-*-*-*-*-*-*
+*statusline.font:    -*-helvetica-medium-r-*-*-10-*-*-*-*-*-*
+*statusline.fontSet: -*-helvetica-medium-r-*-*-10-*-*-*-*-*-*,-*-*-medium-r-*-*-10-*-*-*-*-*-*
 
 !!! Motif fonts. Meaning of the tags is:
 !!! NORMAL: Ordinary text, labels etc.
@@ -147,11 +160,11 @@
 !!! TOPIC_HEADING: Heading for help text in help window
 !!!
 *fontList: \
--*-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*=NORMAL,\
--*-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*=UNMARKED,\
--*-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*=MARKED,\
--*-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*=TOPIC_LABEL,\
--*-helvetica-bold-r-*-*-14-*-*-*-*-*-*-*=TOPIC_HEADING
+-*-*-medium-r-*-*-12-*-*-*-*-*-*-*:=NORMAL,\
+-*-*-medium-r-*-*-12-*-*-*-*-*-*-*:=UNMARKED,\
+-*-*-bold-r-*-*-12-*-*-*-*-*-*-*:=MARKED,\
+-*-*-bold-r-*-*-12-*-*-*-*-*-*-*:=TOPIC_LABEL,\
+-*-*-bold-r-*-*-14-*-*-*-*-*-*-*:=TOPIC_HEADING
 
 
 !!! Color used for page border, image bounding boxes and the ruler in `Ruler mode'.
diff -udNr xdvik//texmf/xdvi.cfg pxdvik//texmf/xdvi.cfg
--- xdvik//texmf/xdvi.cfg	2008-07-02 00:42:36.000000000 +0900
+++ pxdvik//texmf/xdvi.cfg	2010-07-25 14:56:37.642073810 +0900
@@ -63,3 +63,37 @@
 % dvipsmap psfonts.map
 dvipsmap ps2pk.map
 
+% =============== Section 3: pTeX Map files ===============
+
+replace H		JIS-H
+replace V		JIS-V
+replace UniJIS-UTF16-H	Unicode-H
+replace UniJIS-UTF16-V	Unicode-V
+replace UniKS-UTF16-H	Unicode-H
+replace UniKS-UTF16-V	Unicode-V
+replace UniGB-UTF16-H	Unicode-H
+replace UniGB-UTF16-V	Unicode-V
+replace UniCNS-UTF16-H	Unicode-H
+replace UniCNS-UTF16-V	Unicode-V
+
+% Japanese
+% IPA font (http://ossipedia.ipa.go.jp/ipafont/)
+replace Ryumin-Light		ipam.ttf
+replace GothicBBB-Medium	ipag.ttf
+
+% traditional Chinese
+% Arphic (http://www.ring.gr.jp/pub/GNU/non-gnu/chinese-fonts-truetype/)
+replace MSung-Light		bsmi00lp.ttf
+replace MHei-Medium		bkai00mp.ttf
+
+% simplified Chinese
+% Arphic (http://www.ring.gr.jp/pub/GNU/non-gnu/chinese-fonts-truetype/)
+replace STSong-Light		gbsn00lp.ttf
+replace STHeitiStd-Regular	gkai00mp.ttf
+
+% Korean
+% un-fonts (http://kldp.net/projects/unfonts/)
+replace HYSMyeongJo-Medium	UnBatang.ttf
+replace HYGoThic-Medium		UnDotum.ttf
+
+ptexmap kanjix.map
diff -udNr xdvik//util.c pxdvik//util.c
--- xdvik//util.c	2009-11-10 19:28:49.000000000 +0900
+++ pxdvik//util.c	2010-07-25 14:56:37.642073810 +0900
@@ -705,6 +705,38 @@
     bitmap->bits = xmalloc(size != 0 ? size : 1);
 }
 
+void
+clear_bitmap(struct bitmap *bitmap)
+{
+    memset(bitmap->bits, 0, bitmap->bytes_wide * bitmap->h);
+}
+
+void
+fill_bitmap(struct bitmap *bitmap)
+{
+    memset(bitmap->bits, 0xff, bitmap->bytes_wide * bitmap->h);
+}
+
+void
+order_reverse_bitmap(struct bitmap *bitmap)
+{
+    int i, size = bitmap->bytes_wide * bitmap->h;
+    unsigned char *p = (unsigned char *)bitmap->bits;
+    static unsigned char reverse_byte[0x100];
+
+    if (reverse_byte[1] == 0) {  /* init reverse_byte[] */
+	for (i=0; i<0x100; i++) {
+	    int src, dst = 0;
+	    for (src=1; src<0x100; src<<=1) {
+		dst <<= 1;
+		if (i & src) dst |= 1;
+	    }
+	    reverse_byte[i] = dst;
+	}
+    }
+
+    for (i=0; i<size; i++) p[i] = reverse_byte[p[i]];
+}
 
 #ifndef HAVE_MEMICMP
 /*
diff -udNr xdvik//util.h pxdvik//util.h
--- xdvik//util.h	2008-07-02 00:42:36.000000000 +0900
+++ pxdvik//util.h	2010-07-25 14:56:37.642073810 +0900
@@ -73,6 +73,9 @@
 
 struct bitmap; /* forward declaration */
 extern void alloc_bitmap(struct bitmap *);
+extern void clear_bitmap(struct bitmap *);
+extern void fill_bitmap(struct bitmap *);
+extern void order_reverse_bitmap(struct bitmap *);
 
 extern char *my_realpath(const char *path, char *real);
 #ifdef HAVE_REALPATH
diff -udNr xdvik//version.h pxdvik//version.h
--- xdvik//version.h	2009-05-19 03:31:06.000000000 +0900
+++ pxdvik//version.h	2010-07-25 14:56:37.642073810 +0900
@@ -3,6 +3,7 @@
 #define VERSION_H_
 
 #define XDVI_VERSION "22.84.16"
+#define JPVERSION "j1.41-ptexlive"
 
 #ifdef MOTIF
 #define XDVI_GUI "(Motif toolkit)"
@@ -13,7 +14,7 @@
 #define	XDVIK_PROGNAME "xdvik"
 #define	XDVI_PROGNAME "xdvi"
 
-#define XDVI_VERSION_INFO XDVI_VERSION" "XDVI_GUI
-#define XDVI_TERSE_VERSION_INFO XDVI_VERSION
+#define XDVI_VERSION_INFO XDVI_VERSION" "JPVERSION" "XDVI_GUI
+#define XDVI_TERSE_VERSION_INFO XDVI_VERSION" "JPVERSION
 
 #endif /* VERSION_H_ */
diff -udNr xdvik//xdvi-ptex.sample pxdvik//xdvi-ptex.sample
--- xdvik//xdvi-ptex.sample	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//xdvi-ptex.sample	2010-07-25 14:56:37.642073810 +0900
@@ -0,0 +1,98 @@
+%
+% Sample "xdvi-ptex.map"
+%
+% You can make this file by following process:
+% sed -e 's/ \([VH]\) / JIS-\1 /' \
+%     -e 's/ Uni.*-.*-\([VH]\) / Unicode-\1 /' \
+%     < ../dvipdfmx/cid-x.map > xdvi-ptex.map
+
+% format : "tfm name" "enc" "TTF/TTC/OTF font"
+% "enc" is one of following.
+%   "JIS-H" "Unicode-H" "Identity-H"
+%   "JIS-V" "Unicode-V" "Identity-V"
+
+
+% IPA font (http://ossipedia.ipa.go.jp/ipafont/)
+rml	   JIS-H	ipam.ttf
+rmlv	   JIS-V	ipam.ttf
+gbm	   JIS-H	ipag.ttf
+gbmv	   JIS-V	ipag.ttf
+
+fmin	   JIS-H	ipam.ttf,Bold
+fgoth	   JIS-H	ipag.ttf,Bold
+maru	   JIS-H	ipag.ttf,BoldItalic
+
+% UTF package
+unijmin-h  Unicode-H	HiraMinPro-W3.otf	% \UTF font
+unijmin-v  Unicode-V	HiraMinPro-W3.otf	% \UTF font
+cidmin-h   Identity-H	HiraMinPro-W3.otf	% \CID font
+cidmin-v   Identity-V	HiraMinPro-W3.otf	% \CID font
+hmr        JIS-H	HiraMinPro-W3.otf
+hmrv       JIS-V	HiraMinPro-W3.otf
+
+unijgoth-h  Unicode-H	HiraKakuPro-W6.otf	% \UTF font
+unijgoth-v  Unicode-V	HiraKakuPro-W6.otf	% \UTF font
+cidgoth-h   Identity-H	HiraKakuPro-W6.otf	% \CID font
+cidgoth-v   Identity-V	HiraKakuPro-W6.otf	% \CID font
+hkb         JIS-H	HiraKakuPro-W6.otf
+hkbv        JIS-V	HiraKakuPro-W6.otf
+
+% OTF package
+otf-ujmr-h  Unicode-H	HiraMinPro-W3.otf
+otf-ujmr-v  Unicode-V	HiraMinPro-W3.otf
+otf-cjmr-h  Identity-H	HiraMinPro-W3.otf
+otf-cjmr-v  Identity-V	HiraMinPro-W3.otf
+hminr-h     JIS-H	HiraMinPro-W3.otf
+hminr-v     JIS-V	HiraMinPro-W3.otf
+
+otf-ujgr-h  Unicode-H	HiraKakuPro-W3.otf
+otf-ujgr-v  Unicode-V	HiraKakuPro-W3.otf
+otf-cjgr-h  Identity-H	HiraKakuPro-W3.otf
+otf-cjgr-v  Identity-V	HiraKakuPro-W3.otf
+hgothr-h    JIS-H	HiraKakuPro-W3.otf
+hgothr-v    JIS-V	HiraKakuPro-W3.otf
+
+otf-ujmb-h  Unicode-H	HiraMinPro-W6.otf
+otf-ujmb-v  Unicode-V	HiraMinPro-W6.otf
+otf-cjmb-h  Identity-H	HiraMinPro-W6.otf
+otf-cjmb-v  Identity-V	HiraMinPro-W6.otf
+hminb-h     JIS-H	HiraMinPro-W6.otf
+hminb-v     JIS-V	HiraMinPro-W6.otf
+
+otf-ujgb-h  Unicode-H	HiraKakuPro-W6.otf	
+otf-ujgb-v  Unicode-V	HiraKakuPro-W6.otf	
+otf-cjgb-h  Identity-H	HiraKakuPro-W6.otf	
+otf-cjgb-v  Identity-V	HiraKakuPro-W6.otf	
+hgothb-h    JIS-H	HiraKakuPro-W6.otf	
+hgothb-v    JIS-V	HiraKakuPro-W6.otf
+
+otf-ujmgr-h  Unicode-H	HiraMaruPro-W4.otf
+otf-ujmgr-v  Unicode-V	HiraMaruPro-W4.otf
+otf-cjmgr-h  Identity-H	HiraMaruPro-W4.otf
+otf-cjmgr-v  Identity-V	HiraMaruPro-W4.otf
+hmgothr-h    JIS-H	HiraMaruPro-W4.otf
+hmgothr-v    JIS-V	HiraMaruPro-W4.otf
+
+%% traditional Chinese
+% Arphic (http://www.ring.gr.jp/pub/GNU/non-gnu/chinese-fonts-truetype/)
+otf-utmr-h  Unicode-H	bsmi00lp.ttf
+otf-utmr-v  Unicode-V	bsmi00lp.ttf
+
+otf-utgr-h  Unicode-H	bkai00mp.ttf
+otf-utgr-v  Unicode-V	bkai00mp.ttf
+
+%% simplified Chinese
+% Arphic (http://www.ring.gr.jp/pub/GNU/non-gnu/chinese-fonts-truetype/)
+otf-ucmr-h  Unicode-H	gbsn00lp.ttf
+otf-ucmr-v  Unicode-V	gbsn00lp.ttf
+
+otf-ucgr-h  Unicode-H	gkai00mp.ttf
+otf-ucgr-v  Unicode-V	gkai00mp.ttf
+
+%% Korean
+% un-fonts (http://kldp.net/projects/unfonts/)
+otf-ukmr-h  Unicode-H	UnBatang.ttf
+otf-ukmr-v  Unicode-V	UnBatang.ttf
+
+otf-ukgr-h  Unicode-H	UnDotum.ttf
+otf-ukgr-v  Unicode-V	UnDotum.ttf
diff -udNr xdvik//xdvi.h pxdvik//xdvi.h
--- xdvik//xdvi.h	2009-11-10 19:28:49.000000000 +0900
+++ pxdvik//xdvi.h	2010-07-25 14:56:37.642073810 +0900
@@ -289,6 +289,10 @@
 #  define OPEN_MODE_ARGS const char *, const char *
 #endif
 
+#ifdef PTEX
+#define	KTABLESIZE	0x10000
+#endif /* PTEX */
+
 #ifndef __LINE__
 #  define __LINE__ 0
 #endif
@@ -339,6 +343,9 @@
     struct framedata {
 	long dvi_h, dvi_v, w, x, y, z;
 	int pxl_v;
+#ifdef PTEX
+	int tdir;
+#endif /* PTEX */
     } data;
     struct frame *next, *prev;
 };
@@ -624,6 +631,9 @@
     /* bitmask of current search window settings */
     unsigned int    search_window_defaults;
     /*     char *    _scroll_pages; */
+#ifdef PTEX
+    char       *ptexmap;
+#endif /* PTEX */
     char       *help_general;
     char       *help_hypertex;
     char       *help_othercommands;
diff -udNr xdvik//xdvizilla pxdvik//xdvizilla
--- xdvik//xdvizilla	2008-07-02 00:42:36.000000000 +0900
+++ pxdvik//xdvizilla	2010-07-25 15:01:59.453077738 +0900
@@ -32,7 +32,7 @@
 IN_FILE=
 NO_RM=
 TMP_DIR=
-progname=xdvizilla
+progname=pxdvizilla
 
 do_cleanup()
 {
@@ -115,7 +115,7 @@
 
 if [ "$DIR" = . ]; then
   DIR=
-elif [ -f "$DIR"/xdvi -a -x "$DIR"/xdvi ]; then
+elif [ -f "$DIR"/pxdvi -a -x "$DIR"/pxdvi ]; then
   DIR="$DIR"/
 else
   DIR=
@@ -161,7 +161,7 @@
         fi
         ;;
     *"DVI file"*)
-        "$DIR"xdvi -safer "$TMP_FILE"
+        "$DIR"pxdvi -safer "$TMP_FILE"
         break
         ;;
     *)
diff -udNr xdvik//zeit.c pxdvik//zeit.c
--- xdvik//zeit.c	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//zeit.c	2010-07-25 14:56:37.642073810 +0900
@@ -0,0 +1,93 @@
+/*******************************************************
+ *  Zeit Shotai Kurabu interface routine for xdvi pl.17
+ *  Written by Y. Hayashi   (hayashi@me.aoyama.ac.jp)
+ ******************************************************/
+
+#include "xdvi-config.h"
+#include "xdvi.h"
+#include "dvi-init.h"
+#include "util.h"
+
+#ifndef       X_NOT_STDC_ENV
+#include <stdlib.h>
+#endif
+
+#include "ptexmap.h"
+#include "zeit.h"
+#include "jfm.h"
+
+#ifdef PTEX
+#include "ft2.h"
+
+static void read_ZEIT_char(struct font *fontp, wide_ubyte ch)
+{
+    struct glyph *g;
+    int ascend;
+
+    g = fontp->kglyph[ch];
+    if (g == NULL) {
+	struct glyph *orig = fontp->kglyph[0];
+	ASSERT(orig != NULL, "Unexpected error.");
+	g = fontp->kglyph[ch] = xcalloc(1, sizeof(struct glyph));
+	g->bitmap.w = orig->bitmap.w;
+	g->bitmap.h = orig->bitmap.h;
+	g->x        = orig->x;
+	g->y        = orig->y;
+	g->dvi_adv  = orig->dvi_adv;
+    }
+    alloc_bitmap(&g->bitmap);
+    ascend = ft2_get_bitmap(ch, fontp->ft2_index, &g->bitmap);
+#ifndef WORDS_BIGENDIAN
+    order_reverse_bitmap(&g->bitmap);
+#endif  /* !WORDS_BIGENDIAN */
+    g->tdir = fontp->dir;
+    if (fontp->dir) {  /* tate */
+	int swap = g->x;
+	g->x     = g->y;
+	g->y     = swap;
+    } else {  /* yoko */
+	g->y = ascend;
+    }
+}
+
+int read_ZEIT_index(struct font *fontp)
+{
+    int n;
+    struct glyph *g;
+    struct jfm *jfm;
+    const double dimconv = fontp->dimconv;
+
+    fontp->read_char = read_ZEIT_char;
+    fontp->kglyph = xcalloc(KTABLESIZE, sizeof(struct glyph *));
+
+    jfm = read_jfm(fontp->file, fontp->fontname);
+    if (jfm == NULL) return -1;
+    fontp->ft2_index = ft2_open_font(getkanjifont(fontp->fontname));
+    if (fontp->ft2_index < 0) return -1;
+
+    for (n=0; n<jfm->table[J_NT]; n++) {
+	int code  =  jfm->type[n].code;
+	int index =  jfm->type[n].index;
+	int width =  jfm->width[jfm->info[index].width_ix];
+	int height= jfm->height[jfm->info[index].height_depth_ix / 0x10];
+	int depth =  jfm->depth[jfm->info[index].height_depth_ix % 0x10];
+
+	g = xcalloc(1, sizeof(struct glyph));
+	g->bitmap.w = (int)(dimconv * width) >> 16;
+	g->bitmap.h = (int)(dimconv * (height + depth)) >> 16;
+	if (g->bitmap.w != g->bitmap.h) {
+	    fprintf(stderr, "Warning: '%s' (code=0x%X) is not square.\n",
+		    fontp->fontname, code);
+	}
+	g->bitmap.bits = NULL;
+	g->x = 0;
+	g->y = (int) (dimconv * height) >> 16;
+	g->dvi_adv = dimconv * width;
+	fontp->kglyph[code] = g;
+    }
+    g = fontp->kglyph[0];
+    alloc_bitmap(&g->bitmap);
+    fill_bitmap(&g->bitmap);
+    return 0;
+}
+#endif  /* PTEX */
diff -udNr xdvik//zeit.h pxdvik//zeit.h
--- xdvik//zeit.h	1970-01-01 09:00:00.000000000 +0900
+++ pxdvik//zeit.h	2010-07-25 14:56:37.642073810 +0900
@@ -0,0 +1,8 @@
+/*******************************************************
+ *  Zeit Shotai Kurabu interface routine for xdvi-22.40k
+ *  Written by tutimura(a)nn.iij4u.or.jp
+ ******************************************************/
+
+#ifdef PTEX
+int	read_ZEIT_index(struct font *);
+#endif  /* PTEX */
diff -udNr xdvik/Makefile.am pxdvik/Makefile.am
--- xdvik/Makefile.am	2009-11-10 19:28:49.000000000 +0900
+++ pxdvik/Makefile.am	2010-07-25 15:48:13.181159105 +0900
@@ -11,7 +11,7 @@
 
 include common.am
 
-INCLUDES = -I$(srcdir)/gui $(common_includes)
+INCLUDES = -I$(srcdir)/gui $(common_includes) $(FREETYPE2_INCLUDES) $(ZLIB_INCLUDES)
 
 ## The object files created from ./*.c and gui/*.c are used for both
 ## ./xdvi-bin and tests/run_tests.
@@ -90,6 +90,20 @@
 	xdvi-debug.h \
 	xserver-info.c \
 	xdvi.h \
+	zeit.c \
+	zeit.h \
+	ptexmap.c \
+	ptexmap.h \
+	ft2.c \
+	ft2.h \
+	jisx0208.c \
+	jisx0208.h \
+	jfm.c \
+	jfm.h \
+	fontconfig.c \
+	fontconfig.h \
+	ft2vert.c \
+	ft2vert.h \
 	xserver-info.h
 
 ## We cannot easily use two different libraries due to the mutual
@@ -176,9 +190,14 @@
 
 xdvi_bin_SOURCES = main.c
 
-$(xdvi_bin_OBJECTS): libxdvi.a $(common_dependencies)
+$(xdvi_bin_OBJECTS): libxdvi.a $(common_dependencies) $(FREETYPE2_DEPEND) $(ZLIB_DEPEND)
 
-LDADD = libxdvi.a $(common_ldadd)
+LDADD = libxdvi.a $(common_ldadd) $(FREETYPE2_LIBS) $(ZLIB_LIBS)
+
+## Rebuild libfreetype
+@FREETYPE2_RULE@
+## Rebuild libz
+@ZLIB_RULE@
 
 # When cross-compiling, EXEEXT for the build and hosts system may differ.
 # Thus we depend on the auxiliary file squeeze/stamp-squeeze.
@@ -208,20 +227,25 @@
 pixmapdir = ${prefix}/texmf/xdvi/pixmap
 dist_pixmap_DATA = pixmaps/toolbar.xpm pixmaps/toolbar2.xpm
 
-dist_noinst_DATA = texmf/xdvi.cfg
+dist_noinst_DATA = texmf/pxdvi.cfg xdvi-ptex.sample
 
 install-data-hook:
-	@if grep "original xdvi.cfg --" "$(DESTDIR)$(xdvidir)/xdvi.cfg" >/dev/null 2>&1 \
-	    || test ! -r "$(DESTDIR)$(xdvidir)/xdvi.cfg"; then \
-	  echo " $(INSTALL_DATA) '$(srcdir)/texmf/xdvi.cfg' '$(DESTDIR)$(xdvidir)/xdvi.cfg'"; \
-	  $(INSTALL_DATA) "$(srcdir)/texmf/xdvi.cfg" "$(DESTDIR)$(xdvidir)/xdvi.cfg"; \
+	@if grep "original pxdvi.cfg --" "$(DESTDIR)$(xdvidir)/pxdvi.cfg" >/dev/null 2>&1 \
+	    || test ! -r "$(DESTDIR)$(xdvidir)/pxdvi.cfg"; then \
+	  echo " $(INSTALL_DATA) '$(srcdir)/texmf/pxdvi.cfg' '$(DESTDIR)$(xdvidir)/pxdvi.cfg'"; \
+	  $(INSTALL_DATA) "$(srcdir)/texmf/pxdvi.cfg" "$(DESTDIR)$(xdvidir)/pxdvi.cfg"; \
 	else :; fi
+	$(INSTALL_DATA) "$(srcdir)/xdvi-ptex.sample" "$(DESTDIR)$(xdvidir)/"
+	if test ! -f "$(DESTDIR)$(xdvidir)/xdvi-ptex.map"; then \
+	  echo " $(INSTALL_DATA) '$(srcdir)/xdvi-ptex.sample' '$(DESTDIR)$(xdvidir)/xdvi-ptex.map'"; \
+	  $(INSTALL_DATA) "$(srcdir)/xdvi-ptex.sample" "$(DESTDIR)$(xdvidir)/xdvi-ptex.map"; \
+	fi
 
 uninstall-hook:
-	@if grep "original xdvi.cfg --" "$(DESTDIR)$(xdvidir)/xdvi.cfg" >/dev/null 2>&1 \
-	    || test ! -r "$(DESTDIR)$(xdvidir)/xdvi.cfg"; then \
-	  echo " rm�-f '$(DESTDIR)$(xdvidir)/xdvi.cfg'"; \
-	  rm -f "$(DESTDIR)$(xdvidir)/xdvi.cfg"; \
+	@if grep "original pxdvi.cfg --" "$(DESTDIR)$(xdvidir)/pxdvi.cfg" >/dev/null 2>&1 \
+	    || test ! -r "$(DESTDIR)$(xdvidir)/pxdvi.cfg"; then \
+	  echo " rm -f '$(DESTDIR)$(xdvidir)/pxdvi.cfg'"; \
+	  rm -f "$(DESTDIR)$(xdvidir)/pxdvi.cfg"; \
 	else :; fi
 
 ## Not used
@@ -262,6 +287,6 @@
 	texmf-alt/xypic.map \
 	xdvi-search.el \
 	xdvi.icon \
-	xdvizilla \
+	pxdvizilla \
 	xdvizilla.1
 
diff -uNr xdvik/configure.ac pxdvik/configure.ac
--- xdvik/configure.ac	2009-06-16 20:22:15.000000000 +0900
+++ pxdvik/configure.ac	2010-02-27 18:10:10.000000000 +0900
@@ -73,6 +73,16 @@
       [AC_MSG_NOTICE([Disabled a4/cm, using letter/in instead])],
       [AC_DEFINE([A4], 1, [Define to use A4 as the default paper size.])])
 
+dnl Kanji support
+AC_DEFINE([PTEX], 1, [Enabled Japanese pTeX support.])
+if pkg-config fontconfig --modversion > /dev/null 2>&1; then
+  AC_MSG_RESULT(adding fontconfig-`pkg-config fontconfig --modversion` library)
+  FONTCONFIGCPPFLAGS="`pkg-config fontconfig --cflags`"
+  LIBS="`pkg-config fontconfig --libs` $LIBS"
+  AC_SUBST(FONTCONFIGCPPFLAGS)
+  AC_DEFINE(HAVE_FONTCONFIG, 1, [Using fontconfig])
+fi
+
 AC_CONFIG_HEADERS([c-auto.h:c-auto.in])
 
 AC_FUNC_FORK
@@ -235,8 +245,8 @@
   fi
 fi
 AC_SUBST([x_tool_libs])
-final_exec_name="xdvi-$prog_extension"
-program_transform_name="'s,xdvi-bin,$final_exec_name,'"
+final_exec_name="pxdvi-$prog_extension"
+program_transform_name="'s,xdvi-bin,$final_exec_name,';'s,^xdvi,pxdvi,'"
 AC_SUBST([final_exec_name])
 
 dnl #######
@@ -266,6 +276,8 @@
 
 KPSE_KPATHSEA_FLAGS
 KPSE_T1LIB_FLAGS
+KPSE_FREETYPE2_FLAGS
+KPSE_ZLIB_FLAGS
 
 KPSE_ADD_FLAGS([kpathsea])
 
diff -udNr xdvik/tests/Makefile.am pxdvik/tests/Makefile.am
--- xdvik/tests/Makefile.am	2009-11-10 19:28:49.000000000 +0900
+++ pxdvik/tests/Makefile.am	2011-07-26 05:21:26.000000000 +0900
@@ -5,7 +5,7 @@
 ##
 include ../common.am
 
-INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/gui $(common_includes)
+INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/gui $(common_includes)  $(FREETYPE2_INCLUDES) $(ZLIB_DEPEND)
 AM_CFLAGS = $(WARNING_CFLAGS)
 
 check_PROGRAMS = run_tests
@@ -22,11 +22,17 @@
 
 $(run_tests_OBJECTS): ../libxdvi.a $(common_dependencies)
 
-LDADD = ../libxdvi.a $(common_ldadd)
+LDADD = ../libxdvi.a $(common_ldadd) $(FREETYPE2_LIBS) $(ZLIB_LIBS)
 
 ../libxdvi.a: $(libxdvi_dependencies)
 	cd .. && $(MAKE) $(AM_MAKEFLAGS) libxdvi.a
 
+## Rebuild libfreetype
+@FREETYPE2_RULE@
+
+## Rebuild libz
+@ZLIB_RULE@
+
 ## Not used
 ##
 EXTRA_DIST = test1.c
